IMP  2.0.1
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-2013 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/Pointer.h>
14 #include <IMP/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 Restraint
38 {
39  Particles bonds_, angles_, dihedrals_, impropers_;
40  IMP::OwnerPointer<BondSingletonScore> bond_score_;
41  IMP::OwnerPointer<AngleSingletonScore> angle_score_;
42  IMP::OwnerPointer<DihedralSingletonScore> dihedral_score_;
43  IMP::OwnerPointer<ImproperSingletonScore> improper_score_;
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 
54 };
55 
56 IMPATOM_END_NAMESPACE
57 
58 #endif /* IMPATOM_CHARMM_STEREOCHEMISTRY_RESTRAINT_H */