Package org.jmol.smiles
Class SmilesSearch
java.lang.Object
org.jmol.util.JmolMolecule
org.jmol.smiles.SmilesSearch
A class to build and carry out a SMILES or SMARTS match
- Author:
- Bob Hanson hansonr@stolaf.edu
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
private static final int
(package private) String
boolean
(package private) javajs.util.BS
(package private) javajs.util.BS
(package private) javajs.util.BS
private javajs.util.BS
private javajs.util.BS
private javajs.util.BS
private javajs.util.BS
private javajs.util.BS
(package private) boolean
(package private) int
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
private boolean
private boolean
(package private) boolean
(package private) boolean
(package private) SmilesAtom
boolean
(package private) javajs.util.Lst<SmilesMeasure>
(package private) int
(package private) boolean
(package private) boolean
(package private) boolean
private SmilesBond
private int
(package private) boolean
(package private) String
(package private) boolean
Set 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[]
(package private) boolean
(package private) SmilesAtom
indicates that we have [XxPHn] with no connected atomsprivate int[]
(package private) int
private int[]
private javajs.util.BS[]
(package private) int
(package private) javajs.util.Lst<javajs.util.BS>
private int
(package private) boolean
(package private) SmilesStereo
private static final int
private static final int
private static final int
(package private) SmilesSearch[]
(package private) int
(package private) Node[]
(package private) SmilesSearch
private javajs.util.Lst<javajs.util.BS>
(package private) VTemp
private javajs.util.Lst<Object>
Fields inherited from class org.jmol.util.JmolMolecule
ac, altElementCounts, altElementMax, atNos, atomList, elementCounts, elementNumberMax, firstAtomIndex, indexInModel, mf, modelIndex, moleculeIndex, nElements, nodes
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) SmilesAtom
addAtom()
(package private) static final int
(package private) int
(package private) SmilesAtom
appendAtom
(SmilesAtom sAtom) private boolean
checkMatchBond
(SmilesAtom patternAtom, SmilesAtom atom1, SmilesBond patternBond, int iAtom, int matchingAtom, Edge bond) private boolean
checkPrimitiveAtom
(SmilesAtom patternAtom, int iTarget) private boolean
checkPrimitiveBond
(SmilesBond patternBond, int iAtom1, int iAtom2, Edge bond) private boolean
(package private) void
clear()
private void
clearBsFound
(int iAtom) (package private) void
createTopoMap
(javajs.util.BS bsAro) private boolean
doCheckAtom
(int j) (package private) Node
findImplicitHydrogen
(Node atom) private String
private javajs.util.BS
(package private) int
(package private) Object
getNested
(int iNested) (package private) void
getRingData
(javajs.util.Lst<javajs.util.BS>[] vRings, boolean needRingData, boolean doTestAromatic) (package private) void
htNested may contain $(select xxxx) primitives.(package private) static boolean
isRingBond
(javajs.util.Lst<javajs.util.BS> ringSets, javajs.util.BS bsAromaticRings, int a1, int a2) private boolean
nextPatternAtom
(int atomNum, int iAtom, boolean firstAtomOnly, int c) private final boolean
nextTargetAtom
(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) void
normalizeAromaticity
(javajs.util.BS bsAromatic) 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) Object
search()
the start of the search.private Object
search2
(boolean firstAtomOnly) (package private) void
set()
(package private) void
setFlags
(int flags) (package private) void
(package private) void
setRingData
(javajs.util.BS bsA, javajs.util.Lst<javajs.util.BS>[] vRings, boolean doProcessAromatic) Sets up all aromatic and ring data.(package private) void
setSelected
(javajs.util.BS bs) (package private) void
setTop
(SmilesSearch parent) private static void
setTopoCoordinates
(SmilesAtom dbAtom1, SmilesAtom dbAtom2, SmilesAtom dbAtom1a, SmilesAtom dbAtom2a, int bondType) (package private) Object
subsearch
(SmilesSearch search, int submode) toString()
Methods inherited from class org.jmol.util.JmolMolecule
addMolecule, getBitSetForMF, getBranchBitSet, getBranchesForInversion, getMolecularFormula, getMolecularFormulaAtoms, getMolecularFormulaImpl, getMolecules
-
Field Details
-
isSmarts
boolean isSmarts -
top
SmilesSearch top -
pattern
String pattern -
patternAtoms
SmilesAtom[] patternAtoms -
targetAtoms
Node[] targetAtoms -
targetAtomCount
int targetAtomCount -
bsSelected
private javajs.util.BS bsSelected -
v
VTemp 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 patternAromaticSet 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
-
nNested
private int nNested -
nestedBond
-
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
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
-
addFlags
-
setFlags
void setFlags(int flags) -
set
- Throws:
InvalidSmilesException
-
setSelected
void setSelected(javajs.util.BS bs) -
addAtom
SmilesAtom addAtom() -
appendAtom
-
addNested
-
clear
void clear() -
clearBsFound
private void clearBsFound(int iAtom) -
setNested
-
getNested
-
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
- 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
- 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
-
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
-
setTopoCoordinates
private static void setTopoCoordinates(SmilesAtom dbAtom1, SmilesAtom dbAtom2, SmilesAtom dbAtom1a, SmilesAtom dbAtom2a, int bondType) -
createTopoMap
- Parameters:
bsAro
- null for molecular formula calculation only- Throws:
InvalidSmilesException
-
normalizeAromaticity
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
-
toString
-