Hi,
I understood the question a little differently than Andreas, and I have a
different answer to you.
If what you want to do is to be able to define your own x, y and z axis and
rotate about them, I can help you. I've made a script that will make a
transformation matrix that can be input to transform_selection(). This will
enable you to choose the x, y and z axis yourself, and after you've performed
transform_selection(), you can rotete about your newly defined x, y and z axis
using the rotate command as you would normally do.
I'm including the script along with an example of a run here, so you can see how
it works.
Basically, you have to choose three atoms, given with a selection string each,
and these three atoms will form a 2D plane. From the unit vectors the z axis can
also be computed, and thus a transformation matrix can be generated.
Note that transform_selection() is currently unsupported, so I don't know if
this script will work through newer versions of Pymol. Also, I made this script
purely for myself, so it doesn't contain alot of error checking :)
Hope this helps!
Example of usage:
PyMOLimport coordinateOperations
PyMOLa = r. CLA and i. 612 and n. C1B
PyMOLb = r. CLA and i. 612 and n. CHA
PyMOLc = r. CLA and i. 612 and n. C4C
PyMOLmatrix = coordinateOperations.getTransformationMatrix(a, b, c)
PyMOLm_list = coordinateOperations.listOfTransformationMatrix(matrix)
PyMOLcmd.transform_selection(all, m_list)
Cheers,
Siv
On 2007-06-24 16:07:00, Andreas Henschel wrote:
you define a rotation axis by the rotation axis x, y or z (first
argument in cmd.rotate) and a point in 3d (origin argument in cmd.rotate).
Instead of rotations around axes that are not parallel to the x, y or z
axis you can do composite rotations.
Btw, for the case of GroEL (PDB 2c7e), the structure is oriented along
the Z axis, so you can flap the flexible regions with a single rotation
around the axis that goes through the regions center of mass and is
parallel to the z-axis.
See the attached file.
repeat the last rotate command from the gray window
cmd.rotate(z, 30, flexregion, camera=0, origin=rotationCenter)
Minh Nhat wrote:
Hi everyone,
Is it possible to make a selection rotate about an arbitrary axis
(which we can actively define ourself (not x,y, z) ?)
Thanks,
Send instant messages to your online friends
http://uk.messenger.yahoo.com
-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
PyMOL-users mailing list
PyMOL-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pymol-users
--
Andreas Henschel
Bioinformatics Group
TU Dresden
Tatzberg 47-51
01307 Dresden, Germany
Phone: +49 351 463 40063
EMail: a...@biotec.tu-dresden.de
-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
PyMOL-users mailing list
PyMOL-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pymol-users
--
Siv Midtun Hollup
PhD Student
Dept. of Informatics
University of Bergen, Norway
s...@ii.uib.no (NOTE: new email adress)
- Blessed are the flexible, for they can be tied into knots. -
import Numeric
import LinearAlgebra
import math
from pymol import cmd
#Must have a single atom as input
def findAtomFromSelection(sel):
model = cmd.get_model(sel)
a = Numeric.array(model.atom[0].coord)
return a
def getTransformationMatrix(a_sel, b_sel, c_sel):
a_orig = findAtomFromSelection(a_sel)
b_orig = findAtomFromSelection(b_sel)
c_orig = findAtomFromSelection(c_sel)
a = Numeric.zeros(3, 'f')
b = Numeric.zeros(3, 'f')
c = Numeric.zeros(3, 'f')
matrix = Numeric.zeros((4, 4), 'f')
transformToOrigo(a_orig, b_orig, c_orig, a, b, c, matrix)
matrix_t = LinearAlgebra.inverse(matrix)
return matrix_t
def listOfTransformationMatrix(matrix):
list = []
list.append(matrix[0,0])
list.append(matrix[0,1])
list.append(matrix[0,2])
list.append(matrix[0,3])
list.append(matrix[1,0])
list.append(matrix[1,1])
list.append(matrix[1,2])
list.append(matrix[1,3])
list.append(matrix[2,0])
list.append(matrix[2,1])
list.append(matrix[2,2])
list.append(matrix[2,3])
list.append(matrix[3,0])
list.append(matrix[3,1])
list.append(matrix[3,2])