PDB rotation along parallel axis using biopython
1
2
Entering edit mode
8.7 years ago
Mateusz ▴ 70

Hi,

I am trying to do random rotation of a structure in a PDB file. I am using for that rotaxis from Bio.PDB module. Everything works fine if center of the structure lies in the beginning of the coordinate system. To rotate such structure along "X" axis by 90 degrees I am using:

rotaxis(90, Vector(1,0,0))


Problem starts if center of the structure lies outside the center of coordinate system. If structure center is defined by let's say coordinates (-10,20,44) using:

rotaxis(90, Vector(-9,20,44))


returns false result.

Does anyone know how to define custom rotation axis parallel to x / y / z?

BIOPYTHON rotation PDB vector • 5.1k views
0
Entering edit mode

Could you please add the code for how you determine the structure center? Also, which structure are you using?

1
Entering edit mode
8.7 years ago
Felix_Sim ▴ 260

I have attempted to solve your problem; although, your question did not provide me with a lot of information.

The following code reads a pdb structure (1eaz in this case) and rotates it 90 degrees around your provided vector.

from Bio.PDB import *
import numpy

# Parse the structure file
structure = PDBParser().get_structure("1eaz", "1eaz.pdb")[0]

# Iterate through all atoms and rotate by 90 degress
rotation_matrix = rotaxis2m(90, Vector(-9,20,44))

translation_matrix = numpy.array((0, 0, 0), 'f')
for atom in structure.get_atoms():
atom.transform(rotation_matrix, translation_matrix)

io = PDBIO()
io.set_structure(structure)
io.save("1eaz_rotated.pdb")

0
Entering edit mode

90 degrees should be 3.14/2. rotaxis2m take in radian.