IMP  2.3.0
The Integrative Modeling Platform
CysteineCrossLinkRestraint.h
Go to the documentation of this file.
1 /**
2  * \file IMP/isd/CysteineCrossLinkRestraint.h
3  * \brief A sigmoid shaped restraint between
4  * residues with discrete classifier
5  * and ambiguous assignment. To be used with
6  * cross-linking mass-spectrometry data.
7  *
8  * Copyright 2007-2014 IMP Inventors. All rights reserved.
9  *
10  */
11 
12 #ifndef IMPISD_CYSTEINE_CROSS_LINK_RESTRAINT_H
13 #define IMPISD_CYSTEINE_CROSS_LINK_RESTRAINT_H
14 #include "isd_config.h"
15 #include <IMP/kernel/Restraint.h>
16 #include <IMP/isd/CrossLinkData.h>
18 
19 IMPISD_BEGIN_NAMESPACE
20 /** A restraint for cysteine cross-linking data. It models the
21  frequency fexp derived from gel separation of cross-linked
22  complexes. The experimental frequency fexp is derived as the
23  fraction of dimeric versus monomeric complex, upon cysteine
24  cross-linking. The forward model is derived from free energy
25  calculations. The likelyhood is modeled as a normal distribution
26  function truncated over the interval [0,1]. To contruct the
27  restraint, the class CysteineCrossLinkData and CrossLinkData have
28  to be initialized (see for instance
29  test_CysteineCrossLinkRestraint.py). Input parameters and
30  constructor. There are two different constructors p1 and p2 are
31  the two cross-linked sites. \f$ \beta \f$ is the beta parameter
32  in the distribution function. The \f$ \alpha \f$ parameter is
33  constrained by the condition that the variance is gaussian by the
34  formula \f$ \omega \f$ is a scale factor for the beta parameter,
35  to allow for outlier detection. Usage: Construct the ambiguous
36  set using CysteineCrossLinkRestraint(\f$ \beta \f$, \f$ \omega
37  \f$, xlyield, \f$ f_{exp} \f$) method. The model frequencies of
38  each individual copy are summed, weighted and multiplied by the
39  unknown crosslink yield (epsilon). Pass individual cross-linked
40  pairs to add_contribution(p0, p1, w) command, where "w" is a state
41  weight parameter.
42  */
43 
44 class IMPISDEXPORT CysteineCrossLinkRestraint : public kernel::Restraint {
45  kernel::Particles ps1_;
46  kernel::Particles ps2_;
47  std::vector<kernel::Particles> pslist1_;
48  std::vector<kernel::Particles> pslist2_;
51  base::Pointer<kernel::Particle> epsilon_; // k * t at the exponential
55  int constr_type_;
56  double fexp_;
57  bool use_CA_;
58 
59  public:
60  //! Create the restraint.
61  /** kernel::Restraints should store the particles they are to act on,
62  preferably in a Singleton or PairContainer as appropriate.
63  */
65  kernel::Particle *epsilon,
66  kernel::Particle *weight, CrossLinkData *data,
67  double fexp);
68 
70  kernel::Particle *epsilon,
71  kernel::Particle *weight, CrossLinkData *data,
72  CysteineCrossLinkData *ccldata);
73 
74  /* call for probability */
75  double get_probability() const;
76 
77  double get_standard_error() const;
78 
79  Floats get_frequencies() const;
80 
81  double get_model_frequency() const;
82 
83  Floats get_distances() const;
84 
85  double get_truncated_normalization(double mean, double sigma) const;
86 
87  double get_normal_pdf(double mean, double sigma, double x) const;
88 
89  void add_contribution(kernel::Particle *p1, kernel::Particle *p2);
90  void add_contribution(kernel::Particles p1, kernel::Particles p2);
91 
92  algebra::Vector3D get_CB_coordinates(const kernel::Particles &ps) const;
93 
94  unsigned get_number_of_contributions() const;
95 
96  /** This macro declares the basic needed methods: evaluate and show
97  */
98  virtual double unprotected_evaluate(IMP::kernel::DerivativeAccumulator *accum)
99  const IMP_OVERRIDE;
102 };
103 
104 IMPISD_END_NAMESPACE
105 
106 #endif /* IMPISD_CYSTEINE_CROSS_LINK_RESTRAINT_H */
Class for adding derivatives from restraints to the model.
Normal distribution of Function.
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:147
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
A smart pointer to a reference counted object.
Definition: Pointer.h:87
Normal distribution of Function.
Abstract base class for all restraints.
A restraint is a term in an IMP ScoringFunction.
Class to handle individual model particles.
VectorD< 3 > Vector3D
Definition: VectorD.h:395
virtual ModelObjectsTemp do_get_inputs() const =0
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.