Nextflow中splitFastq按文件数拆分及通道传递readnum问询
解决splitFastq传递通道中读取数的问题
问题出在你通道里的readnum是Nextflow的val()包装对象,直接取tuple[1]拿到的不是纯数值,而splitFastq的by参数需要的是整数读取数。你可以通过两种方式解决:
方式一:先转换通道中的数值
先把通道里的val(readnum)解包成实际数值,再传给splitFastq:
// 先处理通道,提取val对象里的实际数值 ch_processed = ch_A.map { id, readnum_val, fq1, fq2 -> [id, readnum_val.get(), fq1, fq2] } // 再调用splitFastq ch_split = ch_processed.splitFastq(by: { tuple -> tuple[1] })
方式二:在splitFastq闭包里直接解包
不用提前处理通道,直接在闭包里调用get()方法获取数值:
ch_split = ch_A.splitFastq(by: { tuple -> tuple[1].get() })
注意:确保readnum是整数类型,因为splitFastq的by参数只接受整数读取数,如果你的计算结果是小数,记得做取整处理(比如用toInteger()或者ceil()后转整数)。
内容的提问来源于stack exchange,提问作者Calli
相关产品推荐
相关产品推荐

