Semantic interpreter of the smiles grammar, constructs molecules from the data accrued by the parser. More...
#include <SmilesMoleculeBuilder.h>
Public Member Functions | |
std::vector< Molecule > | interpret () |
Interpret the collected graph as (possibly multiple molecules) | |
Parsing triggers | |
void | addAtom (const AtomData &atom) |
Parsing trigger on encountering a ring closure marker. | |
void | addRingClosure (const BondData &bond) |
Parsing trigger on encountering a ring closure marker. | |
void | branchOpen () |
Parsing trigger on branch open. | |
void | branchClose () |
Parsing trigger on branch close. | |
void | setNextAtomUnbonded () |
Parsing trigger on finding a dot (molecule separator) in place of a bond. | |
void | setNextAtomBondInformation (const BondData &bond) |
Parsing trigger on encountering non-default bond information. | |
Private Member Functions | |
Private member functions | |
void | setShapes (std::vector< Molecule > &molecules, const std::vector< unsigned > &componentMap, const std::vector< PrivateGraph::Vertex > &indexInComponentMap) |
Set shapes according to specified charges and stereo markers. | |
void | setAtomStereo (std::vector< Molecule > &molecules, const std::vector< unsigned > &componentMap, const std::vector< PrivateGraph::Vertex > &indexInComponentMap) |
Set atom stereo post-parse and conversion to molecules. | |
void | setBondStereo (std::vector< Molecule > &molecules, const std::vector< unsigned > &componentMap, const std::vector< PrivateGraph::Vertex > &indexInComponentMap) |
Set bond stereo post-parse and conversion to molecules. | |
Static Private Member Functions | |
Static private members | |
static bool | isValenceFillElement (Utils::ElementType e) |
Checks whether an element type is valence filled. | |
static unsigned | valenceFillElementImplicitHydrogenCount (int valence, Utils::ElementType e) |
Determines the implicit hydrogen count of a valence fill element. | |
static BondType | mutualBondType (const boost::optional< BondType > &a, const boost::optional< BondType > &b) |
static std::vector < Shapes::Vertex > | shapeMap (const ChiralData &chiralData) |
Fetches a map to help with the atom chiral markers. | |
Private member data | |
enum | SimpleLastBondData { Unbonded, Unspecified } |
Storage for bonds marked with stereo indicators ("/" and "\") | |
using | StereoMarkedBondTuple = std::tuple< PrivateGraph::Vertex, PrivateGraph::Vertex, BondData::StereoMarker > |
Storage for bonds marked with stereo indicators ("/" and "\") | |
boost::variant < SimpleLastBondData, BondData > | lastBondData = SimpleLastBondData::Unbonded |
State for last stored bond data. | |
PrivateGraph | graph |
Possibly disconnected tracking graph. | |
std::stack< PrivateGraph::Vertex > | vertexStack |
State to track the vertex a new vertex is bound to. | |
std::vector < StereoMarkedBondTuple > | stereoMarkedBonds |
Storage for bonds marked with stereo indicators ("/" and "\") | |
std::unordered_map< unsigned, std::pair < PrivateGraph::Vertex, boost::optional< BondType > > > | ringClosures |
Storage for ring closure bond indicators. | |
std::vector< AtomData > | vertexData |
AtomData for each created vertex. | |
Semantic interpreter of the smiles grammar, constructs molecules from the data accrued by the parser.
|
staticprivate |
Determines the mutual bond type of two bond type optionals
std::runtime_error | If the bond types are mismatched |