IMP  2.2.1
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-2014 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
44  ConnectivityRestraint(PairScore *ps, SingletonContainerAdaptor sc);
45 
47 #ifndef IMP_DOXYGEN
48  /** @name kernel::Particles to be connected
49 
50  The following methods are used to manipulate the list of particles
51  that are to be connected. Each particle should have all the
52  attributes expected by the PairScore used.
53 
54  Ideally, one should pass a singleton container instead. These
55  can only be used if none is passed.
56  */
57  /*@{*/
59  void add_particles(const kernel::ParticlesTemp &ps);
60  void set_particles(const kernel::ParticlesTemp &ps);
61 /*@}*/
62 #endif
63 
64  //! Return the set of pairs which are connected by the restraint
65  /** This set of pairs reflects the current configuration at the time of
66  the get_connected_pairs() call, not the set at the time of the last
67  evaluate() call.
68  */
69  kernel::ParticlePairsTemp get_connected_pairs() const;
70 
71  //! Return the pair score used for scoring
72  PairScore *get_pair_score() const { return ps_; }
73 
75 
76  public:
77  double unprotected_evaluate(IMP::DerivativeAccumulator *accum) const
78  IMP_OVERRIDE;
79  IMP::kernel::ModelObjectsTemp do_get_inputs() const IMP_OVERRIDE;
81  ;
82 };
83 
84 IMPCORE_END_NAMESPACE
85 
86 #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)
Class for storing model, its restraints, constraints, and particles.
Definition: kernel/Model.h:72