OEScreen¶
Attention
This API is currently available in C++ and Python.
bool OEScreen(const OESubSearchScreen &query,
              const OESubSearchScreen &target)
Returns whether an OESubSearchScreen object generated for a target molecule can be matched to the OESubSearchScreen object generated for a query molecule.
The code snippet below shows how to generate a screens for a query and a target molecule
and how to compare them using OEScreen.
- OEScreenwill throw a warning and returns- falseif the type of the screens are different.
- If the query screen has any bit ‘on’ that is ‘off’ in the target molecule (i.e. query has some feature that is not present in the target molecule), the - OEScreenfunction returns- falseand the target molecule can be eliminated from further consideration since it can not be successfully matched to the query.
- If all the bits that are ‘on’ in the query screen are also ‘on’ in the target screen, - OEScreenreturns- trueand match has to be validated by performing atom-by-atom substructure match (see also OESubSearch).
Example
OEQMol qmol;
OEParseSmarts(qmol, "c1cc[o,n,s]c1");
OESubSearchScreen qscreen;
OEMakeSubSearchQueryScreen(qscreen, qmol, OESubSearchScreenType::SMARTS);
OEGraphMol tmol;
OEParseSmiles(tmol, "c1ccoc1");
OESubSearchScreen tscreen;
OEMakeSubSearchTargetScreen(tscreen, tmol, OESubSearchScreenType::SMARTS);
OESubSearch ss(qmol);
if (OEScreen(qscreen, tscreen))
{
  if (ss.SingleMatch(tmol))
    std::cout << "match" << std::endl;
  else 
    std::cout << "false positive match" << std::endl;
}
else
{
  std::cout << "no match" << std::endl;
}
Note
All screens provided by OEChem TK are rigorously tested to make sure that they do not eliminate any matches that would succeed when utilizing the more elaborate atom-by-atom substructure search algorithm.
See also
- OEGetSubSearchScreenTypefunction
- OESubSearchScreenTypenamespace