2016-12-05 76 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