public class SmilesSearch extends JmolMolecule
Modifier and Type | Field and Description |
---|---|
(package private) boolean |
aromaticDouble |
(package private) boolean |
aromaticOpen |
(package private) boolean |
aromaticPlanar |
(package private) boolean |
aromaticStrict |
(package private) boolean |
asVector |
(package private) String |
atropKeys |
(package private) BS |
bsAromatic |
(package private) BS |
bsAromatic5 |
(package private) BS |
bsAromatic6 |
private BS |
bsCheck |
private BS |
bsFound |
private BS |
bsReturn |
private BS |
bsSelected |
(package private) boolean |
exitFirstMatch |
(package private) int |
flags |
(package private) boolean |
getMaps |
(package private) boolean |
groupByModel |
(package private) boolean |
haveBondStereochemistry |
(package private) boolean |
haveComponents |
(package private) boolean |
haveSelected |
(package private) boolean |
haveTopo |
private Map<String,Object> |
htNested |
(package private) boolean |
ignoreAtomClass |
(package private) boolean |
ignoreStereochemistry |
(package private) boolean |
invertStereochemistry |
(package private) boolean |
isNormalized |
private boolean |
isRingCheck |
private boolean |
isSilent |
(package private) boolean |
isSmarts |
(package private) boolean |
isTopology |
(package private) SmilesAtom |
lastChainAtom |
(package private) javajs.util.Lst<SmilesMeasure> |
measures |
(package private) int |
nDouble |
(package private) boolean |
needAromatic |
(package private) boolean |
needRingData |
(package private) boolean |
needRingMemberships |
private SmilesBond |
nestedBond |
private int |
nNested |
(package private) boolean |
noAromatic |
(package private) String |
pattern |
(package private) 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.
|
(package private) SmilesAtom[] |
patternAtoms |
(package private) boolean |
patternBioSequence |
private int[] |
ringConnections |
(package private) int |
ringCount |
private int[] |
ringCounts |
private BS[] |
ringData |
(package private) int |
ringDataMax |
(package private) javajs.util.SB |
ringSets |
private int |
selectedAtomCount |
(package private) boolean |
setAtropicity |
(package private) SmilesStereo |
stereo |
private static int |
SUBMODE_NESTED |
private static int |
SUBMODE_OR |
private static int |
SUBMODE_RINGCHECK |
(package private) SmilesSearch[] |
subSearches |
(package private) int |
targetAtomCount |
(package private) Node[] |
targetAtoms |
(package private) SmilesSearch |
top |
(package private) VTemp |
v |
private javajs.util.Lst<Object> |
vReturn |
ac, altElementCounts, altElementMax, atomList, elementCounts, elementNumberMax, firstAtomIndex, indexInModel, mf, modelIndex, moleculeIndex, nElements, nodes
Constructor and Description |
---|
SmilesSearch() |
Modifier and Type | Method and Description |
---|---|
(package private) SmilesAtom |
addAtom() |
(package private) static int |
addFlags(int flags,
String strFlags) |
(package private) int |
addNested(String pattern) |
(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 |
checkStereochemistry() |
(package private) void |
clear() |
private void |
clearBsFound(int iAtom) |
(package private) void |
createTopoMap(BS bsAro) |
private boolean |
doCheckAtom(int j) |
(package private) Node |
findImplicitHydrogen(Node atom) |
private int |
getAtropIndex(SmilesBond b,
boolean isFirst) |
(package private) int |
getMissingHydrogenCount() |
(package private) Object |
getNested(int iNested) |
(package private) 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
|
(package private) void |
getRingData(javajs.util.Lst<BS>[] vRings,
boolean needRingData,
boolean doTestAromatic) |
(package private) void |
getSelections()
htNested may contain $(select xxxx) primitives.
|
(package private) static boolean |
isRingBond(javajs.util.SB ringSets,
int i,
int j) |
private boolean |
nextPatternAtom(int atomNum,
int iAtom,
boolean firstAtomOnly,
int c) |
private 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) static void |
normalizeAromaticity(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) 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 |
setNested(int iNested,
Object o) |
(package private) void |
setRingData(BS bsA,
javajs.util.Lst<BS>[] vRings,
boolean doProcessAromatic)
Sets up all aromatic and ring data.
|
(package private) void |
setSelected(BS bs) |
(package private) void |
setTop(SmilesSearch parent) |
private void |
setTopoCoordinates(SmilesAtom dbAtom1,
SmilesAtom dbAtom2,
SmilesAtom dbAtom1a,
SmilesAtom dbAtom2a,
int bondType) |
(package private) Object |
subsearch(SmilesSearch search,
int submode) |
String |
toString() |
addMolecule, getBitSetForMF, getBranchBitSet, getMolecularFormula, getMolecularFormulaAtoms, getMolecules
boolean isSmarts
SmilesSearch top
String pattern
SmilesAtom[] patternAtoms
Node[] targetAtoms
int targetAtomCount
private BS bsSelected
VTemp v
boolean aromaticOpen
boolean aromaticStrict
boolean aromaticPlanar
boolean aromaticDouble
boolean noAromatic
boolean ignoreAtomClass
boolean ignoreStereochemistry
boolean invertStereochemistry
boolean exitFirstMatch
boolean groupByModel
boolean setAtropicity
boolean patternAromatic
boolean haveTopo
boolean isTopology
boolean patternBioSequence
SmilesSearch[] subSearches
boolean haveSelected
boolean haveBondStereochemistry
SmilesStereo stereo
boolean needRingData
boolean needAromatic
boolean needRingMemberships
int nDouble
int ringDataMax
javajs.util.SB ringSets
int ringCount
javajs.util.Lst<SmilesMeasure> measures
int flags
BS bsAromatic
BS bsAromatic5
BS bsAromatic6
String atropKeys
SmilesAtom lastChainAtom
boolean asVector
boolean getMaps
boolean isNormalized
boolean haveComponents
private boolean isSilent
private boolean isRingCheck
private int selectedAtomCount
private BS[] ringData
private int[] ringCounts
private int[] ringConnections
private BS bsFound
private int nNested
private SmilesBond nestedBond
private javajs.util.Lst<Object> vReturn
private BS bsReturn
private BS bsCheck
private static final int SUBMODE_NESTED
private static final int SUBMODE_RINGCHECK
private static final int SUBMODE_OR
void setTop(SmilesSearch parent)
static final int addFlags(int flags, String strFlags)
void setFlags(int flags)
void set() throws InvalidSmilesException
InvalidSmilesException
void setSelected(BS bs)
SmilesAtom addAtom()
SmilesAtom appendAtom(SmilesAtom sAtom)
int addNested(String pattern)
void clear()
private void clearBsFound(int iAtom)
void setNested(int iNested, Object o)
Object getNested(int iNested)
int getMissingHydrogenCount()
void setRingData(BS bsA, javajs.util.Lst<BS>[] vRings, boolean doProcessAromatic) throws InvalidSmilesException
bsA
- vRings
- doProcessAromatic
- InvalidSmilesException
void getRingData(javajs.util.Lst<BS>[] vRings, boolean needRingData, boolean doTestAromatic) throws InvalidSmilesException
InvalidSmilesException
Object subsearch(SmilesSearch search, int submode) throws InvalidSmilesException
search
- submode
- InvalidSmilesException
Object search() throws InvalidSmilesException
InvalidSmilesException
private Object search2(boolean firstAtomOnly) throws InvalidSmilesException
InvalidSmilesException
private boolean nextPatternAtom(int atomNum, int iAtom, boolean firstAtomOnly, int c) throws InvalidSmilesException
InvalidSmilesException
private boolean doCheckAtom(int j)
private final boolean nextTargetAtom(SmilesAtom patternAtom, Node jmolAtom, int atomNum, int iAtom, boolean firstAtomOnly, int c) throws InvalidSmilesException
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
- InvalidSmilesException
private boolean checkPrimitiveAtom(SmilesAtom patternAtom, int iTarget) throws InvalidSmilesException
patternAtom
- iTarget
- InvalidSmilesException
private boolean checkMatchBond(SmilesAtom patternAtom, SmilesAtom atom1, SmilesBond patternBond, int iAtom, int matchingAtom, Edge bond)
private boolean checkPrimitiveBond(SmilesBond patternBond, int iAtom1, int iAtom2, Edge bond)
static boolean isRingBond(javajs.util.SB ringSets, int i, int j)
private boolean checkStereochemistry()
private int getAtropIndex(SmilesBond b, boolean isFirst)
private void setTopoCoordinates(SmilesAtom dbAtom1, SmilesAtom dbAtom2, SmilesAtom dbAtom1a, SmilesAtom dbAtom2a, int bondType)
void createTopoMap(BS bsAro) throws InvalidSmilesException
bsAro
- null for molecular formula calculation onlyInvalidSmilesException
static void normalizeAromaticity(SmilesAtom[] atoms, BS bsAromatic, int flags) throws InvalidSmilesException
atoms
- bsAromatic
- flags
- InvalidSmilesException
void getSelections()
static float getNormalThroughPoints(Node pointA, Node pointB, Node pointC, javajs.util.V3 vNorm, javajs.util.V3 vAB, javajs.util.V3 vAC)
pointA
- pointB
- pointC
- vNorm
- vAB
- vAC
-