我目前正在解析由蛋白质口袋和配体分子组成的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]]
只有三个原子,看起来像配体的代表原子
有没有办法从配体残基中获得完整的原子列表
多谢各位
我认为PDB文件无效。根据https://www.cgl.ucsf.edu/chimera/docs/UsersGuide/tutorials/pdbintro.html “残基中的每个原子必须是唯一可识别的。同一残基中的两个原子只有在具有不同的备用位置标识符时才能具有相同的名称。”
当我将PDB文件的第2行更改为
您的脚本返回4个原子。 我认为你必须改变原子的名称,使它们是唯一的。您可以修复创建PDB文件的脚本(如果它在您的控制下),也可以编写一个脚本,通过适当的重命名来修复PDB文件
相关问题 更多 >
编程相关推荐