Bio.SeqIO.PdbIO 模块
Bio.SeqIO 支持访问 PDB 和 mmCIF 文件中的序列。
- Bio.SeqIO.PdbIO.AtomIterator(pdb_id, structure)
从 Structure 对象返回 SeqRecords。
用于读取 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 对象。
参数 source 是一个文件类对象或指向文件的路径。
序列来自 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 对象。
参数 source 是一个文件类对象或指向文件的路径。
序列来自 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 对象。
参数 source 是一个文件类对象或指向文件的路径。
序列来自 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