FASTA格式

在生物資訊學中，FASTA格式是一種用於記錄核酸序列或肽序列的文本格式，其中的核酸或胺基酸均以單個字母編碼呈現。該格式同時還允許在序列之前定義名稱和編寫注釋。這一格式最初由FASTA軟體包定義，但現今已是生物資訊學領域的一項標準。

FASTA簡明的格式降低了序列操縱和分析的難度，令序列可被文本處理工具和諸如Python、Ruby和Perl等腳本語言處理。

## 格式

FASTA格式中的一條完整序列，包含開頭的單行描述行和多行序列數據。描述行行首前置半角大於號（「>」）以和數據行區分。「>」後緊接的內容為該序列的標識符，該行剩餘部分則為序列的描述（標識符與描述均非必須）。「>」和標識符之間不應有空格，且建議將單行內容限制在80字符以內。序列的結束以下一條序列的「>」出現為標識。如下為FASTA評論區格式一條序列的示例：

```console
>gi|31563518|ref|NP_852610.1 关，瓦斯4 microtubule-associated proteins 1A/1B light chain 3A isoform b [Homo sapiens]
MKMRFFSSPCGKAAVDPADRCKEVQQIRDQHPSKIPVIIERYKGEKQLPVLDKTKFLVPDHVNMSELVKI
IRRRLQLNPTQAFFLLVNQHSMVSVSTPIADIYEQEKDEDGFLYMVYASQETFGFIRENE
```

上例中，「gi|31563518|ref|NP_852610.1|」是序列的名稱。

## 歷史

原版FASTA/Pearson格式定義出現在FASTA程序包的文檔中。可隨FASTA的任一免費版本下載（見fasta20.doc、fastaVN.doc或fastaVN.me，其中VN代表版本號）。

FASTA格式中的一條序列由多行文本組成，每一行的字符數均不能超過120字符，通常不推薦超過80字符。這一限制可能與軟體為單行顯示預分配固定大小內存有關：當時大部分的使用者都使用DEC VT（或其兼容）終端，而這一終端單行支持顯示的字符數上限在80到132個之間。大部分人會將他們的終端配置為字號較大的80字符模式，因此在FASTA中每行只包含80字符或更少（通常為70字符）成為了推薦的做法。此外，標準列印頁的一行寬度也在70到80字符之間（取決於字體）。

FASTA文件的首行以一個「>」（大於號）或（分號，較不常見）起始，後者是一條注釋。然而，後續以分號起始的各行卻會被軟體忽略。由於軟體只會識別第一條注釋，早期會在首行注釋中編寫序列摘要（以唯一的圖書館登錄號起始）；但隨時間推移，現在的常見做法是只使用「>」（包括首行），不再使用任何注釋（因軟體會忽略後者）。

在首行（用於唯一描述序列）之後，是以單字母標準編碼表達的實際序列數據。有效編碼以外的任何字符（包括空格、制表符、星號等）都會被忽略。在結尾以「*」（星號）以示序列結束亦是早期的一種常見做法（與PIR格式序列類似）；同樣因為如上原因，描述和序列之間往往還會留有空行。

如下為一些序列文件的樣例：

```console
;LCBO - Prolactin precursor - Bovine
; a sample sequence in FASTA format
MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHDLSS
EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPLYHL
VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTKDED
ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*

>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken
ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID
FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA
DIDGDGQVNYEEFVQMMTAK*

>gi|5524211|gb|AAD44166.1| cytochrome b [Elephas maximus maximus]
LCLYTHIGRNIYYGSYLYSETWNTGIMLLLITMATAFMGYVLPWGQMSFWGATVITNLFSAIPYIGTNLV
EWIWGGFSVDKATLNRFFAFHFILPFTMVALAGVHLTFLHETGSNNPLGLTSDSDKIPFHPYYTIKDFLG
LLILILLLLLLALLSPDMLGDPDNHMPADPLNTPLHIKPEWYFLFAYAILRSVPNKLGGVLALFLSIVIL
GLMPFLHTSKHRSMMLRPLSQALFWTLTMDLLTLTWIGSQPVEYPYTIIGQMASILYFSIILAFLPIAGX
IENY
```

多序列FASTA文件可由單序列FASTA文件字串連接而成。這並不與FASTA文件要求首行可以或「>」起始的格式相衝突，因為只要後續所有序列都以「>」起始便可被軟體視為不同序列（並推而廣之要求序列定義行必須使用「>」）。所以，如上的示例在連接後即為合法的多序列文件。

## 描述行

描述行（定義行）或標題行以「>」開始，緊隨著序列的名稱和/或唯一標識符，除此還可包含其他資訊。在過時的做法中，標題行有時可以有一條以上的標題，並以^A（Control-A）控制符分隔。

在原版的Pearson FASTA格式中，以分號起始的注釋可在標題行之後出現。但一些遵守 NCBI FASTA規範的資料庫和生物資訊軟體不會識別這些注釋。如下為多序列FASTA文件的示例：

```console
>SEQUENCE_1
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL
>SEQUENCE_2
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH
```

### 序列表達

在標題行和注釋之後，是由一行或多行構成的序列數據，其中每行的長度應短於80字符。序列可以是蛋白質序列或核酸序列，其中可以包含空白占位或比對用字符（見序列比對）。序列應以標準的IUB/IUPAC胺基酸和核酸編碼表達，除以下例外：允許小寫字母，並會被轉作大寫字母；一個半角連字符可表示一個空白字符；且在胺基酸序列中，U和*是合法字符（見下文）。標準中不允許數字，但部分資料庫使用數字來表示序列的位置。

支持的核酸編碼如下：

核酸編碼｜含義｜輔助記憶

A｜A｜腺嘌呤（Adenine）

C｜C｜胞嘧啶（Cytosine）

G｜G｜鳥嘌呤（Guanine）

T｜T｜胸腺嘧啶（Thymine）

U｜U｜尿嘧啶（Uracil）

R｜A、G｜嘌呤（puRine）

Y｜C、T、U｜嘧啶（pYrimidines）

K｜G、T、U｜酮基（Ketones）

M｜A、C｜氨基（aMino）

S｜C、G｜強（Strong）結合力

W｜A、T、U｜弱（Weak）結合力

B｜非A（如C、G、T、U）｜A後為B

D｜非C（如A、G、T、U）｜C後為D

H｜非G（如A、C、T、U）｜G後為H

V｜非T非U（如A、C、G）｜U後為V

N｜A C G T U｜任意核酸（Nucleic acid）

不定長度空白占位符

支持的蛋白質序列編碼（25條胺基酸和3條特殊編碼）如下：

胺基酸編碼｜含義

A｜丙氨酸（Alanine）

B｜天冬氨酸（Aspartic acid，D）或天冬醯胺（Asparagine，N）

C｜半胱氨酸（Cysteine）

D｜天冬氨酸（Aspartic acid）

E｜穀氨酸（Glutamic acid）

F｜苯丙氨酸（Phenylalanine）

G｜甘氨酸（Glycine）

H｜組氨酸（Histidine）

I｜異亮氨酸（Isoleucine）

J｜亮氨酸（Leucine，L）或異亮氨酸（Isoleucine，I）

K｜賴氨酸（Lysine）

L｜亮氨酸（Leucine）

M｜甲硫氨酸（Methionine）

N｜天冬醯胺（Asparagine）

O｜吡咯賴氨酸（Pyrrolysine）

P｜脯氨酸（Proline）

Q｜穀氨醯胺（Glutamine）

R｜精氨酸（Arginine）

S｜絲氨酸（Serine）

T｜蘇氨酸（Threonine）

U｜硒半胱氨酸（Selenocysteine）

V｜纈氨酸（Valine）

W｜色氨酸（Tryptophan）

Y｜酪氨酸（Tyrosine）

Z｜穀氨酸（Glutamic acid，E）或穀氨醯胺（Glutamine，Q）

X｜任意

-｜翻譯終止

不定長度空白占位符

## 序列標識符

NCBI標準定義了標題行中序列唯一標識符（SeqID）的格式。在Formatdb的手冊頁中有寫到：「formatdb可以自動地解析SeqID並創建索引，但在FASTA定義行中的資料庫標識符必須遵守FASTA定義行格式的慣例。」

下表為NCBI FASTA定義行的格式（另見 "The NCBI Handbook", Chapter 16, The BLAST Sequence Analysis Tool）。

資料庫｜格式

GenBank｜`gb&#124;''accession''&#124;''locus''`

EMBL Data Library｜`emb&#124;''accession''&#124;''locus''`

DDBJ, DNA Database of Japan｜`dbj&#124;''accession''&#124;''locus''`

NBRF PIR｜`pir&#124;&#124;''entry''`

Protein Research Foundation｜`prf&#124;&#124;''name''`

SWISS-PROT｜`sp&#124;''accession''&#124;''entry name''`

Brookhaven Protein Data Bank｜`pdb&#124;''entry''&#124;''chain''`

Patents｜`pat&#124;country&#124;number`

GenInfo Backbone Id｜`bbs&#124;number`

General database identifier｜`gnl&#124;database&#124;identifier`

NCBI Reference Sequence｜`ref&#124;accession&#124;locus`

Local Sequence identifier｜`lcl&#124;identifier`

上表中的管道符（「|」）並不是巴科斯範式中的分隔符，而是格式本身的一部分。多個標識符可以連接，同樣使用管道符分隔。

### 壓縮

FASTA文件的壓縮需要特製的壓縮工具來處理文件里所包含的兩部分資訊：標識符與序列。為獲取更好的壓縮率，壓縮工具會將之分為兩條獨立的壓縮流處理。例如使用上下文模型和數學編碼進行無損壓縮的MFCompress演算法。

### 擴展名

包含FASTA格式序列的文本文件並無標準的擴展名。下表列出了各種擴展名及其含義。

擴展名｜含義｜備註

fasta (.fas)｜普通FASTA｜任意普通的FASTA文件。此類擴展名還有fa、seq、fsa。

fna｜核酸FASTA｜普遍用於表示核酸序列的FASTA文件。

ffn｜核酸編碼區FASTA｜包含基因組編碼區的FASTA文件。

faa｜胺基酸FASTA｜包含表示胺基酸序列的FASTA文件。含有多種蛋白質序列的FASTA文件還可使用更具體的mpfa擴展名。

frn｜非編碼RNA FASTA｜包含以DNA字母編碼表示的基因組非編碼RNA區（如tRNA、rRNA）的FASTA文件。

## 外部連結

- What is FASTA Format? 什麼是FASTA格式.
- HUPO-PSI Standard FASTA Format HUPO-PSI發表的另一種FASTA格式.
- Sequence ID (seqID) Fields in the FASTA Deflines of Sequences from NCBI FASTA定義行的格式.