BALL::SmartsParser Class Reference
[Matching of submolecular structures]

#include <BALL/STRUCTURE/smartsParser.h>

List of all members.


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


SPNoderoot_
 

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 SmartsParsercurrent_parser_
 

current instance



Accessors

static State state
 

static member for the parser itself


SPAtomcreateAtom (const String &symbol, bool in_bracket=false)
 

creates a new atom of symbol


void setRoot (SPNode *root)
 

sets the root SPNode of the tree


SPNodegetRoot () 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



Detailed Description

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


Member Enumeration Documentation

chiral class definitions CW = clock wise, CCW = counter clock wise

Enumerator:
CHIRAL_CLASS_UNSPECIFIED 
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 

The logical operator supported by SMARTS-pattern
'&' -> and
',' -> or
';' -> low precedence and

NOOP is just provided for convenience.

Enumerator:
AND 
OR 
AND_LOW 
NOOP 
Enumerator:
ANY_ZE 
NONE 
Z 
E 

Constructor & Destructor Documentation

BALL::SmartsParser::SmartsParser (  ) 

Default constructor.

BALL::SmartsParser::SmartsParser ( const SmartsParser parser  ) 

Copy constructor.

virtual BALL::SmartsParser::~SmartsParser (  )  [virtual]

Destructor.


Member Function Documentation

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

void BALL::SmartsParser::addRingConnection ( SPNode spnode,
Size  index 
)

adds a ring connection, SPNode with an index used in the SMARTS pattern

void BALL::SmartsParser::clear (  ) 

clear the tree

SPAtom* BALL::SmartsParser::createAtom ( const String symbol,
bool  in_bracket = false 
)

creates a new atom of symbol

void BALL::SmartsParser::dumpTree (  ) 

dumps the tree to cerr

void BALL::SmartsParser::dumpTreeRecursive_ ( SPEdge edge,
Size  depth 
) [protected]

dump method for the tree

void BALL::SmartsParser::dumpTreeRecursive_ ( SPNode node,
Size  depth 
) [protected]

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

std::map<Size, std::vector<SPNode*> > BALL::SmartsParser::getRingConnections (  )  const

returns the ring connections sorted by index from SMARTS pattern

SPNode* BALL::SmartsParser::getRoot (  )  const [inline]

returns the root SPNode of the tree

bool BALL::SmartsParser::hasComponentGrouping (  )  const [inline]

returns true if the component level grouping was enabled

bool BALL::SmartsParser::hasRecursiveEdge ( SPEdge edge  )  const [inline]

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::setRoot ( SPNode root  )  [inline]

sets the root SPNode of the tree

void BALL::SmartsParser::setSSSR ( const std::vector< std::vector< Atom * > > &  sssr  ) 

sets the SSSR


Member Data Documentation

component level grouping flag

the actual component number

current instance

std::set<SPEdge*> BALL::SmartsParser::edges_ [protected]

the edges

sssr needed flag

std::set<SPNode*> BALL::SmartsParser::nodes_ [protected]

the nodes

std::set<SPEdge*> BALL::SmartsParser::rec_edges_ [protected]

the recursive edges

recursive flag

std::map<Size, std::vector<SPNode*> > BALL::SmartsParser::ring_connections_ [protected]

the ring connection sorted by index of the SMARTS pattern

the root node of the tree

vector<std::set<const Atom*> >* BALL::SmartsParser::sssr_ [static, protected]

the sssr

static member for the parser itself