Re: [PyMOL] rotate about an abitrary axis

2007-06-26 Thread DeLano Scientific
Minh,
 
This type of use is now covered under the rotate command in the official
documentation for PyMOL 1.0 ( http://delsci.info/dsc ) as well as in the
current open-source code.
 
Warren
 
--
DeLano Scientific LLC
Subscriber Support Services
mailto:del...@delsci.info
 
Not yet a PyMOL Subscriber, but want to support the project?  Email
sa...@delsci.com to quote your lab, school, or employer.  Thank you for
sponsoring this open-source endeavor! -WLD
 


  _  

From: pymol-users-boun...@lists.sourceforge.net
[mailto:pymol-users-boun...@lists.sourceforge.net] On Behalf Of Minh Nhat
Sent: Friday, June 22, 2007 11:56 AM
To: pymol-users@lists.sourceforge.net
Subject: [PyMOL] rotate about an abitrary axis


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 



Re: [PyMOL] rotate about an abitrary axis

2007-06-25 Thread Siv Midtun Hollup
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])
  

Re: [PyMOL] rotate about an abitrary axis

2007-06-24 Thread Andreas Henschel

Hi Minh,

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)

hope that makes sense.

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


from pymol import cmd
from pymol.cgo import *

def centerOfMass(selection, createSphere=True):
## assumes equal weights (best called with and name ca suffix)
model = cmd.get_model(selection)
x,y,z=0,0,0
for a in model.atom:
x+= a.coord[0]
y+= a.coord[1]
z+= a.coord[2]
com = (x/len(model.atom), y/len(model.atom), z/len(model.atom))
if createSphere:
print Center of mass: (%.1f,%.1f,%.1f)% com
## Creating a sphere CGO
comS = [COLOR, 1.0, 0.5, 0.5, SPHERE]+list(com) + [1.0] 
cmd.load_cgo(comS, CoM)
return com

cmd.fetch(2c7e) ## requires a newer pymol
cmd.as(cartoon, all) ## requires a newer pymol
cmd.create(flexregion, chain A and resi 229-270)
cmd.color(red, flexregion)

rotationCenter = list(centerOfMass(flexregion))
cmd.rotate(z, 30, flexregion, camera=0, origin=rotationCenter) ## repeat this!
cmd.zoom(flexregion)


[PyMOL] rotate about an abitrary axis

2007-06-22 Thread Minh Nhat
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