用于可重复的Jupyter Notebooks的类似Snakemake的管道管理器
项目描述
用于Jupyter Notebooks的类似Snakemake的管道,可以生成如下的交互式管道报告
安装及一般说明
这个软件还处于早期阶段,所以请注意它尚未准备好用于生产。注意:为了简单起见,我假设您使用的是安装了git的较新版本的Ubuntu。
pip install nbpipeline
需要Graphiz来生成静态SVG图表
sudo apt-get install graphviz libgraphviz-dev graphviz-dev
开发安装
要安装最新开发版本,可以使用以下命令:
git clone https://github.com/krassowski/nbpipeline
cd nbpipeline
pip install -r requirements.txt
ln -s $(pwd)/nbpipeline/nbpipeline.py ~/bin/nbpipeline
快速入门
创建pipeline.py文件,其中包含您的管道规则列表。例如
from nbpipeline.rules import NotebookRule
NotebookRule(
'Extract protein data', # a nice name for the step
input={'protein_data_path': 'data/raw/data_from_wetlab.xlsx'},
output={'output_path': 'data/clean/protein_levels.csv'},
notebook='analyses/Data_extraction.ipynb',
group='Proteomics' # this is optional
)
NotebookRule(
'Quality control and PCA on proteins',
input={'protein_levels_path': 'data/clean/protein_levels.csv'},
output={'qc_report_path': 'reports/proteins_failing_qc.csv'},
notebook='analyses/Exploration_and_quality_control.ipynb',
group='Proteomics'
)
输入和输出变量的键应该对应于相应笔记本中第一个单元格中的变量,该单元格应标记为“参数”。在JupyterLab中可以轻松完成此操作
如果您忘记添加它们,将显示警告。
或者,您可以创建一个专门的单元格来定义输入路径,并标记为“inputs”,另外为输出路径定义创建一个单独的单元格,并标记为“outputs”,这样在创建NotebookRule时可以省略输入和输出关键字。但是,只能推导出简单的变量定义(解析使用正则表达式以避免eval的潜在风险)。
有关更多详细信息,请参阅pipeline和notebooks示例,这些示例位于examples目录中。
运行管道
nbpipeline
在连续运行的任何情况下,没有变化的notebooks将不会再次运行。要禁用此缓存,请使用--disable_cache开关。
要生成规则图的交互式图,以及可重复性报告,请添加-i开关
nbpipeline -i
软件默认使用google-chrome进行图形可视化显示,可以通过CLI选项进行更改。
如果您命名了不同的定义文件(例如,my_rules.py而不是pipeline.py),则使用
nbpipeline --definitions_file my_rules.py
要显示所有命令行选项,请使用
nbpipeline -h
故障排除
如果您看到ModuleNotFoundError: No module named 'name_of_your_local_module',您可能需要强制指定路径,通过使用带有
PYTHONPATH=/path/to/the/parent/of/local/module:$PYTHONPATH nbpipeline
通常路径与当前目录相同,因此以下命令可能有效
PYTHONPATH=$(pwd):$PYTHONPATH nbpipeline