BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Protected Attributes | Private Member Functions | Private Attributes | List of all members
BALL::HBondShiftProcessor Class Reference

#include <BALL/NMR/HBondShiftProcessor.h>

Inheritance diagram for BALL::HBondShiftProcessor:
BALL::ShiftModule BALL::UnaryProcessor< Composite > BALL::UnaryFunctor< Composite, Processor::Result >

Public Member Functions

Constructors and Destructors
 HBondShiftProcessor ()
 
 HBondShiftProcessor (const HBondShiftProcessor &processor)
 
virtual ~HBondShiftProcessor ()
 
Accessors
virtual void init ()
 
Processor specific funtions.
virtual bool start ()
 
virtual Processor::Result operator() (Composite &composite)
 
virtual bool finish ()
 
- Public Member Functions inherited from BALL::ShiftModule
 ShiftModule ()
 
 ShiftModule (Parameters &parameters, const String &name="")
 
 ShiftModule (const ShiftModule &module)
 
virtual ~ShiftModule ()
 
virtual void clear ()
 
const ShiftModuleoperator= (const ShiftModule &module)
 
void setName (const String &name)
 
const StringgetName () const
 
void setParameters (Parameters &parameters)
 
const ParametersgetParameters () const
 
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__HBOND_SHIFT
 
- Static Public Attributes inherited from BALL::ShiftModule
static const char * PROPERTY__SHIFT
 
static const char * PROPERTY__EXPERIMENTAL__SHIFT
 

Protected Attributes

std::vector< Stringacceptor_types_
 
std::vector< Atom * > donors_
 
std::vector< Atom * > acceptors_
 
bool amide_protons_are_targets_
 
float amide_proton_factor_
 
float amide_proton_subtrahend_
 
float amide_proton_oxygen_hydrogen_separation_distance_
 
float alpha_proton_oxygen_hydrogen_separation_distance_
 
bool exclude_selfinteraction_
 
bool ShiftXwise_hydrogen_bonds_computation_
 
- Protected Attributes inherited from BALL::ShiftModule
String module_name_
 
Parametersparameters_
 
bool valid_
 

Private Member Functions

void printParameters_ ()
 
void printEffectors_ ()
 
void printTargets_ ()
 
AtomgetDonor_ (Atom *a)
 
void postprocessing_ ()
 

Private Attributes

std::multimap< float,
std::pair< Atom *, Atom * > > 
hbonds_
 
std::map< Atom *, booldonor_occupied_
 
std::map< Atom *, boolacceptor_occupied_
 

Additional Inherited Members

- Public Types inherited from BALL::UnaryFunctor< Composite, Processor::Result >
typedef Processor::Result result_type
 
typedef Composite argument_type
 
typedef Compositeargument_reference
 
typedef const Compositeconst_argument_reference
 
typedef Compositeargument_pointer
 
typedef const Compositeconst_argument_pointer
 

Detailed Description

Shift assignment processor implementing the effect of hydrogen bonds.

Definition at line 37 of file HBondShiftProcessor.h.

Constructor & Destructor Documentation

BALL::HBondShiftProcessor::HBondShiftProcessor ( )

Default constructor.

BALL::HBondShiftProcessor::HBondShiftProcessor ( const HBondShiftProcessor processor)

Copy constructor.

virtual BALL::HBondShiftProcessor::~HBondShiftProcessor ( )
virtual

Destructor.

Member Function Documentation

virtual bool BALL::HBondShiftProcessor::finish ( )
virtual

Finish method. This method performs the chemical shift calculation as specified in the SHIFTX.ini - file read in the init() method. According to $var ShiftXwise_hydrogen_bonds_computation_ $ we temporarily compute hydrogenbonds in an ShiftX like manner or we assume the hydrogen bonds already be set.

The ShiftX definition of hydrogen bonds is:

  • Donors are: H and HA
  • Acceptors are: O, OD_n, OE_n, OG_n, OH_n or water in the solvent! By now we do not consider water (as ShiftX does not consider too)!
  • Donors and Acceptors have to be on different residues.
  • HA even does not form hydrogen bonds with neighbours.
  • If the acceptor is a solvent oxygen, the donor must not be a HA (not yet implemented!)
  • The oxygen–hydrogen separation must be less than 3.5 A for H(N) and 2.77 A for HA.
  • For all hydrogens must hold: ~the angle between the N_H donor bond vector and the C=O acceptor bond vector must be 90 degrees or more, and ~the hydrogen-oxygen distance must be less than 2.5 + cos of the angle, and ~hydrogen-oxygen distance must be less than the nitrogen - oxygen distance

    Having applied these rules to each donor–acceptor pair, we sort the list of possible bonds by the O_H separation distance, shortest to longest. The list is then processed so that only the single strongest hydrogen bond is identified for each donor–acceptor pair. Up to that point any bond involving the same donor or acceptor is preculded!

The chemical shift is added to the {acceptor} atom using the named property ShiftModule::PROPERTY__SHIFT and stored in the named property PROPERTY__HBOND_SHIFT .

Returns
bool, false if invalid

Reimplemented from BALL::ShiftModule.

Atom* BALL::HBondShiftProcessor::getDonor_ ( Atom a)
private
virtual void BALL::HBondShiftProcessor::init ( )
virtual

Initialization method. This method reads the parameter section "HBondEffect" and parses its content. This section contains the parameters used to calculate the contribution of a hydrogen bond to the chemical shift of alpha protons and amide protons.

In addition, this section contains the definition of the Hbond effector types, which are stored in the vector { /tt acceptor_types_}.

The formular for amid protons is given as

        amide_proton_factor_

shift = -------------------— - amide_proton_subtrahend_, r^3

the formular for alpha protons is given as

      0.147521    (1.65458E-05)    0.000134668        0.0598561      15.6855

shift = ----— - ----------— - ----------— + --------— + -----— - 0.673905 . r r^1.5 r*r r^2.5 r^3

The section contains the following flags:

  • amide_protons_are_targets denotes, whether amid protons are targets of the HydrogenBond shift effect. Default is false.
  • $var amide_proton_factor$ denotes the factor of the amid term, default is zero.
  • $var amide_proton_subtrahend$ denotes the subtrahend of the amid term, default is zero.
  • $var amide_proton_oxygen_hydrogen_separation_distance $ denotes the maximal possible HN–O distance, default is zero.
  • $var alpha_proton_oxygen_hydrogen_separation_distance $ denotes the denotes the maximal possible H_alpha–O distance, default is zero.
  • $var exclude_selfinteraction$ denotes if effectors (O) influence hydrogens of the same residue, default is true.
  • $var ShiftXwise_hydrogen_bonds_computation $ denotes if the hydrogenbonds are computed as in the ShiftX approach, default is false.

Right now, it is assumed that the hydrogen bonds were already set via for example the HBondProcessor.

Reimplemented from BALL::ShiftModule.

virtual Processor::Result BALL::HBondShiftProcessor::operator() ( Composite composite)
virtual

operator (). This method adds all acceptors () specified in the vector acceptor_types_ to acceptors_ and all donors to donors_ vector.

Reimplemented from BALL::UnaryProcessor< Composite >.

void BALL::HBondShiftProcessor::postprocessing_ ( )
private
void BALL::HBondShiftProcessor::printEffectors_ ( )
private
void BALL::HBondShiftProcessor::printParameters_ ( )
private
void BALL::HBondShiftProcessor::printTargets_ ( )
private
virtual bool BALL::HBondShiftProcessor::start ( )
virtual

Processor start method. Clears the donor and acceptor lists.

Reimplemented from BALL::ShiftModule.

Member Data Documentation

std::map<Atom*, bool> BALL::HBondShiftProcessor::acceptor_occupied_
private

Definition at line 231 of file HBondShiftProcessor.h.

std::vector<String> BALL::HBondShiftProcessor::acceptor_types_
protected

Definition at line 173 of file HBondShiftProcessor.h.

std::vector<Atom*> BALL::HBondShiftProcessor::acceptors_
protected

Definition at line 181 of file HBondShiftProcessor.h.

float BALL::HBondShiftProcessor::alpha_proton_oxygen_hydrogen_separation_distance_
protected

Definition at line 201 of file HBondShiftProcessor.h.

float BALL::HBondShiftProcessor::amide_proton_factor_
protected

Definition at line 189 of file HBondShiftProcessor.h.

float BALL::HBondShiftProcessor::amide_proton_oxygen_hydrogen_separation_distance_
protected

Definition at line 197 of file HBondShiftProcessor.h.

float BALL::HBondShiftProcessor::amide_proton_subtrahend_
protected

Definition at line 193 of file HBondShiftProcessor.h.

bool BALL::HBondShiftProcessor::amide_protons_are_targets_
protected

Definition at line 185 of file HBondShiftProcessor.h.

std::map<Atom*, bool> BALL::HBondShiftProcessor::donor_occupied_
private

Definition at line 230 of file HBondShiftProcessor.h.

std::vector<Atom*> BALL::HBondShiftProcessor::donors_
protected

Definition at line 177 of file HBondShiftProcessor.h.

bool BALL::HBondShiftProcessor::exclude_selfinteraction_
protected

Definition at line 206 of file HBondShiftProcessor.h.

std::multimap<float, std::pair<Atom*, Atom*> > BALL::HBondShiftProcessor::hbonds_
private

Definition at line 229 of file HBondShiftProcessor.h.

const char* BALL::HBondShiftProcessor::PROPERTY__HBOND_SHIFT
static

Definition at line 47 of file HBondShiftProcessor.h.

bool BALL::HBondShiftProcessor::ShiftXwise_hydrogen_bonds_computation_
protected

Definition at line 218 of file HBondShiftProcessor.h.