Nextflow中实现分组元组与对应RDS文件的关联(多对比组支持)
Nextflow分组匹配样本对应RDS文件的实现
初始分组生成
从Nextflow通道输出生成分组元组的代码如下:
ch_groups = INPUT_CHECK_GEX.out.group_samplesheet .splitCsv( header:true, sep:',', strip:true ) .map { row -> def keyID = row["keyid"] def sampleID = row["sampleid"] return [keyID, sampleID] } .groupTuple() ch_groups.view()
输出结果:
[group1-group2, [sample1, sample2, sample3, sample4]]
需求与遇到的问题
现有另一个元组格式通道 SEURAT_SINGLE.out.rds,存储样本与对应RDS文件路径的映射。需要为每个分组元组获取对应的所有RDS文件列表,但遇到以下问题:
- 新增对比组后,初始方法仅输出第一个组的结果
- 使用
join操作虽能识别多组,但无法处理同时属于多个组的重复样本
最终解决方案
通过combine操作实现需求,代码如下:
ch_groups = INPUT_CHECK_GEX.out.group_samplesheet .splitCsv( header:true, sep:',', strip:true ) .map { row -> def key = row["keyid"] def sample = row["sampleid"] return [sample, key] } .combine(SEURAT_SINGLE.out.rds, by: 0) .map { sample, key, rds_file -> tuple( key, rds_file ) } .groupTuple() .view()
该代码可正确输出每个分组对应的完整RDS文件列表,包括多组共享样本的对应文件。
内容的提问来源于stack exchange,提问作者Samantha Sevilla
相关产品推荐
相关产品推荐

