Package org.biojava.bio.structure
Class Calc
- java.lang.Object
-
- org.biojava.bio.structure.Calc
-
public class Calc extends java.lang.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
Fields Modifier and Type Field Description static float
degreesPerRadian
Degrees per radian.static float
radiansPerDegree
Radians per degree.
-
Constructor Summary
Constructors Constructor Description Calc()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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
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
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
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 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 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)
substract 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 .
-
-
-
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
-
-
Method Detail
-
getDistance
public static double getDistance(Atom a, Atom b) throws StructureException
calculate distance between two atoms.- Parameters:
a
- an Atom objectb
- an Atom object- Returns:
- a double
- Throws:
StructureException
- ...
-
add
public static Atom add(Atom a, Atom b)
add two atoms ( a + b).- Parameters:
a
- an Atom objectb
- an Atom object- Returns:
- an Atom object
-
substract
public static Atom substract(Atom a, Atom b) throws StructureException
substract two atoms ( a - b).- Parameters:
a
- an Atom objectb
- an Atom object- Returns:
- an Atom object
- Throws:
StructureException
- ...
-
vectorProduct
public static Atom vectorProduct(Atom a, Atom b)
Vector product .- Parameters:
a
- an Atom objectb
- an Atom object- Returns:
- an Atom object
-
skalarProduct
public static double skalarProduct(Atom a, Atom b)
skalar product.- Parameters:
a
- an Atom objectb
- an Atom object- Returns:
- a double
-
amount
public static double amount(Atom a)
amount.- Parameters:
a
- an Atom object- Returns:
- a double
-
angle
public static double angle(Atom a, Atom b)
angle.- Parameters:
a
- an Atom objectb
- an Atom object- Returns:
- a double
-
unitVector
public static Atom unitVector(Atom a)
return the unit vector of vector a .- Parameters:
a
- an Atom object- Returns:
- an Atom object
-
torsionAngle
public static 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 objectb
- an Atom objectc
- an Atom objectd
- an Atom object- Returns:
- a double
- Throws:
StructureException
- ...
-
getPhi
public static double getPhi(AminoAcid a, AminoAcid b) throws StructureException
phi angle.- Parameters:
a
- an AminoAcid objectb
- an AminoAcid object- Returns:
- a double
- Throws:
StructureException
- ...
-
getPsi
public static double getPsi(AminoAcid a, AminoAcid b) throws StructureException
psi angle.- Parameters:
a
- an AminoAcid objectb
- an AminoAcid object- Returns:
- a double
- Throws:
StructureException
- ...
-
isConnected
public static 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 objectb
- an AminoAcid object- Returns:
- true if ...
- Throws:
StructureException
- ...
-
rotate
public static 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 rotatedm
- a rotation matrix represented as a double[3][3] array
-
rotate
public static void rotate(Structure structure, double[][] rotationmatrix) throws StructureException
Rotate a structure.- Parameters:
structure
- a Structure objectrotationmatrix
- an array (3x3) of double representing the rotation matrix.- Throws:
StructureException
- ...
-
rotate
public static void rotate(Group group, double[][] rotationmatrix) throws StructureException
rotate a structure .- Parameters:
group
- a group objectrotationmatrix
- an array (3x3) of double representing the rotation matrix.- Throws:
StructureException
- ...
-
rotate
public static void rotate(Atom atom, Matrix m)
Rotate an atom around a Matrix object.- Parameters:
atom
- atom to be rotatedm
- rotation matrix to be applied to the atom
-
rotate
public static void rotate(Group group, Matrix m)
Rotate a group object.- Parameters:
group
- a group to be rotatedm
- a Matrix object representing the translation matrix
-
rotate
public static void rotate(Structure structure, Matrix m)
Rotate a structure object.- Parameters:
structure
- the structure to be rotatedm
- rotation matrix to be applied
-
plus
public static void plus(Structure s, Matrix matrix)
calculate structure + Matrix coodinates ...- Parameters:
s
- the structure to operate onmatrix
- a Matrix object
-
shift
public static void shift(Structure structure, Atom a)
shift a structure with a vector.- Parameters:
structure
- a Structure objecta
- an Atom object representing a shift vector
-
shift
public static void shift(Atom a, Atom b)
Shift a vector.- Parameters:
a
- vector ab
- vector b
-
shift
public static void shift(Group group, Atom a)
Shift a Group with a vector.- Parameters:
group
- a group objecta
- an Atom object representing a shift vector
-
getCentroid
public static 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
-
getCenterVector
public static 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
-
centerAtoms
public static 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
-
createVirtualCBAtom
public static 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 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 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 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 radiansattitude
- in radiansbank
- in radians- Returns:
- the rotation matrix
-
-