#include <BALL/NMR/anisotropyShiftProcessor.h>
Public Member Functions | |
Constructors and Destructors | |
AnisotropyShiftProcessor () | |
AnisotropyShiftProcessor (const AnisotropyShiftProcessor &processor) | |
virtual | ~AnisotropyShiftProcessor () |
Processor specific functions. | |
virtual bool | finish () |
virtual Processor::Result | operator() (Composite &composite) |
Accessors | |
virtual void | init () |
Static Public Attributes | |
Enums and Constants | |
static const char * | PROPERTY__ANISOTROPY_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_ |
Shift assignment processor implementing Anisotropy.
BALL::AnisotropyShiftProcessor::AnisotropyShiftProcessor | ( | ) |
Default constructor.
BALL::AnisotropyShiftProcessor::AnisotropyShiftProcessor | ( | const AnisotropyShiftProcessor & | processor | ) |
Copy constructor
virtual BALL::AnisotropyShiftProcessor::~AnisotropyShiftProcessor | ( | ) | [virtual] |
Destructor
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 to c_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_pos
vy
is the vectorproduct of vz
and the difference vector of o_pos
and c_pos
vx
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 void BALL::AnisotropyShiftProcessor::init | ( | ) | [virtual] |
Module initialization
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 and eff_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 >.
std::list<const Bond*> BALL::AnisotropyShiftProcessor::eff_list_ [protected] |
std::list<const Bond*> BALL::AnisotropyShiftProcessor::eff_list_2_ [protected] |
const char* BALL::AnisotropyShiftProcessor::PROPERTY__ANISOTROPY_SHIFT [static] |
A symbolic name for the electric field contribution to the chemical shift
std::list<const Atom*> BALL::AnisotropyShiftProcessor::proton_list_ [protected] |