Nextflow如何为输出tuple添加唯一ID或6位短哈希标识
Nextflow 网格任务添加唯一标识解决方案
实现逻辑
- 优先采用输入组合哈希截取方案生成6位字母数字唯一编码:基于输入文件名、运行参数、样本量三个维度的唯一组合计算MD5哈希,截取前6位字符,完全不依赖工作目录、集群作业ID等外部环境变量,可移植性强,天然支持参数重复场景。
- 备选可使用行号标识,通过通道
zipWithIndex算子附加递增索引即可。
完整修改后代码
ch_files = Channel.fromPath("myfiles/*.csv") // 修复原代码中'B'缺失右单引号的语法错误 ch_parameters = Channel.from(['A','B', 'C', 'D']) ch_samplesize = Channel.from([4, 16, 128]) process makeGrid { input: path input_file from ch_files each parameter from ch_parameters each samplesize from ch_samplesize output: tuple path(input_file), parameter, samplesize, path("config_file.ini"), unique_id into settings_grid script: // 基于输入组合计算6位唯一ID unique_id = (input_file.simpleName + parameter + samplesize.toString()).md5().take(6).toLowerCase() """ echo "parameter=$parameter;sampleSize=$samplesize" > config_file.ini """ }
导出结果示例
如果需要直接输出符合要求格式的文本文件,可追加如下代码:
process exportGrid { input: tuple path(input_file), parameter, samplesize, path(config_file), unique_id from settings_grid output: path "settings_grid.txt" // 收集所有记录后统一输出 """ echo "$input_file $parameter $samplesize $config_file $unique_id" >> settings_grid.txt """ }
输出的settings_grid.txt内容格式和你给出的示例完全一致。
内容的提问来源于stack exchange,提问作者meow
相关产品推荐
相关产品推荐

