This is a preliminary API and may be improved based on user feedback. It is currently available in C++ and Python.

bool OEIsComplementaryScreenType(const OEQMolBase &qmol,
                                 const unsigned stype)
bool OEIsComplementaryScreenType(const OEQMolBase &qmol,
                                 const OESubSearchScreenTypeBase *stype)

Returns whether the given query molecule can be used with a certain screen type. The function determines this by examining all the atom and bond expressions of the query molecule. For more explanation, see the OESubSearchScreenType namespace.


The query molecule (OEQMolBase)


The type of the screen (either from the OESubSearchScreenType namespace or as an internal OESubSearchScreenTypeBase type).


OEQMol qmol;
OEParseSmarts(qmol, "C1CC[O,N]CC1");

using namespace OESubSearchScreenType;
for (const auto stype : {Molecule, MDL, SMARTS})
  const OESubSearchScreenTypeBase* screentype = OEGetSubSearchScreenType(stype);
  if (OEIsComplementaryScreenType(qmol, screentype))
    std::cout << screentype->GetName() << " screen type is complementary" << std::endl;

The above code snippet will generate the following output.

SMARTS SubSearch Screen screen type is complementary