1

我想让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 是占用率,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"并正确解析电荷/半径值?

4

1 回答 1

0

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

提取数据

根据您提供的PQR 描述

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

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

从给定行解析数据后,您可能希望将其作为字段存储在 Atom 对象中)。原子被添加到结构中structure_builder。也许您可以修改init_atom()以将电荷和半径作为字段添加到PDB.Atom对象。

从哪儿开始

这是您要修改的源代码中的大致位置。

大纲

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

  1. 创建一个新StructureBuilder方法init_pqr_atom()(以 为模型init_atom())创建一个新的 Atom 对象,chargeradius新的Atom. (也许您想创建一个PDB.PQRAtom继承的对象PDB.Atom?)。
  2. init()在方法中创建一个可选参数PDBParser,告诉解析器它是一个 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,则基于空格分隔的格式解析数据(同样,Pythonstr.split()将从字符串中返回以空格分隔的项目列表)。
  5. 在结构中构建适当的AtomPQRAtom对象,传入解析的值。
于 2012-11-14T17:13:35.157 回答