BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
BALL::RingAnalyser Class Reference

Methods for the analysis of the structure of ringsystems. More...

#include <BALL/STRUCTURE/ringAnalyser.h>

Inheritance diagram for BALL::RingAnalyser:
BALL::UnaryProcessor< AtomContainer > BALL::UnaryFunctor< AtomContainer, Processor::Result >

Classes

class  Ring
 

Public Types

enum  RingType {
  NONE, TEMPLATE, FUSED, BRIDGED,
  SPIRO, CORE
}
 

Public Member Functions

void clear ()
 
bool isInRing (const Atom *atom, std::vector< Atom * > const &ring) const
 helper-function; determines, whether an atom is part of a certain ring More...
 
bool isInRingSystem (const Atom *atom, Index i) const
 helper-function; determines, whether an atom is part of a certain ring More...
 
void sequenceRing (std::vector< Atom * > &ring)
 
Size getNumberOfRingSystems ()
 
std::vector< RinggetRingSystem (Position i)
 
std::vector< PositiongetPeelingOrder (Position i)
 
Constructors and destructors.
 RingAnalyser ()
 Default-Constructor. More...
 
virtual ~RingAnalyser ()
 Destructor. More...
 
Processor-related methods
virtual bool start ()
 Processor method which is called before the operator()-call. More...
 
virtual Processor::Result operator() (AtomContainer &ac)
 
virtual bool finish ()
 Processor method which is called after the operator()-call. More...
 
- Public Member Functions inherited from BALL::UnaryProcessor< AtomContainer >
 UnaryProcessor ()
 
 UnaryProcessor (const UnaryProcessor &)
 
virtual ~UnaryProcessor ()
 

Protected Member Functions

void clusterRings_ ()
 performs an agglomerative clustering of single rings to ringsystems More...
 
void findSharedBonds_ ()
 
void peelRings_ ()
 performs an analysis of the structure of a ringsystem More...
 
bool isCentralRing_ (std::list< Position >::iterator ring, std::list< Position > &unassigned_rings)
 
bool peelNextRing_ (std::list< Position > &unassigned_rings, bool peel_fused=false)
 
bool assignRTD_ (std::list< Position > &trial_system)
 interface for a Ring Template Database (RTD), no functionality yet More...
 

Protected Attributes

std::vector< Ringrings_
 the smallest set of smallest rings of our molecule More...
 
std::vector< std::vector
< Position > > 
ring_systems_
 the ring systems, stored as indices into the smallest set of smallest rings More...
 
HashMap< Bond const
*, std::deque< Position > > 
rings_per_bond_
 the ring memberships per bond More...
 
std::vector< std::vector
< Position > > 
peeling_order_
 the order in which rings are peeled from their respective ring systems More...
 

Detailed Description

Methods for the analysis of the structure of ringsystems.

Definition at line 36 of file ringAnalyser.h.

Member Enumeration Documentation

Enumerator
NONE 
TEMPLATE 
FUSED 
BRIDGED 
SPIRO 
CORE 

Definition at line 41 of file ringAnalyser.h.

Constructor & Destructor Documentation

BALL::RingAnalyser::RingAnalyser ( )

Default-Constructor.

virtual BALL::RingAnalyser::~RingAnalyser ( )
virtual

Destructor.

Member Function Documentation

bool BALL::RingAnalyser::assignRTD_ ( std::list< Position > &  trial_system)
protected

interface for a Ring Template Database (RTD), no functionality yet

Returns
always returns false by now
void BALL::RingAnalyser::clear ( )

Clears the datastructures. NOTE: The options remain! Use setDefaultOptions() to clear the options.

void BALL::RingAnalyser::clusterRings_ ( )
protected

performs an agglomerative clustering of single rings to ringsystems

void BALL::RingAnalyser::findSharedBonds_ ( )
protected

Find the bonds shared between rings in the sssr Precondition: the rings must be sorted such that a_i, a_i+1 share a bond (and a_size-1, a_0)

virtual bool BALL::RingAnalyser::finish ( )
virtual

Processor method which is called after the operator()-call.

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

Size BALL::RingAnalyser::getNumberOfRingSystems ( )

Return the number of ring systems.

std::vector<Position> BALL::RingAnalyser::getPeelingOrder ( Position  i)

Returns the peeling order for the i-th ring system.

std::vector<Ring> BALL::RingAnalyser::getRingSystem ( Position  i)

Returns the i-th ring system.

bool BALL::RingAnalyser::isCentralRing_ ( std::list< Position >::iterator  ring,
std::list< Position > &  unassigned_rings 
)
protected
bool BALL::RingAnalyser::isInRing ( const Atom atom,
std::vector< Atom * > const &  ring 
) const

helper-function; determines, whether an atom is part of a certain ring

Parameters
atomthe atom
ringthe ring
Returns
true, if the atom is part of the ring, otherwise returns false
bool BALL::RingAnalyser::isInRingSystem ( const Atom atom,
Index  i 
) const

helper-function; determines, whether an atom is part of a certain ring

Parameters
atomthe atom
ithe index of the ring system to test
Returns
true, if the atom is part of the ring system, otherwise returns false
virtual Processor::Result BALL::RingAnalyser::operator() ( AtomContainer ac)
virtual

Operator () for the processor

Parameters
acthe AtomContainer to which the processor is applied.

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

bool BALL::RingAnalyser::peelNextRing_ ( std::list< Position > &  unassigned_rings,
bool  peel_fused = false 
)
protected
void BALL::RingAnalyser::peelRings_ ( )
protected

performs an analysis of the structure of a ringsystem

void BALL::RingAnalyser::sequenceRing ( std::vector< Atom * > &  ring)

Puts the Atoms in the input ring into the correct order

After calling this function, for i, i+1 it holds that atom i is bonded to atom i+1, and that the last is bonded to the first entry

Parameters
ringthe input ring to sequence
virtual bool BALL::RingAnalyser::start ( )
virtual

Processor method which is called before the operator()-call.

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

Member Data Documentation

std::vector<std::vector<Position> > BALL::RingAnalyser::peeling_order_
protected

the order in which rings are peeled from their respective ring systems

Definition at line 192 of file ringAnalyser.h.

std::vector<std::vector<Position> > BALL::RingAnalyser::ring_systems_
protected

the ring systems, stored as indices into the smallest set of smallest rings

Definition at line 186 of file ringAnalyser.h.

std::vector<Ring> BALL::RingAnalyser::rings_
protected

the smallest set of smallest rings of our molecule

Definition at line 183 of file ringAnalyser.h.

HashMap<Bond const*, std::deque<Position> > BALL::RingAnalyser::rings_per_bond_
protected

the ring memberships per bond

Definition at line 189 of file ringAnalyser.h.