chemaxon.sss.search
Class MarkushGenerator

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

public class MarkushGenerator
extends java.lang.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
Author:
Nora Mate
See Also:
RGroupDecomposition, Decomposition

Field Summary
static java.lang.String NO_UNDEF_RGROUP
           
 
Constructor Summary
MarkushGenerator()
          Constructor.
 
Method Summary
 RgMolecule generate()
          Generates the RgMolecule with the specified scaffold (see setQuery(chemaxon.struc.Molecule)) covering the specified targets (see setTargets(chemaxon.struc.Molecule[])).
 Molecule getQuery()
          Returns the query.
 MolSearchOptions getSearchOptions()
          Returns the search options.
 int[] getSkippedTargetIndexes()
          Returns the target array indexes of targets that have been skipped in the last RgMolecule generation in generate().
 Molecule[] getTargets()
          Returns the targets.
 void setQuery(Molecule query)
          Sets the query.
 void setSearchOptions(SearchOptions options)
          Copies all search parameters from options.
 void setStandardizer(Standardizer st, boolean bq, boolean bt)
          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.
 void setTargets(Molecule[] targets)
          Sets the targets.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_UNDEF_RGROUP

public static final java.lang.String NO_UNDEF_RGROUP
See Also:
Constant Field Values
Constructor Detail

MarkushGenerator

public MarkushGenerator()
Constructor.

Method Detail

setSearchOptions

public void setSearchOptions(SearchOptions options)
Copies all search parameters from options.

Parameters:
options - search options to copy
See Also:
getSearchOptions()

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 st,
                            boolean bq,
                            boolean bt)
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:
st - Standardizer object. null means default (aromatization). WARNING: Standardization that changes atom indexes is not supported!
bq - if false, standardization is not done on query. (Useful if query is already standardized.)
bt - if false, standardization is not done on target. (Useful if target is already standardized.)

setQuery

public void setQuery(Molecule query)
              throws chemaxon.sss.search.SearchException
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:
chemaxon.sss.search.SearchException - if the query does not contain an undefined R-atom

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 chemaxon.sss.search.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:
chemaxon.sss.search.SearchException - on search error
See Also:
getSkippedTargetIndexes()

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()