IMP logo
IMP Reference Guide  develop.18ca3ba1ae,2021/02/28
The Integrative Modeling Platform
TALOSRestraint.h
Go to the documentation of this file.
1 /**
2  * \file IMP/isd/TALOSRestraint.h
3  * \brief TALOS dihedral restraint between four particles.
4  *
5  * Copyright 2007-2021 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPISD_TALOS_RESTRAINT_H
10 #define IMPISD_TALOS_RESTRAINT_H
11 
12 #include <IMP/isd/isd_config.h>
13 #include "Scale.h"
14 #include "vonMisesSufficient.h"
15 
16 #include <IMP/Restraint.h>
17 #include <IMP/Particle.h>
18 
19 IMPISD_BEGIN_NAMESPACE
20 
21 //! phi/psi dihedral restraint between four particles, using data from TALOS.
22 /** The likelihood is
23  \f[
24  f(\chi_{exp}^1,\cdots,\chi_{exp}^N|\chi(X),\kappa,I)
25  = \frac{1}{2\pi I_0(\kappa)^N}
26  \exp \left(R_0 \kappa \cos (\chi_{exp}-\chi(X)) \right)
27  \f]
28  where the sufficient statistics are \f$N\f$ the number of observations,
29  \f$R\f$ and \f$\chi_{exp}\f$.
30  \see vonMisesSufficient.h for further detail.
31 */
32 class IMPISDEXPORT TALOSRestraint : public Restraint {
33  public:
34  //! Create restraint from a list of particles and the data.
35  /** \param[in] m the Model
36  \param[in] p list of 4 particles that make the dihedral angle.
37  \param[in] data list of observations for that angle.
38  \param[in] kappa Pointer to the \f$\kappa\f$ concentration particle.
39  */
41  Particle *kappa);
42 
43  //! Create restraint from 4 particles and the data.
44  /** \param[in] m the Model
45  \param[in] p1 Pointer to first particle in dihedral restraint.
46  \param[in] p2 Pointer to second particle in dihedral restraint.
47  \param[in] p3 Pointer to third particle in dihedral restraint.
48  \param[in] p4 Pointer to fourth particle in dihedral restraint.
49  \param[in] data list of observations for that angle.
50  \param[in] kappa Pointer to the \f$\kappa\f$ concentration particle.
51  */
53  Particle *p3, Particle *p4, Floats data,
54  Particle *kappa);
55 
56  //! Create restraint from a list of particles and the sufficient statistics.
57  /** \param[in] m the Model
58  \param[in] p list of 4 particles that make the dihedral angle.
59  \param[in] N Number of observations
60  \param[in] R0 component on the x axis
61  \param[in] chiexp average observed angle.
62  \param[in] kappa Pointer to the \f$\kappa\f$ concentration particle.
63  */
64  TALOSRestraint(Model *m, Particles p, unsigned N, double R0,
65  double chiexp, Particle *kappa);
66 
67  //! Create restraint from 4 particles and the sufficient statistics.
68  /** \param[in] m the Model
69  \param[in] p1 Pointer to first particle in dihedral restraint.
70  \param[in] p2 Pointer to second particle in dihedral restraint.
71  \param[in] p3 Pointer to third particle in dihedral restraint.
72  \param[in] p4 Pointer to fourth particle in dihedral restraint.
73  \param[in] N Number of observations
74  \param[in] R0 component on the x axis
75  \param[in] chiexp average observed angle.
76  \param[in] kappa Pointer to the \f$\kappa\f$ concentration particle.
77  */
79  Particle *p3, Particle *p4, unsigned N,
80  double R0, double chiexp, Particle *kappa);
81 
82  //! Call for probability
83  double get_probability() const { return exp(-unprotected_evaluate(nullptr)); }
84 
85  double get_R0() const { return mises_->get_R0(); }
86 
87  double get_chiexp() const { return mises_->get_chiexp(); }
88 
89  virtual double unprotected_evaluate(IMP::DerivativeAccumulator *accum)
90  const IMP_OVERRIDE;
93 
94  private:
95  Pointer<Particle> p_[4];
96  Pointer<Particle> kappa_;
98 };
99 
100 IMPISD_END_NAMESPACE
101 
102 #endif /* IMPISD_TALOS_RESTRAINT_H */
Normal distribution of Function.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
A decorator for scale parameters particles.
double get_probability() const
Call for probability.
A smart pointer to a reference counted object.
Definition: Pointer.h:87
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:72
phi/psi dihedral restraint between four particles, using data from TALOS.
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
Class to handle individual particles of a Model object.
Definition: Particle.h:41
Abstract base class for all restraints.
virtual ModelObjectsTemp do_get_inputs() const =0
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.
Class for adding derivatives from restraints to the model.
A restraint is a term in an IMP ScoringFunction.
Definition: Restraint.h:54