IMP Reference Guide  2.5.0 The Integrative Modeling Platform
IMP::atom::Hierarchy Class Reference

The standard decorator for manipulating molecular structures. More...

#include <IMP/atom/Hierarchy.h>

Inheritance diagram for IMP::atom::Hierarchy:

## Detailed Description

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).

# Tree Basics

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 type of the parent makes sense for the child: eg a Residue cannot be the parent of a Chain.
• the leaves always have coordinates, radius and mass
• all particles in the hierarchy are from the same model
• all Atoms have a Residue as the parent
• any Atom with a non-heterogen atom type is part of a protein, DNA or RNA molecule
• all Residue children of a particle appear in order based on their index
• all Atom children of a particle appear in order of their AtomType
• if a node has residue indexes, all its descendants down to the residue level also do.

The get_is_valid() method checks some of these properties. Any method taking a hierarchy as an argument should do

IMP_USAGE_CHECK(h.get_is_valid(), "Invalid hierarchy as input");

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.

Atom
Residue
Chain
Molecule
Domain
Fragment
Mass
State

Definition at line 203 of file atom/Hierarchy.h.

## Public Member Functions

Hierarchy (Model *m, ParticleIndex pi)

Hierarchy ()
Null constructor. More...

Hierarchy (IMP::core::Hierarchy h)
The traits must match. More...

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 >
get_children () const
Get the children in a container of your choosing, eg ParticlesTemp. More...

bool get_is_valid (bool print_info) 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_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 DecoratorTraitsget_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

Modelget_model () const
Returns the Model containing the particle. More...

Particleget_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

Particleoperator-> () 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...

Create a Hierarchy of level t by adding the needed attributes. More...

Static Public Member Functions inherited from IMP::core::Hierarchy
static const DecoratorTraitsget_default_decorator_traits ()

static const HierarchyTraitsget_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())

## 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

Public Types inherited from IMP::core::Hierarchy
typedef HierarchyTraits DecoratorTraits

Protected Member Functions inherited from IMP::Decorator
Decorator (Model *m, ParticleIndex pi)

## Constructor & Destructor Documentation

 IMP::atom::Hierarchy::Hierarchy ( )

Null constructor.

Definition at line 250 of file atom/Hierarchy.h.

 IMP::atom::Hierarchy::Hierarchy ( IMP::core::Hierarchy h )
explicit

The traits must match.

Definition at line 253 of file atom/Hierarchy.h.

## Member Function Documentation

 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.

Examples:
atom/dope_and_excluded_volume.cpp.

Definition at line 291 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 301 of file atom/Hierarchy.h.

 Hierarchies IMP::atom::Hierarchy::get_children ( ) const

Return the children in the order they were added.

Definition at line 306 of file atom/Hierarchy.h.

template<class C >
 C IMP::atom::Hierarchy::get_children ( ) const

Get the children in a container of your choosing, eg ParticlesTemp.

Definition at line 316 of file atom/Hierarchy.h.

 static bool IMP::atom::Hierarchy::get_is_setup ( Model * m, ParticleIndex p )
static

Check if the particle has the needed attributes for a cast to succeed.

Definition at line 276 of file atom/Hierarchy.h.

Here is the call graph for this function:

 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.

Note
Returning true only means that no problems were found; it can't check everything.
 Hierarchy IMP::atom::Hierarchy::get_parent ( ) const

Get the parent particle.

Definition at line 325 of file atom/Hierarchy.h.

 static const IMP::core::HierarchyTraits& IMP::atom::Hierarchy::get_traits ( )
static

Get the molecular hierarchy HierarchyTraits.

 static Hierarchy IMP::atom::Hierarchy::setup_particle ( Model * m, ParticleIndex pi, ParticleIndexesAdaptor children = ParticleIndexesAdaptor() )
static

Create a Hierarchy of level t by adding the needed attributes.

Definition at line 261 of file atom/Hierarchy.h.

Here is the call graph for this function:

The documentation for this class was generated from the following file: