遍历成对的末端 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 过滤,而且速度很快...
如何遍历双端 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 过滤,而且速度很快...