从pdb文件中如何分别获取X、Y或Z坐标

3
我有一个PDB文件'1abz'(https://files.rcsb.org/view/1ABZ.pdb),其中包含蛋白质结构的坐标。请忽略头部注释行,有趣的信息从第276行开始,该行为“MODEL 1”。
我想要从pdb文件中单独获取X、Y或Z坐标。
此链接解释了pdb文件的列号:http://cupnet.net/pdb-format/ 这是我的代码,但我收到了错误消息。
from Bio import PDB

parser = PDB.PDBParser()
io = PDB.PDBIO()
struct = parser.get_structure('1abz','1abz.pdb')

for model in struct:
    for chain in model:
        for residue in chain:
            for atom in residue:
                XYZ = atom.get_coord()
                for line in XYZ:
                    x_coord = float(line[30:38].strip())
                    y_coord = float(line[38:46].strip())
                    z_coord = float(line[46:54].strip())
                    print x_coord
                    print y_coord
                    print z_coord

请发布错误消息 - 格式化为代码。 - wwii
1
BioPython的PDB解析器的优点在于您可以获得一个Python对象。您不需要自己解析信息,即line[30:38]将由BioPython完成并写入x坐标。 - Maximilian Peters
2个回答

2
>>> Bio.__version__
'1.69'

from Bio import PDB

parser = PDB.PDBParser()
io = PDB.PDBIO()
struct = parser.get_structure('1ABZ','1ABZ.pdb')

for model in struct:
    for chain in model:
        for residue in chain:
            for atom in residue:
                x,y,z = atom.get_coord()
                print(x,y,z)

Result:

15.254 -0.607 3.211
16.429 -0.874 3.019
14.337 -1.034 2.53
14.908 0.287 4.404
13.772 1.237 4.018
12.591 1.037 4.971
11.729 0.213 4.737
15.778 0.862 4.685
14.596 -0.326 5.237
13.458 1.028 3.007
14.118 2.259 4.084
...

2
应该做与上述相同的事情。
    import mdtraj as md 
    pdbfile='1ABZ.pdb'
    traj=md.load_pdb(pdbfile)
    print traj.xyz[0]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接