Bio.SeqIO.PdbIO 模組
Bio.SeqIO 支援存取 PDB 和 mmCIF 檔案中的序列。
- Bio.SeqIO.PdbIO.AtomIterator(pdb_id, structure)
從 Structure 物件回傳 SeqRecord。
讀取 Bio.PDB 解析器的結構之序列解析器的基礎函數。
一旦使用 Bio.PDB 的解析器將結構載入 Bio.PDB.Structure.Structure 物件後,序列解析器如何解讀殘基序列就沒有差異。此模組中的函數可供希望從殘基列表解析序列的 SeqIO 模組使用。
呼叫函數必須傳遞 Bio.PDB.Structure.Structure 物件。
詳細資訊請參閱 Bio.SeqIO.PdbIO.PdbAtomIterator 和 Bio.SeqIO.PdbIO.CifAtomIterator。
- class Bio.SeqIO.PdbIO.PdbSeqresIterator(source)
-
PDB 檔案的解析器。
- __init__(source)
為 PDB 檔案中的每個鏈回傳 SeqRecord 物件。
- 引數
source - 以文字模式開啟的輸入串流,或是檔案的路徑
這些序列衍生自 PDB 檔案標頭中的 SEQRES 行,而非 3D 結構的原子。
具體而言,會處理這些 PDB 記錄:DBREF、DBREF1、DBREF2、SEQADV、SEQRES、MODRES
請參閱:http://www.wwpdb.org/documentation/format23/sect3.html
這會透過 Bio.SeqIO 在內部呼叫,以進行基於 SEQRES 的 PDB 檔案格式解譯
>>> from Bio import SeqIO >>> for record in SeqIO.parse("PDB/1A8O.pdb", "pdb-seqres"): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... print(record.dbxrefs) ... Record id 1A8O:A, chain A ['UNP:P12497', 'UNP:POL_HV1N5']
等效地,
>>> with open("PDB/1A8O.pdb") as handle: ... for record in PdbSeqresIterator(handle): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... print(record.dbxrefs) ... Record id 1A8O:A, chain A ['UNP:P12497', 'UNP:POL_HV1N5']
請注意,鏈會記錄在註解字典中,而任何 PDB DBREF 行都會記錄在資料庫交叉參照列表中。
- parse(handle)
開始解析檔案,並回傳 SeqRecord 產生器。
- iterate(handle)
逐一查看 PDB 檔案中的記錄。
- __abstractmethods__ = frozenset({})
- __parameters__ = ()
- Bio.SeqIO.PdbIO.PdbAtomIterator(source)
為 PDB 檔案中的每個鏈回傳 SeqRecord 物件。
引數來源為類檔案物件或檔案的路徑。
這些序列衍生自 3D 結構(ATOM 記錄),而非 PDB 檔案標頭中的 SEQRES 行。
來自 HETATM 條目的未辨識三字母胺基酸代碼(例如「CSD」)會在序列中轉換為「X」。
除了來自 PDB 標頭的資訊(所有記錄都相同)外,以下鏈特定資訊會放置在註解中
record.annotations[“residues”] = 殘基 ID 字串的清單 record.annotations[“chain”] = 鏈 ID(通常為 A、B 等) record.annotations[“model”] = 模型 ID(通常為零)
如果結構中缺少胺基酸(如殘基編號所示),則序列會填入「X」字元以符合遺失區域的大小,而 None 會作為清單 record.annotations[“residues”] 中對應的項目。
此函數使用 Bio.PDB 模組來完成大部分的繁重工作。註解資訊可以改進,但此額外解析應在 parse_pdb_header 中完成,而非此模組中完成。
這會透過 Bio.SeqIO 在內部呼叫,以進行基於原子的 PDB 檔案格式解譯
>>> from Bio import SeqIO >>> for record in SeqIO.parse("PDB/1A8O.pdb", "pdb-atom"): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... Record id 1A8O:A, chain A
等效地,
>>> with open("PDB/1A8O.pdb") as handle: ... for record in PdbAtomIterator(handle): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... Record id 1A8O:A, chain A
- Bio.SeqIO.PdbIO.CifSeqresIterator(source)
為 mmCIF 檔案中的每個鏈回傳 SeqRecord 物件。
引數來源為類檔案物件或檔案的路徑。
這些序列衍生自 mmCIF 檔案中的 _entity_poly_seq 條目,而非 3D 結構的原子。
具體而言,會處理這些 mmCIF 記錄:_pdbx_poly_seq_scheme 和 _struct_ref_seq。_pdbx_poly_seq 記錄包含序列資訊,而 _struct_ref_seq 記錄包含資料庫交叉參照。
請參閱:http://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v40.dic/Categories/pdbx_poly_seq_scheme.html 和 http://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Categories/struct_ref_seq.html
這會透過 Bio.SeqIO 在內部呼叫,以進行基於序列的 mmCIF 檔案格式解譯
>>> from Bio import SeqIO >>> for record in SeqIO.parse("PDB/1A8O.cif", "cif-seqres"): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... print(record.dbxrefs) ... Record id 1A8O:A, chain A ['UNP:P12497', 'UNP:POL_HV1N5']
等效地,
>>> with open("PDB/1A8O.cif") as handle: ... for record in CifSeqresIterator(handle): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... print(record.dbxrefs) ... Record id 1A8O:A, chain A ['UNP:P12497', 'UNP:POL_HV1N5']
請注意,鏈會記錄在註解字典中,而任何 mmCIF _struct_ref_seq 條目都會記錄在資料庫交叉參照列表中。
- Bio.SeqIO.PdbIO.CifAtomIterator(source)
為 mmCIF 檔案中的每個鏈回傳 SeqRecord 物件。
引數來源為類檔案物件或檔案的路徑。
這些序列衍生自 mmCIF 檔案中的 3D 結構(_atom_site.* 欄位)。
來自 HETATM 條目的未辨識三字母胺基酸代碼(例如「CSD」)會在序列中轉換為「X」。
除了來自 PDB 標頭的資訊(所有記錄都相同)外,以下鏈特定資訊會放置在註解中
record.annotations[“residues”] = 殘基 ID 字串的清單 record.annotations[“chain”] = 鏈 ID(通常為 A、B 等) record.annotations[“model”] = 模型 ID(通常為零)
如果結構中缺少胺基酸(如殘基編號所示),則序列會填入「X」字元以符合遺失區域的大小,而 None 會作為清單 record.annotations[“residues”] 中對應的項目。
此函數使用 Bio.PDB 模組來完成大部分的繁重工作。註解資訊可以改進,但此額外解析應在 parse_pdb_header 中完成,而非此模組中完成。
這會透過 Bio.SeqIO 在內部呼叫,以進行基於原子的 PDB 檔案格式解譯
>>> from Bio import SeqIO >>> for record in SeqIO.parse("PDB/1A8O.cif", "cif-atom"): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... Record id 1A8O:A, chain A
等效地,
>>> with open("PDB/1A8O.cif") as handle: ... for record in CifAtomIterator(handle): ... print("Record id %s, chain %s" % (record.id, record.annotations["chain"])) ... Record id 1A8O:A, chain A