Package org.openscience.cdk.smarts
Class SmartsPattern
- java.lang.Object
-
- org.openscience.cdk.isomorphism.Pattern
-
- org.openscience.cdk.smarts.SmartsPattern
-
public final class SmartsPattern extends Pattern
APattern
for matching a single SMARTS query against multiple target compounds. The class can be used for efficiently matching many queries against a single target ifsetPrepare(boolean)
is disabled (prepare(IAtomContainer)
) should be called manually once for each molecule. Simple usage:
Obtaining aPattern ptrn = SmartsPattern.create("O[C@?H](C)CC"); for (IAtomContainer ac : acs) { if (ptrn.matches(ac)) { // 'ac' contains the pattern } }
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(); }
- Author:
- John May
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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 aPattern
that will match the givensmarts
query.int[]
match(IAtomContainer container)
Find a matching of this pattern in thetarget
.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.-
Methods inherited from class org.openscience.cdk.isomorphism.Pattern
findIdentical, findSubstructure, matchAll, matches, matches
-
-
-
-
Method Detail
-
prepare
public static void prepare(IAtomContainer target)
-
setPrepare
public SmartsPattern setPrepare(boolean doPrep)
Sets whether the molecule should be "prepared" for a SMARTS match, including set ring flags and perceiving aromaticity. The main reason to skip preparation (viaprepare(IAtomContainer)
) is if it has already been done, for example when matching multiple SMARTS patterns.- Parameters:
doPrep
- whether preparation should be done- Returns:
- self for inline calling
-
match
public int[] match(IAtomContainer container)
Find a matching of this pattern in thetarget
. 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! } }
-
matchAll
public Mappings matchAll(IAtomContainer target)
Obtain the mappings of the query pattern against the target compound. Any initialisations required for the SMARTS match are automatically performed. The Daylight aromaticity model is applied clearing existing aromaticity. Do not use this for matching multiple SMARTS againsts the same container.
SeePattern ptrn = SmartsPattern.create("O[C@?H](C)CC"); int nUniqueHits = 0; for (IAtomContainer ac : acs) { nUniqueHits += ptrn.matchAll(ac) .countUnique(); }
Mappings
for available methods.
-
create
public static SmartsPattern create(String smarts, IChemObjectBuilder builder)
Create aPattern
that will match the givensmarts
query.- Parameters:
smarts
- SMARTS pattern stringbuilder
- chem object builder used to create objects- Returns:
- a new pattern
-
create
public static SmartsPattern create(String smarts)
Default SMARTS pattern constructor, passes in a null chem object builder.- Parameters:
smarts
- SMARTS pattern string- Returns:
- a SMARTS pattern
-
-