Class Pattern

java.lang.Object
org.openscience.cdk.isomorphism.Pattern
Direct Known Subclasses:
DfPattern, SmartsPattern, SmartsPattern, Ullmann, VentoFoggia

public abstract class Pattern extends Object
A structural pattern for finding an exact matching in a target compound.
Author:
John May
Belongs to CDK module:
isomorphism
  • Constructor Details

    • Pattern

      public Pattern()
  • Method Details

    • match

      public abstract int[] match(IAtomContainer target)
      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!
           }
       }
       
      Parameters:
      target - the container to search for the pattern in
      Returns:
      the mapping from the pattern to the target or an empty array
    • matches

      public boolean matches(IAtomContainer target)
      Determine if there is a mapping of this pattern in the target. Depending on the implementation stereochemistry may be checked (recommended).
       Pattern        pattern = ...; // create pattern
       for (IAtomContainer m : ms) {
           if (pattern.matches(m)) {
               // found mapping!
           }
       }
       
      Parameters:
      target - the container to search for the pattern in
      Returns:
      the mapping from the pattern to the target
    • matches

      public final boolean matches(IReaction target)
      Determine if there is a mapping of this pattern in the target reaction.
       Pattern        pattern = ...; // create pattern
       for (IReaction r : rs) {
           if (pattern.matches(r)) {
               // found mapping!
           }
       }
       
      Parameters:
      target - the reaction to search for the pattern in
      Returns:
      the mapping from the pattern to the target
    • matchAll

      public abstract Mappings matchAll(IAtomContainer target)
      Find all mappings of this pattern in the target. Stereochemistry should not be checked to allow filtering with Mappings.stereochemistry().
       Pattern pattern = Pattern.findSubstructure(query);
       for (IAtomContainer m : ms) {
           for (int[] mapping : pattern.matchAll(m)) {
               // found mapping
           }
       }
       
      Using the fluent interface (see Mappings) we can search and manipulate the mappings. Here's an example of finding the first 5 mappings and creating an array. If the mapper is lazy other states are simply not explored.
       // find only the first 5 mappings and store them in an array
       Pattern pattern  = Pattern.findSubstructure(query);
       int[][] mappings = pattern.matchAll(target)
                                 .limit(5)
                                 .toArray();
       
      Parameters:
      target - the container to search for the pattern in
      Returns:
      the mapping from the pattern to the target
      See Also:
    • matchAll

      public final Mappings matchAll(IReaction target)
      Find all mappings of this pattern in the target reaction.
       Pattern pattern = Pattern.findSubstructure(query);
       for (IReaction r : rs) {
           for (int[] mapping : pattern.matchAll(r)) {
               // found mapping
           }
       }
       
      The reaction is inlined into a molecule and vs mapped id's correspond to the absolute atom index in the reaction when considered as reactants, agents, products ReactionManipulator.toMolecule(org.openscience.cdk.interfaces.IReaction).
      Parameters:
      target - the reaction to search for the pattern in
      Returns:
      the mapping from the pattern to the target
      See Also:
    • findSubstructure

      public static Pattern findSubstructure(IAtomContainer query)
      Create a pattern which can be used to find molecules which contain the query structure. The default structure search implementation is VentoFoggia.
      Parameters:
      query - the substructure to find
      Returns:
      a pattern for finding the query
      See Also:
    • findIdentical

      public static Pattern findIdentical(IAtomContainer query)
      Create a pattern which can be used to find molecules which are the same as the query structure. The default structure search implementation is VentoFoggia.
      Parameters:
      query - the substructure to find
      Returns:
      a pattern for finding the query
      See Also: