SnakeMake中的链式参数

时间:2017-07-28 21:18:25

标签: parameters chaining snakemake

这似乎可以在SnakeMake中用于链参数。这是可以做的,还是会在并行环境中引起问题,是否应该使用PersistentDict?

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


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

1 个答案:

答案 0 :(得分:2)

我会反对这种方法,因为它会导致needlessly coupled system

现在"规则b"必须始终伴随着"规则a"

我不必要地说,因为另一种选择是在YAML (or JSON) file中声明外部变量,并且两个param指令都接受它作为参数。

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

这在我的管道中至关重要,因为我需要为我的管道的大部分内容使用相同的wildcard_constraint正则表达式,但我并不想最终将所有规则耦合在一起。

也适用于对准器的质量阈值等问题。有时您会在不同的对齐器中使用类似的阈值进行比较。