7#ifndef BALL_QSAR_RINGPERCEPTIONPROCESSOR_H
8#define BALL_QSAR_RINGPERCEPTIONPROCESSOR_H
10#ifndef BALL_KERNEL_ATOMCONTAINER_H
14#ifndef BALL_STRUCTURE_SIMPLEMOLECULARGRAPH_H
18#ifndef BALL_DATATYPE_OPTIONS_H
82 const vector<vector<
Atom*> >& getAllSmallRings() const;
189 message_ =
"\nCould not find a valid set of smallest rings for an input molecule.\n\n";
190 message_+=
"Either the input molecule was not valid (e.g.: not a single connected component)\n";
191 message_+=
"or the algorithm failed on this special topology.";
#define BALL_CREATE(name)
TSimpleMolecularGraph< Index, Index > SimpleMolecularGraph
BALL_EXPORT GlobalExceptionHandler globalHandler
static void setMessage(const String &message)
Set the error message.
HashMap class based on the STL map (containing serveral convenience functions)
static std::vector< BitVector > forwarded_rings_
the rings of the ith phase, which are to be forwarded to the ring selector
static std::vector< BitVector > matrix_
the matrix for the independency tests
static std::vector< BitVector > rings_
the SSSR detected by the algorithm
static std::vector< BitVector > all_small_beers_
contains all 3 to 6 membered rings as beers
static std::vector< std::vector< Atom * > > all_small_rings_
contains all 3 to 6 membered rings after the procedure of the Balducci-Pearlman algorithm
static HashMap< TNode_ *, NodeItem< Index, Index > * > tnode_to_atom_
mapping for internal TNode structure and the nodes of the molecular graph
static HashMap< NodeItem< Index, Index > *, TNode_ * > atom_to_tnode_
static void BalducciPearlmanRingSelector_(BitVector bit_vector)
static HashMap< EdgeItem< Index, Index > *, Size > bond_to_index_
mapping for the path representation as bitvectors
static HashMap< Size, EdgeItem< Index, Index > * > index_to_bond_
Size BalducciPearlmanAlgorithm_(std::vector< std::vector< Atom * > > &sssr, SimpleMolecularGraph &graph)
static std::vector< BitVector > tested_beers_
rings (beer) which have already been tested
std::vector< PathMessage_ > recieve_buffer
the recieve buffer, where messages are stored in
bool haveZeroIntersection(BitVector &beep1, BitVector &beep2)
bool haveSingleIntersection(BitVector &beep1, BitVector &beep2)
bool nodeIsNew(BitVector &beep, NodeItem< Index, Index > *node)
void send()
method to process the messages in the send buffer
std::vector< PathMessage_ > send_buffer
the send buffer, where messages are stored in
void recieve()
method to process the messages in the recieve buffer
void push(EdgeItem< Index, Index > *bond, TNode_ *node)
TNode_ * nfirst
pointer to the first node this message was sent from
EdgeItem< Index, Index > * efirst
pointer to the first edge of the message path
RingProcessorException(const char *file, int line)