IMP
2.3.0
The Integrative Modeling Platform
|
The standard decorator for manipulating molecular structures. More...
#include <IMP/atom/Hierarchy.h>
The standard decorator for manipulating molecular structures.
IMP
represents molecular structures using the Hierarchy 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 203 of file atom/Hierarchy.h.
Public Member Functions | |
Hierarchy (kernel::Model *m, kernel::ParticleIndex pi) | |
Hierarchy (kernel::ParticleAdaptor pi) | |
Hierarchy () | |
null constructor More... | |
Hierarchy (IMP::core::Hierarchy h) | |
The traits must match. More... | |
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. More... | |
template<class C > | |
C | get_children () const |
Get the children in a container of your choosing, eg kernel::ParticlesTemp. More... | |
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 |
Return i such that get_parent().get_child(i) == this More... | |
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 | |
bool | get_is_valid () const |
Model * | get_model () const |
Returns the Model containing the particle. More... | |
Particle * | get_particle () const |
Returns the particle decorated by this decorator. More... | |
ParticleIndex | get_particle_index () const |
Returns the particle index decorated by this decorator. More... | |
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 |
State | get_as_state () 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::atom::Hierarchy::Hierarchy | ( | ) |
null constructor
Definition at line 258 of file atom/Hierarchy.h.
|
explicit |
The traits must match.
Definition at line 261 of file atom/Hierarchy.h.
void IMP::atom::Hierarchy::add_child | ( | Hierarchy | o | ) |
Add a child and check that the types are appropriate.
A child must have a type that is listed before the parent in the Type enum list.
Definition at line 300 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 310 of file atom/Hierarchy.h.
Hierarchies IMP::atom::Hierarchy::get_children | ( | ) | const |
Return the children in the order they were added.
Definition at line 315 of file atom/Hierarchy.h.
C IMP::atom::Hierarchy::get_children | ( | ) | const |
Get the children in a container of your choosing, eg kernel::ParticlesTemp.
Definition at line 325 of file atom/Hierarchy.h.
|
static |
Check if the particle has the needed attributes for a cast to succeed
Definition at line 286 of file atom/Hierarchy.h.
bool IMP::atom::Hierarchy::get_is_valid | ( | bool | print_info | ) | const |
Return true if the hierarchy is valid.
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 334 of file atom/Hierarchy.h.
|
static |
Get the molecular hierarchy HierarchyTraits.
|
static |
Create a Hierarchy of level t by adding the needed attributes.
Definition at line 270 of file atom/Hierarchy.h.