Class 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 Detail

      • isSmarts

        boolean isSmarts
      • pattern

        java.lang.String pattern
      • targetAtoms

        Node[] targetAtoms
      • targetAtomCount

        int targetAtomCount
      • bsSelected

        private javajs.util.BS bsSelected
      • 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
      • haveSelected

        boolean haveSelected
      • haveBondStereochemistry

        boolean haveBondStereochemistry
      • 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
      • flags

        int flags
      • bsAromatic

        javajs.util.BS bsAromatic
      • bsAromatic5

        javajs.util.BS bsAromatic5
      • bsAromatic6

        javajs.util.BS bsAromatic6
      • atropKeys

        java.lang.String atropKeys
      • 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 java.util.Map<java.lang.String,​java.lang.Object> htNested
      • nNested

        private int nNested
      • vReturn

        private javajs.util.Lst<java.lang.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
    • Constructor Detail

      • SmilesSearch

        public SmilesSearch()
    • Method Detail

      • addFlags

        static final int addFlags​(int flags,
                                  java.lang.String strFlags)
      • setFlags

        void setFlags​(int flags)
      • setSelected

        void setSelected​(javajs.util.BS bs)
      • addNested

        int addNested​(java.lang.String pattern)
      • clear

        void clear()
      • clearBsFound

        private void clearBsFound​(int iAtom)
      • setNested

        void setNested​(int iNested,
                       java.lang.Object o)
      • getNested

        java.lang.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
      • 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
      • 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 java.lang.String getAtropIndex​(SmilesBond b)
      • 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:
        atoms -
        bsAromatic -
        flags -
        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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object