- 在最后一个循环中,每次循环原子时都会定义函数
rotmat
,但从未调用该函数。
- 尝试删除行
def rotmat():
- 目前,您的
旋转
和平移
都不会改变原子坐标。
如果您想将 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')
我是一名优秀的程序员,十分优秀!