2017-07-28 5 views
0

Dies scheint in SnakeMake zu funktionieren, um Parameter zu ketten. Ist das in Ordnung, oder wird es Probleme in paralleler Umgebung verursachen, und sollte stattdessen ein PersistentDict verwendet werden?Verkettete Parameter in SnakeMake

rule a: 
    params: 
      a = "Param A", b="Param B" 
    ... 


rule b: 
    params: rules.a.params.b 

Antwort

2

würde ich abraten diesen Ansatz, da es in einem needlessly coupled system

Eg Now "Regel b" immer durch unnötig, weil ich sagen

"a rule" begleitet werden muss resultiert, ist eine weitere Option zu deklarieren Sie externe Variablen in einer YAML (or JSON) file und lassen Sie beide Parameter als Argument akzeptieren.

config.yaml ~ Personal Example

a: Param A 
b: Param B 

Snakefile ~ Personal Example with just a single rule

configfile: "config.yaml" 

rule a: 
    ... 
    params: 
     importantRuleAVar = config["a"] 
    .... 


rule b: 
    ... 
    params: 
     importantRuleBVar = config["a"] 
    ... 

Dies ist entscheidend in meiner Pipeline als ich die gleiche wildcard_constraint regex für große Teile meiner Pipeline benötigen, aber ich didn‘ Ich möchte am Ende alle Regeln zusammenkoppeln.

Auch gut für Dinge wie Qualitätsschwellen auf Aligner. Manchmal verwenden Sie ähnliche Schwellwerte für Vergleichszwecke in verschiedenen Aligner.