如何使用Biopython解析PQR文件

如何使用Biopython解析PQR文件,python,parsing,biopython,protein-database,Python,Parsing,Biopython,Protein Database,我想启用读取文件(使用原子电荷和半径替换占用率和B因子的修改文件) Biopython PDB解析器无法读取Bfactor,因为它通过PDB列索引(PQR格式不支持)检索值 标准PDB原子记录示例: ATOM 1 N LEU 1 3.469 24.678 1.940 1.00 48.46 N ATOM 1 N LEU 1 3.469 24.678 1.940 0.1010 1.8240

我想启用读取文件(使用原子电荷和半径替换占用率和B因子的修改文件)

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

标准PDB原子记录示例:

ATOM      1  N   LEU     1       3.469  24.678   1.940  1.00 48.46           N
ATOM      1  N   LEU     1       3.469  24.678   1.940  0.1010 1.8240
1.00为入住率,48.46为B系数

和PQR:

ATOM      1  N   LEU     1       3.469  24.678   1.940  1.00 48.46           N
ATOM      1  N   LEU     1       3.469  24.678   1.940  0.1010 1.8240
0.1010表示电荷,1.8240表示半径


因此,如何避免“PDBConConstructionException:无效或缺少B因子”并正确解析电荷/半径值?

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

提取数据 从您提供的:

“由于使用空格而不是特定的列宽和对齐方式,此格式可能与PDB有很大的差异。”

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

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

从哪里开始 这是您想要修改的

概述 所以,从头到尾,我要做的是:

  • 创建一个新的
    StructureBuilder
    方法
    init\u pqr\u atom()
    (仿照
    init\u atom()
    )创建一个新的atom对象,将
    charge
    radius
    作为字段添加到新的
    atom
    中。(也许您想创建一个继承
    PDB.Atom
    PDB.PQRAtom
    对象)
  • 在of
    PDBParser
    中创建一个可选参数,告诉解析器它是PQR文件(不是标准PDB):

  • 传递
    是将pqr
    传递到
    \u parse()
    ,它将其传递到
    \u parse\u坐标
  • \u parse\u坐标中,如果不是PQR文件,则按正常方式解析数据(即使用默认PDB列规范)。如果是PQR,则根据以空格分隔的格式解析数据(同样,Python的
    str.split()
    将从字符串返回以空格分隔的项目列表)
  • 在结构中构建适当的
    Atom
    PQRAtom
    对象,传递解析后的值