IMP Reference Guide
develop.d97d4ead1f,2024/11/22
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 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 have approximately the same total volume).
In a tree you have a set of nodes, represented by Hierarchy particles. Each 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.
Definition at line 192 of file atom/Hierarchy.h.
Public Member Functions | |
Hierarchy (Model *m, ParticleIndex pi) | |
Hierarchy (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 |
Get the ith child based on the order they were added. More... | |
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 ParticlesTemp. More... | |
bool | get_is_valid (bool print_info=false) const |
Return true if the hierarchy is valid. More... | |
Hierarchy | get_parent () const |
Get the parent particle. More... | |
void | show (std::ostream &out=std::cout) const |
Public Member Functions inherited from IMP::core::Hierarchy | |
Hierarchy (const IMP::ParticleAdaptor &d, const HierarchyTraits &tr=get_default_traits()) | |
Hierarchy (::IMP::Model *m,::IMP::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 |
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 |
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::Decorator | |
bool | get_is_valid () const |
Returns true if constructed with a non-default constructor. More... | |
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 |
Static Public Member Functions | |
static bool | get_is_setup (Model *m, ParticleIndex p) |
Check if the particle has the needed attributes for a cast to succeed. More... | |
static const IMP::core::HierarchyTraits & | get_traits () |
Get the molecular hierarchy HierarchyTraits. More... | |
static Hierarchy | setup_particle (Model *m, ParticleIndex pi, ParticleIndexesAdaptor children=ParticleIndexesAdaptor()) |
Create a Hierarchy of level t by adding the needed attributes. More... | |
Static Public Member Functions inherited from IMP::core::Hierarchy | |
static TriggerKey | get_changed_key () |
The key used to signal to the Model that the Hierarchy has changed. More... | |
static const DecoratorTraits & | get_default_decorator_traits () |
static const HierarchyTraits & | get_default_traits () |
Get the default hierarchy traits. More... | |
static bool | get_is_setup (const IMP::ParticleAdaptor &p, const HierarchyTraits &tr=get_default_traits()) |
static bool | get_is_setup (Model *, ParticleIndex, HierarchyTraits=Hierarchy::get_default_traits()) |
static Hierarchy | setup_particle (IMP::ParticleAdaptor d, DecoratorTraits tr=get_default_decorator_traits()) |
static Hierarchy | setup_particle (Model *m, ParticleIndex pi, DecoratorTraits tr=get_default_decorator_traits()) |
static Hierarchy | setup_particle (Model *m, ParticleIndex pi, ParticleIndexes children, DecoratorTraits tr=get_default_decorator_traits()) |
static Hierarchy | setup_particle (IMP::ParticleAdaptor d, ParticleIndexes children, DecoratorTraits tr=get_default_decorator_traits()) |
static Hierarchy | setup_particle (IMP::ParticleAdaptor d, ParticlesTemp children, DecoratorTraits tr=get_default_decorator_traits()) |
static Hierarchy | setup_particle (Model *m, ParticleIndex pi, ParticlesTemp children, DecoratorTraits tr=get_default_decorator_traits()) |
Related Functions | |
(Note that these are not member functions.) | |
Hierarchy | create_clone (Hierarchy d) |
Clone the Hierarchy. More... | |
Hierarchy | create_clone_one (Hierarchy d) |
Clone the node in the Hierarchy. More... | |
Hierarchy | create_fragment (const Hierarchies &ps) |
Create a fragment containing the specified nodes. More... | |
void | destroy (Hierarchy d) |
Delete the Hierarchy. More... | |
algebra::BoundingBoxD< 3 > | get_bounding_box (const Hierarchy &h) |
Get a bounding box for the Hierarchy. More... | |
algebra::Sphere3D | get_bounding_sphere (const Hierarchy &h) |
Hierarchies | get_by_type (Hierarchy mhd, GetByType t) |
Gather all the molecular particles of a certain level in the hierarchy. More... | |
Bonds | get_internal_bonds (Hierarchy mhd) |
Get the bonds internal to this tree. More... | |
bool | get_is_heterogen (Hierarchy h) |
Return true if the piece of hierarchy should be classified as a heterogen. More... | |
Hierarchies | get_leaves (Hierarchy h) |
Hierarchies | get_leaves (const Hierarchies &h) |
Hierarchy | get_residue (Hierarchy mhd, unsigned int index) |
Get the residue with the specified index. More... | |
Hierarchy | get_root (Hierarchy h) |
Return the root of the hierarchy. More... | |
void | show (Hierarchy h, std::ostream &out=std::cout) |
Print out a molecular hierarchy. More... | |
Additional Inherited Members | |
Public Types inherited from IMP::core::Hierarchy | |
typedef HierarchyTraits | DecoratorTraits |
Protected Member Functions inherited from IMP::Decorator | |
Decorator (Model *m, ParticleIndex pi) | |
Decorator (ParticleAdaptor p) | |
IMP::atom::Hierarchy::Hierarchy | ( | ) |
Null constructor.
Definition at line 229 of file atom/Hierarchy.h.
|
explicit |
The traits must match.
Definition at line 232 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 270 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 280 of file atom/Hierarchy.h.
Hierarchies IMP::atom::Hierarchy::get_children | ( | ) | const |
Return the children in the order they were added.
Definition at line 285 of file atom/Hierarchy.h.
C IMP::atom::Hierarchy::get_children | ( | ) | const |
Get the children in a container of your choosing, eg ParticlesTemp.
Definition at line 295 of file atom/Hierarchy.h.
|
static |
Check if the particle has the needed attributes for a cast to succeed.
Definition at line 255 of file atom/Hierarchy.h.
bool IMP::atom::Hierarchy::get_is_valid | ( | bool | print_info = false | ) | 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 304 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 240 of file atom/Hierarchy.h.
|
related |
Create a fragment containing the specified nodes.
A particle representing the fragment is created and initialized.
The Fragment is inserted as a child of the parent (and the particles are removed). The particles become children of the fragment.
ValueException | If all the particles do not have the same parent. |
|
related |
Delete the Hierarchy.
All bonds connecting to these atoms are destroyed as are hierarchy links in the Hierarchy and the particles are removed from the Model. If this particle has a parent, it is removed from the parent. Any provenance information for this Hierarchy is also removed.
If any particle in the Hierarchy is a rigid body member, it is removed from the rigid body. (This is currently slow; if possible, destroy the rigid bodies first.)
|
related |
Get a bounding box for the Hierarchy.
This bounding box is that of the highest (in the CS sense of a tree growing down from the root) cut through the tree where each node in the cut has x,y,z, and r. That is, if the root has x,y,z,r then it is the bounding box of that sphere. If only the leaves have radii, it is the bounding box of the leaves. If no such cut exists, the behavior is undefined.
|
related |
See get_bounding_box() for more details.
|
related |
Gather all the molecular particles of a certain level in the hierarchy.
|
related |
Return true if the piece of hierarchy should be classified as a heterogen.
For the purposes of classification, a heterogen is anything that
For the moment, this can only be called on residues or atoms.
|
related |
|
related |
Get the residue with the specified index.
Find the leaf containing the residue with the appropriate index. This is the PDB index, not the offset in the chain (if they are different).
The function returns a Hierarchy, rather than a Residue since the residue may not be explicitly represented and may just be part of some fragment.
ValueException | if mhd's type is not one of CHAIN, PROTEIN, NUCLEOTIDE |
Return the root of the hierarchy.
Definition at line 380 of file atom/Hierarchy.h.
|
related |
Print out a molecular hierarchy.
Definition at line 405 of file atom/Hierarchy.h.