围绕 Nextflow 的 Python 包装器。
项目描述
nextflow.py 是围绕 Nextflow 管道框架的 Python 包装器。它允许您从 Python 代码运行 Nextflow 管道。
例子
>>> import nextflow
>>> execution = nextflow.run(path="main.nf", params={"param1": "123"})
>>> print(execution.status)
安装
点子
nextflow.py 可以使用 pip 安装:
$ pip install nextflow
如果您收到权限错误,请尝试使用sudo:
$ sudo pip install nextflow
发展
可以在此处找到包含最新迭代的 nextflow.py 存储库。要直接从那里克隆 nextflow.py 存储库,请使用:
$ git clone git://github.com/goodwright/nextflow.py.git
下一个流
nextflow.py 需要安装 Nextflow 可执行文件并在您的 PATH 中。可以在 他们的网站上找到安装 Nextflow 的说明。
测试
要测试 nextflow.py 的本地版本,请 cd 到 nextflow.py 目录并运行:
$ python -m unittest discover tests
您可以选择仅运行单元测试或集成测试:
$ python -m unittest discover tests.unit $ python -m unittest discover tests.integration
概述
任何 nextflow.py 管道的起点都是Pipeline 对象。这使用相关文件的路径进行初始化,并且可选地,随附配置文件的位置:
>>> pipeline1 = nextflow.Pipeline("pipelines/my-pipeline.nf")
>>> pipeline2 = nextflow.Pipeline("main.nf", config="nextflow.config")
跑步
要实际执行管道,使用run方法:
>>> execution = pipeline.run()
这将返回一个Execution对象,该对象代表刚刚发生的管道执行。您可以使用各种选项自定义执行:
>>> execution = pipeline.run(location="./rundir", params={"param1": "123"}, profile=["docker", "test"], version="22.0.1")
这会将执行设置为在不同的位置进行,在运行管道时将 --param1=123作为命令行参数传递,使用 Nextflow 配置文件“docker”和“test”,并使用 Nextflow 版本 22.0.1 运行(无论安装了哪个版本的 Nextflow)。
处决
Execution表示 Pipeline的单次执行。它具有以下属性:
id - 该运行的唯一 ID,由 Nextflow 生成。
开始- 管道运行的时间(作为 UNIX 时间戳)。
started_dt - 管道运行的时间(作为 Python 日期时间)。
持续时间- 执行时间(以秒为单位)。
status - Nextflow 报告完成时的状态。
command - 用于运行管道的命令。
stdout - 执行过程的标准输出。
stderr - 执行过程的标准错误。
log - 生成的日志文件的全文。
returncode - 运行的退出代码 - 通常为 0 或 1。
pipeline -创建执行的Pipeline 。
它还有一个process_executions属性,它是 ProcessExecution对象的列表。Nextflow 通过将孤立的“进程”链接在一起来处理数据,每个进程都有一个 ProcessExecution对象来表示其执行。它们具有以下特性:
hash - Nextflow 生成的唯一 ID,格式为xx/xxxxxx。
process - 产生流程执行的流程的名称。
name - 此特定流程执行的名称。
status - Nextflow 报告完成时的状态。
stdout - 流程执行的标准输出。
stderr - 流程执行的标准错误。
开始- 进程执行的时间(作为 UNIX 时间戳)。
started_dt - 流程执行运行的时间(作为 Python 日期时间)。
持续时间- 流程执行花费了多长时间(以秒为单位)。
returncode - 流程执行的退出代码 - 通常为 0 或 1。
流程执行可以将各种文件传递给它们,并且在执行期间也会创建文件。这些可以通过以下方式获得:
>>> process_execution.input_data() # Full absolute paths >>> process_execution.input_data(include_path=False) # Just file names >>> process_execution.all_output_data() # Full absolute paths >>> process_execution.all_output_data(include_path=False) # Just file names
轮询
上面描述的方法将运行管道并在它运行时等待,完成的Execution仅在最后返回。
另一种方法是使用run_and_poll,它每隔几秒返回一个 Execution对象,表示当时管道执行的状态,作为生成器:
for execution in pipeline.run_and_poll(sleep=2, location="./rundir", params={"param1": "123"}, profile=["docker", "test"], version="22.0.1"):
print("Processing intermediate execution")
默认情况下,每 5 秒返回一次Execution,但您可以根据需要使用sleep参数进行调整。如果您想在管道执行过程中获取有关其执行进度的信息,这将非常有用。
直接运行
如果您只想运行单个管道而不首先初始化 Pipeline对象,则可以直接run或 run_and_poll,而无需创建 Pipeline:
>>> import nextflow
>>> execution = nextflow.run(path="pipeline.nf", config="settings.config", params={"param1": "123"})
变更日志
发布 0.4.2
2022 年 9 月 26 日
为进程执行添加了bash属性。
发布 0.4.1
2022 年 9 月 11 日
修复了执行轮询中先前执行最初干扰的问题。
执行解析现在检查目录是否已完全准备好进行解析。
修复了在某些语言环境中无法解析日志的问题。
发布 0.4.0
2022 年 7 月 13 日
流程执行现在将其输入文件报告为路径。
流程执行现在将其所有输出文件报告为路径。
执行现在具有其原始管道的属性。
删除了架构功能。
发布 0.3.1
2022 年 6 月 15 日
进程轮询现在可以在进程进行时访问 stdout 和 stderr。
发布 0.3
2022 年 6 月 4 日
允许直接运行管道的模块级运行方法。
允许运行具有不同 Nextflow 版本的管道。
改进的日期时间解析。
简化流程执行解析。
修复了不带括号的流程执行串联。
测试现在检查与不同 Nextflow 版本的兼容性。
发布 0.2.2
2022 年 3 月 21 日
日志输出现在删除了 ANSI 代码。
发布 0.2.1
2022 年 2 月 19 日
执行轮询现在处理未就绪的执行目录。
在执行过程中更好地检测失败的流程执行。
发布 0.2
2022 年 2 月 14 日
添加了在连续轮询管道执行时运行的方法。
优化从文件状态创建流程执行对象。
发布 0.1.4
2022 年 1 月 12 日
如果已经有引号,则管道命令生成不再应用引号。
发布 0.1.3
2021 年 11 月 24 日
修复了 Windows 文件分隔符问题。
重命名 NextflowProcess -> ProcessExecution。
发布 0.1.2
2021 年 11 月 3 日
更好地处理丢失的 Nextflow 可执行文件。
发布 0.1.1
2021 年 10 月 29 日
将 nextflow_processes重命名为process_executions。
在路径周围添加引号以处理路径中的空格。
发布 0.1
2021 年 10 月 18 日
基本管道对象。
基本执行对象。
基本 ProcessExecution 对象。