#include <anisotropyShiftProcessor.h>

Public Member Functions |
|
|
Constructors and Destructors
|
|
| AnisotropyShiftProcessor () | |
| Default constructor. |
|
| AnisotropyShiftProcessor (const AnisotropyShiftProcessor &processor) | |
| Copy constructor. |
|
| virtual | ~AnisotropyShiftProcessor () |
| Destructor. |
|
|
Processor specific functions.
|
|
| virtual bool | finish () |
| Finish method. |
|
| virtual Processor::Result | operator() (Composite &composite) |
| Application method. |
|
|
Accessors
|
|
| virtual void | init () |
| Module initialization. |
|
Static Public Attributes |
|
|
Enums and Constants
|
|
| static const char * | PROPERTY__ANISOTROPY_SHIFT |
| A symbolic name for the electric
field contribution to the chemical shift. |
|
Protected Attributes |
|
| std::list< const Atom * > | proton_list_ |
| std::list< const Bond * > | eff_list_ |
| std::list< const Bond * > | eff_list_2_ |
| bool | ignore_other_chain_ |
| virtual bool BALL::AnisotropyShiftProcessor::finish | ( | ) | [virtual] |
Finish method.
Here chemical shift calculation is done. An iteration
over every Hydrogen in proton_list_ is
started. For each of these Hydrogens an iteration is
started over every effector bounds in
eff_list_. c_atom is assigned the
first atom of effector bond and o_atom is the
second. If the actual proton is in another residue then
c_atom calculation is started. The next
bounded carbonate atom of c_atom is stored in
x_atom. Now we have three atoms with their
positions stored in c_pos , o_pos
and x_pos.
vz = o_pos -
c_pos and vz is normalized. vy
is the vectorproduct of vz and the difference vector of
x_pos and c_pos and is
normalized. vx is the vectorproduct of vz
and vy and is normalized. Then the center
cen of the effector bound is set toc_pos
+ 1.1 * vz.
v1
is the difference vector of the actual hydrogen and
cen. v2 is the vectorproduct of
v1 and vy. v3 is
the vectorproduct of v2 and vx.
abstand is assigned the length of vector
v1. Then stheta is assigned the
sinus of the angle between v1 and
vy. The sinus of the angle between
v2 and vx is assigned to
sgamma. Now preparations have finished and
we can start the real shift calculation.calc1 = dX1 * ( ( 3.0 *
stheta * stheta ) - 2.0 ).calc2 = dX2 * ( 1.0 - ( 3.0
* stheta * stheta *
sgamma * sgamma ) )ts = ( calc1 +
calc2 ) / ( 3.0 * distance *
distance * distance )ts is added to gs.dX1 and dX2 are some
constant floats. If the actual Hydrogens name is "H" the
constant floats dXN1 and dXN2
are used instead.eff_list_ has finished C=O anisotropy
for actual Hydrogen is done and iteration over all C=N
anisotropy effector bounds of eff_list_2_ is
started.c_pos o_pos position of
n_pos position of the Nitrogen bonded to
Carbonate.vz = n_pos -
c_posvy is the vectorproduct of
vz and the difference vector of
o_pos and c_posvx is the vectorproduct of
vz and vy.cen = c_pos + (
vz * ( 0.85 * length of vz )
)ndX1 and ndX2 instead of
dX1 and dX2 and
ndXN1 and ndXN2 intead of
dXN1 and dXN2. Finally C=N
anisotropy has finished and gs is added to
the actual hydrogens shift. Then iteration goes on with
the next hydrogen.Reimplemented from BALL::ShiftModule.
| virtual Processor::Result BALL::AnisotropyShiftProcessor::operator() | ( | Composite & | composite | ) | [virtual] |
Application method.
Atoms are stored in three different lists , named
proton_list_ that contains all
Hydrogens,eff_list_ that contains all effectors of
C=O anisotropy andeff_list_2_ that contains all effectors
of C=N anisotropy. Effectors of C=O anisotropy are all
bounds between atoms named "C" and "O", as well as bounds
between atoms named "CG" and "OD1" in residues called
"ASP" or "ASN, and finally bounds between atoms named
"CD" and "OE1" in residues called "GLU" and "GLN".
Effectors of C=N anisotropy are all bounds between atoms
named "C" and "N".Reimplemented from BALL::UnaryProcessor< Composite >.
const char*
BALL::AnisotropyShiftProcessor::PROPERTY__ANISOTROPY_SHIFT
[static] |
A symbolic name for the electric field contribution to the chemical shift.
1.5.8