Differences between revisions 1 and 11 (spanning 10 versions)
 ⇤ ← Revision 1 as of 2006-08-21 21:52:52 → Size: 1703 Editor: Philip Baldwin Comment: ← Revision 11 as of 2013-07-01 13:12:38 → ⇥ Size: 2440 Editor: localhost Comment: converted to 1.6 markup Deletions are marked like this. Additions are marked like this. Line 3: Line 3: Line 6: Line 7: . Here are some examples of creating a Transform3D object. Much more will be added later. . Here are some examples of creating a Transform3D object. Much more here: [[http://blake.bcm.edu/emanwiki/Eman2TransformInPython]]. Line 8: Line 9: Creating just rotations:RA=Transform3D(0,0,25); # Default is the ZXZ conventionRA=Transform3D(EULER_SPIDER,0,0,25); # This is the typical ZYZ conventionRA=Transform3D(m11,m12,m13,m21,m22,m23,m31,m32,m33) # create the transformation by enteringcomponentsCreating more complicated transformations using set :RA = Transform3D(); # this creates the 3D identity matrixRA.set_rotation(0,0,25); # creates a matrix that will rotate 2D images by 25 degreesRA.set_posttrans(Vec3f(1,0,0)); # the matrix will now also shift 1 pixel in the x-directionRA.set_scale(1); # Occaisionally one will wish to rescale. def get_params2D(ima, xform = "xform.align2d"): """   retrieve 2D alignment parameters from the header   alpha tx ty mirror scale """ . t = ima.get_attr(xform) . d = t.get_params("2D") . return d[ "alpha" ], d[ "tx" ], d[ "ty" ], d[ "mirror" ], d[ "scale" ]def set_params2D(ima, p, xform = "xform.align2d"): """   set 2D alignment parameters in the header   alpha tx ty mirror scale """ . t = Transform({"type":"2D","alpha":p,"tx":p,"ty":p,"mirror":p,"scale":p}) . ima.set_attr(xform, t)def get_params3D(ima, xform = "xform.align3d"): """   retrieve 3D alignment parameters from the header   phi theta psi tx ty tz mirror scale """ . t = ima.get_attr(xform) . d = t.get_params("spider") . return d[ "phi" ], d[ "theta" ], d[ "psi" ], d[ "tx" ], d[ "ty" ], d[ "tz" ], d[ "mirror" ], d[ "scale" ]def set_params3D(ima, p, xform = "xform.align3d"): """   set 3D alignment parameters in the header   phi theta psi tx ty tz mirror scale """ . t = Transform({"type":"spider","phi":p,"theta":p,"psi":p,"tx":p,"ty":p,"tz":p,"mirror":p,"scale":p}) . ima.set_attr(xform, t)def get_params_proj(ima, xform = "xform.projection"): """   retrieve projection alignment parameters from the header   phi theta psi s2x s2y """ . t = ima.get_attr(xform) . d = t.get_params("spider") . return d[ "phi" ], d[ "theta" ], d[ "psi" ], -d[ "tx" ], -d[ "ty" ]def set_params_proj(ima, p, xform = "xform.projection"): """   set projection alignment parameters in the header   phi theta psi s2x s2y """ . t = Transform({"type":"spider","phi":p,"theta":p,"psi":p}) . t.set_trans(Vec2f(-p, -p)) . ima.set_attr(xform, t) Line 19: Line 64: a) We could have used EMAN, IMAGIC, SPIN, QUATERNION, SGIROT, MRC, XYZ, MATRIX instead of the SPIDER of EULER_SPIDER above.b) There is also a set_rotation via a dictionary object, which we will explain at length soon.c) The first two lines of the second block of commands, could have been written as the second line of the first block of commands.d) There are corresponding "get" calls to extract the information from the matrices. SPARX has some of its own, that are wrappers for these get calls. More later. . a) We could have used EMAN, IMAGIC, SPIN, QUATERNION, SGIROT, MRC, XYZ, MATRIX instead of the SPIDER of EULER_SPIDER above. Line 27: Line 71: P. R. Baldwin P.A. Penczek Line 36: Line 80: Line 39: Line 84:

Transform Class

# Usage

## Examples

All angles are in degrees

def get_params2D(ima, xform = "xform.align2d"):

• """
• retrieve 2D alignment parameters from the header alpha tx ty mirror scale
"""
• t = ima.get_attr(xform)
• d = t.get_params("2D")
• return d[ "alpha" ], d[ "tx" ], d[ "ty" ], d[ "mirror" ], d[ "scale" ]

def set_params2D(ima, p, xform = "xform.align2d"):

• """
• set 2D alignment parameters in the header alpha tx ty mirror scale
"""
• t = Transform({"type":"2D","alpha":p,"tx":p,"ty":p,"mirror":p,"scale":p})
• ima.set_attr(xform, t)

def get_params3D(ima, xform = "xform.align3d"):

• """
• retrieve 3D alignment parameters from the header phi theta psi tx ty tz mirror scale
"""
• t = ima.get_attr(xform)
• d = t.get_params("spider")
• return d[ "phi" ], d[ "theta" ], d[ "psi" ], d[ "tx" ], d[ "ty" ], d[ "tz" ], d[ "mirror" ], d[ "scale" ]

def set_params3D(ima, p, xform = "xform.align3d"):

• """
• set 3D alignment parameters in the header phi theta psi tx ty tz mirror scale
"""
• t = Transform({"type":"spider","phi":p,"theta":p,"psi":p,"tx":p,"ty":p,"tz":p,"mirror":p,"scale":p})
• ima.set_attr(xform, t)

def get_params_proj(ima, xform = "xform.projection"):

• """
• retrieve projection alignment parameters from the header phi theta psi s2x s2y
"""
• t = ima.get_attr(xform)
• d = t.get_params("spider")
• return d[ "phi" ], d[ "theta" ], d[ "psi" ], -d[ "tx" ], -d[ "ty" ]

def set_params_proj(ima, p, xform = "xform.projection"):

• """
• set projection alignment parameters in the header phi theta psi s2x s2y
"""
• t = Transform({"type":"spider","phi":p,"theta":p,"psi":p})
• t.set_trans(Vec2f(-p, -p))
• ima.set_attr(xform, t)

Notes:

• a) We could have used EMAN, IMAGIC, SPIN, QUATERNION, SGIROT, MRC, XYZ, MATRIX instead of the SPIDER of EULER_SPIDER above.

# Description

Purpose: to apply rotation/shift/scaling operations for 2D or 3D images via a variety of methods.

P.A. Penczek

P. R. Baldwin

category 1
FUNDAMENTALS

libEM