IMP  2.1.0
The Integrative Modeling Platform
ConnectivityRestraint.h
Go to the documentation of this file.
1 /**
2  * \file IMP/core/ConnectivityRestraint.h \brief Connectivity restraint.
3  *
4  * Restrict max distance between at least one pair of particles of any
5  * two distinct types.
6  *
7  * Copyright 2007-2013 IMP Inventors. All rights reserved.
8  *
9  */
10 
11 #ifndef IMPCORE_CONNECTIVITY_RESTRAINT_H
12 #define IMPCORE_CONNECTIVITY_RESTRAINT_H
13 
14 #include <IMP/core/core_config.h>
15 #include "DistanceRestraint.h"
16 
17 #include <IMP/SingletonContainer.h>
18 #include <IMP/kernel/Restraint.h>
19 #include <IMP/PairScore.h>
20 
21 IMPCORE_BEGIN_NAMESPACE
22 
23 //! Ensure that a set of particles remains connected with one another.
24 /** The restraint implements ambiguous connectivity. That is, it takes
25  several particles and ensures that they remain
26  connected, but allows how they are connected to change. If you wish
27  to restraint the connectivity of sets of
28  particles (i.e. each protein is represented using a set of balls)
29  use an appropriate PairScore which calls a Refiner (such
30  as ClosePairsPairScore).
31 
32  \include connectivity_restraint.py
33 
34  More precisely, the restraint scores by computing the MST on the complete
35  graph connecting all the particles. The edge weights are given by
36  the value of the PairScore for the two endpoints of the edge.
37  */
38 class IMPCOREEXPORT ConnectivityRestraint : public kernel::Restraint {
41 
42  public:
43  //! Use the given PairScore
45  /** \deprecated_at{2.1} Use constructor that takes a container instead.
46  */
47  IMPCORE_DEPRECATED_METHOD_DECL(2.1)
49 #ifndef IMP_DOXYGEN
50  /** @name kernel::Particles to be connected
51 
52  The following methods are used to manipulate the list of particles
53  that are to be connected. Each particle should have all the
54  attributes expected by the PairScore used.
55 
56  Ideally, one should pass a singleton container instead. These
57  can only be used if none is passed.
58  */
59  /*@{*/
61  void add_particles(const kernel::ParticlesTemp &ps);
62  void set_particles(const kernel::ParticlesTemp &ps);
63 /*@}*/
64 #endif
65 
66  //! Return the set of pairs which are connected by the restraint
67  /** This set of pairs reflects the current configuration at the time of
68  the get_connected_pairs() call, not the set at the time of the last
69  evaluate() call.
70  */
71  kernel::ParticlePairsTemp get_connected_pairs() const;
72 
73  //! Return the pair score used for scoring
74  PairScore *get_pair_score() const { return ps_; }
75 
77 
78  public:
79  double unprotected_evaluate(IMP::DerivativeAccumulator *accum) const
80  IMP_OVERRIDE;
81  IMP::kernel::ModelObjectsTemp do_get_inputs() const IMP_OVERRIDE;
83  ;
84 };
85 
86 IMPCORE_END_NAMESPACE
87 
88 #endif /* IMPCORE_CONNECTIVITY_RESTRAINT_H */
Class for adding derivatives from restraints to the model.
Distance restraint between two particles.
Import IMP/kernel/SingletonContainer.h in the namespace.
Abstract score function.
Abstract base class for all restraints.
void add_particles(RMF::FileHandle fh, const kernel::ParticlesTemp &hs)
Import IMP/kernel/PairScore.h in the namespace.
A restraint is a term in an IMP ScoringFunction.
PairScore * get_pair_score() const
Return the pair score used for scoring.
Ensure that a set of particles remains connected with one another.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Class to handle individual model particles.
virtual Restraints do_create_current_decomposition() const
virtual ModelObjectsTemp do_get_inputs() const =0
void add_particle(RMF::FileHandle fh, kernel::Particle *hs)
A shared container for Singletons.