IMP  2.2.0
The Integrative Modeling Platform
CHARMMStereochemistryRestraint.h
Go to the documentation of this file.
1 /**
2  * \file IMP/atom/CHARMMStereochemistryRestraint.h
3  * \brief Class to maintain CHARMM stereochemistry.
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPATOM_CHARMM_STEREOCHEMISTRY_RESTRAINT_H
10 #define IMPATOM_CHARMM_STEREOCHEMISTRY_RESTRAINT_H
11 
12 #include <IMP/atom/atom_config.h>
13 #include <IMP/base/Pointer.h>
14 #include <IMP/kernel/Restraint.h>
16 #include "Hierarchy.h"
18 #include "BondSingletonScore.h"
19 #include "AngleSingletonScore.h"
20 #include "DihedralSingletonScore.h"
21 #include "ImproperSingletonScore.h"
22 
23 IMPATOM_BEGIN_NAMESPACE
24 
25 //! Enforce CHARMM stereochemistry on the given Hierarchy.
26 /** It is assumed that the Hierarchy has already had CHARMM atom types
27  assigned and conforms with the CHARMM topology information
28  (for example, by calling CHARMMTopology::setup_hierarchy() first).
29 
30  \note This is a convenient high-level wrapper; the bonds, angles,
31  dihedrals and impropers can also be created manually and
32  evaluated using standard IMP building blocks - for example,
33  angles can be created using CHARMMParameters::create_angles()
34  and then evaluated using an AngleSingletonScore in combination
35  with a container::SingletonsRestraint.
36  */
37 class IMPATOMEXPORT CHARMMStereochemistryRestraint : public kernel::Restraint {
38  kernel::Particles bonds_, angles_, dihedrals_, impropers_;
43 
44  public:
46 
47  //! Get a PairFilter that excludes all stereochemical pairs.
48  /** \return a StereochemistryPairFilter that excludes all 1-2 (bond),
49  1-3 (angle) and 1-4 (dihedral) pairs.
50  */
51  StereochemistryPairFilter *get_pair_filter();
52 
53  virtual double unprotected_evaluate(IMP::kernel::DerivativeAccumulator *accum)
54  const IMP_OVERRIDE;
55  virtual IMP::kernel::ModelObjectsTemp do_get_inputs() const IMP_OVERRIDE;
57 };
58 
59 IMPATOM_END_NAMESPACE
60 
61 #endif /* IMPATOM_CHARMM_STEREOCHEMISTRY_RESTRAINT_H */
Enforce CHARMM stereochemistry on the given Hierarchy.
Class for adding derivatives from restraints to the model.
A nullptr-initialized pointer to an IMP Object.
A smart pointer to a ref-counted Object that is a class memeber.
Definition: base/Pointer.h:147
A score on the deviation of an angle from ideality.
A Score on the distance between a the two particles in a bond.
Decorator for helping deal with a hierarchy of molecules.
A filter that excludes bonds, angles and dihedrals.
The standard decorator for manipulating molecular structures.
Abstract base class for all restraints.
A score on the deviation of an improper angle from ideality.
A restraint is a term in an IMP ScoringFunction.
A score on a dihedral angle.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Classes for handling CHARMM-style topology of segments.
virtual ModelObjectsTemp do_get_inputs() const =0
A filter that excludes bonds, angles and dihedrals.
The topology of a complete CHARMM model.