如何相对于参考框架移动蛋白质坐标

时间:2017-12-14 06:07:32

标签: python biopython protein-database

我有一个PDB文件' 1abz' (https://files.rcsb.org/view/1ABZ.pdb),其中包含蛋白质结构的坐标。请忽略标题备注的行,有趣的信息从第276行开始,表示'模型1'。

我想相对于原点处的参考帧移位坐标(即x = 0,y = 0,z = 0)并生成新的坐标文件。

我通过biopython教程(http://biopython.org/wiki/The_Biopython_Structural_Bioinformatics_FAQ)阅读,使用了Atom对象的变换方法(http://biopython.org/DIST/docs/api/Bio.PDB.Atom.Atom-class.html#transform),并提出了这个脚本但没有成功。

我该如何解决这个问题?非常感谢提前!

Dec 13 05:29:13 syslog-ng[10769]: Syslog connection established; fd='16', server='AF_INET(1**.1**.1.105:6514)', local='AF_INET(0.0.0.0:0)'
Dec 13 05:29:13 syslog-ng[10769]: Error setting up TLS session context; tls_error='PEM routines:PEM_read_bio:no start line'

1 个答案:

答案 0 :(得分:1)

  • 在你的上一个循环for atom in residue中,每次循环一个原子时你都会定义函数rotmat,但你从不调用该函数。
  • 尝试删除行def rotmat():
  • 目前,您的rotationtranslation都不会更改原子坐标。

如果您想要将C1定义为参考点,可以使用以下代码。

rotation_matrix只是一个不会旋转蛋白质的基质。 np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])也会这样做。

from Bio import PDB
import numpy as np

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

rotation_matrix = PDB.rotmat(PDB.Vector([0, 0, 0]), PDB.Vector([0, 0, 0]))

for atom in struct.get_atoms():
    atom_C1 = atom.coord.copy()
    break

for model in struct:
    for chain in model:
        for residue in chain:
            for atom in residue:
                atom.transform(rotation_matrix, -atom_C1)

io.set_structure(struct)
io.save('1abz_coord.pdb')