public final class SmartsPattern extends Pattern
Pattern for matching a single SMARTS query against multiple target
compounds. The class can be used for efficiently matching many queries
against a single target if setPrepare(boolean) is disabled (prepare(IAtomContainer)) should be called manually once for each molecule.
Simple usage:
Pattern ptrn = SmartsPattern.create("O[C@?H](C)CC");
for (IAtomContainer ac : acs) {
if (ptrn.matches(ac)) {
// 'ac' contains the pattern
}
}
Obtaining a Mappings instance and determine the number of unique
matches.
Pattern ptrn = SmartsPattern.create("O[C@?H](C)CC");
for (IAtomContainer ac : acs) {
nUniqueHits += ptrn.matchAll(ac)
.countUnique();
}
| Modifier and Type | Method and Description |
|---|---|
static SmartsPattern |
create(String smarts)
Default SMARTS pattern constructor, passes in a null chem object builder.
|
static SmartsPattern |
create(String smarts,
IChemObjectBuilder builder)
Create a
Pattern that will match the given smarts query. |
int[] |
match(IAtomContainer container)
Find a matching of this pattern in the
target. |
Mappings |
matchAll(IAtomContainer target)
Obtain the mappings of the query pattern against the target compound.
|
static void |
prepare(IAtomContainer target) |
SmartsPattern |
setPrepare(boolean doPrep)
Sets whether the molecule should be "prepared" for a SMARTS match,
including set ring flags and perceiving aromaticity.
|
findIdentical, findSubstructure, matchAll, matches, matchespublic static void prepare(IAtomContainer target)
public SmartsPattern setPrepare(boolean doPrep)
prepare(IAtomContainer)) is if it has
already been done, for example when matching multiple SMARTS patterns.doPrep - whether preparation should be donepublic int[] match(IAtomContainer container)
target. If no such order
exist an empty mapping is returned. Depending on the implementation
stereochemistry may be checked (recommended).
Pattern pattern = ...; // create pattern for (IAtomContainer m : ms) { int[] mapping = pattern.match(m); if (mapping.length > 0) { // found mapping! } }
public Mappings matchAll(IAtomContainer target)
Pattern ptrn = SmartsPattern.create("O[C@?H](C)CC");
int nUniqueHits = 0;
for (IAtomContainer ac : acs) {
nUniqueHits += ptrn.matchAll(ac)
.countUnique();
}
See Mappings for available methods.public static SmartsPattern create(String smarts, IChemObjectBuilder builder)
Pattern that will match the given smarts query.smarts - SMARTS pattern stringbuilder - chem object builder used to create objectspublic static SmartsPattern create(String smarts)
smarts - SMARTS pattern stringCopyright © 2021. All rights reserved.