IMP logo
IMP Reference Guide  2.22.0
The Integrative Modeling Platform
TableRefiner.h
Go to the documentation of this file.
1 /**
2  * \file IMP/core/TableRefiner.h
3  * \brief A lookup based particle refiner
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPCORE_TABLE_REFINER_H
9 #define IMPCORE_TABLE_REFINER_H
10 
11 #include <IMP/core/core_config.h>
12 
13 #include <IMP/Refiner.h>
14 #include <boost/unordered_map.hpp>
15 IMPCORE_BEGIN_NAMESPACE
16 
17 //! A lookup based particle refiner
18 /** Each particle is refined by returning the list
19  of particles stored for it in a table.
20  */
21 class IMPCOREEXPORT TableRefiner : public Refiner {
22  boost::unordered_map<Particle *, Particles> map_;
23 
24  public:
25  //! Initialize it with an empty table
26  TableRefiner();
27 
28  //! Add a mapping to the table
29  void add_particle(Particle *p, const ParticlesTemp &ps);
30 
31  //! Remove a mapping from the table
32  void remove_particle(Particle *p);
33 
34  //! Set the mapping for a particular particle
35  void set_particle(Particle *p, const ParticlesTemp &ps);
36 
37  virtual bool get_can_refine(Particle *) const override;
38  virtual const ParticlesTemp get_refined(Particle *) const
39  override;
40 #ifndef SWIG
42 #endif
44  Model *m, const ParticleIndexes &pis) const override;
46 };
47 
48 IMPCORE_END_NAMESPACE
49 
50 #endif /* IMPCORE_TABLE_REFINER_H */
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
void add_particle(RMF::FileHandle fh, Particle *hs)
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:86
virtual bool get_can_refine(Particle *) const
Return true if this refiner can refine that particle.
Definition: Refiner.h:52
Refine a particle into a list of particles.
A lookup based particle refiner.
Definition: TableRefiner.h:21
virtual ModelObjectsTemp do_get_inputs(Model *m, const ParticleIndexes &pis) const =0
Overload this method to specify the inputs.
virtual const ParticlesTemp get_refined(Particle *a) const =0
Refine the passed particle into a set of particles.
Abstract class to implement hierarchical methods.
Definition: Refiner.h:34
Class to handle individual particles of a Model object.
Definition: Particle.h:43