在 GitHub 上編輯此頁面

使用 Seq 類別處理序列。

在 Biopython 中,序列通常以 `Seq` 物件的形式保存,這些物件在字串行為之上添加了各種生物方法。

此頁面描述了 Biopython Seq 物件,定義在 Bio.Seq 模組中(以及相關的物件,如 MutableSeq,加上一些通用的序列函數)。除了這個 wiki 頁面之外,在教學文件PDF)中有一整章關於 Seq 物件的內容 - 以及它的API 文件(您可以在線上閱讀,或在 Python 中使用 help 指令)。

如果您需要儲存額外的資訊,例如序列識別符或名稱,甚至更多詳細資訊(例如描述或註釋),則我們會改用SeqRecord 物件。這些是 SeqIO 模組用於讀取和寫入序列檔案的序列記錄。

Seq 物件

Seq 物件本質上將 Python 字串與生物方法結合在一起。例如

>>> from Bio.Seq import Seq
>>> my_seq = Seq("AGTACACTGGT")
>>> my_seq
Seq('AGTACACTGGT')

Biopython 不知道這是一個核苷酸序列還是一個富含丙氨酸、甘氨酸、半胱氨酸和蘇氨酸的蛋白質。 如果知道,請在呼叫(反向)互補等方法時牢記這一點 - 見下文。

通用方法

Seq 物件具有許多與 Python 字串類似的方法,例如 find 方法

>>> from Bio.Seq import Seq
>>> my_dna = Seq("AGTACACTGGT")
>>> my_dna
Seq('AGTACACTGGT')
>>> my_dna.find("ACT")
5
>>> my_dna.find("TAG")
-1

還有一個 count 方法

>>> my_dna.count("A")
3
>>> my_dna.count("ACT")
1

但是,請注意,就像 Python 字串的 count 一樣,這是一個非重疊的計數!

>>> "AAAA".count("AA")
2
>>> Seq("AAAA").count("AA")
2

在某些生物學情況下,您可能更喜歡使用 count_overlap 進行重疊計數,這在該範例中將給出三個。

核苷酸方法

如果您有一個核苷酸序列,您可能想要執行反向互補或進行轉譯等操作。 請注意,這裡描述的某些方法僅在 Biopython 1.49 或更高版本中可用。

互補和反向互補

這些非常簡單 - 這些方法會返回一個新的 Seq 物件,其中包含適當的序列

>>> from Bio.Seq import Seq
>>> my_dna = Seq("AGTACACTGGT")
>>> my_dna
Seq('AGTACACTGGT')
>>> my_dna.complement()
Seq('TCATGTGACCA')
>>> my_dna.reverse_complement()
Seq('ACCAGTGTACT')

轉錄和反向轉錄

如果您有一個 DNA 序列,您可能想要將其轉換為 RNA。在生物資訊學中,我們通常假設 DNA 是編碼鏈(而不是模板鏈),因此這只是一個簡單地將所有胸腺嘧啶替換為尿嘧啶的問題

>>> my_dna
Seq('AGTACACTGGT')
>>> my_dna.transcribe()
Seq('AGUACACUGGU')

當然,給定一些 RNA,您可能想要關聯的 DNA - 而且 Biopython 也會進行簡單的 U/T 替換

>>> my_rna = my_dna.transcribe()
>>> my_rna
Seq('AGUACACUGGU')
>>> my_rna.back_transcribe()
Seq('AGTACACTGGT')

如果您真的想要模板鏈,您必須在上面執行反向互補

>>> my_rna
Seq('AGUACACUGGU')
>>> my_rna.back_transcribe().reverse_complement()
Seq('ACCAGTGTACT')

教學文件PDF)中的章節更詳細地介紹了這個鏈的問題。

轉譯

您可以轉譯 RNA

>>> from Bio.Seq import Seq
>>> messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG")
>>> messenger_rna.translate()
Seq('MAIVMGR*KGAR*')

或 DNA - 假設是編碼鏈

>>> from Bio.Seq import Seq
>>> coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
>>> coding_dna.translate()
Seq('MAIVMGR*KGAR*')

在任何一種情況下,都有幾個有用的選項 - 預設情況下,如您在上面的範例中所注意到的,轉譯會持續通過任何終止密碼子,但這是可選的

>>> coding_dna.translate(to_stop=True)
Seq('MAIVMGR')

然後是轉譯表,您可以給出一個 NCBI 遺傳密碼編號或名稱

>>> coding_dna.translate(table=2)
Seq('MAIVMGRWKGAR*')
>>> coding_dna.translate(table="Vertebrate Mitochondrial")
Seq('MAIVMGRWKGAR*')

您當然可以組合這些選項

>>> coding_dna.translate(table=2, to_stop=True)
Seq('MAIVMGRWKGAR')

請參閱教學文件以獲取更多範例和引數(例如,為終止密碼子指定不同的符號),或參閱內建的說明

>>> help(coding_dna.translate)
...