This is a preliminary API and may be improved based on user feedback. It is currently available in C++ and Python.
void OECreateSmartsString(std::string &str, const OEMolBase &mol, const char *smartsTag=nullptr, unsigned int flavor=(OESMILESFlag::DEFAULT & ~OESMILESFlag::Canonical), std::pair<const OEAtomBase*,const OEAtomBase*> *atmord=nullptr);
Generate the SMARTS string from the provided molecule using the flavors from the
smartsTag argument is null, the data tag applied by
is assumed to contain the atom and bond annotations from the SMARTS parse, otherwise an explicit generic data tag
can be provided for custom SMARTS constraint annotations. Note that custom constraint annotations are not validated, so
extra checking for a valid SMARTS query will be required (e.g., by calling
The provided default flavor for the SMARTS generation suppresses reordering which can invalidate the statically captured
pattern constraints. Any explicitly provided non-default flavor should also suppress reordering activity for the same reason.
While the flavor is provided for user control and experimentation, be aware that only actual atom/bond properties on the molecule
are considered for the flavor provided, so any SMARTS qualifiers from the
smartsTag generic data are considered to be completely irrelevant
during canonicalization. Extra care is also required if any atom (
or bond (
OESMARTSBondFlag::Chirality) stereo parity is encoded as into the SMARTS string, requiring one or both of
OESMILESFlag::AtomStereo for tetrahedral stereo parity SMARTS encodings, or
OESMILESFlag::BondStereo for cis/trans SMARTS encodings.