Nextflow:channel.fromFilePairs() 地图后处理

问题描述 投票:0回答:1

我有关于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]}

这给了我一个错误:模式类型上的未知方法调用“负”。

有什么建议吗?非常感谢

groovy mapping channel nextflow illumina
1个回答
0
投票

您只需使用波形符运算符首先创建一个模式对象:

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]]
© www.soinside.com 2019 - 2024. All rights reserved.