Class SmilesSearch

java.lang.Object
org.jmol.util.JmolMolecule
org.jmol.smiles.SmilesSearch

public class SmilesSearch extends JmolMolecule
A class to build and carry out a SMILES or SMARTS match
Author:
Bob Hanson hansonr@stolaf.edu
  • Field Details

    • isSmarts

      boolean isSmarts
    • top

    • pattern

      String pattern
    • patternAtoms

      SmilesAtom[] patternAtoms
    • targetAtoms

      Node[] targetAtoms
    • targetAtomCount

      int targetAtomCount
    • bsSelected

      private javajs.util.BS bsSelected
    • v

    • aromaticOpen

      boolean aromaticOpen
    • aromaticStrict

      boolean aromaticStrict
    • aromaticPlanar

      boolean aromaticPlanar
    • aromaticDouble

      boolean aromaticDouble
    • aromaticMMFF94

      boolean aromaticMMFF94
    • aromaticDefined

      boolean aromaticDefined
    • aromaticUnknown

      boolean aromaticUnknown
    • noAromatic

      boolean noAromatic
    • ignoreAtomClass

      boolean ignoreAtomClass
    • ignoreElement

      boolean ignoreElement
    • ignoreStereochemistry

      boolean ignoreStereochemistry
    • invertStereochemistry

      boolean invertStereochemistry
    • exitFirstMatch

      boolean exitFirstMatch
    • groupByModel

      boolean groupByModel
    • setAtropicity

      boolean setAtropicity
    • patternAromatic

      boolean patternAromatic
      Set in set() to indicate to SmilesMatcher that the string already has aromatic atoms indicated and so no aromaticity model should be applied.
    • haveTopo

      boolean haveTopo
    • isTopology

      boolean isTopology
    • patternBioSequence

      boolean patternBioSequence
    • subSearches

      SmilesSearch[] subSearches
    • haveSelected

      boolean haveSelected
    • haveBondStereochemistry

      boolean haveBondStereochemistry
    • stereo

      SmilesStereo stereo
    • needRingData

      boolean needRingData
    • needAromatic

      boolean needAromatic
    • needRingMemberships

      boolean needRingMemberships
    • nDouble

      int nDouble
    • ringDataMax

      int ringDataMax
    • ringSets

      javajs.util.Lst<javajs.util.BS> ringSets
    • ringCount

      int ringCount
    • measures

      javajs.util.Lst<SmilesMeasure> measures
    • flags

      int flags
    • bsAromatic

      javajs.util.BS bsAromatic
    • bsAromatic5

      javajs.util.BS bsAromatic5
    • bsAromatic6

      javajs.util.BS bsAromatic6
    • atropKeys

      String atropKeys
    • lastChainAtom

      SmilesAtom lastChainAtom
    • asVector

      boolean asVector
    • getMaps

      boolean getMaps
    • isNormalized

      boolean isNormalized
    • haveComponents

      boolean haveComponents
    • isSilent

      private boolean isSilent
    • isRingCheck

      private boolean isRingCheck
    • selectedAtomCount

      private int selectedAtomCount
    • ringData

      private javajs.util.BS[] ringData
    • ringCounts

      private int[] ringCounts
    • ringConnections

      private int[] ringConnections
    • bsFound

      private javajs.util.BS bsFound
    • htNested

      private Map<String,Object> htNested
    • nNested

      private int nNested
    • nestedBond

      private SmilesBond nestedBond
    • vReturn

      private javajs.util.Lst<Object> vReturn
    • uniqueList

      private javajs.util.Lst<javajs.util.BS> uniqueList
    • bsReturn

      private javajs.util.BS bsReturn
    • bsCheck

      private javajs.util.BS bsCheck
    • mapUnique

      public boolean mapUnique
    • bsAromaticRings

      private javajs.util.BS bsAromaticRings
    • polyhedronStereo

      public SmilesStereo polyhedronStereo
      indicates that we have [XxPHn] with no connected atoms
    • polyAtom

      SmilesAtom polyAtom
    • autoAddImplicitH

      public boolean autoAddImplicitH
    • SUBMODE_NESTED

      private static final int SUBMODE_NESTED
      See Also:
    • SUBMODE_RINGCHECK

      private static final int SUBMODE_RINGCHECK
      See Also:
    • SUBMODE_OR

      private static final int SUBMODE_OR
      See Also:
    • ATROPIC_SWITCH

      private static final int ATROPIC_SWITCH
      See Also:
  • Constructor Details

    • SmilesSearch

      public SmilesSearch()
  • Method Details

    • setTop

      void setTop(SmilesSearch parent)
    • addFlags

      static final int addFlags(int flags, String strFlags)
    • setFlags

      void setFlags(int flags)
    • set

      void set() throws InvalidSmilesException
      Throws:
      InvalidSmilesException
    • setSelected

      void setSelected(javajs.util.BS bs)
    • addAtom

      SmilesAtom addAtom()
    • appendAtom

      SmilesAtom appendAtom(SmilesAtom sAtom)
    • addNested

      int addNested(String pattern)
    • clear

      void clear()
    • clearBsFound

      private void clearBsFound(int iAtom)
    • setNested

      void setNested(int iNested, Object o)
    • getNested

      Object getNested(int iNested)
    • getMissingHydrogenCount

      int getMissingHydrogenCount()
    • setRingData

      void setRingData(javajs.util.BS bsA, javajs.util.Lst<javajs.util.BS>[] vRings, boolean doProcessAromatic) throws InvalidSmilesException
      Sets up all aromatic and ring data. Called from SmilesGenerator.getSmilesComponent and SmilesMatcher.matchPriv.
      Parameters:
      bsA -
      vRings -
      doProcessAromatic -
      Throws:
      InvalidSmilesException
    • getRingData

      void getRingData(javajs.util.Lst<javajs.util.BS>[] vRings, boolean needRingData, boolean doTestAromatic) throws InvalidSmilesException
      Throws:
      InvalidSmilesException
    • subsearch

      Object subsearch(SmilesSearch search, int submode) throws InvalidSmilesException
      Parameters:
      search -
      submode -
      Returns:
      Object
      Throws:
      InvalidSmilesException
    • search

      the start of the search. ret will be either a Vector or a BitSet
      Returns:
      BitSet or Vector
      Throws:
      InvalidSmilesException
    • search2

      private Object search2(boolean firstAtomOnly) throws InvalidSmilesException
      Throws:
      InvalidSmilesException
    • nextPatternAtom

      private boolean nextPatternAtom(int atomNum, int iAtom, boolean firstAtomOnly, int c) throws InvalidSmilesException
      Throws:
      InvalidSmilesException
    • doCheckAtom

      private boolean doCheckAtom(int j)
    • nextTargetAtom

      private final boolean nextTargetAtom(SmilesAtom patternAtom, Node jmolAtom, int atomNum, int iAtom, boolean firstAtomOnly, int c) throws InvalidSmilesException
      Check for a specific match of a model set atom with a pattern position
      Parameters:
      patternAtom - Atom of the pattern that is currently tested.
      jmolAtom -
      atomNum - Current atom of the pattern.
      iAtom - Atom number of the Jmol atom that is currently tested to match patternAtom.
      firstAtomOnly -
      c -
      Returns:
      true to continue or false if oneOnly
      Throws:
      InvalidSmilesException
    • checkPrimitiveAtom

      private boolean checkPrimitiveAtom(SmilesAtom patternAtom, int iTarget) throws InvalidSmilesException
      Parameters:
      patternAtom -
      iTarget -
      Returns:
      true if a match
      Throws:
      InvalidSmilesException
    • checkMatchBond

      private boolean checkMatchBond(SmilesAtom patternAtom, SmilesAtom atom1, SmilesBond patternBond, int iAtom, int matchingAtom, Edge bond)
    • checkPrimitiveBond

      private boolean checkPrimitiveBond(SmilesBond patternBond, int iAtom1, int iAtom2, Edge bond)
    • getBSAromaticRings

      private javajs.util.BS getBSAromaticRings()
    • isRingBond

      static boolean isRingBond(javajs.util.Lst<javajs.util.BS> ringSets, javajs.util.BS bsAromaticRings, int a1, int a2)
    • checkStereochemistry

      private boolean checkStereochemistry()
    • getAtropIndex

      private String getAtropIndex(SmilesBond b)
    • setTopoCoordinates

      private static void setTopoCoordinates(SmilesAtom dbAtom1, SmilesAtom dbAtom2, SmilesAtom dbAtom1a, SmilesAtom dbAtom2a, int bondType)
    • createTopoMap

      void createTopoMap(javajs.util.BS bsAro) throws InvalidSmilesException
      Parameters:
      bsAro - null for molecular formula calculation only
      Throws:
      InvalidSmilesException
    • normalizeAromaticity

      void normalizeAromaticity(javajs.util.BS bsAromatic) throws InvalidSmilesException
      create a temporary object to generate the aromaticity in a SMILES pattern for which there is no explicit aromaticity (Kekule) Not applicable to SMARTS
      Parameters:
      bsAromatic -
      Throws:
      InvalidSmilesException
    • getSelections

      void getSelections()
      htNested may contain $(select xxxx) primitives. We want to clear those up before we start any search.
    • findImplicitHydrogen

      Node findImplicitHydrogen(Node atom)
    • toString

      public String toString()
      Overrides:
      toString in class Object