gli*_*ihm 6 python python-3.x snakemake
我正在与Snakemake合作,但找不到找到当前规则名称的方法。
例如,有没有办法像这样进行访问:
rule job1:
input: check_inputs(rules.current.name)
output: ...
Run Code Online (Sandbox Code Playgroud)
当check_inputs
每个规则的功能大致相同时,这将非常有用。
当然,我做到了,它的工作原理是:
rule job1:
input: check_inputs("job1")
output: ...
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否存在一种更多的“ Snakemaker方式”来获取当前规则的名称,以避免每次都编写/硬编码该规则的名称。
任何帮助或建议将不胜感激。
--- EDIT1 ---只有当snakemake解析了and 语句时,才能
访问规则名称。因此在/ 定义中无法使用。{rules.myrule.name}
input
output
{rules.myrule.name}
input
output
这样做的想法是例如快速访问当前规则的名称{rules.current}
,因为{rules.myrule.name}
它也是重复的。
(编辑:提出了解决方法)
{rule}
可在 shell:/run: 指令期间用于规则名称。正如 op 所说,这在input/output:
. 然而,当前的模板是一种解决方法
myrule = "foo"
rule foo:
output: touch(myrule + ".ok")
shell:
'echo "I am {rule}, making {output}"'
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,引入变量myrule
是不必要的,因为它只使用一次。但当您想在各种 Snakemake 指令中多次使用规则名称时,它更有意义。它还有助于规则模板化。
归档时间: |
|
查看次数: |
533 次 |
最近记录: |