Class SpaceGroup

  • All Implemented Interfaces:
    Serializable

    public class SpaceGroup
    extends Object
    implements Serializable
    A crystallographic space group. We store the standard numeric identifier, the international short symbol and the transformations corresponding to each space group (as Matrix4ds and in algebraic notation). The information for all (protein crystallography) space groups can be parsed from the XML file in the resource directory. See: http://en.wikipedia.org/wiki/Space_group
    Author:
    duarte_j
    See Also:
    SymoplibParser, Serialized Form
    • Method Detail

      • getId

        public int getId()
        Gets the standard numeric identifier for the space group. See for example http://en.wikipedia.org/wiki/Space_group or the IUCr crystallographic tables
        Returns:
      • getShortSymbol

        public String getShortSymbol()
        Gets the international short name (as used in PDB), e.g. "P 21 21 21" or "C 1 c 1"
        Returns:
      • getAltShortSymbol

        public String getAltShortSymbol()
        Gets the alternative international short name (as sometimes used in PDB), e.g. "I 1 2 1" instead of "I 2"
        Returns:
      • getTransformations

        public List<javax.vecmath.Matrix4d> getTransformations()
        Gets all transformations except for the identity in crystal axes basis.
        Returns:
      • getRotAxisAngle

        public javax.vecmath.AxisAngle4d getRotAxisAngle​(int transformId)
      • areInSameAxis

        public boolean areInSameAxis​(int tId1,
                                     int tId2)
        Returns true if both given transform ids belong to the same crystallographic axis (a, b or c) For two non-rotation transformations (i.e. identity operators) it returns true
        Parameters:
        tId1 -
        tId2 -
        Returns:
      • getAxisFoldType

        public int getAxisFoldType​(int transformId)
        Given a transformId returns the type of axis of rotation: 1 (no rotation), 2, 3, 4 or 6 -fold and for improper rotations: -1, -2, -3, -4 and -6
        Parameters:
        transformId -
        Returns:
      • getTransformation

        public javax.vecmath.Matrix4d getTransformation​(int i)
        Gets a transformation by index expressed in crystal axes basis. Index 0 corresponds always to the identity transformation. Beware the returned Matrix4d is not a copy but it stays linked to the one stored in this SpaceGroup object
        Parameters:
        i -
        Returns:
      • getTransfAlgebraic

        public String getTransfAlgebraic​(int i)
        Gets a transformation algebraic string given its index. Index 0 corresponds always to the identity transformation.
        Parameters:
        i -
        Returns:
      • getNumOperators

        public int getNumOperators()
        Gets the number of symmetry operators corresponding to this SpaceGroup (counting the identity operator)
        Returns:
      • deltaComp

        protected static boolean deltaComp​(double d1,
                                           double d2,
                                           double delta)
      • getRotAxisAndAngle

        public static javax.vecmath.AxisAngle4d getRotAxisAndAngle​(javax.vecmath.Matrix3d m)
        Given a rotation matrix calculates the rotation axis and angle for it. The angle is calculated from the trace, the axis from the eigenvalue decomposition. If given matrix is improper rotation or identity matrix then axis (0,0,0) and angle 0 are returned.
        Parameters:
        m -
        Returns:
        Throws:
        IllegalArgumentException - if given matrix is not a rotation matrix (determinant not 1 or -1)
      • getRotAxisType

        public static int getRotAxisType​(javax.vecmath.Matrix4d m)
        Given a transformation matrix containing a rotation returns the type of rotation: 1 for identity, 2 for 2-fold rotation, 3 for 3-fold rotation, 4 for 4-fold rotation, 6 for 6-fold rotation, -1 for inversions, -2 for mirror planes, -3 for 3-fold improper rotation, -4 for 4-fold improper rotation and -6 for 6-fold improper rotation
        Parameters:
        m -
        Returns:
      • setAxisTypes

        public void setAxisTypes​(int[] axisTypes)
      • getDelta

        public static double getDelta()
      • setId

        public void setId​(int id)