90 degrees should be 3.14/2. rotaxis2m take in radian.
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?
Thank you in advance!
1 answer
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")
Log in to answer this question.
Could you please add the code for how you determine the structure center? Also, which structure are you using?