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

#include <BALL/STRUCTURE/sdGenerator.h>

Classes

class  AtomComparator
 
struct  Default
 Default values for options. More...
 
struct  Option
 Option names. More...
 

Public Types

enum  Property {
  FIRST_SDGENERATOR_PROPERTY = PDBAtom::NUMBER_OF_PROPERTIES+1, IN_RING, CORE_CHAIN, DEPOSITED,
  FXAS, EQAS, HEAD, EDGE,
  ASSEMBLED, ZIG, ZAG, INITIALIZED_HEAD_CFS,
  LAST_SDGENERATOR_PROPERTY
}
 Properties, used to describe atoms and their status. More...
 

Public Member Functions

void generateSD (System &molecule_sys)
 Generates a structure Diagram from the input System. More...
 
void clear ()
 
Constructors and Destructors.
 SDGenerator (bool show_hydrogens=false)
 
virtual ~SDGenerator ()
 
Accessors
void setDefaultOptions ()
 

Public Attributes

Public Attributes
Options options
 options More...
 

Protected Member Functions

void prepare_ ()
 Distinguishes between ring-atoms and core-chain-atoms, removes all H-Atoms from the System. More...
 
void constructRingSystem_ (Position current_ring_system)
 Constructs a ringsystem, providing the atoms with relative 2D-coordinates, starting in the point of origin. More...
 
Angle getCFS_ (Atom const *atom, bool hi)
 
Angle computeCFS_ (Vector3 const &input)
 
void setCFS_ (Atom *atom, Angle cfs, bool high)
 
void pushCFS_ (Atom *atom)
 
Angle getBackupCFS_ (Atom const *, bool hi)
 
void computeCoreCFS_ (RingAnalyser::Ring &ring, bool clockwise)
 
Angle computeAngularSeparation_ (Atom *seed)
 
Angle computeAngularDemand_ (Atom *seed)
 
std::vector< Atom * > sequenceSubstituents_ (Atom *seed)
 
void computeShelleyPriorities_ ()
 
void buildRegularPolygon_ (RingAnalyser::Ring &ring, Position first_anchor_index, bool clockwise)
 
void buildOpenPolygon_ (RingAnalyser::Ring &ring, Position first_anchor_index, Position second_anchor_index)
 
void attachCore_ (Position current_ring, std::vector< RingAnalyser::Ring > &current_system, float x_start)
 construct the core-ring as a regular polygon More...
 
void attachTemplate_ (Position current_ring, std::vector< RingAnalyser::Ring > &current_system)
 attach a ring template to a (partially) constructed ringsystem (no functionality yet) More...
 
void attachFused_ (Position current_ring, std::vector< RingAnalyser::Ring > &current_system)
 attach a fused ring to a (partially) constructed ringsystem More...
 
void attachBridged_ (Position current_ring, std::vector< RingAnalyser::Ring > &current_system)
 attach a bridged ring to a (partially) constructed ringsystem More...
 
void attachSpiro_ (Position current_ring, std::vector< RingAnalyser::Ring > &current_system)
 attach a spiro ring to a (partially) constructed ringsystem More...
 
void computeAdjacencyMatrix_ (std::vector< Atom * > &chain, std::vector< bool > &result)
 Compute adjacency matrix of the given atoms. More...
 
void treatChains_ ()
 cluster and arrange all chains in the system More...
 
void smoothCFSAngle_ (Atom *seed)
 
void placeSubstituent_ (Atom *seed, Atom *head, Atom *next)
 
void depositPFU_ (Atom *seed_atom, Atom *next_neighbour)
 
void checkOverlap_ (Atom *atom)
 
bool ringIsClockwise_ (const RingAnalyser::Ring &ring, Index start_index=0) const
 
void assembleSD_ ()
 
void findFloydWarshallPath_ (std::vector< int > &path, std::vector< Index > &next, Size remaining_atoms, Position i, Position j, std::list< Index > &output)
 

Static Protected Member Functions

static bool compareChains_ (const vector< Atom * > &x, const vector< Atom * > &y)
 Comparator for chains of atoms. More...
 

Protected Attributes

RingAnalyser ring_analyser_
 The ring analyser containing all information about ring systems. More...
 
std::list< std::list< Atom * > > chains_
 all chains More...
 
std::priority_queue< Atom
*, std::vector< Atom * >
, AtomComparator
redraw_queue_
 our redraw queue More...
 
Systemsystem_
 the system we are working on More...
 

Detailed Description

Structure Diagram Generation.

This class provides methods for analysis of the input.

Definition at line 33 of file sdGenerator.h.

Member Enumeration Documentation

Properties, used to describe atoms and their status.

Enumerator
FIRST_SDGENERATOR_PROPERTY 
IN_RING 
CORE_CHAIN 
DEPOSITED 
FXAS 
EQAS 
HEAD 
EDGE 
ASSEMBLED 
ZIG 
ZAG 
INITIALIZED_HEAD_CFS 
LAST_SDGENERATOR_PROPERTY 

Definition at line 40 of file sdGenerator.h.

Constructor & Destructor Documentation

BALL::SDGenerator::SDGenerator ( bool  show_hydrogens = false)

Default-Constructor

virtual BALL::SDGenerator::~SDGenerator ( )
virtual

Destructor

Member Function Documentation

void BALL::SDGenerator::assembleSD_ ( )
protected

Assemble the final structure diagram

void BALL::SDGenerator::attachBridged_ ( Position  current_ring,
std::vector< RingAnalyser::Ring > &  current_system 
)
protected

attach a bridged ring to a (partially) constructed ringsystem

Parameters
current_ringthe index of the ring to attach
current_systemthe index of the ring system
void BALL::SDGenerator::attachCore_ ( Position  current_ring,
std::vector< RingAnalyser::Ring > &  current_system,
float  x_start 
)
protected

construct the core-ring as a regular polygon

Parameters
current_ringthe index of the ring to attach
current_systemthe ring system
x_startthe ring is created in (x_start, 0, 0)
void BALL::SDGenerator::attachFused_ ( Position  current_ring,
std::vector< RingAnalyser::Ring > &  current_system 
)
protected

attach a fused ring to a (partially) constructed ringsystem

Parameters
current_ringthe index of the ring to attach
current_systemthe index of the ring system
void BALL::SDGenerator::attachSpiro_ ( Position  current_ring,
std::vector< RingAnalyser::Ring > &  current_system 
)
protected

attach a spiro ring to a (partially) constructed ringsystem

Parameters
current_ringthe index of the ring to attach
current_systemthe index of the ring system
void BALL::SDGenerator::attachTemplate_ ( Position  current_ring,
std::vector< RingAnalyser::Ring > &  current_system 
)
protected

attach a ring template to a (partially) constructed ringsystem (no functionality yet)

Parameters
current_ringthe index of the ring to attach
current_systemthe ring system
void BALL::SDGenerator::buildOpenPolygon_ ( RingAnalyser::Ring ring,
Position  first_anchor_index,
Position  second_anchor_index 
)
protected

Build an open polygon for a ring with two fixed points.

void BALL::SDGenerator::buildRegularPolygon_ ( RingAnalyser::Ring ring,
Position  first_anchor_index,
bool  clockwise 
)
protected

Build a regular polygon for a ring with two fixed points.

void BALL::SDGenerator::checkOverlap_ ( Atom atom)
protected
void BALL::SDGenerator::clear ( )

Clear all internal data structures.

static bool BALL::SDGenerator::compareChains_ ( const vector< Atom * > &  x,
const vector< Atom * > &  y 
)
staticprotected

Comparator for chains of atoms.

void BALL::SDGenerator::computeAdjacencyMatrix_ ( std::vector< Atom * > &  chain,
std::vector< bool > &  result 
)
protected

Compute adjacency matrix of the given atoms.

Angle BALL::SDGenerator::computeAngularDemand_ ( Atom seed)
protected
Angle BALL::SDGenerator::computeAngularSeparation_ ( Atom seed)
protected
Angle BALL::SDGenerator::computeCFS_ ( Vector3 const &  input)
protected
void BALL::SDGenerator::computeCoreCFS_ ( RingAnalyser::Ring ring,
bool  clockwise 
)
protected
void BALL::SDGenerator::computeShelleyPriorities_ ( )
protected

Compute the Shelley priority values for each atom

void BALL::SDGenerator::constructRingSystem_ ( Position  current_ring_system)
protected

Constructs a ringsystem, providing the atoms with relative 2D-coordinates, starting in the point of origin.

Parameters
current_ring_systemconsecutive numbering of the molecule's ringsystems
void BALL::SDGenerator::depositPFU_ ( Atom seed_atom,
Atom next_neighbour 
)
protected
void BALL::SDGenerator::findFloydWarshallPath_ ( std::vector< int > &  path,
std::vector< Index > &  next,
Size  remaining_atoms,
Position  i,
Position  j,
std::list< Index > &  output 
)
protected
void BALL::SDGenerator::generateSD ( System molecule_sys)

Generates a structure Diagram from the input System.

Parameters
molecule_sys
Angle BALL::SDGenerator::getBackupCFS_ ( Atom const *  ,
bool  hi 
)
protected
Angle BALL::SDGenerator::getCFS_ ( Atom const *  atom,
bool  hi 
)
protected
void BALL::SDGenerator::placeSubstituent_ ( Atom seed,
Atom head,
Atom next 
)
protected
void BALL::SDGenerator::prepare_ ( )
protected

Distinguishes between ring-atoms and core-chain-atoms, removes all H-Atoms from the System.

Parameters
molecule_sys
void BALL::SDGenerator::pushCFS_ ( Atom atom)
protected
bool BALL::SDGenerator::ringIsClockwise_ ( const RingAnalyser::Ring ring,
Index  start_index = 0 
) const
protected
std::vector<Atom*> BALL::SDGenerator::sequenceSubstituents_ ( Atom seed)
protected
void BALL::SDGenerator::setCFS_ ( Atom atom,
Angle  cfs,
bool  high 
)
protected
void BALL::SDGenerator::setDefaultOptions ( )

Resets the options to default values.

void BALL::SDGenerator::smoothCFSAngle_ ( Atom seed)
protected
void BALL::SDGenerator::treatChains_ ( )
protected

cluster and arrange all chains in the system

Member Data Documentation

std::list<std::list<Atom*> > BALL::SDGenerator::chains_
protected

all chains

Definition at line 264 of file sdGenerator.h.

Options BALL::SDGenerator::options

options

Definition at line 101 of file sdGenerator.h.

std::priority_queue<Atom*, std::vector<Atom*>, AtomComparator> BALL::SDGenerator::redraw_queue_
protected

our redraw queue

Definition at line 267 of file sdGenerator.h.

RingAnalyser BALL::SDGenerator::ring_analyser_
protected

The ring analyser containing all information about ring systems.

Definition at line 261 of file sdGenerator.h.

System* BALL::SDGenerator::system_
protected

the system we are working on

Definition at line 270 of file sdGenerator.h.