遍历成对的末端 fastq 读取

looping through paired end fastq reads

如何遍历双端 fastq 文件?对于单端读取,您可以执行以下操作

library(ShortRead)
strm <- FastqStreamer("./my.fastq.gz")
repeat {
       fq <- yield(strm)
       if (length(fq) == 0)
     break
       #do things
       writeFasta(fq, 'output.fq', mode="a")
       }

但是,如果我编辑一个双端文件,我需要以某种方式跟踪第二个文件,以便这两个文件继续相互对应

Paired-end fastq 文件通常是有序的,

因此您可以跟踪删除的行,并将它们从配对文件中删除。但这不是一个好方法,如果你的数据是 line-wrapped 你会很痛苦。

更好的方法是使用 header 信息

两个文件中配对读取的 header 是相同的,除了指定读取是反向还是正向(1 或 2)的字段...

首先从文件 1 读取: @M02621:7:000000000-ARATH:1:1101:15643:1043 1:N:0:12

首先从文件 2 中读取 @M02621:7:000000000-ARATH:1:1101:15643:1043 2:N:0:12

数字 1101:15643:1043 分别指代图块和该图块上的 x、y 坐标。

对于给定的 运行,这些数字唯一地标识每个读取对。 使用此信息,您可以从第二个文件中删除不在第一个文件中的读取。

或者,如果您正在进行质量修整...Trimmomatic 可以对 paired-end 数据执行 quality/length 过滤,而且速度很快...