snakemake在运行块中命名输入文件

问题描述 投票:0回答:1

我的代码如下:

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

我应该如何输入输入文件名?

python snakemake
1个回答
0
投票

显然,解决方案是使用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:时,这不是问题,即rules.some_rule_one.outputshell:时可以正常工作

© www.soinside.com 2019 - 2024. All rights reserved.