|
|
using | BaseGraph = boost::adjacency_list< boost::vecS, boost::vecS, boost::undirectedS, boost::no_property, boost::property< boost::edge_index_t, int > > |
|
using | Graph = boost::subgraph< BaseGraph > |
|
using | Vertex = typename BaseGraph::vertex_descriptor |
|
using | Edge = typename BaseGraph::edge_descriptor |
|
using | IndexMap = boost::bimap< Vertex, Vertex > |
|
using | VertexSet = std::unordered_set< Vertex > |
|
|
|
static bool | hasUnpairedElectrons (Vertex i, int charge, const PrivateGraph &g) |
| Decide whether an element type is allowed to be in the pi subgraph. More...
|
|
static bool | permittedElementType (Utils::ElementType e) |
| Decide whether an element type is allowed to be in the pi subgraph. More...
|
|
static EligibleOmissible | eligibleOmissible (Vertex i, const PrivateGraph &component, const AtomData &atomData) |
| Determine viability and omissibility of a vertex in a pi subgraph. More...
|
|
static boost::optional
< EligibleOmissible > | multipleOrderAdjacent (Vertex i, const PrivateGraph &component, const AtomData &atomData, const boost::optional< unsigned > &neighborCount) |
| Decide whether an element type is allowed to be in the pi subgraph. More...
|
|
static boost::optional
< EligibleOmissible > | threeNeighborChargedCarbon (Vertex i, const PrivateGraph &component, const AtomData &atomData, const boost::optional< unsigned > &neighborCount) |
| Decide whether an element type is allowed to be in the pi subgraph. More...
|
|
static boost::optional
< EligibleOmissible > | neutralTrivalents (Vertex i, const PrivateGraph &component, const AtomData &atomData, const boost::optional< unsigned > &neighborCount) |
| Decide whether an element type is allowed to be in the pi subgraph. More...
|
|
static boost::optional
< EligibleOmissible > | neutralDivalents (Vertex i, const PrivateGraph &component, const AtomData &atomData, const boost::optional< unsigned > &neighborCount) |
| Decide whether an element type is allowed to be in the pi subgraph. More...
|
|
Class to help validate aromatic subgraphs in parsed smiles strings.
Atoms marked aromatic in a SMILES string must form a valid pi subgraph. Also, a perfect matching of the pi subgraph must be found that indicates which vertices of the system receive incremented formal valences so that hydrogen filling can proceed correctly.
This class is here to help with both.
Determine viability and omissibility of a vertex in a pi subgraph.
Vertices that are marked aromatic in a SMILES string may not be eligible for perfect matching, i.e. marking an adjacent edge as a double bond in finding an alternating sequence of single and double bonds. For instance, a neutral nitrogen atom with three neighbors is not viable for addition to the subgraph. If the nitrogen atom is neutral and has two neighbors, it is viable for addition but optionally omissible, since the missing valence can be filled by hydrogen filling. It can, but does need to have an adjacent edge marked as a double bond.
- Parameters
-
i | Vertex index of the atom within the component graph |
component | The graph of the smiles component |
atomData | The parsed atom data from the SMILES string |