Class MarkushGenerator

java.lang.Object
chemaxon.sss.search.MarkushGenerator

@PublicApi public class MarkushGenerator extends Object

Generates RgMolecule output that covers the specified targets with the specified scaffold. The scaffold is a Molecule with undefined R-atoms. The root structure of the generated RgMolecule is this scaffold, the R-group definitions are added so that the target space would be fully covered by the set of the enumerated structures (and typically contain a lot of additional structures as well).

The implementation uses RGroupDecomposition to find the R-group definitions.

API usage examples:

query: the query molecule
targets: the target molecules

 MarkushGenerator mg = new MarkushGenerator();
 mg.setQuery(query);
 mg.setTargets(targets);

 // generate the RgMolecule that covers the targets
 RgMolecule rgmol = mg.generate();

 // get the target array indexes of the targets that did not match the query
 int[] skipped = mg.getSkippedTargetIndexes();
 
Since:
JChem 5.3
See Also:
  • Field Details

  • Constructor Details

    • MarkushGenerator

      public MarkushGenerator()
      Constructor.
  • Method Details

    • setSearchOptions

      public void setSearchOptions(SearchOptions options)
      Copies all search parameters from options.
      Parameters:
      options - search options to copy
      See Also:
    • getSearchOptions

      public MolSearchOptions getSearchOptions()
      Returns the search options. Use this object to set the search options of RGroupDecomposition directly (e.g.: getSearchOptions().setExactBondMatching(true);).
      Returns:
      the search options
    • setStandardizer

      public void setStandardizer(Standardizer standardizer)

      Sets standardizer object of this MolSearch class, to be used for the query and target molecules, Chemical Terms configuration and re-standardization of query tautomers at tautomer searching.

      Default is aromatization only.

      Parameters:
      standardizer - the standardizer, null for aromatization only
      Since:
      JChem 5.12
    • setQuery

      public void setQuery(Molecule query) throws SearchException, IllegalArgumentException
      Sets the query. This will be the root structure in the generated RgMolecule. The query should contain at least one undefined R-atom.
      Parameters:
      query - the query
      Throws:
      SearchException - if the query does not contain an undefined R-atom
      IllegalArgumentException - if query contains Markush features which would be enumerated during R-rgroup decomposition
    • getQuery

      public Molecule getQuery()
      Returns the query.
      Returns:
      the query
    • setTargets

      public void setTargets(Molecule[] targets)
      Sets the targets. The generated RgMolecule will cover these targets by its enumerations.
      Parameters:
      targets - the targets
    • getTargets

      public Molecule[] getTargets()
      Returns the targets.
      Returns:
      the targets
    • generate

      public RgMolecule generate() throws SearchException
      Generates the RgMolecule with the specified scaffold (see setQuery(chemaxon.struc.Molecule)) covering the specified targets (see setTargets(chemaxon.struc.Molecule[])). The query and the targets should be set beforehand. If some of the targets cannot be decomposed (because there is not search hit) then the corresponding target array indexes are returned in getSkippedTargetIndexes().
      Returns:
      the generated RgMolecule
      Throws:
      SearchException - on search error
      See Also:
    • getSkippedTargetIndexes

      public int[] getSkippedTargetIndexes()
      Returns the target array indexes of targets that have been skipped in the last RgMolecule generation in generate().
      Returns:
      the target array indexes of targets skipped in the last generate(), or null if called before generate()