IMP
2.2.0
The Integrative Modeling Platform
|
The standard decorator for manipulating molecular structures. More...
#include <IMP/atom/Hierarchy.h>
Public Member Functions | |
Hierarchy (kernel::Model *m, kernel::ParticleIndex pi) | |
Hierarchy (kernel::ParticleAdaptor pi) | |
Hierarchy () | |
null constructor | |
Hierarchy (IMP::core::Hierarchy h) | |
The traits must match. | |
void | add_child (Hierarchy o) |
Add a child and check that the types are appropriate. More... | |
Hierarchy | get_child (unsigned int i) const |
Hierarchies | get_children () const |
Return the children in the order they were added. | |
template<class C > | |
C | get_children () const |
Get the children in a container of your choosing, eg kernel::ParticlesTemp. | |
bool | get_is_valid (bool print_info) const |
Return true if the hierarchy is valid. More... | |
Hierarchy | get_parent () const |
void | show (std::ostream &out=std::cout) const |
Public Member Functions inherited from IMP::core::Hierarchy | |
Hierarchy (const IMP::kernel::ParticleAdaptor &d, const HierarchyTraits &tr=get_default_traits()) | |
Hierarchy (::IMP::kernel::Model *m,::IMP::kernel::ParticleIndex id, const HierarchyTraits &tr=get_default_traits()) | |
void | add_child (Hierarchy h) const |
void | add_child_at (Hierarchy h, unsigned int pos) |
void | clear_children () |
Hierarchy | get_child (unsigned int i) const |
kernel::ParticleIndex | get_child_index (unsigned int i) const |
int | get_child_index () const |
GenericHierarchies | get_children () const |
kernel::ParticleIndexes | get_children_indexes () const |
const DecoratorTraits & | get_decorator_traits () const |
unsigned int | get_number_of_children () const |
Hierarchy | get_parent () const |
HierarchyTraits | get_traits () |
void | remove_child (unsigned int i) |
void | remove_child (Hierarchy h) |
void | show (std::ostream &out=std::cout) const |
Public Member Functions inherited from IMP::kernel::Decorator | |
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 |
Methods to get associated decorators | |
We provide a number of helper methods to get associated decorators for the current node in the hierarchy. As an example, if the particle decorated by this decorator is a Residue particle, then get_as_residue() returns Residue(get_particle()), if not it returns Residue(). | |
Atom | get_as_atom () const |
Residue | get_as_residue () const |
Chain | get_as_chain () const |
Molecule | get_as_molecule () const |
Domain | get_as_domain () const |
Fragment | get_as_fragment () const |
core::XYZ | get_as_xyz () const |
core::XYZR | get_as_xyzr () const |
Mass | get_as_mass () const |
Additional Inherited Members | |
Public Types inherited from IMP::core::Hierarchy | |
typedef HierarchyTraits | DecoratorTraits |
Protected Member Functions inherited from IMP::kernel::Decorator | |
Decorator (Model *m, ParticleIndex pi) | |
Decorator (ParticleAdaptor p) | |
IMP
represents molecular structures using the Hierachy decorator. Molecules and collections of molecules each are stored as a hierarchy (or tree) where the resolution of the representation increases as you move further from the root. That is, if a parent has some particular property (eg, marks out a volume by having a x,y,z coordinates and a radius), then the children should have a higher resolution form of that information (eg, mark out a more detailed excluded volume by defining a set of balls which having approximately the same total volume).
In a tree you have a set of nodes, represented by Hierarchy particles. Each node can have a node can have at most one parent. The node with no parent is known as the root of the tree.
Here is a simple example with a protein with three residues. Two of the residues have atoms, where as the third is coarse grained.
The nodes in the hierarchy can correspond to arbitrary bits of a molecule and do not need to have any biological significance. For example we could introduce a fragment containing residues 0 and 1:
A hierarchy can have any tree structure as long as:
The get_is_valid() method checks some of these properties. Any method taking a hierarchy as an argument should do
to make sure the hierarchy makes sense.
A number of decorator types are associated with the Hierarchy to store the information associated with that node in the hierarchy. Examples include Residue, Atom, XYZ, Chain, XYZR, Mass, Domain, Molecule etc. We provide a get_as_x() function for each such decorator which returns either X() (a null type) if the node is not a particle of type x, or an X decorator wrapping the current particle if it is.
Definition at line 198 of file atom/Hierarchy.h.
void IMP::atom::Hierarchy::add_child | ( | Hierarchy | o | ) |
A child must have a type that is listed before the parent in the Type enum list.
Definition at line 293 of file atom/Hierarchy.h.
Hierarchy IMP::atom::Hierarchy::get_child | ( | unsigned int | i | ) | const |
Get the ith child based on the order they were added.
Definition at line 303 of file atom/Hierarchy.h.
|
static |
Check if the particle has the needed attributes for a cast to succeed
Definition at line 279 of file atom/Hierarchy.h.
bool IMP::atom::Hierarchy::get_is_valid | ( | bool | print_info | ) | const |
Print information about the hierarchy if print_info is true and things are invalid.
Hierarchy IMP::atom::Hierarchy::get_parent | ( | ) | const |
Get the parent particle.
Definition at line 327 of file atom/Hierarchy.h.
|
static |
Create a Hierarchy of level t by adding the needed attributes.
Definition at line 263 of file atom/Hierarchy.h.