使用snakemake中的config.yaml文件定义参数时是否可以使用通配符?我使用一般的R脚本来制作相同的基本热图,但使用不同的输入矩阵。我想使用通配符为config.yaml文件中的每个热图指定热图的配置(例如K-means群集的K数)。
例如:
rule heatmap:
input: {condition}.mat
output: {condition}.png
params: clusters=config["heatmap-{condition}"][k]
log: "logs/results/heatmap-{condition}.log"
这样我可以在我的config.yaml文件中将k的数量定义为20,如{condition} = "development"
时那样:
heatmap-development:
k:
- 20
现在我为KeyError
获得了'{condition}'
。任何帮助将不胜感激,非常感谢
答案 0 :(得分:3)
你需要在params指令中使用一个函数来知道通配符。
rule heatmap:
input: {condition}.mat
output: {condition}.png
params: clusters = lambda w: config["heatmap-{}".format(w.condition)][k]
log: "logs/results/heatmap-{condition}.log"
在此处阅读更多内容:http://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules