Loading...
Searching...
No Matches
BALL::AnisotropyShiftProcessor Class Reference
Molecular Modeling » Nuclear Magnetic Resonance Spectroscopy » Shift modules

`#include <BALL/NMR/anisotropyShiftProcessor.h>`

Inheritance diagram for BALL::AnisotropyShiftProcessor:

## 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)
Public Member Functions inherited from BALL::ShiftModule
| ShiftModule ()
| ShiftModule (Parameters &parameters, const String &name="")
| ShiftModule (const ShiftModule &module)
virtual | ~ShiftModule ()
virtual void | clear ()
const ShiftModule & | operator= (const ShiftModule &module)
void | setName (const String &name)
const String & | getName () const
void | setParameters (Parameters &parameters)
const Parameters * | getParameters () const
virtual bool | start ()
bool | isValid () const
Public Member Functions inherited from BALL::UnaryProcessor< Composite >
| UnaryProcessor ()
| UnaryProcessor (const UnaryProcessor &)
virtual | ~UnaryProcessor ()

## Static Public Attributes

Enums and Constants
static const char * | PROPERTY__ANISOTROPY_SHIFT
Static Public Attributes inherited from BALL::ShiftModule
static const char * | PROPERTY__SHIFT
static const char * | PROPERTY__EXPERIMENTAL__SHIFT

## Accessors

std::list< const Atom * > | proton_list_
std::list< const Bond * > | eff_list_
std::list< const Bond * > | eff_list_2_
bool | ignore_other_chain_
virtual void | init ()

## Additional Inherited Members

Public Types inherited from BALL::UnaryFunctor< ArgumentType, ResultType >
typedef ResultType | result_type
typedef ArgumentType | argument_type
typedef ArgumentType & | argument_reference
typedef const ArgumentType & | const_argument_reference
typedef ArgumentType * | argument_pointer
typedef const ArgumentType * | const_argument_pointer
String | module_name_
Parameters * | parameters_
bool | valid_

## Detailed Description

Shift assignment processor implementing Anisotropy.

Definition at line 29 of file anisotropyShiftProcessor.h.

## Constructor & Destructor Documentation

## AnisotropyShiftProcessor() [1/2]

BALL::AnisotropyShiftProcessor::AnisotropyShiftProcessor | ( |  | ) |

Default constructor.

## AnisotropyShiftProcessor() [2/2]

BALL::AnisotropyShiftProcessor::AnisotropyShiftProcessor | ( | const AnisotropyShiftProcessor & | processor | ) |

Copy constructor

## ~AnisotropyShiftProcessor()

virtual BALL::AnisotropyShiftProcessor::~AnisotropyShiftProcessor | ( |  | ) |

virtual

Destructor

## Member Function Documentation

## finish()

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.

  We then build a cartesian coordinate system with these vectors.

  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.

  Next three vectors are calculated : 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.

  If 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.

  This calculation is very similar with just some differences : We got three position vectors called: c_pos o_pos position of n_pos position of the Nitrogen bonded to Carbonate.

  The cartesion coordinate system is built on 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.

  The center of the effector bond is set to:

  cen = c_pos + ( vz * ( 0.85 * length of vz ) )

  The final calculation is just the same as above, except the use of different constants. Use 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.

## init()

virtual void BALL::AnisotropyShiftProcessor::init | ( |  | ) |

virtual

Module initialization

Reimplemented from BALL::ShiftModule.

## operator()()

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 >.

## Member Data Documentation

## eff_list_

std::list<const Bond*> BALL::AnisotropyShiftProcessor::eff_list_

protected

Definition at line 150 of file anisotropyShiftProcessor.h.

## eff_list_2_

std::list<const Bond*> BALL::AnisotropyShiftProcessor::eff_list_2_

protected

Definition at line 151 of file anisotropyShiftProcessor.h.

## ignore_other_chain_

bool BALL::AnisotropyShiftProcessor::ignore_other_chain_

protected

Definition at line 152 of file anisotropyShiftProcessor.h.

## PROPERTY__ANISOTROPY_SHIFT

const char* BALL::AnisotropyShiftProcessor::PROPERTY__ANISOTROPY_SHIFT

static

A symbolic name for the electric field contribution to the chemical shift

See also
  ShiftModule::PROPERTY__SHIFT

Definition at line 43 of file anisotropyShiftProcessor.h.

## proton_list_

std::list<const Atom*> BALL::AnisotropyShiftProcessor::proton_list_

protected

Definition at line 149 of file anisotropyShiftProcessor.h.