Class SmartsPattern


  • @Deprecated
    public final class SmartsPattern
    extends Pattern
    Deprecated.
    A Pattern for matching a single SMARTS query against multiple target compounds. The class should not be used for matching many queries against a single target as in substructure keyed fingerprints. The SMARTSQueryTool is currently a better option as less target initialistion is performed. 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();
     }
     
    Author:
    John May
    • Method Detail

      • setPrepare

        public void setPrepare​(boolean doPrep)
        Deprecated.
        Sets whether the molecule should be "prepared" for a SMARTS match, including set ring flags and perceiving aromaticity. The main reason to skip preparation (via prepare(IAtomContainer)) is if it has already been done, for example when matching multiple SMARTS patterns.
        Parameters:
        doPrep - whether preparation should be done
      • match

        public int[] match​(IAtomContainer container)
        Deprecated.
        Find a matching of this pattern in the 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!
             }
         }
         
        Specified by:
        match in class Pattern
        Parameters:
        container - the container to search for the pattern in
        Returns:
        the mapping from the pattern to the target or an empty array
      • matchAll

        public Mappings matchAll​(IAtomContainer target)
        Deprecated.
        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.
         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.
        Specified by:
        matchAll in class Pattern
        Parameters:
        target - the target compound in which we want to match the pattern
        Returns:
        mappings of the query to the target compound
        See Also:
        Mappings
      • create

        public static SmartsPattern create​(String smarts,
                                           IChemObjectBuilder builder)
                                    throws IOException
        Deprecated.
        Create a Pattern that will match the given smarts query.
        Parameters:
        smarts - SMARTS pattern string
        builder - chem object builder used to create objects
        Returns:
        a new pattern
        Throws:
        IOException - the smarts could not be parsed
      • create

        public static SmartsPattern create​(String smarts)
                                    throws IOException
        Deprecated.
        Default SMARTS pattern constructor, passes in a null chem object builder.
        Parameters:
        smarts - SMARTS pattern string
        Returns:
        a SMARTS pattern
        Throws:
        IOException - problem with SMARTS string syntax/semantics