IMP logo
IMP Reference Guide  2.5.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-2015 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/Restraint.h>
16 #include <IMP/isd/CrossLinkData.h>
18 
19 IMPISD_BEGIN_NAMESPACE
20 //! A restraint for cysteine cross-linking data.
21 /** It models the 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 Restraint {
45  ParticleIndexes ps1_;
46  ParticleIndexes ps2_;
47  std::vector<ParticleIndexes> pslist1_;
48  std::vector<ParticleIndexes> pslist2_;
49  ParticleIndex beta_;
50  ParticleIndex sigma_;
51  ParticleIndex epsilon_; // k * t at the exponential
52  ParticleIndex weight_;
55  int constr_type_;
56  double fexp_;
57  bool use_CA_;
58 
59  public:
60  //! Create the restraint.
63  ParticleIndexAdaptor epsilon,
64  ParticleIndexAdaptor weight, CrossLinkData *data,
65  double fexp);
66 
69  ParticleIndexAdaptor epsilon,
70  ParticleIndexAdaptor weight, CrossLinkData *data,
71  CysteineCrossLinkData *ccldata);
72 
73 #ifndef IMP_DOXYGEN
74  IMPISD_DEPRECATED_METHOD_DECL(2.5)
76  Particle *epsilon,
77  Particle *weight, CrossLinkData *data,
78  double fexp);
79 
80  IMPISD_DEPRECATED_METHOD_DECL(2.5)
82  Particle *epsilon,
83  Particle *weight, CrossLinkData *data,
84  CysteineCrossLinkData *ccldata);
85 #endif
86 
87  /* call for probability */
88  double get_probability() const;
89 
90  double get_standard_error() const;
91 
92  Floats get_frequencies() const;
93 
94  double get_model_frequency() const;
95 
96  Floats get_distances() const;
97 
98  double get_truncated_normalization(double mean, double sigma) const;
99 
100  double get_normal_pdf(double mean, double sigma, double x) const;
101 
102  void add_contribution(ParticleIndexAdaptor p1, ParticleIndexAdaptor p2);
103  void add_contribution(ParticleIndexes p1, ParticleIndexes p2);
104 
105  algebra::Vector3D get_CB_coordinates(const ParticleIndexes &ps) const;
106 
107  unsigned get_number_of_contributions() const;
108 
109  /** This macro declares the basic needed methods: evaluate and show
110  */
111  virtual double unprotected_evaluate(IMP::DerivativeAccumulator *accum)
112  const IMP_OVERRIDE;
115 };
116 
117 IMPISD_END_NAMESPACE
118 
119 #endif /* IMPISD_CYSTEINE_CROSS_LINK_RESTRAINT_H */
Normal distribution of Function.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Normal distribution of Function.
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:72
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:146
VectorD< 3 > Vector3D
Definition: VectorD.h:395
Class to handle individual model particles.
Definition: Particle.h:37
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:52
A restraint for cysteine cross-linking data.