Package org.jmol.smiles
Class SmilesGenerator
- java.lang.Object
-
- org.jmol.smiles.SmilesGenerator
-
public class SmilesGenerator extends java.lang.ObjectDouble bond, allene, square planar and tetrahedral stereochemistry only not octahedral or trigonal bipyramidal. No attempt at canonicalization -- unnecessary for model searching. see SmilesMatcher and package.html for details Bob Hanson, Jmol 12.0.RC17 2010.06.5
-
-
Field Summary
Fields Modifier and Type Field Description private intacprivate booleanaddAtomCommentprivate booleanaromaticDoubleprivate javajs.util.Lst<BS>aromaticRingsprivate Node[]atempprivate Node[]atomsprivate BSbsAromaticprivate BSbsBondsDnprivate BSbsBondsUpprivate BSbsIncludingHprivate BSbsRingKeysprivate BSbsSelectedprivate BSbsToDoprivate intchainCheckprivate booleanexplicitHprivate intflags(package private) booleangetAromaticprivate java.util.Map<java.lang.String,java.lang.Object[]>htRingsprivate java.util.Map<java.lang.String,java.lang.Object[]>htRingsSequenceprivate intiHypervalentprivate booleanisPolyhedralprivate booleannoBioCommentprivate booleannoStereoprivate intnPairsprivate intnPairsMaxprivate booleanopenSMILESjavajs.util.P3polySmilesCenterprivate NodeprevAtomprivate Node[]prevSp2Atomsprivate javajs.util.SBringSetsprivate SmilesMatchersmprivate SmilesStereosmilesStereoprivate booleantopologyOnlyprivate VTempvTemp
-
Constructor Summary
Constructors Constructor Description SmilesGenerator()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddBracketedBioName(javajs.util.SB sb, Node atom, java.lang.String atomName, boolean addComment)private java.lang.StringaddStereoCheck(int level, int atomIndex, Node atom, java.lang.String s, BS bsDone)checks a group and either adds a new group to the growing check string or returns nullprivate java.lang.StringcheckStereoPairs(Node atom, int atomIndex, Node[] stereo, int stereoFlag)private voiddumpRingKeys(javajs.util.SB sb, java.util.Map<java.lang.String,java.lang.Object[]> ht)private voidgenerateRingData()get aromaticity, ringSets, and aromaticRings fields so that we can assign / and \ and also provide inter-aromatic single bondprivate java.lang.StringgetBioSmiles(BS bsSelected, java.lang.String comment, int flags)private java.lang.StringgetBondOrder(Edge bondPrev, int atomIndex, int prevIndex, boolean isAromatic)private chargetBondStereochemistry(Edge bond, Node atomFrom)Retrieves the saved character based on the index of the bond.private java.lang.StringgetRingCache(int i0, int i1, java.util.Map<java.lang.String,java.lang.Object[]> ht)protected static java.lang.StringgetRingKey(int i0, int i1)private java.lang.StringgetRingPointer(int i)(package private) java.lang.StringgetSmiles(SmilesMatcher sm, Node[] atoms, int ac, BS bsSelected, java.lang.String comment, int flags)private NodegetSmilesAt(javajs.util.SB sb, Node atom, boolean allowConnectionsToOutsideWorld, boolean allowBranches, boolean forceBrackets)private java.lang.StringgetSmilesComponent(Node atom, BS bs, boolean allowBioResidues, boolean allowConnectionsToOutsideWorld, boolean forceBrackets)creates a valid SMILES string from a model.private booleanisSameAromaticRing(int a1, int a2)private voidsetBondDirections()Creates global BitSets bsBondsUp and bsBondsDown.(package private) voidsortBonds(Node atom, Node refAtom, javajs.util.P3 center)private java.lang.StringsortInorganic(Node atom, javajs.util.Lst<Edge> v, VTemp vTemp)We must sort the bond vector such that a diaxial pair is first and last.private voidswapArray(Node[] a, int i0, int i1, int i2)swap slices of an array [i0 i1) with [i1 i2)
-
-
-
Field Detail
-
atoms
private Node[] atoms
-
ac
private int ac
-
bsSelected
private BS bsSelected
-
bsAromatic
private BS bsAromatic
-
flags
private int flags
-
explicitH
private boolean explicitH
-
ringSets
private javajs.util.SB ringSets
-
vTemp
private VTemp vTemp
-
nPairs
private int nPairs
-
nPairsMax
private int nPairsMax
-
bsBondsUp
private BS bsBondsUp
-
bsBondsDn
private BS bsBondsDn
-
bsToDo
private BS bsToDo
-
prevAtom
private Node prevAtom
-
prevSp2Atoms
private Node[] prevSp2Atoms
-
htRingsSequence
private java.util.Map<java.lang.String,java.lang.Object[]> htRingsSequence
-
htRings
private java.util.Map<java.lang.String,java.lang.Object[]> htRings
-
bsRingKeys
private BS bsRingKeys
-
bsIncludingH
private BS bsIncludingH
-
topologyOnly
private boolean topologyOnly
-
getAromatic
boolean getAromatic
-
addAtomComment
private boolean addAtomComment
-
noBioComment
private boolean noBioComment
-
aromaticDouble
private boolean aromaticDouble
-
noStereo
private boolean noStereo
-
openSMILES
private boolean openSMILES
-
polySmilesCenter
public javajs.util.P3 polySmilesCenter
-
smilesStereo
private SmilesStereo smilesStereo
-
isPolyhedral
private boolean isPolyhedral
-
aromaticRings
private javajs.util.Lst<BS> aromaticRings
-
sm
private SmilesMatcher sm
-
iHypervalent
private int iHypervalent
-
atemp
private Node[] atemp
-
chainCheck
private int chainCheck
-
-
Method Detail
-
getSmiles
java.lang.String getSmiles(SmilesMatcher sm, Node[] atoms, int ac, BS bsSelected, java.lang.String comment, int flags) throws InvalidSmilesException
- Throws:
InvalidSmilesException
-
getBioSmiles
private java.lang.String getBioSmiles(BS bsSelected, java.lang.String comment, int flags) throws InvalidSmilesException
- Throws:
InvalidSmilesException
-
addBracketedBioName
private void addBracketedBioName(javajs.util.SB sb, Node atom, java.lang.String atomName, boolean addComment)
-
getSmilesComponent
private java.lang.String getSmilesComponent(Node atom, BS bs, boolean allowBioResidues, boolean allowConnectionsToOutsideWorld, boolean forceBrackets) throws InvalidSmilesException
creates a valid SMILES string from a model. TODO: stereochemistry other than square planar and tetrahedral- Parameters:
atom-bs-allowBioResidues-allowConnectionsToOutsideWorld-forceBrackets-- Returns:
- SMILES
- Throws:
InvalidSmilesException
-
generateRingData
private void generateRingData() throws InvalidSmilesExceptionget aromaticity, ringSets, and aromaticRings fields so that we can assign / and \ and also provide inter-aromatic single bond- Throws:
InvalidSmilesException
-
getBondStereochemistry
private char getBondStereochemistry(Edge bond, Node atomFrom)
Retrieves the saved character based on the index of the bond. bsBondsUp and bsBondsDown are global fields.- Parameters:
bond-atomFrom-- Returns:
- the correct character '/', '\\', '\0' (meaning "no stereochemistry")
-
setBondDirections
private void setBondDirections()
Creates global BitSets bsBondsUp and bsBondsDown. Noniterative.
-
getSmilesAt
private Node getSmilesAt(javajs.util.SB sb, Node atom, boolean allowConnectionsToOutsideWorld, boolean allowBranches, boolean forceBrackets)
-
swapArray
private void swapArray(Node[] a, int i0, int i1, int i2)
swap slices of an array [i0 i1) with [i1 i2)- Parameters:
a-i0-i1-i2-
-
getBondOrder
private java.lang.String getBondOrder(Edge bondPrev, int atomIndex, int prevIndex, boolean isAromatic)
- Parameters:
bondPrev-atomIndex-prevIndex-isAromatic-- Returns:
- "-", "=", "#", "$", or ""
-
isSameAromaticRing
private boolean isSameAromaticRing(int a1, int a2)
-
sortInorganic
private java.lang.String sortInorganic(Node atom, javajs.util.Lst<Edge> v, VTemp vTemp)
We must sort the bond vector such that a diaxial pair is first and last. Then we assign stereochemistry based on what is left. The assignment is not made if there are no diaxial groups or with octahedral if there are fewer than three or trigonal bipyramidal with no axial ligands.- Parameters:
atom-v-vTemp-- Returns:
- "@" or "@@" or ""
-
checkStereoPairs
private java.lang.String checkStereoPairs(Node atom, int atomIndex, Node[] stereo, int stereoFlag)
-
addStereoCheck
private java.lang.String addStereoCheck(int level, int atomIndex, Node atom, java.lang.String s, BS bsDone)checks a group and either adds a new group to the growing check string or returns null- Parameters:
level-atomIndex-atom-s-bsDone-- Returns:
- null if duplicate
-
getRingCache
private java.lang.String getRingCache(int i0, int i1, java.util.Map<java.lang.String,java.lang.Object[]> ht)
-
getRingPointer
private java.lang.String getRingPointer(int i)
-
dumpRingKeys
private void dumpRingKeys(javajs.util.SB sb, java.util.Map<java.lang.String,java.lang.Object[]> ht)
-
getRingKey
protected static java.lang.String getRingKey(int i0, int i1)
-
-