2017-07-28 3 views
0

Cela semble fonctionner dans SnakeMake pour chaîner les paramètres. Est-ce acceptable, ou va-t-il causer des problèmes dans un environnement parallèle, et un PersistentDict devrait-il être utilisé à la place?Paramètres chaînés dans SnakeMake

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


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

Répondre

2

Je déconseillerais cette approche car elle se traduit par une needlessly coupled system

Par exemple, maintenant « règle b » doit toujours être accompagné de « règle un »

Je dis inutilement parce qu'une autre option est de déclarez les variables externes dans un YAML (or JSON) file et demandez aux deux directives param de l'accepter comme argument.

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"] 
    ... 

Cela est essentiel dans mon pipeline comme je l'ai besoin de la même regex wildcard_constraint pour une grande partie de ma conduite, mais je n » ai pas Je veux finir par coupler toutes les règles ensemble.

Aussi bien pour des choses comme les seuils de qualité sur les aligneurs. Parfois, vous utiliserez des seuils similaires dans différents aligneurs à des fins de comparaison.