[BioPython] Superimposer

mitlox mitlox at op.pl
Tue Mar 24 07:12:36 EDT 2009


Hello,
I read that the Superimposer works only with the two lists of atoms 
which contain the same amount of atoms.

So I decided to use "Combinatorial Extension (CE)". This program returns 
a rotation matrix and a translation vector.

After the execution of CE I took the matrix and vector and tried to use 
it with Superimposer:
------------------------------------------------------------------------------
import sys
import numpy
from Bio.PDB import *


pdb_fix = "../files/1z9g.pdb"
pdb_mov = "../files/1z9g90.pdb"
p=PDBParser()
s1=p.get_structure("FIXED", pdb_fix)
fixed=Selection.unfold_entities(s1, "A")

s2=p.get_structure("MOVING", pdb_mov)
moving=Selection.unfold_entities(s2, "A")

rot=numpy.identity(3).astype('f')
tran=numpy.array((1.0, 2.0, 3.0), 'f')

tran[0] = -0.99996603; tran[1] = -2.00002559; tran[2] = -2.99998285
rot[0][0] = 0.19411441; rot[0][1] = -0.85385353; rot[0][2] = 0.48296351
rot[1][0] = 0.94858827; rot[1][1] = 0.28884874; rot[1][2] = 0.12940907
rot[2][0] = -0.24999979; rot[2][1] = 0.43301335; rot[2][2] = 0.86602514

for atom in moving:
    atom.transform(rot, tran)
   
sup=Superimposer()

sup.set_atoms(fixed, moving)

print sup.rotran
print sup.rms

sup.apply(moving)


print "Saving aligned structure as PDB file %s" % pdb_mov
io=PDBIO()
io.set_structure(s2)
io.save(pdb_mov)

print "Done"
------------------------------------------------------------------------------

Unfortunalaty "print sup.rotran" returns this:
(array([[ 0.19411383,  0.94858824, -0.25000035],
       [-0.85385389,  0.28884841,  0.43301285],
       [ 0.4829631 ,  0.12940999,  0.86602523]]), array([-0.06470776,  
1.91446435,  3.21412203]))

but this matrix and vector are no the same like above.

What do I wrong?

Thank you in advance.

Best regards,



More information about the BioPython mailing list