30#ifdef RDK_BUILD_THREADSAFE_SSS
92 for (
const auto nbri :
95 if (nbr->getAtomicNum() != 1 || nbr->getIsotope() > 1) {
105 for (
const auto nbri :
108 if (nbr->getAtomicNum() > 1) {
138 return atomic_num + 1000 *
static_cast<int>(aromatic);
143 atomic_num = val - 1000;
162 return static_cast<int>(
189 ROMol::ADJ_ITER nbrIdx, endNbrs;
191 while (nbrIdx != endNbrs) {
203 ROMol::ADJ_ITER nbrIdx, endNbrs;
205 while (nbrIdx != endNbrs) {
216 ROMol::ADJ_ITER nbrIdx, endNbrs;
218 while (nbrIdx != endNbrs) {
231 ROMol::ADJ_ITER nbrIdx, endNbrs;
233 while (nbrIdx != endNbrs) {
291 while (atomBonds.first != atomBonds.second) {
292 unsigned int bondIdx =
317 while (atomBonds.first != atomBonds.second) {
318 unsigned int bondIdx =
341 bool lowerOpen =
false,
342 bool upperOpen =
false) {
344 for (
const auto ringSize : ri->atomRingSizes(at->
getIdx())) {
345 if ((ringSize > lower || (ringSize == lower && !lowerOpen)) &&
347 (ringSize < upper || (ringSize == upper && !upperOpen)))) {
354 }
else if (upper > -1) {
355 return std::numeric_limits<int>::max();
380 const std::string &description =
"Atom Simple") {
383 res->setDataFunc(func);
384 res->setDescription(description);
389 int lower,
int upper,
bool lowerOpen,
bool upperOpen,
390 std::function<
int(
Atom const *)> func,
391 const std::string &description =
"Atom Range") {
606 int lower,
int upper,
bool lowerOpen =
false,
bool upperOpen =
false);
644 "X",
"XH",
"M",
"MH"};
646 std::string_view symb);
742 return static_cast<int>(
770 if (this->
d_val < 0) {
807 d_serialNumber(serialNumber) {
830 res->dp_queryMol.reset(
new ROMol(*dp_queryMol,
true));
832 std::set<int>::const_iterator i;
833 for (i =
d_set.begin(); i !=
d_set.end(); i++) {
838 res->d_serialNumber = d_serialNumber;
843#ifdef RDK_BUILD_THREADSAFE_SSS
847 boost::shared_ptr<const ROMol> dp_queryMol;
848 unsigned int d_serialNumber{0};
863template <
class TargetPtr>
865 std::string propname;
878 bool Match(
const TargetPtr what)
const override {
879 bool res = what->hasProp(propname);
901template <
class Target>
903 const std::string &property) {
916template <
class TargetPtr,
class T>
920 std::string propname;
922 double tolerance{0.0};
941 propname(std::move(prop)),
949 bool Match(
const TargetPtr what)
const override {
950 bool res = what->hasProp(propname);
953 T atom_val = what->template getProp<T>(propname);
955 static_cast<T
>(this->tolerance)) == 0;
958 }
catch (std::bad_any_cast &) {
962#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
992template <
class TargetPtr>
996 std::string propname;
1009 propname(std::move(prop)),
1022 bool Match(
const TargetPtr what)
const override {
1023 bool res = what->hasProp(propname);
1026 std::string atom_val = what->template getProp<std::string>(propname);
1027 res = atom_val == this->val;
1030 }
catch (std::bad_any_cast &) {
1034#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
1065template <
class TargetPtr>
1069 std::string propname;
1083 propname(std::move(prop)),
1096 bool Match(
const TargetPtr what)
const override {
1097 bool res = what->hasProp(propname);
1101 what->template getProp<const ExplicitBitVect &>(propname);
1103 res = (1.0 - tani) <= tol;
1106 }
catch (std::bad_any_cast &) {
1110#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
1134 this->propname, this->val, this->tol);
1141template <
class Target,
class T>
1143 const std::string &propname,
const T &val,
double tolerance = 0.0) {
1147template <
class Target>
1150 double tolerance = 0.0) {
1152 propname, val, tolerance);
1160 std::vector<int> &vals);
1176 RWMol *mol,
unsigned int magicVal = 0xDEADBEEF);
Contains general bit-comparison and similarity operations.
Pulls in all the BitVect classes.
#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.
int TypeConvert(int what, Int2Type< false >) const
std::function< MatchFuncArgType(DataFuncArgType)> d_dataFunc
void setDataFunc(std::function< MatchFuncArgType(DataFuncArgType)> what)
sets our data function
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.
void setEndsOpen(bool lower, bool upper)
sets whether or not the ends of the range are open
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
Queries::Query< int, Atom const *, true > QUERYATOM_QUERY
unsigned int getIdx() const
returns our index within the ROMol
unsigned int getValence(ValenceType which) const
returns the valence (explicit or implicit) of this atom
unsigned int getNumExplicitHs() const
returns our number of explicit Hs
unsigned int getNumRadicalElectrons() const
returns the number of radical electrons 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)
BondStereo getStereo() const
returns our stereo code
BondDir getBondDir() const
returns our direction
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
const std::string & getPropName() const
HasPropQuery(std::string v)
bool Match(const TargetPtr what) const override
returns whether or not we match the argument
virtual ~HasPropWithValueQueryBase()=default
virtual PairHolder getPair() const =0
HasPropWithValueQueryBase()=default
virtual double getTolerance() const =0
PairHolder getPair() const override
HasPropWithValueQuery(std::string prop, const ExplicitBitVect &v, double tol=0.0)
bool Match(const TargetPtr what) const override
returns whether or not we match the argument
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
double getTolerance() const override
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
bool Match(const TargetPtr what) const override
returns whether or not we match the argument
HasPropWithValueQuery(std::string prop, std::string v, const double=0.0)
PairHolder getPair() const override
double getTolerance() const override
HasPropWithValueQuery(std::string prop, const T &v, const T &tol=0.0)
PairHolder getPair() const override
bool Match(const TargetPtr what) const override
returns whether or not we match the argument
double getTolerance() const override
Queries::Query< int, TargetPtr, true > * copy() const override
returns a copy of this query
bool hasProp(const std::string_view 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.
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 isMetal(const Atom &atom)
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)
constexpr std::string_view _ChiralityPossible
Queries::LessQuery< int, Bond const *, true > BOND_LESS_QUERY
static int queryAtomNumRadicalElectrons(Atom const *at)
static int queryAtomIsInRingOfSize(Atom const *at, int tgt)
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 ATOM_RANGE_QUERY * makeAtomRangeQuery(int lower, int upper, bool lowerOpen, bool upperOpen, std::function< int(Atom const *)> func, const std::string &description="Atom Range")
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
Queries::EqualityQuery< int, const Target *, true > * makePropQuery(const std::string &propname, const T &val, double tolerance=0.0)
RDKIT_GRAPHMOL_EXPORT BOND_EQUALS_QUERY * makeBondInRingOfSizeQuery(int what)
returns a Query for matching bonds in rings of a particular size
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
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
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
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
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)
T * makeAtomInRingOfSizeQuery(int tgt, const std::string &descr)
returns a Query for matching atoms in rings of a particular size
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
T * makeAtomSimpleQuery(int what, std::function< int(Atom const *)> func, const std::string &description="Atom Simple")
static int queryAtomMissingChiralTag(Atom const *at)
Queries::Query< bool, Atom const *, true > ATOM_BOOL_QUERY