2016-12-05 10 views
2

Snakemakeと協力しており、のにアクセスする方法が見つかりません。例えばSnakemakeの現在のルールの名前

は、このようなアクセス権を持っているが方法です:

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

check_inputs機能は、各ルールの多かれ少なかれ同じであるとき、これは非常に役に立ちます。確かに

は、私はこれを作ったし、それが動作します:

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

をしかし、私は思っていたこと、現在のルールの名前を取得するために、より「Snakemakerの方法は、」ルールの名前をハードコーディング/書き込みを避けるために存在している場合毎回。

何か助けや提案をいただければ幸いです。

--- --- EDIT1
ルール名がinputoutputステートメントはsnakemakeによって解析されるのみ{rules.myrule.name}介してアクセス可能です。したがって、{rules.myrule.name}の使用はinput/outputの定義では不可能です。

{rules.myrule.name}も繰り返しであるため、現在のルールの名前{rules.current}にすばやくアクセスできるようにすることです。

答えて

0

しかし、すべてのコンテキストで使用することができない、私はrule.nameが動作するはずと思ったが、それだけでruleだように見えます:https://bitbucket.org/snakemake/snakemake/issues/199/rule-name-cant-be-accessed-by-rule-in

アンドレアス

+0

を参照してくださいあなたの答えをいただき、ありがとうございます。いいえ、動作していません。 rule.nameはsnakemakeによって入力と出力が解析されるときに定義されます。 Rulesオブジェクト(すべてのルールとその属性を含む)をチェックし、出力定義の後にのみ表示されます。しかし、リンクした問題をありがとう、私はこれのために新しいものを作成します。 1人の他の人がそれのためのトリックを見つけた場合を除いて。 – glihm

関連する問題