Snakem中Currentrule的名称

2024-06-10 04:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Snakemake,我无法找到访问当前规则名称的方法。在

例如,有没有一种方法可以这样访问:

rule job1:
    input: check_inputs(rules.current.name)
    output: ...

check_inputs函数对每个规则或多或少都相同时,这将非常有用。在

当然,这是我做的,而且很管用:

^{pr2}$

但是,我想知道是否存在一种更“蛇行”的方法来获取当前规则的名称,以避免每次写入/硬编码规则名称。在

如有任何帮助或建议,我们将不胜感激。在

编辑---
{{cd4}>只有当cd4}>被{rules.myrule.name}在input/output定义中是不可能使用的。在

这样做的目的是快速访问当前规则的名称{rules.current},因为{rules.myrule.name}也是重复的。在


Tags: 方法name名称inputoutput规则checkcurrent
2条回答

我认为rule.name应该可以工作,但是看起来它只是rule,但是它不能在所有上下文中使用:请参见https://bitbucket.org/snakemake/snakemake/issues/199/rule-name-cant-be-accessed-by-rule-in

安德烈亚斯

(编辑:提出了一个解决办法)

在shell:/run:指令期间,{rule}可用于rulename。正如op所说,这在input/output:中不起作用。然而,当前的模板是一个完整的工作

myrule = "foo"
rule foo:
    output: touch(myrule + ".ok")
    shell:
        'echo "I am {rule}, making {output}"'

在上面的例子中,引入变量myrule是不必要的,因为它只使用一次。但是,当您希望在各种snakemake指令中多次使用规则名称时,这就更有意义了。而且它也有助于规则模板化。在

相关问题 更多 >