咨询:如何获取Snakemake pipeline完整运行的唯一ID
获取Snakemake Pipeline运行的唯一ID方法
Snakemake没有像Nextflow的nextflow log那样直接列出所有运行ID的内置命令,但可以通过以下几种方式获取单条运行的唯一标识:
1. 使用内置的workflow.run_id变量
Snakemake会为每个运行生成一个唯一的UUID格式ID,直接通过内置的workflow.run_id变量即可访问:
- 在Snakefile的规则中调用,比如将ID写入文件留存:
rule save_run_id: output: "run_identifier.txt" shell: """ echo "本次运行ID: {workflow.run_id}" > {output} """ - 若想在命令行快速查看当前运行的ID,无需修改Snakefile,直接用
--eval参数执行代码:snakemake --eval 'print(workflow.run_id)'
2. 从自动生成的日志文件中提取
Snakemake默认会在.snakemake/log/目录下生成运行日志,每个日志文件开头都会标注运行ID,格式类似:
Run ID: 5b8d2a1e-3c7f-49a0-b1c2-d3e4f5a6b7c8
可以用命令快速提取最新运行的ID:
grep -o "Run ID: [a-f0-9-]*" .snakemake/log/*.log | sort | tail -n1 | cut -d' ' -f3
3. 自定义生成并传递唯一ID
如果需要完全自主控制ID的生成规则,可以自己生成唯一标识,再通过配置参数传递给Snakemake:
# 用uuidgen生成UUID(也可以用时间戳等自定义格式) RUN_ID=$(uuidgen) # 将ID传入Snakemake snakemake --config custom_run_id=$RUN_ID
之后在Snakefile中通过config.custom_run_id即可调用这个自定义ID。
内容的提问来源于stack exchange,提问作者Zeth
相关产品推荐
相关产品推荐

