如何使用Biopython解析PQR文件

时间:2012-11-13 15:29:10

标签: python parsing biopython protein-database

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

1 个答案:

答案 0 :(得分:0)

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

提取数据

来自您提供的PQR description

  

“由于使用了空格而不是特定的列宽和对齐,这种格式可能会与PDB产生偏差。”

Biopython的PDB Parser严格要求列宽度值。 (PDB文件在值之间没有空格是完全有效的。)我认为最好的办法是修改PDB.PDBParser中行数据的提取方式,但保留大部分其他错误检查和{ {1}} - 创造。由于字段将以空格分隔,您只需使用Structure创建参数列表,然后为其提供有意义的名称。

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

从哪里开始

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

概要

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

  1. 创建新的PDB.Atom方法StructureBuilder(以init_pqr_atom()为模型),创建新的Atom对象,将init_atom()charge添加为新的字段radius。 (也许你想创建一个继承Atom的{​​{1}}对象?)。
  2. PDB.PQRAtom的{​​{3}}中创建一个可选参数,告诉解析器它是PQR文件(不是标准PDB):

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