org.jmol.smiles
Class SmilesSearch

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

public class SmilesSearch
extends JmolMolecule

-- was SmilesMolecule, but this now includes more data than that and the search itself so as to keep this thread safe


Nested Class Summary
(package private) static class SmilesSearch.VTemp
           
 
Field Summary
(package private)  boolean asVector
           
(package private)  java.util.BitSet bsAromatic
           
private  java.util.BitSet bsFound
           
(package private)  java.util.BitSet bsRequired
           
private  java.util.BitSet bsReturn
           
private  java.util.BitSet bsSelected
           
(package private)  boolean firstMatchOnly
           
(package private)  boolean getMaps
           
(package private)  boolean haveAtomStereochemistry
           
(package private)  boolean haveBondStereochemistry
           
(package private)  boolean haveSelected
           
private  java.util.Map<java.lang.String,java.lang.Object> htNested
           
(package private)  boolean ignoreStereochemistry
           
private static int INITIAL_ATOMS
           
private  boolean isRingCheck
           
private  boolean isSilent
           
(package private)  boolean isSmarts
           
(package private)  boolean isSmilesFind
           
(package private)  int jmolAtomCount
           
(package private)  JmolNode[] jmolAtoms
           
(package private)  SmilesAtom lastChainAtom
           
(package private)  boolean matchAllAtoms
           
(package private)  java.util.List<SmilesMeasure> measures
           
(package private)  boolean needAromatic
           
(package private)  boolean needRingData
           
(package private)  boolean needRingMemberships
           
private  SmilesBond nestedBond
           
private  int nNested
           
(package private)  boolean noAromatic
           
(package private)  SmilesSearch parent
           
(package private)  java.lang.String pattern
           
(package private)  SmilesAtom[] patternAtoms
           
private  int[] ringConnections
           
private  int[] ringCounts
           
private  java.util.BitSet[] ringData
           
(package private)  int ringDataMax
           
(package private)  java.lang.StringBuffer ringSets
           
private  int selectedAtomCount
           
(package private)  SmilesSearch[] subSearches
           
(package private)  SmilesSearch.VTemp v
           
private  java.util.List<java.lang.Object> vReturn
           
 
Fields inherited from class org.jmol.util.JmolMolecule
altElementCounts, altElementMax, atomCount, atomList, elementCounts, elementNumberMax, firstAtomIndex, indexInModel, mf, modelIndex, moleculeIndex, nElements, nodes
 
Constructor Summary
SmilesSearch()
           
 
Method Summary
(package private)  SmilesAtom addAtom()
           
(package private)  int addNested(java.lang.String pattern)
           
private  boolean checkMatch(SmilesAtom patternAtom, int atomNum, int iAtom, boolean firstAtomOnly)
          Check for a specific match of a model set atom with a pattern position
private  boolean checkMatchBond(SmilesAtom patternAtom, SmilesAtom atom1, SmilesBond patternBond, int iAtom, int matchingAtom, JmolEdge bond)
           
private  boolean checkPrimitiveAtom(SmilesAtom patternAtom, int iAtom)
           
private  boolean checkPrimitiveBond(SmilesBond patternBond, int iAtom1, int iAtom2, JmolEdge bond)
           
private  boolean checkStereochemistry()
           
(package private) static boolean checkStereochemistry(boolean isNot, JmolNode atom0, int chiralClass, int order, JmolNode atom1, JmolNode atom2, JmolNode atom3, JmolNode atom4, JmolNode atom5, JmolNode atom6, SmilesSearch.VTemp v)
           
private  boolean continueMatch(int atomNum, int iAtom, boolean firstAtomOnly)
           
(package private)  void createTopoMap(java.util.BitSet bsAromatic)
           
(package private) static float distanceToPlane(javax.vecmath.Vector3f norm, float w, javax.vecmath.Point3f pt)
           
private  java.lang.Object getBitSets(SmilesSearch search, boolean firstAtomOnly, boolean isRingCheck)
           
private static int getHandedness(JmolNode a, JmolNode b, JmolNode c, JmolNode pt, SmilesSearch.VTemp v)
          compares the
private  JmolNode getHydrogens(JmolNode atom, java.util.BitSet bsHydrogens)
           
private  JmolNode getJmolAtom(int i)
           
(package private)  int[] getMappedAtoms(JmolNode atom, JmolNode a2, JmolNode[] cAtoms)
           
(package private)  int getMissingHydrogenCount()
           
(package private)  java.lang.Object getNested(int iNested)
           
(package private)  SmilesSearch getParent()
           
private static void getPlaneNormals(JmolNode atom1, JmolNode atom2, JmolNode atom3, JmolNode atom4, SmilesSearch.VTemp v)
           
private  void getX(SmilesAtom sAtom, JmolNode[] jn, int pt, boolean haveCoordinates, boolean needHSwitch)
           
(package private) static boolean isDiaxial(JmolNode atomA, JmolNode atomB, JmolNode atom1, JmolNode atom2, SmilesSearch.VTemp v, float f)
           
(package private) static boolean isRingBond(java.lang.StringBuffer ringSets, int i, int j)
           
(package private)  java.lang.Object search(boolean firstAtomOnly)
          the start of the search.
(package private)  void setAtomArray()
           
(package private)  void setNested(int iNested, java.lang.Object o)
           
 void setParent(SmilesSearch parent)
           
(package private)  void setRingData(java.util.BitSet bsA)
           
(package private)  void setSelected(java.util.BitSet bs)
           
private  void setSmilesBondCoordinates(SmilesAtom sAtom1, SmilesAtom sAtom2, int bondType)
           
private  boolean setSmilesCoordinates(JmolNode atom, SmilesAtom sAtom, SmilesAtom sAtom2, JmolNode[] cAtoms)
           
 java.lang.String toString()
           
 
Methods inherited from class org.jmol.util.JmolMolecule
addMolecule, getBranchBitSet, getMolecularFormula, getMolecularFormula, getMolecules
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

INITIAL_ATOMS

private static final int INITIAL_ATOMS
See Also:
Constant Field Values

patternAtoms

SmilesAtom[] patternAtoms

pattern

java.lang.String pattern

jmolAtoms

JmolNode[] jmolAtoms

jmolAtomCount

int jmolAtomCount

bsSelected

private java.util.BitSet bsSelected

bsRequired

java.util.BitSet bsRequired

firstMatchOnly

boolean firstMatchOnly

matchAllAtoms

boolean matchAllAtoms

isSmarts

boolean isSmarts

isSmilesFind

boolean isSmilesFind

subSearches

SmilesSearch[] subSearches

haveSelected

boolean haveSelected

haveBondStereochemistry

boolean haveBondStereochemistry

haveAtomStereochemistry

boolean haveAtomStereochemistry

needRingData

boolean needRingData

needAromatic

boolean needAromatic

needRingMemberships

boolean needRingMemberships

ringDataMax

int ringDataMax

measures

java.util.List<SmilesMeasure> measures

noAromatic

boolean noAromatic

ignoreStereochemistry

boolean ignoreStereochemistry

ringSets

java.lang.StringBuffer ringSets

bsAromatic

java.util.BitSet bsAromatic

lastChainAtom

SmilesAtom lastChainAtom

asVector

boolean asVector

getMaps

boolean getMaps

parent

SmilesSearch parent

isSilent

private boolean isSilent

isRingCheck

private boolean isRingCheck

selectedAtomCount

private int selectedAtomCount

ringData

private java.util.BitSet[] ringData

ringCounts

private int[] ringCounts

ringConnections

private int[] ringConnections

bsFound

private java.util.BitSet bsFound

htNested

private java.util.Map<java.lang.String,java.lang.Object> htNested

nNested

private int nNested

nestedBond

private SmilesBond nestedBond

vReturn

private java.util.List<java.lang.Object> vReturn

bsReturn

private java.util.BitSet bsReturn

v

SmilesSearch.VTemp v
Constructor Detail

SmilesSearch

public SmilesSearch()
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

setSelected

void setSelected(java.util.BitSet bs)

setAtomArray

void setAtomArray()

addAtom

SmilesAtom addAtom()

addNested

int addNested(java.lang.String pattern)

setNested

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

getNested

java.lang.Object getNested(int iNested)

getMissingHydrogenCount

int getMissingHydrogenCount()

setRingData

void setRingData(java.util.BitSet bsA)
           throws InvalidSmilesException
Throws:
InvalidSmilesException

getBitSets

private java.lang.Object getBitSets(SmilesSearch search,
                                    boolean firstAtomOnly,
                                    boolean isRingCheck)
                             throws InvalidSmilesException
Throws:
InvalidSmilesException

search

java.lang.Object search(boolean firstAtomOnly)
                  throws InvalidSmilesException
the start of the search. ret will be either a Vector or a BitSet

Parameters:
firstAtomOnly - TODO
Returns:
BitSet or Vector
Throws:
InvalidSmilesException

checkMatch

private final boolean checkMatch(SmilesAtom patternAtom,
                                 int atomNum,
                                 int iAtom,
                                 boolean firstAtomOnly)
                          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.
atomNum - Current atom of the pattern.
iAtom - Atom number of the Jmol atom that is currently tested to match patternAtom.
firstAtomOnly - TODO
Returns:
true to continue or false if oneOnly
Throws:
InvalidSmilesException

continueMatch

private boolean continueMatch(int atomNum,
                              int iAtom,
                              boolean firstAtomOnly)
                       throws InvalidSmilesException
Throws:
InvalidSmilesException

getHydrogens

private JmolNode getHydrogens(JmolNode atom,
                              java.util.BitSet bsHydrogens)

checkPrimitiveAtom

private boolean checkPrimitiveAtom(SmilesAtom patternAtom,
                                   int iAtom)
                            throws InvalidSmilesException
Throws:
InvalidSmilesException

checkMatchBond

private boolean checkMatchBond(SmilesAtom patternAtom,
                               SmilesAtom atom1,
                               SmilesBond patternBond,
                               int iAtom,
                               int matchingAtom,
                               JmolEdge bond)

checkPrimitiveBond

private boolean checkPrimitiveBond(SmilesBond patternBond,
                                   int iAtom1,
                                   int iAtom2,
                                   JmolEdge bond)

isRingBond

static boolean isRingBond(java.lang.StringBuffer ringSets,
                          int i,
                          int j)

checkStereochemistry

private boolean checkStereochemistry()

getX

private void getX(SmilesAtom sAtom,
                  JmolNode[] jn,
                  int pt,
                  boolean haveCoordinates,
                  boolean needHSwitch)

checkStereochemistry

static boolean checkStereochemistry(boolean isNot,
                                    JmolNode atom0,
                                    int chiralClass,
                                    int order,
                                    JmolNode atom1,
                                    JmolNode atom2,
                                    JmolNode atom3,
                                    JmolNode atom4,
                                    JmolNode atom5,
                                    JmolNode atom6,
                                    SmilesSearch.VTemp v)

getJmolAtom

private JmolNode getJmolAtom(int i)

setSmilesBondCoordinates

private void setSmilesBondCoordinates(SmilesAtom sAtom1,
                                      SmilesAtom sAtom2,
                                      int bondType)

setSmilesCoordinates

private boolean setSmilesCoordinates(JmolNode atom,
                                     SmilesAtom sAtom,
                                     SmilesAtom sAtom2,
                                     JmolNode[] cAtoms)

getMappedAtoms

int[] getMappedAtoms(JmolNode atom,
                     JmolNode a2,
                     JmolNode[] cAtoms)

isDiaxial

static boolean isDiaxial(JmolNode atomA,
                         JmolNode atomB,
                         JmolNode atom1,
                         JmolNode atom2,
                         SmilesSearch.VTemp v,
                         float f)

getHandedness

private static int getHandedness(JmolNode a,
                                 JmolNode b,
                                 JmolNode c,
                                 JmolNode pt,
                                 SmilesSearch.VTemp v)
compares the

Parameters:
a -
b -
c -
pt -
v -
Returns:
1 for "@", 2 for "@@"

getPlaneNormals

private static void getPlaneNormals(JmolNode atom1,
                                    JmolNode atom2,
                                    JmolNode atom3,
                                    JmolNode atom4,
                                    SmilesSearch.VTemp v)

distanceToPlane

static float distanceToPlane(javax.vecmath.Vector3f norm,
                             float w,
                             javax.vecmath.Point3f pt)

createTopoMap

void createTopoMap(java.util.BitSet bsAromatic)

setParent

public void setParent(SmilesSearch parent)

getParent

SmilesSearch getParent()