【问题标题】:How to parse PQR files with Biopython如何使用 Biopython 解析 PQR 文件
【发布时间】:2012-11-13 15:29:10
【问题描述】:

我想启用Biopython 来读取PQR 文件(修改PDB 文件,将占用率和B 因子替换为原子电荷和半径)。

Biopython PDB 解析器无法读取 Bfactor,因为它通过 PDB 列索引(PQR 格式不支持)检索值。

标准 PDB 原子记录示例:

ATOM      1  N   LEU     1       3.469  24.678   1.940  1.00 48.46           N

1.00 是 occupancy,48.46 是 bfactor

还有 PQR:

ATOM      1  N   LEU     1       3.469  24.678   1.940  0.1010 1.8240

0.1010 是电荷,1.8240 是半径

那么,如何避免"PDBConstructionException: Invalid or missing B factor" 并正确解析电荷/半径值?

【问题讨论】:

    标签: python parsing biopython protein-database


    【解决方案1】:

    由于 PQR 格式不再是标准 PDB 格式,您需要修改 Biopython PDB 解析器的源代码以满足您的需要。值得庆幸的是,Biopython 是开源的,PDB.PDBParser 非常易读/易于修改。

    提取数据

    来自您提供的PQR description

    “由于使用空格而不是特定的列宽和对齐方式,这种格式可能与 PDB 大相径庭。”

    Biopython 的 PDB 解析器严格要求列宽的值。 (对于 PDB 文件来说,值之间没有空格是完全有效的。)我认为你最好的办法是修改在PDB.PDBParser 中提取行数据的方式,但保留大部分其他错误检查和Structure -创建。由于字段将以空格分隔,因此您可以简单地使用 line.split() 创建参数列表,然后为这些参数指定有意义的名称。

    一旦您从给定的行解析数据,您可能希望将其作为字段存储在 Atom 对象中)。原子是added to the structure with the structure_builder。也许您可以修改 init_atom() 以将电荷和半径作为字段添加到 PDB.Atom 对象。

    从哪里开始

    这是您要修改的approximate location in the source code

    大纲

    所以,从头到尾,这就是我要做的:

    1. 创建一个新的StructureBuilder 方法init_pqr_atom()(仿照init_atom())创建一个新的Atom 对象,在新的Atom 中添加chargeradius 作为字段。 (也许您想创建一个继承 PDB.AtomPDB.PQRAtom 对象?)。
    2. PDBParserinit() method 中创建一个可选参数,告诉解析器这是一个PQR 文件(不是标准PDB):

      def __init__(self, PERMISSIVE=True, get_header=False,
               structure_builder=None, QUIET=False, is_pqr=False):
      
    3. is_pqr 传递给_parse(),后者将其传递给_parse_coordinates
    4. _parse_coordinates 内,如果不是 PQR 文件(即使用默认 PDB 列规范),则正常解析数据。如果是 PQR,则根据空格分隔格式解析数据(同样,Python 的 str.split() 将从字符串中返回以空格分隔的项目列表)。
    5. 在结构中构建适当的AtomPQRAtom 对象,并传入解析的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      相关资源
      最近更新 更多