0

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

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


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

1 回答 1

2

我建议不要使用这种方法,因为它会导致不必要的耦合系统

例如,现在“规则 b”必须始终伴随着“规则 a”

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

config.yaml ~个人例子

a: Param A
b: Param B

Snakefile ~只有一条规则的个人示例

configfile: "config.yaml"

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


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

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

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

于 2017-07-28T22:02:12.177 回答