- Biopython 教程
- Biopython - 首頁
- Biopython - 簡介
- Biopython - 安裝
- 建立簡單應用程式
- Biopython - 序列
- 高階序列操作
- 序列 I/O 操作
- Biopython - 序列比對
- Biopython - BLAST 概述
- Biopython - Entrez 資料庫
- Biopython - PDB 模組
- Biopython - 基序物件
- Biopython - BioSQL 模組
- Biopython - 群體遺傳學
- Biopython - 基因組分析
- Biopython - 表型微陣列
- Biopython - 繪圖
- Biopython - 聚類分析
- Biopython - 機器學習
- Biopython - 測試技術
- Biopython 資源
- Biopython - 快速指南
- Biopython - 有用資源
- Biopython - 討論
Biopython - 序列
序列是一系列用於表示生物體蛋白質、DNA 或 RNA 的字母。它由 Seq 類表示。Seq 類在 Bio.Seq 模組中定義。
讓我們在 Biopython 中建立一個簡單的序列,如下所示:
>>> from Bio.Seq import Seq
>>> seq = Seq("AGCT")
>>> seq
Seq('AGCT')
>>> print(seq)
AGCT
這裡,我們建立了一個簡單的蛋白質序列 **AGCT**,每個字母分別代表 **A**lanine(丙氨酸)、**G**lycine(甘氨酸)、**C**ysteine(半胱氨酸)和 **T**hreonine(蘇氨酸)。
每個 Seq 物件有兩個重要的屬性:
data - 實際的序列字串 (AGCT)
alphabet - 用於表示序列型別。例如 DNA 序列、RNA 序列等。預設情況下,它不代表任何序列,並且本質上是通用的。
字母表模組
Seq 物件包含 Alphabet 屬性以指定序列型別、字母和可能的運算。它在 Bio.Alphabet 模組中定義。字母表可以定義如下:
>>> from Bio.Seq import Seq
>>> myseq = Seq("AGCT")
>>> myseq
Seq('AGCT')
>>> myseq.alphabet
Alphabet()
Alphabet 模組提供以下類來表示不同型別的序列。Alphabet - 所有型別字母表的基類。
SingleLetterAlphabet - 長度為一的字母的通用字母表。它派生自 Alphabet,所有其他字母表型別都派生自它。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import single_letter_alphabet
>>> test_seq = Seq('AGTACACTGGT', single_letter_alphabet)
>>> test_seq
Seq('AGTACACTGGT', SingleLetterAlphabet())
ProteinAlphabet - 通用單字母蛋白質字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_protein
>>> test_seq = Seq('AGTACACTGGT', generic_protein)
>>> test_seq
Seq('AGTACACTGGT', ProteinAlphabet())
NucleotideAlphabet - 通用單字母核苷酸字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_nucleotide
>>> test_seq = Seq('AGTACACTGGT', generic_nucleotide) >>> test_seq
Seq('AGTACACTGGT', NucleotideAlphabet())
DNAAlphabet - 通用單字母 DNA 字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_dna
>>> test_seq = Seq('AGTACACTGGT', generic_dna)
>>> test_seq
Seq('AGTACACTGGT', DNAAlphabet())
RNAAlphabet - 通用單字母 RNA 字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_rna
>>> test_seq = Seq('AGTACACTGGT', generic_rna)
>>> test_seq
Seq('AGTACACTGGT', RNAAlphabet())
Biopython 模組 Bio.Alphabet.IUPAC 提供了由 IUPAC 社群定義的基本序列型別。它包含以下類:
**IUPACProtein (protein)** - 20 種標準氨基酸的 IUPAC 蛋白質字母表。
**ExtendedIUPACProtein (extended_protein)** - 包括 X 的擴充套件大寫 IUPAC 蛋白質單字母字母表。
**IUPACAmbiguousDNA (ambiguous_dna)** - 大寫 IUPAC 模稜兩可的 DNA。
**IUPACUnambiguousDNA (unambiguous_dna)** - 大寫 IUPAC 明確的 DNA (GATC)。
**ExtendedIUPACDNA (extended_dna)** - 擴充套件的 IUPAC DNA 字母表。
**IUPACAmbiguousRNA (ambiguous_rna)** - 大寫 IUPAC 模稜兩可的 RNA。
**IUPACUnambiguousRNA (unambiguous_rna)** - 大寫 IUPAC 明確的 RNA (GAUC)。
考慮一個 IUPACProtein 類的簡單示例,如下所示:
>>> from Bio.Alphabet import IUPAC
>>> protein_seq = Seq("AGCT", IUPAC.protein)
>>> protein_seq
Seq('AGCT', IUPACProtein())
>>> protein_seq.alphabet
此外,Biopython 透過 Bio.Data 模組公開所有與生物資訊學相關的配置資料。例如,IUPACData.protein_letters 包含 IUPACProtein 字母表可能的字母。
>>> from Bio.Data import IUPACData >>> IUPACData.protein_letters 'ACDEFGHIKLMNPQRSTVWY'
基本操作
本節簡要介紹了 Seq 類中所有可用的基本操作。序列類似於 Python 字串。我們可以在序列中執行 Python 字串操作,如切片、計數、連線、查詢、分割和去除空格。
使用以下程式碼獲取各種輸出。
獲取序列中的第一個值。
>>> seq_string = Seq("AGCTAGCT")
>>> seq_string[0]
'A'
列印前兩個值。
>>> seq_string[0:2]
Seq('AG')
列印所有值。
>>> seq_string[ : ]
Seq('AGCTAGCT')
執行長度和計數操作。
>>> len(seq_string)
8
>>> seq_string.count('A')
2
新增兩個序列。
>>> from Bio.Alphabet import generic_dna, generic_protein
>>> seq1 = Seq("AGCT", generic_dna)
>>> seq2 = Seq("TCGA", generic_dna)
>>> seq1+seq2
Seq('AGCTTCGA', DNAAlphabet())
這裡,以上兩個序列物件 seq1、seq2 是通用 DNA 序列,因此您可以將它們新增並生成新的序列。您不能新增具有不相容字母表的序列,例如蛋白質序列和 DNA 序列,如下所示:
>>> dna_seq = Seq('AGTACACTGGT', generic_dna)
>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> dna_seq + protein_seq
.....
.....
TypeError: Incompatible alphabets DNAAlphabet() and ProteinAlphabet()
>>>
要新增兩個或多個序列,首先將其儲存在 Python 列表中,然後使用“for 迴圈”檢索它,最後將其加在一起,如下所示:
>>> from Bio.Alphabet import generic_dna
>>> list = [Seq("AGCT",generic_dna),Seq("TCGA",generic_dna),Seq("AAA",generic_dna)]
>>> for s in list:
... print(s)
...
AGCT
TCGA
AAA
>>> final_seq = Seq(" ",generic_dna)
>>> for s in list:
... final_seq = final_seq + s
...
>>> final_seq
Seq('AGCTTCGAAAA', DNAAlphabet())
在以下部分,給出了根據需求獲取輸出的各種程式碼。
更改序列的大小寫。
>>> from Bio.Alphabet import generic_rna
>>> rna = Seq("agct", generic_rna)
>>> rna.upper()
Seq('AGCT', RNAAlphabet())
檢查 Python 成員資格和身份運算子。
>>> rna = Seq("agct", generic_rna)
>>> 'a' in rna
True
>>> 'A' in rna
False
>>> rna1 = Seq("AGCT", generic_dna)
>>> rna is rna1
False
在給定序列中查詢單個字母或字母序列。
>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> protein_seq.find('G')
1
>>> protein_seq.find('GG')
8
執行分割操作。
>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> protein_seq.split('A')
[Seq('', ProteinAlphabet()), Seq('GU', ProteinAlphabet()),
Seq('C', ProteinAlphabet()), Seq('CUGGU', ProteinAlphabet())]
在序列中執行去除空格操作。
>>> strip_seq = Seq(" AGCT ")
>>> strip_seq
Seq(' AGCT ')
>>> strip_seq.strip()
Seq('AGCT')