Notebook environment for both interactive data analysis and batch data processing

Basics of SoS workflow system


More on SoS workflow system


Use SoS in SoS Notebook

Getting help

SoS Notebook comes with an extensive set of documentation but it can be daunting to dive into it to get the information you need.

  • If you have a casual question like if certain feature exists or how certain things are handled, it is better to ask it in our gitter channel. You can also use the button at the top right corner of the homepage.

  • If you have a more serious question or suggestion, please feel free to post to our issue tracker. SoS consists of tens of modules and related issue trackers but free feel to post to any of them because it is easy for us to move the issue to an appropriate tracker if needed.


Our documentation is hosted on our live server and can be edited directly. If you spot an error or feel like contributing to the document, please

  1. Click the     button to the top right corner of each tutorial
  2. Execute the notebook and edit it on our live server
  3. Enter !create-pr <Shift-Enter> in the console panel to send us a PR

Syntax and data types

SoS Steps

SoS Workflows

Command line interface


Please cite the following publication if you use SoS workflow engine for your work:

Script of Scripts: a pragmatic workflow system for daily computational research Gao Wang and Bo Peng (2019) PLoS Computational Biology. doi: 10.1371/journal.pcbi.1006843

Here are a list of examples from the publication:

Please follow instructions here to reproduce all but the last (due to data accessibility restrictions) examples.

Example Scripts and workflow notebooks

SoS scripts for the maintenance of SoS

  • update_toc.sos (script)
    A sos script that was used by SoS to update TOC of the wiki pages
  • release (script)
    Script to manage SoS website and release SoS to pip, docker hub, etc

Pedagogical examples

  • DEG Annotation with external task (notebook)
    The same example but submit the R part of the workflow as an external task
  • Simple External Tasks (notebook)
    An example to generate and execute a number of external tasks in Jupyter notebook. You can try to use option trunk_size to group the tasks. This example also demonstrates the use of option shared to collect results from tasks as variables
  • Remote Target (notebook)
    An example on the analysis of targets that reside on remote servers using target remote() and step option remote

Real-world applications

In [ ]: