---
tags: DNA Sequencing
---
# FASTAQ format
FastaQ格式是用來儲存核酸序列及其對應鹼基品質的資料儲存格式。
## 序列品質
序列品質是用來評估次世代定序(NGS)之定序結果可信度的數值,其公式如下:
$$Q = -10logP$$
Where
Q:代表序列(鹼基)品質
P:代表出現錯誤的百分比
那麼次世代定序在哪個步驟會出現錯誤,而需要序列品質來評估可信度呢?
要了解這點,首先要了解次世代定序的原理:

次世代定序是一種平行大量定序的技術,會經由以下步驟完成:
1. 將核酸序列打斷成100~150bp的片段
2. 將這些片段接上Adaptor後固定在一玻璃上
3. 加入含Terminator的鹼基及聚合酶,使每次反應只加上一個鹼基
4. 依序拍下每次反應中鹼基發出的螢光
但是反應過程有時就會發生鹼基合成沒有有效終止,而產生定序叢(Cluster)中出現少部分不同螢光的部分,這些不同即是錯誤的鹼基。而公式中的P則是計算錯誤螢光占所有螢光的比例。Q則是轉換後成為容易判讀的讀值。
例如:
Q=10,可視為10個鹼基中會有1個是錯誤的
Q=20,可視為100個鹼基中會有1個是錯誤的
Q=30,可視為1,000個鹼基中會有1個是錯誤的
因此Q值越高,序列的可信度就越高。
## FastQ
FastQ格式如下:
```
1 @SEQ_ID
2 GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
3 +
4 !''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
```
第一行為該Read的名稱
第二行為該Read的序列
第三行可忽略
第四行為序列品質的代碼,以ASCII編碼品質分數,每個符號對應一個分數
ASCII編碼表

ASCII是以"Phred+33"編碼,也就是將Q四捨五入到整數後,加33,再轉換成ASCII對應的符號。
Python程式碼如下:
```python
def QtoPhred33(Q):
"""Turn Q into Phred+33 ASCII-encoded quality"""
return chr(Q + 33)
def phred33ToQ(qual):
"""Turn Phred+33 ASCII-encoded quality into Q"""
return ord(qual)-33
```