org.biojava.bio.structure
Class Calc

java.lang.Object
  extended by org.biojava.bio.structure.Calc

public class Calc
extends Object

utility operations on Atoms, AminoAcids, etc.

Currently the coordinates of an Atom are stored as an array of size 3 (double[3]). It would be more powerful to use Point3D from javax.vecmath. but unfortunately this is not a part of standard java installations, since it comes with java3d . So to keep things simple at the moment biojava does not depend on java3d.

Since:
1.4
Version:
%I% %G%
Author:
Andreas Prlic

Field Summary
static float degreesPerRadian
          Degrees per radian.
static float radiansPerDegree
          Radians per degree.
 
Constructor Summary
Calc()
           
 
Method Summary
static Atom add(Atom a, Atom b)
          add two atoms ( a + b).
static double amount(Atom a)
          amount.
static double angle(Atom a, Atom b)
          angle.
static Atom[] centerAtoms(Atom[] atomSet)
          Center the atoms at the Centroid.
static Atom[] centerAtoms(Atom[] atomSet, Atom centroid)
          Center the atoms at the Centroid, if the centroid is already know.
static Atom centerOfMass(Atom[] points)
           
static Atom createVirtualCBAtom(AminoAcid amino)
          creates a virtual C-beta atom.
static Atom getCenterVector(Atom[] atomSet)
          Returns the Vector that needs to be applied to shift a set of atoms to the Centroid.
static Atom getCenterVector(Atom[] atomSet, Atom centroid)
          Returns the Vector that needs to be applied to shift a set of atoms to the Centroid, if the centroid is already known
static Atom getCentroid(Atom[] atomSet)
          Returns the center of mass of the set of atoms.
static double getDistance(Atom a, Atom b)
          calculate distance between two atoms.
static double getDistanceFast(Atom a, Atom b)
          Will calculate the *square* of distances between two atoms.
static double getPhi(AminoAcid a, AminoAcid b)
          phi angle.
static double getPsi(AminoAcid a, AminoAcid b)
          psi angle.
static double[] getXYZEuler(Matrix m)
          Convert a rotation Matrix to Euler angles.
static double[] getZYZEuler(Matrix m)
          Gget euler angles for a matrix given in ZYZ convention.
static Atom invert(Atom a)
           
static boolean isConnected(AminoAcid a, AminoAcid b)
          test if two amino acids are connected, i.e.
static Matrix matrixFromEuler(double heading, double attitude, double bank)
          This conversion uses NASA standard aeroplane conventions as described on page: http://www.euclideanspace.com/maths/geometry/rotations/euler/index.htm Coordinate System: right hand Positive angle: right hand Order of euler angles: heading first, then attitude, then bank.
static void plus(Structure s, Matrix matrix)
          calculate structure + Matrix coodinates ...
static void rotate(Atom atom, double[][] m)
          rotate a single atom aroud a rotation matrix.
static void rotate(Atom atom, Matrix m)
          Rotate an atom around a Matrix object.
static void rotate(Group group, double[][] rotationmatrix)
          rotate a structure .
static void rotate(Group group, Matrix m)
          Rotate a group object.
static void rotate(Structure structure, double[][] rotationmatrix)
          Rotate a structure.
static void rotate(Structure structure, Matrix m)
          Rotate a structure object.
static Atom scaleAdd(float s, Atom t1, Atom t2)
           
static void shift(Atom a, Atom b)
          Shift a vector.
static void shift(Group group, Atom a)
          Shift a Group with a vector.
static void shift(Structure structure, Atom a)
          shift a structure with a vector.
static double skalarProduct(Atom a, Atom b)
          skalar product.
static Atom substract(Atom a, Atom b)
          Deprecated. use subtract instead.
static Atom subtract(Atom a, Atom b)
          subtract two atoms ( a - b).
static double torsionAngle(Atom a, Atom b, Atom c, Atom d)
          torsion angle = angle between the normal vectors of the two plains a-b-c and b-c-d.
static Atom unitVector(Atom a)
          return the unit vector of vector a .
static Atom vectorProduct(Atom a, Atom b)
          Vector product .
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

radiansPerDegree

public static final float radiansPerDegree
Radians per degree.

See Also:
Constant Field Values

degreesPerRadian

public static final float degreesPerRadian
Degrees per radian.

See Also:
Constant Field Values
Constructor Detail

Calc

public Calc()
Method Detail

getDistance

public static final double getDistance(Atom a,
                                       Atom b)
                                throws StructureException
calculate distance between two atoms.

Parameters:
a - an Atom object
b - an Atom object
Returns:
a double
Throws:
StructureException - ...

getDistanceFast

public static double getDistanceFast(Atom a,
                                     Atom b)
                              throws StructureException
Will calculate the *square* of distances between two atoms. This will be faster as it will not perform the final square root to get the actual distance. Use this if doing large numbers of distance comparisons - it is marginally faster than getDistance().

Parameters:
a - an Atom object
b - an Atom object
Returns:
a double
Throws:
StructureException - ...

invert

public static final Atom invert(Atom a)
                         throws StructureException
Throws:
StructureException

add

public static final Atom add(Atom a,
                             Atom b)
add two atoms ( a + b).

Parameters:
a - an Atom object
b - an Atom object
Returns:
an Atom object

substract

public static final Atom substract(Atom a,
                                   Atom b)
                            throws StructureException
Deprecated. use subtract instead.

subtract two atoms ( a - b).

Parameters:
a - an Atom object
b - an Atom object
Returns:
an Atom object
Throws:
StructureException - ...

subtract

public static final Atom subtract(Atom a,
                                  Atom b)
                           throws StructureException
subtract two atoms ( a - b).

Parameters:
a - an Atom object
b - an Atom object
Returns:
an Atom object
Throws:
StructureException - ...

vectorProduct

public static final Atom vectorProduct(Atom a,
                                       Atom b)
Vector product .

Parameters:
a - an Atom object
b - an Atom object
Returns:
an Atom object

skalarProduct

public static final double skalarProduct(Atom a,
                                         Atom b)
skalar product.

Parameters:
a - an Atom object
b - an Atom object
Returns:
a double

amount

public static final double amount(Atom a)
amount.

Parameters:
a - an Atom object
Returns:
a double

angle

public static final double angle(Atom a,
                                 Atom b)
angle.

Parameters:
a - an Atom object
b - an Atom object
Returns:
a double

unitVector

public static final Atom unitVector(Atom a)
return the unit vector of vector a .

Parameters:
a - an Atom object
Returns:
an Atom object

torsionAngle

public static final double torsionAngle(Atom a,
                                        Atom b,
                                        Atom c,
                                        Atom d)
                                 throws StructureException
torsion angle = angle between the normal vectors of the two plains a-b-c and b-c-d.

Parameters:
a - an Atom object
b - an Atom object
c - an Atom object
d - an Atom object
Returns:
a double
Throws:
StructureException - ...

getPhi

public static final double getPhi(AminoAcid a,
                                  AminoAcid b)
                           throws StructureException
phi angle.

Parameters:
a - an AminoAcid object
b - an AminoAcid object
Returns:
a double
Throws:
StructureException - ...

getPsi

public static final double getPsi(AminoAcid a,
                                  AminoAcid b)
                           throws StructureException
psi angle.

Parameters:
a - an AminoAcid object
b - an AminoAcid object
Returns:
a double
Throws:
StructureException - ...

isConnected

public static final boolean isConnected(AminoAcid a,
                                        AminoAcid b)
                                 throws StructureException
test if two amino acids are connected, i.e. if the distance from C to N < 2,5 Angstrom.

Parameters:
a - an AminoAcid object
b - an AminoAcid object
Returns:
true if ...
Throws:
StructureException - ...

rotate

public static final void rotate(Atom atom,
                                double[][] m)
rotate a single atom aroud a rotation matrix. matrix must be a 3x3 matrix.

Parameters:
atom - atom to be rotated
m - a rotation matrix represented as a double[3][3] array

rotate

public static final void rotate(Structure structure,
                                double[][] rotationmatrix)
                         throws StructureException
Rotate a structure.

Parameters:
structure - a Structure object
rotationmatrix - an array (3x3) of double representing the rotation matrix.
Throws:
StructureException - ...

rotate

public static final void rotate(Group group,
                                double[][] rotationmatrix)
                         throws StructureException
rotate a structure .

Parameters:
group - a group object
rotationmatrix - an array (3x3) of double representing the rotation matrix.
Throws:
StructureException - ...

rotate

public static final void rotate(Atom atom,
                                Matrix m)
Rotate an atom around a Matrix object.

Parameters:
atom - atom to be rotated
m - rotation matrix to be applied to the atom

rotate

public static final void rotate(Group group,
                                Matrix m)
Rotate a group object.

Parameters:
group - a group to be rotated
m - a Matrix object representing the translation matrix

rotate

public static final void rotate(Structure structure,
                                Matrix m)
Rotate a structure object.

Parameters:
structure - the structure to be rotated
m - rotation matrix to be applied

plus

public static final void plus(Structure s,
                              Matrix matrix)
calculate structure + Matrix coodinates ...

Parameters:
s - the structure to operate on
matrix - a Matrix object

shift

public static final void shift(Structure structure,
                               Atom a)
shift a structure with a vector.

Parameters:
structure - a Structure object
a - an Atom object representing a shift vector

shift

public static final void shift(Atom a,
                               Atom b)
Shift a vector.

Parameters:
a - vector a
b - vector b

shift

public static final void shift(Group group,
                               Atom a)
Shift a Group with a vector.

Parameters:
group - a group object
a - an Atom object representing a shift vector

getCentroid

public static final Atom getCentroid(Atom[] atomSet)
Returns the center of mass of the set of atoms.

Parameters:
atomSet - a set of Atoms
Returns:
an Atom representing the Centroid of the set of atoms

centerOfMass

public static Atom centerOfMass(Atom[] points)

scaleAdd

public static Atom scaleAdd(float s,
                            Atom t1,
                            Atom t2)

getCenterVector

public static final Atom getCenterVector(Atom[] atomSet)
Returns the Vector that needs to be applied to shift a set of atoms to the Centroid.

Parameters:
atomSet - array of Atoms
Returns:
the vector needed to shift the set of atoms to its geometric center

getCenterVector

public static final Atom getCenterVector(Atom[] atomSet,
                                         Atom centroid)
Returns the Vector that needs to be applied to shift a set of atoms to the Centroid, if the centroid is already known

Parameters:
atomSet - array of Atoms
Returns:
the vector needed to shift the set of atoms to its geometric center

centerAtoms

public static final Atom[] centerAtoms(Atom[] atomSet)
                                throws StructureException
Center the atoms at the Centroid.

Parameters:
atomSet - a set of Atoms
Returns:
an Atom representing the Centroid of the set of atoms
Throws:
StructureException

centerAtoms

public static final Atom[] centerAtoms(Atom[] atomSet,
                                       Atom centroid)
                                throws StructureException
Center the atoms at the Centroid, if the centroid is already know.

Parameters:
atomSet - a set of Atoms
Returns:
an Atom representing the Centroid of the set of atoms
Throws:
StructureException

createVirtualCBAtom

public static final Atom createVirtualCBAtom(AminoAcid amino)
                                      throws StructureException
creates a virtual C-beta atom. this might be needed when working with GLY thanks to Peter Lackner for a python template of this method.

Parameters:
amino - the amino acid for which a "virtual" CB atom should be calculated
Returns:
a "virtual" CB atom
Throws:
StructureException

getZYZEuler

public static final double[] getZYZEuler(Matrix m)
Gget euler angles for a matrix given in ZYZ convention. (as e.g. used by Jmol)

Parameters:
m - the rotation matrix
Returns:
the euler values for a rotation around Z, Y, Z in degrees...

getXYZEuler

public static final double[] getXYZEuler(Matrix m)
Convert a rotation Matrix to Euler angles. This conversion uses conventions as described on page: http://www.euclideanspace.com/maths/geometry/rotations/euler/index.htm Coordinate System: right hand Positive angle: right hand Order of euler angles: heading first, then attitude, then bank

Parameters:
m - the rotation matrix
Returns:
a array of three doubles containing the three euler angles in radians

matrixFromEuler

public static final Matrix matrixFromEuler(double heading,
                                           double attitude,
                                           double bank)
This conversion uses NASA standard aeroplane conventions as described on page: http://www.euclideanspace.com/maths/geometry/rotations/euler/index.htm Coordinate System: right hand Positive angle: right hand Order of euler angles: heading first, then attitude, then bank. matrix row column ordering: [m00 m01 m02] [m10 m11 m12] [m20 m21 m22]

Parameters:
heading - in radians
attitude - in radians
bank - in radians
Returns:
the rotation matrix