关于Fastq格式的一些想法

最近想写一个关于多软件批处理序列的脚本,在观察文件的过程中,发现了.fq格式和.fastq格式心中不免有些疑问——这两种格式有什么区别,查询资料后,在此阐述一下对fastq文件格式的看法。

FASTQ是基于文本的,保存生物序列(通常是核酸序列)和其测序质量信息的标准格式。其序列以及质量信息都是使用一个ASCII字符标示,最初由Sanger开发,目的是将FASTA序列与质量数据放到一起,目前已经成为高通量测序结果的事实标准。

格式说明

FASTQ文件中每个序列通常有四行:

  1. 序列标识以及相关的描述信息,以‘@’开头;
  2. 第二行是序列
  3. 第三行以‘+’开头,后面是序列标示符、描述信息,或者什么也不加
  4. 第四行,是质量信息,和第二行的序列相对应,每一个序列都有一个质量评分,根据评分体系的不同,每个字符的含义表示的数字也不相同。

例如:
@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
++
!''((((+))%%%++)(%%%%).1-+''))**55CCF>>>>>>CCCCCCC65

HWI-1KL118 the unique instrument name
98 the run id
C374TACXX the flowcell id
4 flowcell lane
1101 tile number within the flowcell lane
1247 'x'-coordinate of the cluster within the tile
2191 'y'-coordinate of the cluster within the tile
1 the member of a pair, 1 or 2 (paired-end or mate-pair reads only)
N Y if the read fails filter (read is bad), N otherwise
0 0 when none of the control bits are on, otherwise it is an even number
TTAGGC index sequence

关于质量编码格式

质量评分指的是一个碱基的错误概率的对数值。其最初在Phred拼接软件中定义与使用,其后在许多软件中得到使用。其质量得分与错误概率的对应关系见下表:

Phred quality scores are logarithmically linked to error probabilities

:Phred Quality Score: : Probability of incorrect base call: :Base call accuracy:
10 1 in 10 90 %
20 1 in 100 99 %
30 1 in 1000 99.9 %
40 1 in 10000 99.99 %
50 1 in 100000 99.999 %

Phred quality scores Q are defined as a property which is logarithmically related to the base-calling error probabilities P.
除了Phred质量得分换算标准,还有就是Solexa标准:


两种换算标准的比较:

P/S换算比较

Relationship between Q and p using the Sanger (red) and Solexa (black) equations (described above). The vertical dotted line indicates p = 0.05, or equivalently, Q ≈ 13.

对于每个碱基的质量编码标示,不同的软件采用不同的方案,目前有5种方案:

  • Sanger,Phred quality score,值的范围从0到92,对应的ASCII码从33到126,但是对于测序数据(raw read data)质量得分通常小于60,序列拼接或者mapping可能用到更大的分数。
  • Solexa/Illumina 1.0, Solexa/Illumina quality score,值的范围从-5到63,对应的ASCII码从59到126,对于测序数据,得分一般在-5到40之间;
  • Illumina 1.3+,Phred quality score,值的范围从0到62对应的ASCII码从64到126,低于测序数据,得分在0到40之间;
  • Illumina 1.5+,Phred quality score,但是0到2作为另外的标示,详见http://solexaqa.sourceforge.net/questions.htm#illumina
  • Illumina 1.8+
下面是更为直观的表示:

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS.....................................................
..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
...............................IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII......................
.................................JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ......................
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL....................................................
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~

  • S - Sanger Phred+33, raw reads typically (0, 40)
  • X - Solexa Solexa+64, raw reads typically (-5, 40)
  • I - Illumina 1.3+ Phred+64, raw reads typically (0, 40)
  • J - Illumina 1.5+ Phred+64, raw reads typically (3, 40)
    with 0=unused, 1=unused, 2=Read Segment Quality Control Indicator (bold)
    (Note: See discussion above).
  • L - Illumina 1.8+ Phred+33, raw reads typically (0, 41)

文件后缀

没有特别的规定,通常使用.fq, .fastq, .txt等
FASTQ格式的序列一般都包含有四行,第一行由@开始,后面跟着序列的描述信息,这点跟FASTA格式是一样的。第二行是序列。第三行由'+'开始,后面也可以跟着序列的描述信息。第四行是第二行序列的质量评价(quality values,注:应该是测序的质量评价),字符数跟第二行的序列是相等的。

FASTQ格式例子:

@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
++
!''((((+))%%%++)(%%%%).1-+''))**55CCF>>>>>>CCCCCCC65

例如在NCBI看到的FASTQ格式如下:

@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC
+SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC

FASTQ格式与Fasta格式、GenBank等格式的相互转换

你可能感兴趣的:(关于Fastq格式的一些想法)