25#ifdef RDK_BUILD_THREADSAFE_SSS
87 for (
const auto nbri :
90 if (
nbr->getAtomicNum() != 1 ||
nbr->getIsotope() > 1) {
100 for (
const auto nbri :
103 if (
nbr->getAtomicNum() > 1) {
157 return static_cast<int>(
184 ROMol::ADJ_ITER nbrIdx,
endNbrs;
188 if (
nbr->getAtomicNum() != 6 &&
nbr->getAtomicNum() != 1) {
198 ROMol::ADJ_ITER nbrIdx,
endNbrs;
202 if (
nbr->getAtomicNum() != 6 &&
nbr->getAtomicNum() != 1) {
211 ROMol::ADJ_ITER nbrIdx,
endNbrs;
215 if ((!
nbr->getIsAromatic()) &&
nbr->getAtomicNum() != 6 &&
216 nbr->getAtomicNum() != 1) {
226 ROMol::ADJ_ITER nbrIdx,
endNbrs;
230 if ((!
nbr->getIsAromatic()) &&
nbr->getAtomicNum() != 6 &&
231 nbr->getAtomicNum() != 1) {
286 while (atomBonds.first != atomBonds.second) {
287 unsigned int bondIdx =
312 while (atomBonds.first != atomBonds.second) {
313 unsigned int bondIdx =
346 res->setDataFunc(func);
353 int func(
Atom const *),
const std::string &
description =
"Atom Range") {
355 res->setDataFunc(func);
600 "X",
"XH",
"M",
"MH"};
697 return static_cast<int>(
712 this->setDescription(
"AtomInNRings");
718 this->setDescription(
"AtomInNRings");
725 if (this->d_val < 0) {
730 if (this->getNegation()) {
740 res->
setTol(this->getTol());
752 setDataFunc(getAtIdx);
753 setDescription(
"RecursiveStructure");
762 d_serialNumber(serialNumber) {
764 setDataFunc(getAtIdx);
765 setDescription(
"RecursiveStructure");
785 res->dp_queryMol.reset(
new ROMol(*dp_queryMol,
true));
787 std::set<int>::const_iterator i;
788 for (i = d_set.begin(); i != d_set.end(); i++) {
793 res->d_serialNumber = d_serialNumber;
798#ifdef RDK_BUILD_THREADSAFE_SSS
802 boost::shared_ptr<const ROMol> dp_queryMol;
803 unsigned int d_serialNumber{0};
818template <
class TargetPtr>
820 std::string propname;
836 bool res = what->hasProp(propname);
856template <
class Target>
863template <
class TargetPtr,
class T>
866 std::string propname;
880 propname(std::move(
prop)),
889 bool res = what->hasProp(propname);
896 }
catch (std::bad_any_cast &) {
900#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
930template <
class TargetPtr>
933 std::string propname;
944 const std::string &tol =
"")
946 propname(std::move(
prop)),
955 bool res = what->hasProp(propname);
962 }
catch (std::bad_any_cast &) {
966#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
997template <
class TargetPtr>
1000 std::string propname;
1014 propname(std::move(
prop)),
1022 bool res = what->hasProp(propname);
1031 }
catch (std::bad_any_cast &) {
1035#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
1059 this->propname, this->val, this->tol);
1066template <
class Target,
class T>
1068 const std::string &propname,
const T &val,
const T &tolerance = T()) {
1072template <
class Target>
1075 float tolerance = 0.0) {
1077 propname, val, tolerance);
1085 std::vector<int> &
vals);
Contains general bit-comparison and similarity operations.
Pulls in all the BitVect classes.
#define RDUNUSED_PARAM(x)
#define PRECONDITION(expr, mess)
Pulls in all the query types.
pulls in the core RDKit functionality
a class for bit vectors that are densely occupied
Class to allow us to throw a KeyError from C++ and have it make it back to Python.
a Query implementing AND: requires all children to be true
a Query implementing ==: arguments must match a particular value (within an optional tolerance)
void setTol(MatchFuncArgType what)
sets our tolerance
a Query implementing >= using a particular value (and an optional tolerance)
a Query implementing > using a particular value (and an optional tolerance)
class to allow integer values to pick templates
a Query implementing <= using a particular value (and an optional tolerance)
a Query implementing < using a particular value (and an optional tolerance)
a Query implementing AND: requires any child to be true
Base class for all queries.
MatchFuncArgType(* d_dataFunc)(DataFuncArgType)
void setDataFunc(MatchFuncArgType(*what)(DataFuncArgType))
sets our data function
bool getNegation() const
returns whether or not we are negated
void setNegation(bool what)
sets whether or not we are negated
const std::string & getDescription() const
returns our text description
void setDescription(const std::string &descr)
sets our text description
std::string d_description
a Query implementing a range: arguments must fall in a particular range of values.
a Query implementing a set: arguments must one of a set of values
void insert(const MatchFuncArgType what)
insert an entry into our set
a Query implementing XOR: requires exactly one child to be true
bool Match(const ConstAtomPtr what) const override
Queries::Query< int, ConstAtomPtr, true > * copy() const override
returns a copy of this query
The class for representing atoms.
ChiralType getChiralTag() const
returns our chiralTag
ROMol & getOwningMol() const
returns a reference to the ROMol that owns this instance
unsigned int getIdx() const
returns our index within the ROMol
unsigned int getNumExplicitHs() const
returns our number of explicit Hs
unsigned int getNumRadicalElectrons() const
returns the number of radical electrons for this Atom
int getExplicitValence() const
returns the explicit valence (including Hs) of this atom
int getImplicitValence() const
returns the implicit valence for this Atom
unsigned int getTotalNumHs(bool includeNeighbors=false) const
returns the total number of Hs (implicit and explicit) that this Atom is bound to
int getAtomicNum() const
returns our atomic number
@ CHI_UNSPECIFIED
chirality that hasn't been specified
virtual bool hasQuery() const
HybridizationType getHybridization() const
returns our hybridization
bool getIsAromatic() const
returns our isAromatic flag
unsigned int getTotalValence() const
returns the total valence (implicit and explicit) for an atom
int getFormalCharge() const
returns the formal charge of this atom
double getMass() const
returns our mass
unsigned int getIsotope() const
returns our isotope number
unsigned int getTotalDegree() const
virtual QUERYATOM_QUERY * getQuery() const
NOT CALLABLE.
unsigned int getDegree() const
class for representing a bond
unsigned int getIdx() const
returns our index within the ROMol
virtual QUERYBOND_QUERY * getQuery() const
NOT CALLABLE.
virtual bool hasQuery() const
BondType getBondType() const
returns our bondType
ROMol & getOwningMol() const
returns a reference to the ROMol that owns this instance
BondDir
the bond's direction (for chirality)
BondDir getBondDir() const
returns our direction
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
HasPropQuery(std::string v)
bool Match(const TargetPtr what) const override
bool Match(const TargetPtr what) const override
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
HasPropWithValueQuery(std::string prop, const ExplicitBitVect &v, float tol=0.0)
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
HasPropWithValueQuery(std::string prop, std::string v, const std::string &tol="")
bool Match(const TargetPtr what) const override
HasPropWithValueQuery(std::string prop, const T &v, const T &tol=0.0)
bool Match(const TargetPtr what) const override
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
bool hasProp(const std::string &key) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
ADJ_ITER_PAIR getAtomNeighbors(Atom const *at) const
provides access to all neighbors around an Atom
OBOND_ITER_PAIR getAtomBonds(Atom const *at) const
provides access to all Bond objects connected to an Atom
RingInfo * getRingInfo() const
MolGraph const & getTopology() const
brief returns a pointer to our underlying BGL object
RWMol is a molecule class that is intended to be edited.
allows use of recursive structure queries (e.g. recursive SMARTS)
RecursiveStructureQuery(ROMol const *query, unsigned int serialNumber=0)
initialize from an ROMol pointer
RecursiveStructureQuery()
unsigned int getSerialNumber() const
Queries::Query< int, Atom const *, true > * copy() const override
returns a copy of this query
ROMol const * getQueryMol() const
returns a pointer to our query molecule
static int getAtIdx(Atom const *at)
returns the index of an atom
void setQueryMol(ROMol const *query)
sets the molecule we'll use recursively
unsigned int numBondRings(unsigned int idx) const
returns the number of rings bond idx is involved in
unsigned int minBondRingSize(unsigned int idx) const
returns the size of the smallest ring bond idx is involved in
bool isAtomInRingOfSize(unsigned int idx, unsigned int size) const
returns whether or not the atom with index idx is in a size - ring.
unsigned int numAtomRings(unsigned int idx) const
returns the number of rings atom idx is involved in
bool isBondInRingOfSize(unsigned int idx, unsigned int size) const
returns whether or not the bond with index idx is in a size - ring.
unsigned int minAtomRingSize(unsigned int idx) const
returns the size of the smallest ring atom idx is involved in
#define RDKIT_GRAPHMOL_EXPORT
int queryCmp(const T1 v1, const T2 v2, const T1 tol)
RDKIT_GRAPHMOL_EXPORT void completeMolQueries(RWMol *mol, unsigned int magicVal=0xDEADBEEF)
RDKIT_GRAPHMOL_EXPORT bool hasComplexBondTypeQuery(const Queries::Query< int, Bond const *, true > &qry)
RDKIT_GRAPHMOL_EXPORT void finalizeQueryFromDescription(Queries::Query< int, Atom const *, true > *query, Atom const *owner)
RDKIT_GRAPHMOL_EXPORT bool hasBondTypeQuery(const Queries::Query< int, Bond const *, true > &qry)
RDKIT_GRAPHMOL_EXPORT Atom * replaceAtomWithQueryAtom(RWMol *mol, Atom *atom)
RDKIT_RDGENERAL_EXPORT const std::string _ChiralityPossible
Queries::LessQuery< int, Bond const *, true > BOND_LESS_QUERY
static int queryAtomNumRadicalElectrons(Atom const *at)
Queries::EqualityQuery< int, const Target *, true > * makePropQuery(const std::string &propname, const T &val, const T &tolerance=T())
T * makeAtomHeavyAtomDegreeQuery(int what, const std::string &descr)
returns a Query for matching heavy atom degree
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomUnsaturatedQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Queries::LessQuery< int, Atom const *, true > ATOM_LESS_QUERY
static int queryAtomHybridization(Atom const *at)
static int queryAtomMinRingSize(Atom const *at)
T * makeAtomTotalDegreeQuery(int what, const std::string &descr)
returns a Query for matching atomic degree
Queries::LessEqualQuery< int, Bond const *, true > BOND_LESSEQUAL_QUERY
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomHasHeteroatomNbrsQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
static int queryAtomExplicitDegree(Atom const *at)
static int queryAtomHasRingBond(Atom const *at)
Bond const * ConstBondPtr
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeSingleOrDoubleBondQuery()
returns a Query for single|double bonds
static int queryBondHasStereo(Bond const *bnd)
static int queryAtomUnsaturated(Atom const *at)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeSingleOrAromaticBondQuery()
returns a Query for unspecified SMARTS bonds
static int queryAtomAromatic(Atom const *at)
Queries::RangeQuery< int, Atom const *, true > ATOM_RANGE_QUERY
Queries::Query< bool, Bond const *, true > BOND_BOOL_QUERY
static int queryAtomType(Atom const *at)
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomHasAliphaticHeteroatomNbrsQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Queries::AndQuery< int, Atom const *, true > ATOM_AND_QUERY
RDKIT_GRAPHMOL_EXPORT ATOM_OR_QUERY * makeMHAtomQuery()
returns a Query for matching generic MH atoms (metals or H)
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomHasImplicitHQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
RDKIT_GRAPHMOL_EXPORT unsigned int queryAtomBondProduct(Atom const *at)
static int queryBondIsDoubleOrAromatic(Bond const *bond)
static int queryAtomHasImplicitH(Atom const *at)
Queries::LessEqualQuery< int, Atom const *, true > ATOM_LESSEQUAL_QUERY
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondInRingOfSizeQuery(int what)
returns a Query for matching bonds in rings of a particular size
bool rdvalue_is(const RDValue_cast_t)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeDoubleOrAromaticBondQuery()
returns a Query for double|aromatic bonds
RDKIT_GRAPHMOL_EXPORT ATOM_NULL_QUERY * makeAtomNullQuery()
returns a Query for matching any atom
RDKIT_GRAPHMOL_EXPORT unsigned int queryAtomAllBondProduct(Atom const *at)
double TanimotoSimilarity(const SparseIntVect< IndexType > &v1, const SparseIntVect< IndexType > &v2, bool returnDistance=false, double bounds=0.0)
static int queryAtomNegativeFormalCharge(Atom const *at)
Queries::SetQuery< int, Atom const *, true > ATOM_SET_QUERY
static int queryAtomHasHeteroatomNbrs(Atom const *at)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeSingleOrDoubleOrAromaticBondQuery()
returns a Query for tautomeric bonds
T * makeAtomTotalValenceQuery(int what, const std::string &descr)
returns a Query for matching total valence
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomIsBridgeheadQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
RDKIT_GRAPHMOL_EXPORT bool isAtomAromatic(const Atom *a)
Queries::XOrQuery< int, Atom const *, true > ATOM_XOR_QUERY
bool isAtomDummy(const Atom *a)
RDKIT_GRAPHMOL_EXPORT ATOM_OR_QUERY * makeXAtomQuery()
returns a Query for matching generic X atoms (halogens)
RDKIT_GRAPHMOL_EXPORT ATOM_NULL_QUERY * makeAHAtomQuery()
returns a Query for matching generic AH atoms (any atom)
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomHasRingBondQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Queries::SetQuery< int, Bond const *, true > BOND_SET_QUERY
static int queryBondIsSingleOrAromatic(Bond const *bond)
T * makeAtomFormalChargeQuery(int what, const std::string &descr)
returns a Query for matching formal charge
Queries::OrQuery< int, Bond const *, true > BOND_OR_QUERY
static int queryBondMinRingSize(Bond const *bond)
const int massIntegerConversionFactor
T * makeAtomNumRadicalElectronsQuery(int what, const std::string &descr)
returns a Query for matching the number of radical electrons
static int queryAtomTotalValence(Atom const *at)
static int queryAtomNonHydrogenDegree(Atom const *at)
D and T are treated as "non-hydrogen" here.
T * makeAtomRingBondCountQuery(int what, const std::string &descr)
returns a Query for matching atoms with a particular number of ring bonds
static int makeAtomType(int atomic_num, bool aromatic)
RDKIT_GRAPHMOL_EXPORT void convertComplexNameToQuery(Atom *query, std::string_view symb)
T * makeAtomMinRingSizeQuery(int tgt, const std::string &descr)
returns a Query for matching an atom's minimum ring size
static int queryAtomHeavyAtomDegree(Atom const *at)
D and T are not treated as heavy atoms here.
static int queryAtomRingBondCount(Atom const *at)
RDKIT_GRAPHMOL_EXPORT BOND_NULL_QUERY * makeBondNullQuery()
returns a Query for matching any bond
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondDirEqualsQuery(Bond::BondDir what)
returns a Query for matching bond directions
T * makeAtomImplicitHCountQuery(int what, const std::string &descr)
returns a Query for matching implicit hydrogen count
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomAromaticQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
T * makeAtomMassQuery(int what, const std::string &descr)
returns a Query for matching atoms with a particular mass
T * makeAtomNumAliphaticHeteroatomNbrsQuery(int what, const std::string &descr)
returns a Query for matching the number of aliphatic heteroatom neighbors
Queries::XOrQuery< int, Bond const *, true > BOND_XOR_QUERY
T * makeAtomSimpleQuery(int what, int func(Atom const *), const std::string &description="Atom Simple")
Queries::Query< int, Atom const *, true > ATOM_NULL_QUERY
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomMissingChiralTagQuery()
\overloadquery
static int queryAtomAliphatic(Atom const *at)
static int queryAtomNumHeteroatomNbrs(Atom const *at)
static bool getAtomTypeIsAromatic(int val)
static int queryIsAtomInNRings(Atom const *at)
RDKIT_GRAPHMOL_EXPORT ATOM_OR_QUERY * makeMAtomQuery()
returns a Query for matching generic M atoms (metals)
static int queryAtomHasChiralTag(Atom const *at)
Queries::EqualityQuery< int, Bond const *, true > BOND_PROP_QUERY
Queries::OrQuery< int, Atom const *, true > ATOM_OR_QUERY
static int queryAtomImplicitHCount(Atom const *at)
static int queryAtomFormalCharge(Atom const *at)
T * makeAtomNonHydrogenDegreeQuery(int what, const std::string &descr)
returns a Query for matching the number of non-hydrogen neighbors
RDKIT_GRAPHMOL_EXPORT int queryIsAtomBridgehead(Atom const *at)
static int queryAtomNum(Atom const *at)
Queries::GreaterEqualQuery< int, Bond const *, true > BOND_GREATEREQUAL_QUERY
static int queryIsAtomInRing(Atom const *at)
static int queryAtomHCount(Atom const *at)
T * makeAtomImplicitValenceQuery(int what, const std::string &descr)
returns a Query for matching implicit valence
static int queryAtomExplicitValence(Atom const *at)
RDKIT_GRAPHMOL_EXPORT bool isAtomListQuery(const Atom *a)
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomHasChiralTagQuery()
\overloadquery
static int queryAtomMass(Atom const *at)
static int queryAtomHasAliphaticHeteroatomNbrs(Atom const *at)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondOrderEqualsQuery(Bond::BondType what)
returns a Query for matching bond orders
static int queryAtomNumAliphaticHeteroatomNbrs(Atom const *at)
Queries::EqualityQuery< int, Bond const *, true > BOND_EQUALS_QUERY
int queryAtomIsInRingOfSize(Atom const *at)
Queries::GreaterQuery< int, Atom const *, true > ATOM_GREATER_QUERY
T * makeAtomExplicitValenceQuery(int what, const std::string &descr)
returns a Query for matching explicit valence
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAAtomQuery()
returns a Query for matching generic A atoms (heavy atoms)
int queryBondIsInRingOfSize(Bond const *bond)
Queries::AndQuery< int, Bond const *, true > BOND_AND_QUERY
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomAliphaticQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
static int queryBondIsSingleOrDoubleOrAromatic(Bond const *bond)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondMinRingSizeQuery(int what)
returns a Query for matching a bond's minimum ring size
RDKIT_GRAPHMOL_EXPORT void getAtomListQueryVals(const Atom::QUERYATOM_QUERY *q, std::vector< int > &vals)
T * makeAtomExplicitDegreeQuery(int what, const std::string &descr)
returns a Query for matching explicit degree
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomInRingQuery()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Queries::EqualityQuery< int, Atom const *, true > ATOM_EQUALS_QUERY
static int queryIsBondInNRings(Bond const *at)
static int queryAtomTotalDegree(Atom const *at)
Queries::Query< int, Bond const *, true > BOND_NULL_QUERY
T * makeAtomInNRingsQuery(int what, const std::string &descr)
returns a Query for matching atoms in a particular number of rings
RDKIT_GRAPHMOL_EXPORT bool isComplexQuery(const Bond *b)
Queries::EqualityQuery< int, Atom const *, true > ATOM_PROP_QUERY
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondInNRingsQuery(int tgt)
returns a Query for matching bonds in a particular number of rings
static int queryBondDir(Bond const *bond)
T * makeAtomIsotopeQuery(int what, const std::string &descr)
returns a Query for matching atoms with a particular isotope
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeAtomInRingOfSizeQuery(int tgt)
returns a Query for matching atoms in rings of a particular size
static int getAtomTypeAtomicNum(int val)
RDKIT_GRAPHMOL_EXPORT ATOM_OR_QUERY * makeXHAtomQuery()
returns a Query for matching generic XH atoms (halogen or H)
RDKIT_GRAPHMOL_EXPORT ATOM_EQUALS_QUERY * makeQHAtomQuery()
returns a Query for matching generic QH atoms (heteroatom or H)
const std::vector< std::string > complexQueries
T * makeAtomNegativeFormalChargeQuery(int what, const std::string &descr)
T * makeAtomNumQuery(int what, const std::string &descr)
returns a Query for matching atomic number
static int queryBondIsSingleOrDouble(Bond const *bond)
Atom const * ConstAtomPtr
T * makeAtomHCountQuery(int what, const std::string &descr)
returns a Query for matching hydrogen count
static ATOM_RANGE_QUERY * makeAtomRangeQuery(int lower, int upper, bool lowerOpen, bool upperOpen, int func(Atom const *), const std::string &description="Atom Range")
Queries::EqualityQuery< int, const Target *, true > * makeHasPropQuery(const std::string &property)
returns a Query for matching atoms that have a particular property
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondHasStereoQuery()
returns a Query for matching bonds with stereo set
Queries::GreaterEqualQuery< int, Atom const *, true > ATOM_GREATEREQUAL_QUERY
static int queryAtomIsotope(Atom const *at)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondIsInRingQuery()
returns a Query for matching ring bonds
T * makeAtomTypeQuery(int num, int aromatic, const std::string &descr)
returns a Query for matching atomic number and aromaticity
Queries::RangeQuery< int, Bond const *, true > BOND_RANGE_QUERY
static int queryAtomImplicitValence(Atom const *at)
T * makeAtomNumHeteroatomNbrsQuery(int what, const std::string &descr)
returns a Query for matching the number of heteroatom neighbors
static int queryIsBondInRing(Bond const *bond)
RDKIT_GRAPHMOL_EXPORT ATOM_OR_QUERY * makeQAtomQuery()
returns a Query for matching generic Q atoms (heteroatoms)
static int queryBondOrder(Bond const *bond)
static int queryAtomRingMembership(Atom const *at)
static void parseAtomType(int val, int &atomic_num, bool &aromatic)
T * makeAtomHybridizationQuery(int what, const std::string &descr)
returns a Query for matching hybridization
Queries::GreaterQuery< int, Bond const *, true > BOND_GREATER_QUERY
static int queryAtomMissingChiralTag(Atom const *at)
Queries::Query< bool, Atom const *, true > ATOM_BOOL_QUERY