Python 3.x Snakefile中的多个命名输入
我想制作一个如下所示的管道:Python 3.x Snakefile中的多个命名输入,python-3.x,snakemake,Python 3.x,Snakemake,我想制作一个如下所示的管道: 为每个数据集提取一些特征 列出所有功能的唯一列表 从所有原始数据集中提取唯一列表 这是一个基本的例子,我在哪里 input_dict = {"data1": "/path/to/data1", "data2": "/path/to/data2"} rule all: input: expand('data/{dataset}.processed', dataset=input_dict.keys()) rule extract_mast
input_dict = {"data1": "/path/to/data1", "data2": "/path/to/data2"}
rule all:
input:
expand('data/{dataset}.processed', dataset=input_dict.keys())
rule extract_master:
output:
'data/{dataset}.processed'
input:
master = rules.master_list.output, dataset = lambda wildcards: input_dict[wildcards.dataset]
shell:
"./extract_master.py --input {input.dataset} --out {output} --master {input.master}"
rule master_list:
output:
'data/master.txt'
input:
expand('data/{dataset}.chunk', dataset=input_dict.keys())
shell:
'./master_list.py --input {input} --output {output}'
rule get_chunk:
input:
lambda wildcards: input_dict[wildcards.dataset]
output:
'data/{dataset}.chunk'
shell:
"./get_chunk.py --input {input} --output {output}"
我得到一个错误:
'Rules' object has no attribute 'master_list'
我不知道如何指定两个命名的输入,其中每个输入不是一个简单的字符串。如果有语法可以用于extract\u master
规则中的input
部分来解决这个问题,那就太好了。否则,任何关于更好方法的想法都会被欣然接受
重要的是,请注意,此处引用规则a需要在文件中规则b的上方定义规则a,因为对象必须是已知的。此功能还允许解决使用文件名时不明确的依赖关系
也就是说,在您的示例中,rule master\u list
应该在rule extract\u master
之前定义
重要的是,请注意,此处引用规则a需要在文件中规则b的上方定义规则a,因为对象必须是已知的。此功能还允许解决使用文件名时不明确的依赖关系
也就是说,在您的示例中,rule master\u list
应该在rule extract\u master
之前定义