Script of Scripts (SoS) is a Jupyter-based polyglot notebook that allows the use of multiple Jupyter kernels in one notebook, and a workflow engine for the execution of workflows in both process- and outcome-oriented styles. It is designed for data scientists and bioinformatics who routinely work with scripts in different languages such as R, Python, Perl, and bash.
Please refer to the SoS homepage for more information.
We welcome and value community contributions: please post issues to provide us feedback or get our support; please send pull requests if you have helped fixing bugs or making improvements to the source code.
With Python 3.6 and above installed (anaconda python is recommended), you can install the SoS Workflow System and its extensions with command
% pip install sos
You can install the latest git version of SoS with commands
% git clone https://github.com/vatlab/SoS.git % cd SoS % pip install . -U
although the development version can be less stable than the released version.
You can install SoS Notebook, and register the sos kernel with Jupyter using the following commands
% pip install sos-notebook % python -m sos_notebook.install
To exchange data between live kernels in SoS Notebook, you will need to install individual kernels (e.g.
make sure they work under Jupyter, and install SoS language modules using commands such as
% pip install sos-r sos-matlab sos-python sos-bash
Different modules might be needed to assist data exchange among kernels. Please refer to the installation page of sos website for details.
Change Log of SoS and SoS Notebook
SoS Notebook 0.18.5
- sos-notebook#192: Allow language modules to support pattern matched kernel names such as julia-?.?
- sos#1206: Allow
output_from(step)to obtain output from a workflow.
- sos#1186: Add command line option
-Tto enfore dependency tracing.
- sos#1197: Introduce function
tracedto make dependencies that will always be traced
- sos#1201: Introduce dependencies between compounded workflows
- sos#1185: Disallow the use of parameters in tasks.
- sos#1186: (reverted) Enforcing the concept that targets in
dependsstatement always try to build dependency.
SoS Notebook 0.18.1
- sos-notebook#178: Allow adding
&to the end of magics
%runfileto execute workflow in background.
- sos-notebook#179: Remove magic
%rerunand add magic
- sos-notebook#180: Add option
%saveto execute the cell after saving it.
- sos#1115: Function
named_outputto support named inputs and outputs, among other new features summarized in this ticket.
- sos#1120: Allow paremeters
paired_withetc for functions
- sos#1125: Set
concurrent=Trueas default for substep execution.
- sos#1132: Deprecate action
stop_ifand replace it with
- sos#1175: Enforce the use of
sos_variableto import shared variable in a step
SoS Notebook 0.18.0
- sos-notebook#150: A new side panel that works in the same fashion as JupyterLab's console window.
- sos-notebook#154: New task status table that allows reporting status, killing, and purging multiple tasks with the same tags.
SoS 0.9.16.0, SoS Notebook 0.9.16.0
- sos#991: Use a new task file format to replace multiple files for each task. This change is not backward compatible so please upgrade only after you completed and removed all existing tasks.
- sos-notebook#89: Added templates to highlight source code using codemirror, with optional auto-generated table of contents.
- sos#983: Allow depending on an entire process-oriented workflow using a
sos_step()target that matches multiple steps.
- sos#975: Add option
-pto generate a summary report after the completion of workflow.
- sos#976: Much improved workflow help message (
sos run script -h).
SoS Notebook 0.9.14.4:
- sos-notebook#79: Allow auto-completion and inspection in subkernel cells.
SoS Notebook 0.9.14.1
- sos-notebook#74: Add a
%revisionsmagic to display revision history of the current document.
- sos#925: Output summary of executed and ignored step, substeps, and tasks after the execution of workflows.
SoS Notebook 0.9.13.4
- jupyterlab-sos#11: Magic
%cdnow changes directory of all subkernels
SoS Notebook 0.9.12.12
- sos-notebook#52: All new syntax highlighter that highlights expanded expressions
- sos-notebook#58: Stop removing leading comments from cells.
- sos#922: Use user-id for docker execution (-u)
- sos#926: Add function
zap()to SoS path classes
SoS Notebook 0.9.12.11
- sos-notebook#44: Allow sending text in markdown cells to side panel for execution.
- sos-notebook#47: Allow clear any HTML element with magic
- sos-notebook#50: Re-design logo for SoS Notebook.
- sos#914: Allow option
activeof actions and tasks to accept conditions.
- sos#915: Automatically expand user (
~) for SoS path types
- sos#916: Use hashlib instead of faster xxhash under windows
SoS Notebook 0.9.12.9
- sos-notebook#41: Stop saving unused kernels in sos notebook.
- sos#859: Introduce automatic auxiliary steps to simplify the use of makefile steps.
- sos#879: Add action options
stderrto redict output from script-executing actions.
- sos-notebook#42: Add option
- sos-notebook#39: Separation installation and deployment and use command
python -m sos_notebook.installto install
soskernel to Jupyter.
- sos#874: Add input option
concurrent=Trueto allow parallel execution of input groups.
- sos#874: Optimize task submission of task engines to reduce status checking
SoS Notebook 0.9.10.17
- sos-notebook#32: Add magic
%captureto capture output of cells