FASQT格式是用於存儲生物序列(通常是核苷酸序列)及其相應的鹼基質量分數的一種文本格式。為簡潔起見,序列字母和質量分數均使用單個ASCII字符進行編碼。最初由Wellcome Trust Sanger Institute(桑格研究所)開發用於捆綁FASTA格式的序列和其鹼基質量分數的,現在已成為存儲Illumina Genome Analyzer(Illumina基因組分析儀)等高通量測序儀的標准輸出格式。
FASTQ文件格式
- 第1行,以“@” 字符開頭,后面跟着一個序列標識符和一個可選的描述(像FASTA格式標題行)。
- 第2行,原始序列字符。
- 第3行,以“+”字符開頭,后面可選地跟着相同的序列標識符或者任何描述。
- 第4行,第2行序列每個鹼基的質量編碼值,包含與第2行字符數量相同的符號。
包含單個序列的FASTQ文件示例如下:
@SEQ_ID GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT + !''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
字符“!”和“~”分別代表最低和最高質量,下面是ASCII代表質量值從左到右順序遞增:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Illumina序列標識符
來自Illumina軟件的序列使用系統標識符:
@HWUSI-EAS100R:6:73:941:1973#0/1
HWUSI-EAS100R | the unique instrument name |
---|---|
6 | flowcell lane |
73 | tile number within the flowcell lane |
941 | 'x'-coordinate of the cluster within the tile |
1973 | 'y'-coordinate of the cluster within the tile |
#0 | index number for a multiplexed sample (0 for no indexing) |
/1 | the member of a pair, /1 or /2 (paired-end or mate-pair reads only) |
Illumina流程1.4版本以后,使用#NNNNNN代替#0作為多重ID,NNNNNN是多重標簽的序列。
@EAS139:136:FC706VJ:2:2104:15343:197393 1:Y:18:ATCACG
EAS139 | the unique instrument name |
---|---|
136 | the run id |
FC706VJ | the flowcell id |
2 | flowcell lane |
2104 | tile number within the flowcell lane |
15343 | 'x'-coordinate of the cluster within the tile |
197393 | 'y'-coordinate of the cluster within the tile |
1 | the member of a pair, 1 or 2 (paired-end or mate-pair reads only) |
Y | Y if the read is filtered, N otherwise |
18 | 0 when none of the control bits are on, otherwise it is an even number |
ATCACG | index sequence |
請注意,最新版本的Illumina軟件會輸出樣本編號(從樣本表中讀取替代)代替索引序列。例如,以下情況可能出現在批次的第一個樣本中:
@EAS139:136:FC706VJ:2:2104:15343:197393 1:N:18:1
NCBI SRA數據
來自NCBI/EBI SRA數據庫的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
在本例中,由一個NCBI分配的標識符、描述保存Solexa/Illumina的原始標識符和read長度。測序是在雙端模式下進行的(~500bp插入大小),詳見SRR001666。值得注意的是,當使用帶缺省參數設置的fastq-dump從SRA數據中提取數據時,fastq-dump將正向read和反向read的序列連接在一起,提取的序列具有雙倍長度,丟失了雙端測序信息。
$ /opt/sratoolkit.2.5.7-centos_linux64/bin/fastq-dump SRR001666 @SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=72 GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACCAAGTTACCCTTAACAACTTAAGGGTTTTCAAATAGA +SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=72 IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9ICIIIIIIIIIIIIIIIIIIIIDIIIIIII>IIIIII/ @SRR001666.2 071112_SLXA-EAS1_s_7:5:1:801:338 length=72 GTTCAGGGATACGACGTTTGTATTTTAAGAATCTGAAGCAGAAGTCGATGATAATACGCGTCGTTTTATCAT +SRR001666.2 071112_SLXA-EAS1_s_7:5:1:801:338 length=72 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII6IBIIIIIIIIIIIIIIIIIIIIIIIGII>IIIII-I)8I
更好的方法是保存原始材料並分成兩個或三個文件(正向、反向、單個),例如:
$ /opt/sratoolkit.2.5.7-centos_linux64/bin/fastq-dump --origfmt --split-3 SRR001666 $ head SRR001666_1.fastq SRR001666_2.fastq ==> SRR001666_1.fastq <== @071112_SLXA-EAS1_s_7:5:1:817:345 GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC +071112_SLXA-EAS1_s_7:5:1:817:345 IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC @071112_SLXA-EAS1_s_7:5:1:801:338 GTTCAGGGATACGACGTTTGTATTTTAAGAATCTGA +071112_SLXA-EAS1_s_7:5:1:801:338 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII6IBI ==> SRR001666_2.fastq <== @071112_SLXA-EAS1_s_7:5:1:817:345 AAGTTACCCTTAACAACTTAAGGGTTTTCAAATAGA +071112_SLXA-EAS1_s_7:5:1:817:345 IIIIIIIIIIIIIIIIIIIIDIIIIIII>IIIIII/ @071112_SLXA-EAS1_s_7:5:1:801:338 AGCAGAAGTCGATGATAATACGCGTCGTTTTATCAT +071112_SLXA-EAS1_s_7:5:1:801:338 IIIIIIIIIIIIIIIIIIIIIIGII>IIIII-I)8I
另請注意,NCBI已將此FASTQ數據從原始Solexa/Illumina編碼轉換為Sanger標准(請參閱下面的編碼)。
變動
質量
質量值Q是p的整數映射(即相應鹼基判定不正確的概率),主要有兩種不同的公式被使用。第一種是評估鹼基判定的可靠性的不標准Sanger變體,也稱為Phred質量分數:
Solexa流程(即與Illumina Genome Analyzer一起交付的軟件)較早使用了不同的映射編碼概率p/(1-p),而不是p:
雖然兩個映射在更高質量值處漸近地相同,但它們在較低質量水平下不同(即,近似p> 0.05等同Q <13)。
使用Sanger(紅色)和Solexa(黑色)方程(如上所述)的Q和p之間的關系。 垂直虛線表示p = 0.05,或等同地Q≈13。
llumina流程1.4版用戶指南(附錄B,第122頁)指出:“評分定義為:Q=10*log10(p/(1-p)),其中p是對應鹼基判定的概率”。Illumina流程1.5版用戶指南(第5頁新增內容)對此進行了修改,“流程1.3版質量評分方案已更改為Phred評分方案,質量得分按Phred+64被轉換為ASCII字符表示。”
編碼
- Sanger格式可以使用ASCII 33~126字符表示0~93的Phred質量分數(盡管在原始read數據中,Phred質量分數很少超過60,但在組裝或比對中可能有更高的分數)。這種方法也用於SAM格式中。根據seqanswers.com 上的公告,到2011年2月底,Illumina最新版本(1.8)的CASAVA流程將直接產生Sanger格式的fastq文件。
- Solexa/Illumina 1.0格式可以使用ASCII 59~126字符表示-5~62的Solexa/Illumina評分(原始read數據Solexa評分僅為-5~40)。
- 從Illumina 1.3版本開始,到Illumina 1.8版本,使用ASCII 64~126表示0~62的Phred質量分數(原始數據中Phred分數僅為0~40)。
- 從Illumina1.5版本開始,到Ilumina 1.8版本,Phred分數為0~2的含義略有不同。值0和1不在使用,值2(ASCII字符“B”)作為read片段結束的質量控制指示器。Illumina手冊(第30頁)內容:如果read以質量最差的一段(Q15或更低)結束,則片段中的所有質量值將被值2替換(ASCII字符“B”)…此Q2指標不能表示特定的錯誤率,而是表示read的特定最終部分不應用於進一步分析。此外,在Illumina 1.6版本之前,質量分數編碼為“B”的鹼基也可能在read內部發生,如下所示:
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1 TTAATTGGTAAATAAATCTCCTAATAGCTTAGATNTTACCTTNNNNNNNNNNTAGTTTCTTGAGATTTGTTGGGGGAGACATTTTTGTGATTGCCTTGAT +HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1 efcfffffcfeefffcffffffddf`feed]`]_Ba_^__[YBBBBBBBBBBRTT\]][]dddd`ddd^dddadd^BBBBBBBBBBBBBBBBBBBBBBBB
- 對於原始的read,質量分數的范圍取決於所使用的技術和鹼基判定標准,但對於最新的Illumina流程,通常會達到41.由於最大觀察質量分數以前僅為40,因此各種腳本工具在遇到質量值大於40的數據時會中斷。而對於經過過處理的read,質量分數可能會更高。例如:Illumina的Long Read Sequencing Service(以前的Moleculo)中read的質量分數為45。
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS..................................................... ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................... ...............................IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...................... .................................JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ..................... LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.................................................... !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ | | | | | | 33 59 64 73 104 126 0........................26...31.......40 -5....0........9.............................40 0........9.............................40 3.....9..............................41 0.2......................26...31........41 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, 41) 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)
色域
SOLiD數據,除了第一個位置,序列信息存儲在色域中。質量值是Sanger格式的質量值,比對工具在質量值的首選版本上有所不同:其中一些包括主要和核苷酸的質量評分,而另一些則沒有。序列read存檔文件包含此質量分數。
模擬
壓縮
質量分數占FASTQ格式所需磁盤空間(壓縮前)的一般左右,因此壓縮質量值可顯著降低存儲需求並加快測序數據的分析和傳輸。文獻中提到的壓縮方式主要無損和有損壓縮。例如,有損壓縮QualComp,無損壓縮SCALCE、fastqz。
從Hiseq 2500開始,Illumina提供了將粗粒度質量輸出到質量表的選項。分積分數直接從經驗質量分數表中計算得出,該分數表與測序實驗中所使用的硬件、軟件和化學物質有關。
文件拓展名
FASTQ文件並沒有標准的文件拓展名,但通常都是.fq或.fastq。
格式轉換器
- Biopython version 1.51 onwards (interconverts Sanger, Solexa and Illumina 1.3+)
- EMBOSS version 6.1.0 patch 1 onwards (interconverts Sanger, Solexa and Illumina 1.3+)
- BioPerl version 1.6.1 onwards (interconverts Sanger, Solexa and Illumina 1.3+)
- BioRuby version 1.4.0 onwards (interconverts Sanger, Solexa and Illumina 1.3+)
- BioJava version 1.7.1 onwards (interconverts Sanger, Solexa and Illumina 1.3+)
- MAQ can convert from Solexa to Sanger (use this patch to support Illumina 1.3+ files).
- fastx_toolkit The included fastq_quality_converter program can convert Illumina to Sanger
命令行轉換
FASTQ to FASTA format:
zcat input_file.fastq.gz | awk 'NR%4==1{printf ">%s\n", substr($0,2)}NR%4==2{print}
' > output_file.fa
Illumina FASTQ 1.8 to 1.3
sed -e '4~4y/!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJ/@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghi/' myfile.fastq # add -i to save the result to the same input file
Illumina FASTQ 1.3 to 1.8
sed -e '4~4y/@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghi/!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJ/' myfile.fastq # add -i to save the result to the same input file
Illumina FASTQ 1.8 raw quality to binned quality (HiSeq Qtable 2.10.1, HiSeq 4000 )
sed -e '4~4y/!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKL/))))))))))----------77777<<<<<AAAAAFFFFFJJJJ/' myfile.fastq # add -i to save the result to the same input file
Illumina FASTQ 1.8 raw quality to clinto format (a visual block representation)
sed -e 'n;n;n;y/!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKL/▁▁▁▁▁▁▁▁▂▂▂▂▂▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▆▆▆▆▆▇▇▇▇▇██████/' myfile.fastq # add -i to save the result to the same input file
參考資料