Snakefile 中的多个命名输入
Multiple named inputs in Snakefile
我想制作一个如下所示的管道:
- 为每个数据集提取一些特征
- 制作所有功能的唯一列表
- 从所有原始数据集中提取唯一列表。
这是我所在位置的基本示例
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_master
规则中的 input
部分来解决这个问题,那就太好了。否则,将很高兴收到任何关于更好方法的想法。
Importantly, be aware that referring to rule a here requires that rule a was defined above rule b in the file, since the object has to be known already. This feature also allows to resolve dependencies that are ambiguous when using filenames.
也就是说,在你的例子中,rule master_list
应该定义在rule extract_master
之前。
我想制作一个如下所示的管道:
- 为每个数据集提取一些特征
- 制作所有功能的唯一列表
- 从所有原始数据集中提取唯一列表。
这是我所在位置的基本示例
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_master
规则中的 input
部分来解决这个问题,那就太好了。否则,将很高兴收到任何关于更好方法的想法。
Importantly, be aware that referring to rule a here requires that rule a was defined above rule b in the file, since the object has to be known already. This feature also allows to resolve dependencies that are ambiguous when using filenames.
也就是说,在你的例子中,rule master_list
应该定义在rule extract_master
之前。