[英]snakemake named input files in run block
我的代碼如下所示:
rule my_rule:
input:
in_one = rules.some_rule_one.output,
in_two = rules.some_rule_two.output,
output: some_output
run:
with open(input.in_one, 'rt') as f:
## do_something
當我運行它時,我收到以下錯誤:
RuleException:
TypeError in line ## of myfile.smk:
expected str, bytes or os.PathLike object, not set
我應該如何輸入輸入文件名?
顯然,解決方案是使用rules.some_rule_one.output[0]
和rules.some_rule_two.output[0]
。
但是,如果some_rule
的輸出已命名,則它們可以按原樣使用。
rule some_rule_one:
input: 'some_input_one'
output: 'some_output_one'
shell: ...
rule some_rule_two:
input: 'some_input_two'
output:
foo = 'some_output_two'
shell: ...
rule my_rule:
input:
in_one = rules.some_rule_one.output[0],
in_two = rules.some_rule_two.output.foo,
output: some_output
run:
with open(input.in_one, 'rt') as f:
## do_something
也許只是為了讓事情變得有趣,當my_rule
使用shell:
而不是run:
時,這不是問題run:
即, rules.some_rule_one.output
可以與shell:
rules.some_rule_one.output
正常工作shell:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.