Package org.jmol.smiles
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 Summary
Fields Modifier and Type Field Description (package private) booleanaromaticDouble(package private) booleanaromaticOpen(package private) booleanaromaticPlanar(package private) booleanaromaticStrict(package private) booleanasVector(package private) java.lang.StringatropKeys(package private) BSbsAromatic(package private) BSbsAromatic5(package private) BSbsAromatic6private BSbsCheckprivate BSbsFoundprivate BSbsReturnprivate BSbsSelected(package private) booleanexitFirstMatch(package private) intflags(package private) booleangetMaps(package private) booleangroupByModel(package private) booleanhaveBondStereochemistry(package private) booleanhaveComponents(package private) booleanhaveSelected(package private) booleanhaveTopoprivate java.util.Map<java.lang.String,java.lang.Object>htNested(package private) booleanignoreAtomClass(package private) booleanignoreStereochemistry(package private) booleaninvertStereochemistry(package private) booleanisNormalizedprivate booleanisRingCheckprivate booleanisSilent(package private) booleanisSmarts(package private) booleanisTopology(package private) SmilesAtomlastChainAtom(package private) javajs.util.Lst<SmilesMeasure>measures(package private) intnDouble(package private) booleanneedAromatic(package private) booleanneedRingData(package private) booleanneedRingMembershipsprivate SmilesBondnestedBondprivate intnNested(package private) booleannoAromatic(package private) java.lang.Stringpattern(package private) booleanpatternAromaticSet in set() to indicate to SmilesMatcher that the string already has aromatic atoms indicated and so no aromaticity model should be applied.(package private) SmilesAtom[]patternAtoms(package private) booleanpatternBioSequenceprivate int[]ringConnections(package private) intringCountprivate int[]ringCountsprivate BS[]ringData(package private) intringDataMax(package private) javajs.util.SBringSetsprivate intselectedAtomCount(package private) booleansetAtropicity(package private) SmilesStereostereoprivate static intSUBMODE_NESTEDprivate static intSUBMODE_ORprivate static intSUBMODE_RINGCHECK(package private) SmilesSearch[]subSearches(package private) inttargetAtomCount(package private) Node[]targetAtoms(package private) SmilesSearchtop(package private) VTempvprivate javajs.util.Lst<java.lang.Object>vReturn-
Fields inherited from class org.jmol.util.JmolMolecule
ac, altElementCounts, altElementMax, atomList, elementCounts, elementNumberMax, firstAtomIndex, indexInModel, mf, modelIndex, moleculeIndex, nElements, nodes
-
-
Constructor Summary
Constructors Constructor Description SmilesSearch()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) SmilesAtomaddAtom()(package private) static intaddFlags(int flags, java.lang.String strFlags)(package private) intaddNested(java.lang.String pattern)(package private) SmilesAtomappendAtom(SmilesAtom sAtom)private booleancheckMatchBond(SmilesAtom patternAtom, SmilesAtom atom1, SmilesBond patternBond, int iAtom, int matchingAtom, Edge bond)private booleancheckPrimitiveAtom(SmilesAtom patternAtom, int iTarget)private booleancheckPrimitiveBond(SmilesBond patternBond, int iAtom1, int iAtom2, Edge bond)private booleancheckStereochemistry()(package private) voidclear()private voidclearBsFound(int iAtom)(package private) voidcreateTopoMap(BS bsAro)private booleandoCheckAtom(int j)(package private) NodefindImplicitHydrogen(Node atom)private intgetAtropIndex(SmilesBond b, boolean isFirst)(package private) intgetMissingHydrogenCount()(package private) java.lang.ObjectgetNested(int iNested)(package private) static floatgetNormalThroughPoints(Node pointA, Node pointB, Node pointC, javajs.util.V3 vNorm, javajs.util.V3 vAB, javajs.util.V3 vAC)calculates a normal to a plane for three points and returns a signed distance(package private) voidgetRingData(javajs.util.Lst<BS>[] vRings, boolean needRingData, boolean doTestAromatic)(package private) voidgetSelections()htNested may contain $(select xxxx) primitives.(package private) static booleanisRingBond(javajs.util.SB ringSets, int i, int j)private booleannextPatternAtom(int atomNum, int iAtom, boolean firstAtomOnly, int c)private booleannextTargetAtom(SmilesAtom patternAtom, Node jmolAtom, int atomNum, int iAtom, boolean firstAtomOnly, int c)Check for a specific match of a model set atom with a pattern position(package private) static voidnormalizeAromaticity(SmilesAtom[] atoms, BS bsAromatic, int flags)create a temporary object to generate the aromaticity in a SMILES pattern for which there is no explicit aromaticity (Kekule) Not applicable to SMARTS(package private) java.lang.Objectsearch()the start of the search.private java.lang.Objectsearch2(boolean firstAtomOnly)(package private) voidset()(package private) voidsetFlags(int flags)(package private) voidsetNested(int iNested, java.lang.Object o)(package private) voidsetRingData(BS bsA, javajs.util.Lst<BS>[] vRings, boolean doProcessAromatic)Sets up all aromatic and ring data.(package private) voidsetSelected(BS bs)(package private) voidsetTop(SmilesSearch parent)private voidsetTopoCoordinates(SmilesAtom dbAtom1, SmilesAtom dbAtom2, SmilesAtom dbAtom1a, SmilesAtom dbAtom2a, int bondType)(package private) java.lang.Objectsubsearch(SmilesSearch search, int submode)java.lang.StringtoString()-
Methods inherited from class org.jmol.util.JmolMolecule
addMolecule, getBitSetForMF, getBranchBitSet, getMolecularFormula, getMolecularFormulaAtoms, getMolecules
-
-
-
-
Field Detail
-
isSmarts
boolean isSmarts
-
top
SmilesSearch top
-
pattern
java.lang.String pattern
-
patternAtoms
SmilesAtom[] patternAtoms
-
targetAtoms
Node[] targetAtoms
-
targetAtomCount
int targetAtomCount
-
bsSelected
private BS bsSelected
-
v
VTemp v
-
aromaticOpen
boolean aromaticOpen
-
aromaticStrict
boolean aromaticStrict
-
aromaticPlanar
boolean aromaticPlanar
-
aromaticDouble
boolean aromaticDouble
-
noAromatic
boolean noAromatic
-
ignoreAtomClass
boolean ignoreAtomClass
-
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.SB ringSets
-
ringCount
int ringCount
-
measures
javajs.util.Lst<SmilesMeasure> measures
-
flags
int flags
-
bsAromatic
BS bsAromatic
-
bsAromatic5
BS bsAromatic5
-
bsAromatic6
BS bsAromatic6
-
atropKeys
java.lang.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 BS[] ringData
-
ringCounts
private int[] ringCounts
-
ringConnections
private int[] ringConnections
-
bsFound
private BS bsFound
-
htNested
private java.util.Map<java.lang.String,java.lang.Object> htNested
-
nNested
private int nNested
-
nestedBond
private SmilesBond nestedBond
-
vReturn
private javajs.util.Lst<java.lang.Object> vReturn
-
bsReturn
private BS bsReturn
-
bsCheck
private BS bsCheck
-
SUBMODE_NESTED
private static final int SUBMODE_NESTED
- See Also:
- Constant Field Values
-
SUBMODE_RINGCHECK
private static final int SUBMODE_RINGCHECK
- See Also:
- Constant Field Values
-
SUBMODE_OR
private static final int SUBMODE_OR
- See Also:
- Constant Field Values
-
-
Method Detail
-
setTop
void setTop(SmilesSearch parent)
-
addFlags
static final int addFlags(int flags, java.lang.String strFlags)
-
setFlags
void setFlags(int flags)
-
set
void set() throws InvalidSmilesException
- Throws:
InvalidSmilesException
-
setSelected
void setSelected(BS bs)
-
addAtom
SmilesAtom addAtom()
-
appendAtom
SmilesAtom appendAtom(SmilesAtom sAtom)
-
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(BS bsA, javajs.util.Lst<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<BS>[] vRings, boolean needRingData, boolean doTestAromatic) throws InvalidSmilesException
- Throws:
InvalidSmilesException
-
subsearch
java.lang.Object subsearch(SmilesSearch search, int submode) throws InvalidSmilesException
- Parameters:
search-submode-- Returns:
- Object
- Throws:
InvalidSmilesException
-
search
java.lang.Object search() throws InvalidSmilesExceptionthe start of the search. ret will be either a Vector or a BitSet- Returns:
- BitSet or Vector
- Throws:
InvalidSmilesException
-
search2
private java.lang.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 matchpatternAtom.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)
-
isRingBond
static boolean isRingBond(javajs.util.SB ringSets, int i, int j)
-
checkStereochemistry
private boolean checkStereochemistry()
-
getAtropIndex
private int getAtropIndex(SmilesBond b, boolean isFirst)
-
setTopoCoordinates
private void setTopoCoordinates(SmilesAtom dbAtom1, SmilesAtom dbAtom2, SmilesAtom dbAtom1a, SmilesAtom dbAtom2a, int bondType)
-
createTopoMap
void createTopoMap(BS bsAro) throws InvalidSmilesException
- Parameters:
bsAro- null for molecular formula calculation only- Throws:
InvalidSmilesException
-
normalizeAromaticity
static void normalizeAromaticity(SmilesAtom[] atoms, BS bsAromatic, int flags) 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.
-
getNormalThroughPoints
static float getNormalThroughPoints(Node pointA, Node pointB, Node pointC, javajs.util.V3 vNorm, javajs.util.V3 vAB, javajs.util.V3 vAC)
calculates a normal to a plane for three points and returns a signed distance- Parameters:
pointA-pointB-pointC-vNorm-vAB-vAC-- Returns:
- a signed distance
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-