BALL 1.5.0
Loading...
Searching...
No Matches
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 Types inherited from BALL::UnaryFunctor< AtomContainer, Processor::Result >
typedef Processor::Result result_type
 
typedef AtomContainer argument_type
 
typedef AtomContainerargument_reference
 
typedef const AtomContainerconst_argument_reference
 
typedef AtomContainerargument_pointer
 
typedef const AtomContainerconst_argument_pointer
 

Public Member Functions

Constructors and destructors.
 RingAnalyser ()
 Default-Constructor.
 
virtual ~RingAnalyser ()
 Destructor.
 
- Public Member Functions inherited from BALL::UnaryProcessor< AtomContainer >
 UnaryProcessor ()
 
 UnaryProcessor (const UnaryProcessor &)
 
virtual ~UnaryProcessor ()
 

Processor-related methods

std::vector< Ringrings_
 the smallest set of smallest rings of our molecule
 
std::vector< std::vector< Position > > ring_systems_
 the ring systems, stored as indices into the smallest set of smallest rings
 
HashMap< Bond const *, std::deque< Position > > rings_per_bond_
 the ring memberships per bond
 
std::vector< std::vector< Position > > peeling_order_
 the order in which rings are peeled from their respective ring systems
 
virtual bool start ()
 Processor method which is called before the operator()-call.
 
virtual Processor::Result operator() (AtomContainer &ac)
 
virtual bool finish ()
 Processor method which is called after the operator()-call.
 
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
 
bool isInRingSystem (const Atom *atom, Index i) const
 helper-function; determines, whether an atom is part of a certain ring
 
void sequenceRing (std::vector< Atom * > &ring)
 
Size getNumberOfRingSystems ()
 
std::vector< RinggetRingSystem (Position i)
 
std::vector< PositiongetPeelingOrder (Position i)
 
void clusterRings_ ()
 performs an agglomerative clustering of single rings to ringsystems
 
void findSharedBonds_ ()
 
void peelRings_ ()
 performs an analysis of the structure of a ringsystem
 
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
 

Detailed Description

Methods for the analysis of the structure of ringsystems.

Definition at line 36 of file ringAnalyser.h.

Member Enumeration Documentation

◆ RingType

Enumerator
NONE 
TEMPLATE 
FUSED 
BRIDGED 
SPIRO 
CORE 

Definition at line 41 of file ringAnalyser.h.

Constructor & Destructor Documentation

◆ RingAnalyser()

BALL::RingAnalyser::RingAnalyser ( )

Default-Constructor.

◆ ~RingAnalyser()

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

Destructor.

Member Function Documentation

◆ assignRTD_()

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

◆ clear()

void BALL::RingAnalyser::clear ( )

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

◆ clusterRings_()

void BALL::RingAnalyser::clusterRings_ ( )
protected

performs an agglomerative clustering of single rings to ringsystems

◆ findSharedBonds_()

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)

◆ finish()

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

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

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

◆ getNumberOfRingSystems()

Size BALL::RingAnalyser::getNumberOfRingSystems ( )

Return the number of ring systems.

◆ getPeelingOrder()

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

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

◆ getRingSystem()

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

Returns the i-th ring system.

◆ isCentralRing_()

bool BALL::RingAnalyser::isCentralRing_ ( std::list< Position >::iterator ring,
std::list< Position > & unassigned_rings )
protected

◆ isInRing()

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

◆ isInRingSystem()

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

◆ operator()()

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

◆ peelNextRing_()

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

◆ peelRings_()

void BALL::RingAnalyser::peelRings_ ( )
protected

performs an analysis of the structure of a ringsystem

◆ sequenceRing()

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

◆ start()

virtual bool BALL::RingAnalyser::start ( )
virtual

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

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

Member Data Documentation

◆ peeling_order_

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.

◆ ring_systems_

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.

◆ rings_

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

the smallest set of smallest rings of our molecule

Definition at line 183 of file ringAnalyser.h.

◆ rings_per_bond_

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.