在 Biopython 中,序列通常以 `Seq` 物件的形式保存,這些物件在字串行為之上添加了各種生物方法。
此頁面描述了 Biopython Seq
物件,定義在 Bio.Seq
模組中(以及相關的物件,如 MutableSeq
,加上一些通用的序列函數)。除了這個 wiki 頁面之外,在教學文件(PDF)中有一整章關於 Seq
物件的內容 - 以及它的API 文件(您可以在線上閱讀,或在 Python 中使用 help 指令)。
如果您需要儲存額外的資訊,例如序列識別符或名稱,甚至更多詳細資訊(例如描述或註釋),則我們會改用SeqRecord
物件。這些是 SeqIO
模組用於讀取和寫入序列檔案的序列記錄。
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')
您可以轉譯 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)
...