#include <BALL/STRUCTURE/smartsParser.h>
Classes | |
class | SPAtom |
Smarts Parser Atom class. More... | |
class | SPBond |
Bond representation of the smarts parser. More... | |
class | SPEdge |
Edge representation of the smarts parser graph. More... | |
class | SPNode |
Representation of a node in the smarts parser graph. More... | |
struct | State |
Parser state (used by the parser itself). More... | |
Public Types | |
enum | ZEIsomerType { ANY_ZE = 1, NONE, Z, E } |
enum | ChiralClass { CHIRAL_CLASS_UNSPECIFIED = 1, NONCHIRAL, NONCHIRAL_OR_UNSPECIFIED, CW_DEFAULT, CW_DEFAULT_OR_UNSPECIFIED, CCW_DEFAULT, CCW_DEFAULT_OR_UNSPECIFIED, CW_TH, CW_TH_OR_UNSPECIFIED, CCW_TH, CCW_TH_OR_UNSPECIFIED, CW_AL, CW_AL_OR_UNSPECIFIED, CCW_AL, CCW_AL_OR_UNSPECIFIED, CW_SP, CW_SP_OR_UNSPECIFIED, CCW_SP, CCW_SP_OR_UNSPECIFIED, CW_TB, CW_TB_OR_UNSPECIFIED, CCW_TB, CCW_TB_OR_UNSPECIFIED, CW_OH, CW_OH_OR_UNSPECIFIED, CCW_OH, CCW_OH_OR_UNSPECIFIED } |
chiral class definitions CW = clock wise, CCW = counter clock wise More... | |
enum | LogicalOperator { AND, OR, AND_LOW, NOOP } |
Public Member Functions | |
Constructors and Destructors | |
SmartsParser () | |
Default constructor. | |
SmartsParser (const SmartsParser &parser) | |
Copy constructor. | |
virtual | ~SmartsParser () |
Destructor. | |
Parsing | |
void | parse (const String &s) throw (Exception::ParseError) |
Protected Member Functions | |
void | dumpTreeRecursive_ (SPNode *node, Size depth) |
dump method for the tree | |
void | dumpTreeRecursive_ (SPEdge *edge, Size depth) |
dump method for the tree | |
Protected Attributes | |
bool | needs_SSSR_ |
sssr needed flag | |
bool | recursive_ |
recursive flag | |
bool | component_grouping_ |
component level grouping flag | |
std::map< Size, std::vector < SPNode * > > | ring_connections_ |
the ring connection sorted by index of the SMARTS pattern | |
std::set< SPEdge * > | edges_ |
the edges | |
std::set< SPNode * > | nodes_ |
the nodes | |
std::set< SPEdge * > | rec_edges_ |
the recursive edges | |
SPNode * | root_ |
the root node of the tree | |
int | component_no_ |
the actual component number | |
Static Protected Attributes | |
static vector< std::set< const Atom * > > * | sssr_ |
the sssr | |
static SmartsParser * | current_parser_ |
current instance | |
Accessors | |
static State | state |
static member for the parser itself | |
SPAtom * | createAtom (const String &symbol, bool in_bracket=false) |
creates a new atom of symbol | |
void | setRoot (SPNode *root) |
sets the root SPNode of the tree | |
SPNode * | getRoot () const |
returns the root SPNode of the tree | |
void | dumpTree () |
dumps the tree to cerr | |
void | clear () |
clear the tree | |
void | addRingConnection (SPNode *spnode, Size index) |
adds a ring connection, SPNode with an index used in the SMARTS pattern | |
std::map< Size, std::vector < SPNode * > > | getRingConnections () const |
returns the ring connections sorted by index from SMARTS pattern | |
void | setSSSR (const std::vector< std::vector< Atom * > > &sssr) |
sets the SSSR | |
void | setNeedsSSSR (bool needs_sssr) |
sets the sssr needed flag | |
bool | getNeedsSSSR () const |
returns true if the SMARTS pattern contains ring related parts | |
void | setRecursive (bool recursive) |
sets the recursive flag | |
bool | isRecursive () const |
returns true if the tree represents a recursive SMARTS pattern | |
void | setComponentGrouping (bool component_grouping) |
sets the component level flag | |
bool | hasComponentGrouping () const |
returns true if the component level grouping was enabled | |
const std::set< SPNode * > & | getNodes () const |
returns the eodes stored in the tree | |
const std::set< SPEdge * > & | getEdges () const |
returns the edges stored in the tree | |
void | addEdge (SPEdge *edge) |
adds an edge to the tree | |
void | addNode (SPNode *node) |
adds a node to the tree | |
bool | hasRecursiveEdge (SPEdge *edge) const |
returns true if the tree has the given recursive edge | |
void | addRecursiveEdge (SPEdge *edge) |
adds a recursive edge to the tree | |
void | setNextComponentNumberToSubTree (SPNode *spnode) |
gets the next component no and assigns it to the subtree |
SMARTS Parser.
This class implements the parser for SMARTS patterns. The SMARTS string is converted into a tree, which is used for matching it to molecules. The tree has also some additional features, i.e. additional edges which allows also for graph features (kind of cyclic structure).
chiral class definitions CW = clock wise, CCW = counter clock wise
BALL::SmartsParser::SmartsParser | ( | ) |
Default constructor.
BALL::SmartsParser::SmartsParser | ( | const SmartsParser & | parser | ) |
Copy constructor.
virtual BALL::SmartsParser::~SmartsParser | ( | ) | [virtual] |
Destructor.
void BALL::SmartsParser::addEdge | ( | SPEdge * | edge | ) | [inline] |
adds an edge to the tree
void BALL::SmartsParser::addNode | ( | SPNode * | node | ) | [inline] |
adds a node to the tree
void BALL::SmartsParser::addRecursiveEdge | ( | SPEdge * | edge | ) | [inline] |
adds a recursive edge to the tree
adds a ring connection, SPNode with an index used in the SMARTS pattern
void BALL::SmartsParser::clear | ( | ) |
clear the tree
creates a new atom of symbol
void BALL::SmartsParser::dumpTree | ( | ) |
dumps the tree to cerr
dump method for the tree
dump method for the tree
const std::set<SPEdge*>& BALL::SmartsParser::getEdges | ( | ) | const [inline] |
returns the edges stored in the tree
bool BALL::SmartsParser::getNeedsSSSR | ( | ) | const [inline] |
returns true if the SMARTS pattern contains ring related parts
const std::set<SPNode*>& BALL::SmartsParser::getNodes | ( | ) | const [inline] |
returns the eodes stored in the tree
returns the ring connections sorted by index from SMARTS pattern
bool BALL::SmartsParser::hasComponentGrouping | ( | ) | const [inline] |
returns true if the component level grouping was enabled
returns true if the tree has the given recursive edge
bool BALL::SmartsParser::isRecursive | ( | ) | const [inline] |
returns true if the tree represents a recursive SMARTS pattern
void BALL::SmartsParser::parse | ( | const String & | s | ) | throw (Exception::ParseError) |
Parse a SMARTS string.
void BALL::SmartsParser::setComponentGrouping | ( | bool | component_grouping | ) | [inline] |
sets the component level flag
void BALL::SmartsParser::setNeedsSSSR | ( | bool | needs_sssr | ) | [inline] |
sets the sssr needed flag
void BALL::SmartsParser::setNextComponentNumberToSubTree | ( | SPNode * | spnode | ) |
gets the next component no and assigns it to the subtree
void BALL::SmartsParser::setRecursive | ( | bool | recursive | ) | [inline] |
sets the recursive flag
void BALL::SmartsParser::setSSSR | ( | const std::vector< std::vector< Atom * > > & | sssr | ) |
sets the SSSR
bool BALL::SmartsParser::component_grouping_ [protected] |
component level grouping flag
int BALL::SmartsParser::component_no_ [protected] |
the actual component number
SmartsParser* BALL::SmartsParser::current_parser_ [static, protected] |
current instance
std::set<SPEdge*> BALL::SmartsParser::edges_ [protected] |
the edges
bool BALL::SmartsParser::needs_SSSR_ [protected] |
sssr needed flag
std::set<SPNode*> BALL::SmartsParser::nodes_ [protected] |
the nodes
std::set<SPEdge*> BALL::SmartsParser::rec_edges_ [protected] |
the recursive edges
bool BALL::SmartsParser::recursive_ [protected] |
recursive flag
std::map<Size, std::vector<SPNode*> > BALL::SmartsParser::ring_connections_ [protected] |
the ring connection sorted by index of the SMARTS pattern
SPNode* BALL::SmartsParser::root_ [protected] |
the root node of the tree
vector<std::set<const Atom*> >* BALL::SmartsParser::sssr_ [static, protected] |
the sssr
State BALL::SmartsParser::state [static] |
static member for the parser itself