这似乎在 SnakeMake 中用于链接参数。这样做可以吗,还是会在并行环境中引起问题,是否应该使用 PersistentDict 代替?
rule a:
params:
a = "Param A", b="Param B"
...
rule b:
params: rules.a.params.b
这似乎在 SnakeMake 中用于链接参数。这样做可以吗,还是会在并行环境中引起问题,是否应该使用 PersistentDict 代替?
rule a:
params:
a = "Param A", b="Param B"
...
rule b:
params: rules.a.params.b
我建议不要使用这种方法,因为它会导致不必要的耦合系统
例如,现在“规则 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 正则表达式,但我不想最终将所有规则耦合在一起。
也适用于矫正器的质量阈值等问题。有时您会在不同的校准器中使用类似的阈值来进行比较。