2016-12-05 35 views
2

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

举例来说,有没有办法有一个这样的访问:

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

这是非常有益的,当check_inputs功能是每个规则或多或少相同。

可以肯定,我做了这一点,它的工作原理:

rule job1: 
    input: check_inputs("job1") 
    output: ... 

不过,我想知道,如果一个更“Snakemaker方式”来获得当前规则的名称存在,以避免编写/硬编码规则的名字每一次。

任何形式的帮助或建议将不胜感激。

--- EDIT1 ---
规则名称是通过{} rules.myrule.name只有当inputoutput语句由snakemake解析访问。因此,在定义中使用{rules.myrule.name}不可能在input/output中使用。

想法是例如对当前规则的名称{rules.current}进行快速访问,因为{rules.myrule.name}也是重复的。

回答

0

我想rule.name应该工作,但它看起来像它只是rule,然而这不能在所有环境中使用:见https://bitbucket.org/snakemake/snakemake/issues/199/rule-name-cant-be-accessed-by-rule-in

安德烈亚斯

+0

谢谢您的回答。不,它不工作。当输入和输出被snakemake解析时,rule.name被定义。我已经检查了规则对象(包含所有规则及其属性),并且只在输出定义之后才出现。但是,感谢您关联的问题,我将为此创建一个新的问题。除非另一个人找到了这个技巧。 – glihm

相关问题