Package org.openscience.cdk.smarts
Class SmartsPattern
java.lang.Object
org.openscience.cdk.isomorphism.Pattern
org.openscience.cdk.smarts.SmartsPattern
A
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:
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
Modifier and TypeMethodDescriptionstatic SmartsPattern
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
.matchAll
(IAtomContainer target) Obtain the mappings of the query pattern against the target compound.static void
prepare
(IAtomContainer target) 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 Details
-
prepare
-
setPrepare
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
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
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
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
Default SMARTS pattern constructor, passes in a null chem object builder.- Parameters:
smarts
- SMARTS pattern string- Returns:
- a SMARTS pattern
-