IMP
2.2.0
The Integrative Modeling Platform
|
#include <IMP/kernel/Decorator.h>
Public Member Functions | |
Model * | get_model () const |
Returns the Model containing the particle. | |
Particle * | get_particle () const |
ParticleIndex | get_particle_index () const |
operator Particle * () const | |
operator ParticleIndex () const | |
Particle * | operator-> () const |
Protected Member Functions | |
Decorator (Model *m, ParticleIndex pi) | |
Decorator (ParticleAdaptor p) | |
Representation of the structure in IMP
is via a collection of Particle objects. However, since particles are general purpose, they provide a basic set of tools for managing the data (e.g. IMP::kernel::Model::add_attribute(), IMP::kernel::Model::get_value() etc). Decorators wrap (or “decorate”) particles to provide a much richer interface. For example, most particles have Cartesian coordinates. The class IMP::core::XYZ decorates such a particle to provide functions to get and set the Cartesian coordinates as well as compute distances between particles.
get_is_setup()
and setup_particle()
functions mentioned below can take any of either an IMP::kernel::Model* and IMP::kernel::ParticleIndex pair, an IMP::kernel::Paricle* or another decorator to identify the particle. We use various of those below.Dealing with decorators and particles has two main parts
To set up a particle to be used with the IMP::core::XYZ decorator we do
The method calls also decorates the particle and returns the decorator which can now be used to manipulate the particle. For example we can access the coordinates (0,2,3) by doing
We now say the particle is an XYZ particle. If that particle is encountered later when we do not have the existing decorator available, we can decorate it again (since it is already set up) by doing
If you do not know if p
has been set up for the XYZ decorator, you can ask with
More abstractly, decorators can be used to
To see a list of all available decorators and to see what functions all decorators have, look at the list of classes which inherit from IMP::Decorator, below.
See the IMP::example::ExampleDecorator example for how to implement a simple decorator.
if
statements.A decorator can be cast to a IMP::kernel::Particle* in C++. You have to use the Decorator::get_particle() function in Python.
See example::ExampleDecorator to see what a minimal decorator looks like.
Definition at line 115 of file kernel/Decorator.h.
Particle* IMP::kernel::Decorator::get_particle | ( | ) | const |
Returns the particle decorated by this decorator.
Definition at line 166 of file kernel/Decorator.h.
ParticleIndex IMP::kernel::Decorator::get_particle_index | ( | ) | const |
Returns the particle index decorated by this decorator.
Definition at line 183 of file kernel/Decorator.h.