IMP logo
IMP Reference Guide  develop.63b38c487d,2024/12/21
The Integrative Modeling Platform
DensityFillingRestraint.h
Go to the documentation of this file.
1 /**
2  * \file IMP/em/DensityFillingRestraint.h
3  * \brief Score how well the particles fill the density
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPEM_DENSITY_FILLING_RESTRAINT_H
10 #define IMPEM_DENSITY_FILLING_RESTRAINT_H
11 
12 #include <IMP/em/em_config.h>
13 #include "DensityMap.h"
14 #include <IMP/atom/Hierarchy.h>
15 #include <IMP/atom/Atom.h>
16 #include <IMP/atom/Mass.h>
17 #include <IMP/core/XYZR.h>
18 #include <IMP/Model.h>
19 #include <IMP/Restraint.h>
20 #include <IMP/Refiner.h>
21 
22 IMPEM_BEGIN_NAMESPACE
23 
24 //! Calculate score based on fit to EM map
25 /** \ingroup exp_restraint
26 
27  */
28 class IMPEMEXPORT DensityFillingRestraint : public Restraint {
29  public:
30  //! Constructor
31  /**
32  \param[in] ps The particles participating in the fitting score
33  \param[in] em_map The density map used in the fitting score
34  \param[in] threshold
35  \note Particles that are rigid-bodies are interpolated and
36  not resampled. This significantly reduces the running time but is
37  less accurate. If the user prefers to get more accurate results,
38  provide its members as input particles and not the rigid body.
39  \todo we currently assume rigid bodies are also molecular hierarchies.
40  */
42  Float threshold);
43 
45  const override;
46  virtual IMP::ModelObjectsTemp do_get_inputs() const override;
48 
49  IMP_LIST(private, Particle, particle, Particle *, Particles);
50 
51  private:
52  IMP::PointerMember<DensityMap> target_dens_map_;
53  algebra::BoundingBoxD<3> target_bounding_box_;
54  // reference to the IMP environment
55  IMP::core::XYZs xyz_;
56  Particles ps_;
57  Float threshold_;
58 };
59 
60 IMPEM_END_NAMESPACE
61 
62 #endif /* IMPEM_DENSITY_FILLING_RESTRAINT_H */
A decorator for particles with mass.
Calculate score based on fit to EM map.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Simple atom decorator.
Storage of a model, its restraints, constraints and particles.
virtual double unprotected_evaluate(DerivativeAccumulator *da) const
Return the unweighted score for the restraint.
#define IMP_LIST(protection, Ucname, lcname, Data, PluralData)
A macro to provide a uniform interface for storing lists of objects.
Class for handling density maps.
Decorator for helping deal with a hierarchy of molecules.
Class for handling density maps.
Definition: DensityMap.h:95
Refine a particle into a list of particles.
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:143
double Float
Basic floating-point value (could be float, double...)
Definition: types.h:19
Class to handle individual particles of a Model object.
Definition: Particle.h:43
Abstract base class for all restraints.
Decorator for a sphere-like particle.
virtual ModelObjectsTemp do_get_inputs() const =0
Class for adding derivatives from restraints to the model.
A restraint is a term in an IMP ScoringFunction.
Definition: Restraint.h:56