Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2006-08-21 21:52:52
Size: 1703
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 convention
RA=Transform3D(EULER_SPIDER,0,0,25); # This is the typical ZYZ convention
RA=Transform3D(m11,m12,m13,m21,m22,m23,m31,m32,m33) # create the transformation by entering
components
Creating more complicated transformations using set :
RA = Transform3D(); # this creates the 3D identity matrix
RA.set_rotation(0,0,25); # creates a matrix that will rotate 2D images by 25 degrees
RA.set_posttrans(Vec3f(1,0,0)); # the matrix will now also shift 1 pixel in the x-direction
RA.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[0],"tx":p[1],"ty":p[2],"mirror":p[3],"scale":p[4]})
 . 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[0],"theta":p[1],"psi":p[2],"tx":p[3],"ty":p[4],"tz":p[5],"mirror":p[6],"scale":p[7]})
 . 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[0],"theta":p[1],"psi":p[2]})
 . t.set_trans(Vec2f(-p[3], -p[4]))
 . 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:

Name

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[0],"tx":p[1],"ty":p[2],"mirror":p[3],"scale":p[4]})
  • 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[0],"theta":p[1],"psi":p[2],"tx":p[3],"ty":p[4],"tz":p[5],"mirror":p[6],"scale":p[7]})
  • 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[0],"theta":p[1],"psi":p[2]})
  • t.set_trans(Vec2f(-p[3], -p[4]))
  • 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.

Author

P.A. Penczek

Maintainer

P. R. Baldwin

Keywords

category 1
FUNDAMENTALS

Files

libEM

See also

Maturity

Infancy

Bugs

transformClass (last edited 2013-07-01 13:12:38 by localhost)