【发布时间】:2022-11-01 17:15:07
【问题描述】:
我对snakemake相当陌生,并继承了一种巨大的工作流程,该工作流程包含一系列17条连续运行的规则。 每个规则都从前面的规则中获取输出,并使用它们来运行 python 脚本。到目前为止,一切都很好,除了现在我正在尝试改进工作流程,因为一些规则可以并行运行。
我试图实现的一个粗略示例,我的理解是通配符应该允许我解决这个问题。
grid = [ 10 , 20 ]
rule all:
input:
expand("path/to/C/{grid}/file_C" ,grid = grid)
rule process_A:
input:
path_A = "path/to/A/file_A"
path_B = "path/to/B/{grid}/file_B" # A rule further in the worflow could need a file from a previous rule saved with this structure
params:
grid = lambda wc: wc.get(grid)
output:
path_C = "path/to/C/{grid}/file_C"
shell:
"script_A.py {params.grid}"
在脚本中,我检索了网格大小参数:
grid = snakemake.params.grid
最后,应该使用 grid = 10 和 grid = 20 重新运行整个规则 process_A,并将每个结果保存到其路径也取决于 grid 的文件夹中。
我知道这有几处问题,但我似乎无法找到从开始解决这个问题的方法。我现在得到的错误是:
name 'params' is not defined
关于从哪里开始的任何帮助?
【问题讨论】:
标签: python-3.x snakemake