关于Fastq格式的一些想法
最近想写一个关于多软件批处理序列的脚本,在观察文件的过程中,发现了.fq格式和.fastq格式心中不免有些疑问——这两种格式有什么区别,查询资料后,在此阐述一下对fastq文件格式的看法。
FASTQ是基于文本的,保存生物序列(通常是核酸序列)和其测序质量信息的标准格式。其序列以及质量信息都是使用一个ASCII字符标示,最初由Sanger开发,目的是将FASTA序列与质量数据放到一起,目前已经成为高通量测序结果的事实标准。
格式说明
FASTQ文件中每个序列通常有四行:
- 序列标识以及相关的描述信息,以‘@’开头;
- 第二行是序列
- 第三行以‘+’开头,后面是序列标示符、描述信息,或者什么也不加
- 第四行,是质量信息,和第二行的序列相对应,每一个序列都有一个质量评分,根据评分体系的不同,每个字符的含义表示的数字也不相同。
例如:
@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等格式的相互转换