org.jmol.smiles
Class SmilesSearch

java.lang.Object
  extended by org.jmol.api.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)  BitSet bsAromatic
           
private  BitSet bsFound
           
(package private)  BitSet bsRequired
           
private  BitSet bsReturn
           
private  BitSet bsSelected
           
(package private)  boolean firstMatchOnly
           
(package private)  boolean getMaps
           
(package private)  boolean haveAtomStereochemistry
           
(package private)  boolean haveBondStereochemistry
           
(package private)  boolean haveSelected
           
private  Hashtable 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)  List 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)  String pattern
           
(package private)  SmilesAtom[] patternAtoms
           
private  int[] ringConnections
           
private  int[] ringCounts
           
private  BitSet[] ringData
           
(package private)  int ringDataMax
           
(package private)  StringBuffer ringSets
           
private  int selectedAtomCount
           
(package private)  SmilesSearch[] subSearches
           
(package private)  SmilesSearch.VTemp v
           
private  List vReturn
           
 
Fields inherited from class org.jmol.api.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(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(SmilesAtom patternAtom, SmilesAtom atom1, SmilesBond patternBond, int iAtom, int matchingAtom, 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(BitSet bsAromatic)
           
(package private) static float distanceToPlane(Vector3f norm, float w, Point3f pt)
           
private  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, BitSet bsHydrogens)
           
private  JmolNode getJmolAtom(int i)
           
(package private)  int[] getMappedAtoms(JmolNode atom, JmolNode a2, JmolNode[] cAtoms)
           
(package private)  int getMissingHydrogenCount()
           
(package private)  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, SmilesAtom sAtom2, 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(StringBuffer ringSets, int i, int j)
           
(package private)  Object search(boolean firstAtomOnly)
          the start of the search.
(package private)  void setAtomArray()
           
(package private)  void setNested(int iNested, Object o)
           
 void setParent(SmilesSearch parent)
           
(package private)  void setRingData(BitSet bsA)
           
(package private)  void setSelected(BitSet bs)
           
private  void setSmilesBondCoordinates(SmilesAtom sAtom1, SmilesAtom sAtom2, int bondType)
           
private  boolean setSmilesCoordinates(JmolNode atom, SmilesAtom sAtom, SmilesAtom sAtom2, JmolNode[] cAtoms)
           
 String toString()
           
 
Methods inherited from class org.jmol.api.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

String pattern

jmolAtoms

JmolNode[] jmolAtoms

jmolAtomCount

int jmolAtomCount

bsSelected

private BitSet bsSelected

bsRequired

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

List measures

noAromatic

boolean noAromatic

ignoreStereochemistry

boolean ignoreStereochemistry

ringSets

StringBuffer ringSets

bsAromatic

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 BitSet[] ringData

ringCounts

private int[] ringCounts

ringConnections

private int[] ringConnections

bsFound

private BitSet bsFound

htNested

private Hashtable htNested

nNested

private int nNested

nestedBond

private SmilesBond nestedBond

vReturn

private List vReturn

bsReturn

private BitSet bsReturn

v

SmilesSearch.VTemp v
Constructor Detail

SmilesSearch

public SmilesSearch()
Method Detail

toString

public String toString()
Overrides:
toString in class Object

setSelected

void setSelected(BitSet bs)

setAtomArray

void setAtomArray()

addAtom

SmilesAtom addAtom()

addNested

int addNested(String pattern)

setNested

void setNested(int iNested,
               Object o)

getNested

Object getNested(int iNested)

getMissingHydrogenCount

int getMissingHydrogenCount()

setRingData

void setRingData(BitSet bsA)
           throws InvalidSmilesException
Throws:
InvalidSmilesException

getBitSets

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

search

Object search(boolean firstAtomOnly)
        throws InvalidSmilesException
the start of the search. ret will be either a List 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,
                              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(SmilesAtom patternAtom,
                                   SmilesAtom atom1,
                                   SmilesBond patternBond,
                                   int iAtom,
                                   int matchingAtom,
                                   JmolEdge bond)

isRingBond

static boolean isRingBond(StringBuffer ringSets,
                          int i,
                          int j)

checkStereochemistry

private boolean checkStereochemistry()

getX

private void getX(SmilesAtom sAtom,
                  SmilesAtom sAtom2,
                  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(Vector3f norm,
                             float w,
                             Point3f pt)

createTopoMap

void createTopoMap(BitSet bsAromatic)

setParent

public void setParent(SmilesSearch parent)

getParent

SmilesSearch getParent()