{"id":13393646,"url":"https://github.com/scipipe/scipipe","last_synced_at":"2026-04-11T10:07:57.864Z","repository":{"id":28315807,"uuid":"31828678","full_name":"scipipe/scipipe","owner":"scipipe","description":"Robust, flexible and resource-efficient pipelines using Go and the commandline","archived":false,"fork":false,"pushed_at":"2024-08-14T01:44:15.000Z","size":1112,"stargazers_count":1096,"open_issues_count":56,"forks_count":72,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-05-23T00:11:17.991Z","etag":null,"topics":["bioinformatics","bioinformatics-pipeline","cheminformatics","dataflow","fbp","go","golang","pipeline","scientific-workflows","scipipe","workflow","workflow-engine"],"latest_commit_sha":null,"homepage":"https://scipipe.org","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scipipe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit.go","citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-07T21:47:23.000Z","updated_at":"2025-05-17T03:45:13.000Z","dependencies_parsed_at":"2024-08-14T03:23:59.341Z","dependency_job_id":null,"html_url":"https://github.com/scipipe/scipipe","commit_stats":{"total_commits":979,"total_committers":15,"mean_commits":65.26666666666667,"dds":"0.10520939734422885","last_synced_commit":"0779cb0c04e98f0ae04d4af36dab7690658db54d"},"previous_names":["samuell/scipipe"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/scipipe/scipipe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipipe%2Fscipipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipipe%2Fscipipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipipe%2Fscipipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipipe%2Fscipipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scipipe","download_url":"https://codeload.github.com/scipipe/scipipe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipipe%2Fscipipe/sbom","scorecard":{"id":798436,"data":{"date":"2025-08-11","repo":{"name":"github.com/scipipe/scipipe","commit":"4d29035e8538d7d5362227eff037a1dd22d1e186"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T09:41:57.951Z","repository_id":28315807,"created_at":"2025-08-23T09:41:57.951Z","updated_at":"2025-08-23T09:41:57.951Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004170,"owners_count":26083688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bioinformatics","bioinformatics-pipeline","cheminformatics","dataflow","fbp","go","golang","pipeline","scientific-workflows","scipipe","workflow","workflow-engine"],"created_at":"2024-07-30T17:00:57.957Z","updated_at":"2025-10-10T14:35:43.067Z","avatar_url":"https://github.com/scipipe.png","language":"Go","funding_links":[],"categories":["Go","Misc","Next Generation Sequencing","Library (embedded usage)","Repositories","go","Workflow and Pipeline Management","Ranked by starred repositories"],"sub_categories":["Workflow Managers"],"readme":"\u003ch1 style=\"margin-bottom: 0;\"\u003e\u003cimg src=\"docs/images/scipipe_logo_bluegrey_horiz_320px.png\" alt=\"SciPipe\"\u003e\u003c/h1\u003e\n\n\u003cbig\u003eRobust, flexible and resource-efficient pipelines using Go and the commandline\u003c/big\u003e\n\n[![Build Status](https://img.shields.io/circleci/project/github/scipipe/scipipe.svg)](https://app.circleci.com/pipelines/github/scipipe)\n[![Test Coverage](https://img.shields.io/codecov/c/github/scipipe/scipipe.svg)](https://codecov.io/gh/scipipe/scipipe)\n[![Codebeat Grade](https://codebeat.co/badges/96e93624-2ac8-42c9-9e94-2d6e5325d8ff)](https://codebeat.co/projects/github-com-scipipe-scipipe-master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/scipipe/scipipe)](https://goreportcard.com/report/github.com/scipipe/scipipe)\n[![GoDoc](https://godoc.org/github.com/scipipe/scipipe?status.svg)](https://godoc.org/github.com/scipipe/scipipe)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/scipipe/scipipe)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1157941.svg)](https://doi.org/10.5281/zenodo.1157941)\n\n\u003cstrong\u003eProject links: [Documentation \u0026 Main Website](http://scipipe.org) | [Issue Tracker](https://github.com/scipipe/scipipe/issues) | [Chat](https://gitter.im/scipipe/scipipe)\u003c/strong\u003e\n\n## Why SciPipe?\n\n- **Intuitive:** SciPipe works by flowing data through a network of channels\n  and processes\n- **Flexible:** Wrapped command-line programs can be combined with processes in\n  Go\n- **Convenient:** Full control over how your files are named\n- **Efficient:** Workflows are compiled to binary code that run fast\n- **Parallel:** Pipeline paralellism between processes as well as task\n  parallelism for multiple inputs, making efficient use of multiple CPU cores\n- **Supports streaming:** Stream data between programs to avoid wasting disk space\n- **Easy to debug:** Use available Go debugging tools or just `println()`\n- **Portable:** Distribute workflows as Go code or as self-contained executable\n  files\n\n\n## Project updates\n\n- \u003cstrong\u003eJan 2020: New screencast:\u003c/strong\u003e \u003ca href=\"https://www.youtube.com/watch?v=hi0Uqwddrtg\" target=\"_blank\"\u003e\"Hello World\" scientific workflow in SciPipe\u003c/a\u003e\n- \u003cstrong\u003eMay 2019: The SciPipe paper published open access in GigaScience:\u003c/strong\u003e \u003ca href=\"https://doi.org/10.1093/gigascience/giz044\" target=\"_blank\"\u003eSciPipe: A workflow library for agile development of complex and dynamic bioinformatics pipelines\u003c/a\u003e\n- \u003cstrong\u003eNov 2018: Scientific study using SciPipe:\u003c/strong\u003e \u003ca href=\"https://doi.org/10.3389/fphar.2018.01256\" target=\"_blank\"\u003ePredicting off-target binding profiles with confidence using Conformal Prediction\u003c/a\u003e\n- \u003cstrong\u003eSlides:\u003c/strong\u003e \u003ca href=\"https://pharmb.io/blog/saml-gostockholm2018/\"\u003ePresentation on SciPipe and more at Go Stockholm Conference\u003c/a\u003e\n- \u003cstrong\u003eBlog post:\u003c/strong\u003e \u003ca href=\"http://bionics.it/posts/provenance-reports-in-scientific-workflows\"\u003eProvenance reports in Scientific Workflows\u003c/a\u003e - going into details about how SciPipe is addressing provenance.\n- \u003cstrong\u003eBlog post:\u003c/strong\u003e \u003ca href=\"http://bionics.it/posts/first-production-workflow-run-with-scipipe\"\u003eFirst production workflow run with SciPipe\u003c/a\n\n## Introduction\n\n\u003cimg src=\"docs/images/fbp_factory.png\" align=\"right\"\u003e\n\nSciPipe is a library for writing [Scientific\nWorkflows](https://en.wikipedia.org/wiki/Scientific_workflow_system), sometimes\nalso called \"pipelines\", in the [Go programming language](http://golang.org).\n\nWhen you need to run many commandline programs that depend on each other in\ncomplex ways, SciPipe helps by making the process of running these programs\nflexible, robust and reproducible. SciPipe also lets you restart an interrupted\nrun without over-writing already produced output and produces an audit report\nof what was run, among many other things.\n\nSciPipe is built on the proven principles of [Flow-Based Programming](https://en.wikipedia.org/wiki/Flow-based_programming)\n(FBP) to achieve maximum flexibility, productivity and agility when designing\nworkflows.  Compared to plain dataflow, FBP provides the benefits that\nprocesses are fully self-contained, so that a library of re-usable components\ncan be created, and plugged into new workflows ad-hoc.\n\nSimilar to other FBP systems, SciPipe workflows can be likened to a network of\nassembly lines in a factory, where items (files) are flowing through a network\nof conveyor belts, stopping at different independently running stations\n(processes) for processing, as depicted in the picture above.\n\nSciPipe was initially created for problems in bioinformatics and\ncheminformatics, but works equally well for any problem involving pipelines of\ncommandline applications.\n\n**Project status:** SciPipe pretty stable now, and only very minor API changes\nmight still occur. We have successfully used SciPipe in a handful of both real\nand experimental projects, and it has had occasional use outside the research\ngroup as well.\n\n## Known limitations\n\n- There are still a number of missing good-to-have features for workflow\n  design. See the [issue tracker](https://github.com/scipipe/scipipe/issues)\n  for details.\n- There is not (yet) support for the [Common Workflow Language](http://common-workflow-language.github.io).\n\n## Installing\n\nFor full installation instructions, see the [intallation page](https://scipipe.org/install/).\nFor quick getting started steps, you can do:\n\n1. [Download](https://golang.org/dl/) and [install](https://golang.org/doc/install) Go\n2. Run the following command, to install the scipipe Go library (don't miss the\n   trailing dots!), and create a Go module for your script:\n\n```bash\ngo install github.com/scipipe/scipipe/...@latest\ngo mod init myfirstworkflow-module\n```\n\n## Hello World example\n\nLet's look at an example workflow to get a feel for what writing workflows in\nSciPipe looks like:\n\n```go\npackage main\n\nimport (\n    // Import SciPipe, aliased to sp\n    sp \"github.com/scipipe/scipipe\"\n)\n\nfunc main() {\n    // Init workflow and max concurrent tasks\n    wf := sp.NewWorkflow(\"hello_world\", 4)\n\n    // Initialize processes, and file extensions\n    hello := wf.NewProc(\"hello\", \"echo 'Hello ' \u003e {o:out|.txt}\")\n    world := wf.NewProc(\"world\", \"echo $(cat {i:in}) World \u003e {o:out|.txt}\")\n\n    // Define data flow\n    world.In(\"in\").From(hello.Out(\"out\"))\n\n    // Run workflow\n    wf.Run()\n}\n```\n\nTo create a file with a similar simple example, you can run:\n\n```\nscipipe new hello_world.go\n```\n\n## Running the example\n\nLet's put the code in a file named `hello_world.go` and run it.\n\nFirst you need to make sure that the dependencies (SciPipe in this case) is\ninstalled in your local Go module. This you can do with:\n\n```bash\ngo mod tidy\n```\n\nThen you can go ahead and run the workflow:\n\n```bash\n$ go run hello_world.go\nAUDIT   2018/07/17 21:42:26 | workflow:hello_world             | Starting workflow (Writing log to log/scipipe-20180717-214226-hello_world.log)\nAUDIT   2018/07/17 21:42:26 | hello                            | Executing: echo 'Hello ' \u003e hello.out.txt\nAUDIT   2018/07/17 21:42:26 | hello                            | Finished: echo 'Hello ' \u003e hello.out.txt\nAUDIT   2018/07/17 21:42:26 | world                            | Executing: echo $(cat ../hello.out.txt) World \u003e hello.out.txt.world.out.txt\nAUDIT   2018/07/17 21:42:26 | world                            | Finished: echo $(cat ../hello.out.txt) World \u003e hello.out.txt.world.out.txt\nAUDIT   2018/07/17 21:42:26 | workflow:hello_world             | Finished workflow (Log written to log/scipipe-20180717-214226-hello_world.log)\n```\n\nLet's check what file SciPipe has generated:\n\n```\n$ ls -1 hello*\nhello.out.txt\nhello.out.txt.audit.json\nhello.out.txt.world.out.txt\nhello.out.txt.world.out.txt.audit.json\n```\n\nAs you can see, it has created a file `hello.out.txt`, and `hello.out.world.out.txt`, and\nan accompanying `.audit.json` for each of these files.\n\nNow, let's check the output of the final resulting file:\n\n```bash\n$ cat hello.out.txt.world.out.txt\nHello World\n```\n\nNow we can rejoice that it contains the text \"Hello World\", exactly as a proper\nHello World example should :)\n\nNow, these were a little long and cumbersome filenames, weren't they? SciPipe\ngives you very good control over how to name your files, if you don't want to\nrely on the automatic file naming. For example, we could set the first filename\nto a static one, and then use the first name as a basis for the file name for\nthe second process, like so:\n\n```go\npackage main\n\nimport (\n    // Import the SciPipe package, aliased to 'sp'\n    sp \"github.com/scipipe/scipipe\"\n)\n\nfunc main() {\n    // Init workflow with a name, and max concurrent tasks\n    wf := sp.NewWorkflow(\"hello_world\", 4)\n\n    // Initialize processes and set output file paths\n    hello := wf.NewProc(\"hello\", \"echo 'Hello ' \u003e {o:out}\")\n    hello.SetOut(\"out\", \"hello.txt\")\n\n    world := wf.NewProc(\"world\", \"echo $(cat {i:in}) World \u003e\u003e {o:out}\")\n    world.SetOut(\"out\", \"{i:in|%.txt}_world.txt\")\n\n    // Connect network\n    world.In(\"in\").From(hello.Out(\"out\"))\n\n    // Run workflow\n    wf.Run()\n}\n```\n\nIn the `{i:in...` part, we are re-using the file path from the file received on\nthe in-port named 'in', and then running a Bash-style trim-from-end command on\nit to remove the `.txt` extension.\n\nNow, if we run this, the file names get a little cleaner:\n\n```bash\n$ ls -1 hello*\nhello.txt\nhello.txt.audit.json\nhello_world.go\nhello_world.txt\nhello_world.txt.audit.json\n```\n\n## The audit logs\n\nFinally, we could have a look at one of those audit file created:\n\n```bash\n$ cat hello_world.txt.audit.json\n{\n    \"ID\": \"99i5vxhtd41pmaewc8pr\",\n    \"ProcessName\": \"world\",\n    \"Command\": \"echo $(cat hello.txt) World \\u003e\\u003e hello_world.txt.tmp/hello_world.txt\",\n    \"Params\": {},\n    \"Tags\": {},\n    \"StartTime\": \"2018-06-15T19:10:37.955602979+02:00\",\n    \"FinishTime\": \"2018-06-15T19:10:37.959410102+02:00\",\n    \"ExecTimeNS\": 3000000,\n    \"Upstream\": {\n        \"hello.txt\": {\n            \"ID\": \"w4oeiii9h5j7sckq7aqq\",\n            \"ProcessName\": \"hello\",\n            \"Command\": \"echo 'Hello ' \\u003e hello.txt.tmp/hello.txt\",\n            \"Params\": {},\n            \"Tags\": {},\n            \"StartTime\": \"2018-06-15T19:10:37.950032676+02:00\",\n            \"FinishTime\": \"2018-06-15T19:10:37.95468214+02:00\",\n            \"ExecTimeNS\": 4000000,\n            \"Upstream\": {}\n        }\n    }\n```\n\nEach such audit-file contains a hierarchic JSON-representation of the full\nworkflow path that was executed in order to produce this file. On the first\nlevel is the command that directly produced the corresponding file, and then,\nindexed by their filenames, under \"Upstream\", there is a similar chunk\ndescribing how all of its input files were generated. This process will be\nrepeated in a recursive way for large workflows, so that, for each file\ngenerated by the workflow, there is always a full, hierarchic, history of all\nthe commands run - with their associated metadata - to produce that file.\n\nYou can find many more examples in the [examples folder](https://github.com/scipipe/scipipe/tree/master/examples) in the GitHub repo.\n\nFor more information about how to write workflows using SciPipe, and much more,\nsee [SciPipe website (scipipe.org)](http://scipipe.org)!\n\n## More material on SciPipe\n\n- See [a poster on SciPipe](http://dx.doi.org/10.13140/RG.2.2.34414.61760), presented at the [e-Science Academy in Lund, on Oct 12-13 2016](essenceofescience.se/event/swedish-e-science-academy-2016-2/).\n- See [slides from a recent presentation of SciPipe for use in a Bioinformatics setting](http://www.slideshare.net/SamuelLampa/scipipe-a-lightweight-workflow-library-inspired-by-flowbased-programming).\n- The architecture of SciPipe is based on an [flow-based programming](https://en.wikipedia.org/wiki/Flow-based_programming) like\n  pattern in pure Go presented in\n  [this](http://blog.gopheracademy.com/composable-pipelines-pattern) and\n  [this](https://blog.gopheracademy.com/advent-2015/composable-pipelines-improvements/)\n  blog posts on Gopher Academy.\n\n## Citing SciPipe\n\nIf you use SciPipe in academic or scholarly work, please cite the following paper as source:\n\nLampa S, Dahlö M, Alvarsson J, Spjuth O. SciPipe: A workflow library for agile development of complex and dynamic bioinformatics pipelines \n_Gigascience_. 8, 5 (2019). DOI: [10.1093/gigascience/giz044](https://dx.doi.org/10.1093/gigascience/giz044)\n\n## Acknowledgements\n\n- SciPipe is very heavily dependent on the proven principles form [Flow-Based\n  Programming (FBP)](http://www.jpaulmorrison.com/fbp), as invented by [John Paul Morrison](http://www.jpaulmorrison.com/fbp).\n  From Flow-based programming, SciPipe uses the ideas of separate network\n  (workflow dependency graph) definition, named in- and out-ports,\n  sub-networks/sub-workflows and bounded buffers (already available in Go's\n  channels) to make writing workflows as easy as possible.\n- This library is has been much influenced/inspired also by the\n  [GoFlow](https://github.com/trustmaster/goflow) library by [Vladimir Sibirov](https://github.com/trustmaster/goflow).\n- Thanks to [Egon Elbre](http://twitter.com/egonelbre) for helpful input on the\n  design of the internals of the pipeline, and processes, which greatly\n  simplified the implementation.\n- This work is financed by faculty grants and other financing for the [Pharmaceutical Bioinformatics group](http://pharmb.io) of [Dept. of\n  Pharmaceutical Biosciences](http://www.farmbio.uu.se) at [Uppsala University](http://www.uu.se), and by [Swedish Research Council](http://vr.se)\n  through the Swedish [National Bioinformatics Infrastructure Sweden](http://nbis.se).\n- Supervisor for the project is [Ola Spjuth](http://www.farmbio.uu.se/research/researchgroups/pb/olaspjuth).\n\n## Related tools\n\nFind below a few tools that are more or less similar to SciPipe that are worth worth checking out before\ndeciding on what tool fits you best (in approximate order of similarity to SciPipe):\n\n- [NextFlow](http://nextflow.io)\n- [Luigi](https://github.com/spotify/luigi)/[SciLuigi](https://github.com/samuell/sciluigi)\n- [BPipe](https://code.google.com/p/bpipe/)\n- [SnakeMake](https://bitbucket.org/johanneskoester/snakemake)\n- [Cuneiform](https://github.com/joergen7/cuneiform)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipipe%2Fscipipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscipipe%2Fscipipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipipe%2Fscipipe/lists"}