如何通过Nextflow配置文件用同一标签发布两类结果目录?
解决Nextflow同标签多publishDir规则覆盖问题
你遇到的问题是因为同一个withLabel : x块被重复定义,第二次的publishDir会直接覆盖第一次的配置。要实现同标签下不同文件发布到不同目录,只需把多个publishDir规则放在同一个withLabel块的数组里即可,不需要拆分两个独立的withLabel块。
修改后的配置文件如下:
process { withLabel : x { publishDir = [ // 处理结果文件夹的规则 [ path: {"$params.outdir/"}, pattern: "*_results", mode: 'copy', saveAs: { filename -> "${filename.split('_')[0]}/all_results/${filename.split('_')[1]}" } ], // 处理日志文件的规则 [ path: {"$params.outdir/"}, pattern: "*.log", mode: 'copy', saveAs: { filename -> "${filename.split('_')[0]}/logs/${filename}" } ] ] } }
关键说明:
- Nextflow允许将多个
publishDir配置作为数组元素传入,每个元素对应一套发布规则 - 流程输出的
test_results会匹配第一个规则,被发布到${params.outdir}/test/all_results/results - 流程输出的
test_log.log会匹配第二个规则,被发布到${params.outdir}/test/logs/test_log.log - 未匹配任何pattern的输出(比如
something_for_next_process)不会被自动发布,符合你原流程的需求
内容的提问来源于stack exchange,提问作者mehmet
相关产品推荐
相关产品推荐

