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)

基类:SequenceIterator

用于 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.htmlhttp://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