Alternatively, if many rotations need to be performed at the same time (and the intermediate Cartesian coordinates are not needed), these rotations could be sorted by bond number and applied simultaneously, by noting that rotations can be performed in a cumulative way as the
backbone is traversed from anchor to end atom. The ability to chain rotations around arbitrary vectors in space (i.e. not through the origin) is one of the main benefits of homogeneous transformations. For example, if two rotations need to be applied at the same time, one around bond 3 by 30 degrees and another around bond 7 by 15 degrees, the atoms between bonds 3 and 7 get updated by:
But the atoms after bond 7 are updated by:
In the above,
bond n is the unit vector defined along bond n, easily computed by subtracting the coordinates of atoms n+1 and n, and then dividing by its norm. The chaining of transformations as explained above is very useful to achieve arbitrary rotations of bonds within a protein. Sections of the protein (i.e. atoms belonging to certain residues) can be updated when a dihedral rotation is performed simply by constructing the overall matrix that should affect them.
Denavit-hartenberg local frames
The previous approach, while simple and intuitive, has some shortcomings:
- The accumulation of math operations in the rotation matrices is prone to
numerical instability. After only a couple of hundred rotations of apoint, each accumulating on the other, the final position of the point
may start differing significantly from its actual, intended position.As a consequence, the relative position and orientation of atoms in the
protein chain will no longer be in agreement with the protein structure.In particular, bond lengths and angles will begin stretching and
deviating from their physically acceptable values.
- The actual values of the Cartesian coordinates are always stored in a
particular, arbitrarily chosen frame of reference. For example, if wewanted to translate the protein, we would need to modify the Cartesian
coordinates stored.
- Once a rotation is applied, the method "forgets" the current values of
the dihedral angles, which would need to be re-computed if needed. What isstored is a snapshot of the current Cartesian coordinates of each
atom.
The original definition of Forward Kinematics, however, is a method to obtain the Cartesian coordinates of each atom from the current values of the internal degrees of freedom (dihedral angles in our case) at any time. In such an approach, the Cartesian coordinates need not be recomputed after every change in the dihedral angles; rather, the idea is to store the current values of the dihedral angles, and to have a procedure to reconstruct the atomic positions when needed. The advantages of this approach are:
- A more compact representation of the variables of the problem,
since the dihedral angles require less space than the (x,y,z)coordinates of each atom (the protein topology requires the values
of the bond lengths and angles anyway, so the total amount of numbersto store is comparable).
- It is not prone to numerical instability since the number of rotations
performed to position an atom is always its sequence number in thechain. (Actually if the chain is thousands of residues long, some
uncertainty could arise in the position of atoms far along the chain,but the relative position of consecutive atoms can still be kept under
control, avoiding bond stretching).
- Performing a dihedral rotation consists simply of adding/subtracting the rotation
angle from the stored value for each angle. In particular, simultaneous rotations(i.e. rotating more than one dihedral angle at a time) which consists of multiplying
many 4x4 matrices in the global method, reduces to modifying the angle values.
- There is no explicit global coordinate frame for the protein. It can
be positioned arbitrarily by prepending a position/orientation matrixto the forward kinematics computation.