我有关于channel.fromFilePairs()的问题。我有以下 nextflow 脚本:
params.reads = "/path/to/my_reads/sample03_L001_R{1,2}_001.fastq.gz"
my_reads_ch = channel.fromFilePairs(params.reads)
println "reads: $my_reads_ch"
脚本打印 [sample03_L001_R, [/path/to/my_reads/sample03_L001_R1_001.fastq.gz, /path/to/my_reads/sample03_L001_R2_001.fastq.gz]]。
所需的输出为 [sample03, [/path/to/my_reads/sample03_L001_R1_001.fastq.gz, /path/to/my_reads/sample03_L001_R2_001.fastq.gz]]。
如何删除“_L001_R”?
我已经尝试过了
channel.fromFilePairs(params.reads).map{it[0] - /_\w+/, it[1]}
这给了我一个错误:模式类型上的未知方法调用“负”。
有什么建议吗?非常感谢
您只需使用波形符运算符首先创建一个模式对象:
Channel
.fromFilePairs( params.reads )
.map { sample, reads -> tuple( sample - ~/_\w+$/, reads ) }
.view()
更好的方法是更好地定义您的初始全局模式,并让
fromFilePairs
运算符为您剥离它。例如:
params.reads = "/path/to/my_reads/*_L001_R{1,2}_001.fastq.gz"
Channel
.fromFilePairs( params.reads )
.view()
结果:
$ nextflow run main.nf
N E X T F L O W ~ version 24.04.3
Launching `main.nf` [golden_wescoff] DSL2 - revision: f7979e483d
[sample01, [/path/to/my_reads/sample01_L001_R1_001.fastq.gz, /path/to/my_reads/sample01_L001_R2_001.fastq.gz]]
[sample03, [/path/to/my_reads/sample03_L001_R1_001.fastq.gz, /path/to/my_reads/sample03_L001_R2_001.fastq.gz]]
[sample02, [/path/to/my_reads/sample02_L001_R1_001.fastq.gz, /path/to/my_reads/sample02_L001_R2_001.fastq.gz]]