有没有办法从配体残基中获得完整的原子列表?

2024-05-14 04:10:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在解析由蛋白质口袋和配体分子组成的PDB文件。 每个配体的残基名称设置为“UNL”,PDB文件如下所示:

HETATM   82  C   UNL     1      26.597 -14.916  44.878  1.00  0.00           C
HETATM   83  C   UNL     1      26.531 -16.231  44.189  1.00  0.00           C
HETATM   84  C   UNL     1      27.120 -15.808  42.893  1.00  0.00           C
HETATM   85  C   UNL     1      28.329 -15.071  43.387  1.00  0.00           C
HETATM   86  C   UNL     1      28.931 -14.170  42.366  1.00  0.00           C
HETATM   87  O   UNL     1      26.682 -15.216  46.247  1.00  0.00           O
HETATM   88  O   UNL     1      27.464 -17.006  44.905  1.00  0.00           O
HETATM   89  O   UNL     1      27.392 -16.979  42.137  1.00  0.00           O
HETATM   90  O   UNL     1      27.766 -14.291  44.394  1.00  0.00           O
HETATM   91  O   UNL     1      30.134 -13.666  42.869  1.00  0.00           O
HETATM   92  P   UNL     1      30.766 -12.347  42.334  1.00  0.00           P
HETATM   93  O   UNL     1      29.854 -11.258  42.524  1.00  0.00           O
HETATM   94  O   UNL     1      31.832 -12.240  43.274  1.00  0.00           O
HETATM   95  O   UNL     1      31.114 -12.735  40.988  1.00  0.00           O
HETATM   96  P   UNL     1      25.791 -14.349  47.212  1.00  0.00           P
HETATM   97  O   UNL     1      25.136 -13.375  46.321  1.00  0.00           O
HETATM   98  O   UNL     1      24.939 -15.263  47.985  1.00  0.00           O
HETATM   99  O   UNL     1      27.047 -13.730  48.313  1.00  0.00           O
HETATM  100  P   UNL     1      27.751 -12.152  47.857  1.00  0.00           P
HETATM  101  O   UNL     1      26.680 -11.123  47.845  1.00  0.00           O
HETATM  102  O   UNL     1      28.472 -12.318  46.604  1.00  0.00           O
HETATM  103  O   UNL     1      28.661 -12.022  49.014  1.00  0.00           O

我试图通过简单的方法获得原子列表

from Bio.PDB.PDBParser import PDBParser
import numpy as np

structure = PDBParser(QUIET=True).get_structure('X', 'sample.pdb')

lig_res = [r for r in structure.get_residues() if r.get_resname() == 'UNL'][0]
print(lig_res.get_unpacked_list())
ligand_atoms = [a.get_coord() for a in lig_res.get_atoms()]
print(len(ligand_atoms))
print(np.array(ligand_atoms))

但是,我得到的是

[<Atom C>, <Atom O>, <Atom P>]
3
[[ 26.597 -14.916  44.878]
 [ 26.682 -15.216  46.247]
 [ 30.766 -12.347  42.334]]

只有三个原子,看起来像配体的代表原子

有没有办法从配体残基中获得完整的原子列表

多谢各位


Tags: 文件getresstructurepdbligand配体atom
1条回答
网友
1楼 · 发布于 2024-05-14 04:10:54

我认为PDB文件无效。根据https://www.cgl.ucsf.edu/chimera/docs/UsersGuide/tutorials/pdbintro.html “残基中的每个原子必须是唯一可识别的。同一残基中的两个原子只有在具有不同的备用位置标识符时才能具有相同的名称。”

当我将PDB文件的第2行更改为

HETATM   83  C1  UNL     1      26.531 -16.231  44.189  1.00  0.00           C

您的脚本返回4个原子。 我认为你必须改变原子的名称,使它们是唯一的。您可以修复创建PDB文件的脚本(如果它在您的控制下),也可以编写一个脚本,通过适当的重命名来修复PDB文件

相关问题 更多 >