@PublicAPI 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();
RGroupDecomposition
,
Decomposition
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
NO_UNDEF_RGROUP |
Constructor and Description |
---|
MarkushGenerator()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
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 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.
|
void |
setTargets(Molecule[] targets)
Sets the targets.
|
public static final java.lang.String NO_UNDEF_RGROUP
public void setSearchOptions(SearchOptions options)
options
.options
- search options to copygetSearchOptions()
public MolSearchOptions getSearchOptions()
RGroupDecomposition
directly
(e.g.: getSearchOptions().setExactBondMatching(true);
).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.
standardizer
- the standardizer,
null
for aromatization onlypublic void setQuery(Molecule query) throws SearchException, java.lang.IllegalArgumentException
RgMolecule
.
The query should contain at least one undefined R-atom.query
- the querySearchException
- if the query does not contain an undefined R-atomjava.lang.IllegalArgumentException
- if query contains Markush features which
would be enumerated during R-rgroup decompositionpublic Molecule getQuery()
public void setTargets(Molecule[] targets)
RgMolecule
will cover these targets by its enumerations.targets
- the targetspublic Molecule[] getTargets()
public RgMolecule generate() throws SearchException
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()
.RgMolecule
SearchException
- on search errorgetSkippedTargetIndexes()
public int[] getSkippedTargetIndexes()
RgMolecule
generation in generate()
.generate()
,
or null
if called before generate()