public class CIPChirality
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
(package private) class |
CIPChirality.CIPAtom |
Modifier and Type | Field and Description |
---|---|
(package private) static int |
A_WINS |
(package private) static int |
B_WINS |
(package private) javajs.util.BS |
bsNeedRule
set bits RULE_1a - RULE_6 to indicate a need for that rule based on what is in the model
|
(package private) int |
currentRule
the current rule being applied exhaustively
|
(package private) CIPData |
data
collected bitsets and more specialized SMILES/SMARTS searches and vwr references
|
(package private) boolean |
doTrack
are we tracking pathways for _M.CIPInfo?
|
(package private) boolean |
havePseudoAuxiliary
do we have r or s and so will need to recalculate Mata like/unlike lists in Rule 5?
|
(package private) static int |
IGNORE |
(package private) boolean |
isAux
are we in the midst of auxiliary center creation?
|
(package private) static int |
MAX_PATH
maximum path to display for debugging only using SET DEBUG in Jmol
|
(package private) static int |
NO_CHIRALITY |
(package private) int |
ptIDLogger
incremental pointer providing a unique ID to every CIPAtom for debugging
|
(package private) CIPChirality.CIPAtom |
root
The atom for which we are determining the stereochemistry
|
(package private) static int |
RULE_1a |
(package private) static int |
RULE_1b |
(package private) static int |
RULE_2 |
(package private) static java.lang.String |
RULE_2_nXX_EQ_XX
These elements have 100% natural abundance; we will use their isotope mass number instead of their actual average mass, since there is no difference
|
(package private) static java.lang.String |
RULE_2_REDUCE_ISOTOPE_MASS_NUMBER
These elements have an isotope number that is a bit higher than the average
mass, even though their actual isotope mass is a bit lower.
|
(package private) static int |
RULE_3 |
(package private) static int |
RULE_4a |
(package private) static int |
RULE_4b |
(package private) static int |
RULE_4c |
(package private) static int |
RULE_5 |
(package private) static int |
RULE_6 |
(package private) static java.lang.String[] |
ruleNames |
(package private) static int |
SMALL_RING_MAX
maximum ring size that can have a double bond with no E/Z designation; also
used for identifying aromatic rings and bridgehead nitrogens
|
(package private) static int |
STEREO_BOTH_EZ |
(package private) static int |
STEREO_BOTH_RS |
(package private) static int |
STEREO_E |
(package private) static int |
STEREO_M |
(package private) static int |
STEREO_P |
(package private) static int |
STEREO_R |
(package private) static int |
STEREO_S |
(package private) static int |
STEREO_Z |
(package private) static int |
TIED |
(package private) static int |
UNDETERMINED |
Constructor and Description |
---|
CIPChirality() |
Modifier and Type | Method and Description |
---|---|
private void |
clearSmallRingEZ(SimpleNode[] atoms,
javajs.util.Lst<int[]> lstEZ)
Remove E/Z designations for small-rings double bonds (IUPAC
2013.P-93.5.1.4.1).
|
private void |
getAtomBondChirality(SimpleNode atom,
javajs.util.Lst<int[]> lstEZ,
javajs.util.BS bsToDo)
Get E/Z characteristics for specific atoms.
|
(package private) int |
getAtomChiralityLimited(SimpleNode atom,
CIPChirality.CIPAtom cipAtom,
SimpleNode parentAtom)
Determine R/S or one half of E/Z determination
|
private int |
getBondChiralityLimited(SimpleEdge bond,
SimpleNode a)
Determine the axial or E/Z chirality for this bond, with the given starting
atom a
|
void |
getChiralityForAtoms(CIPData data)
A general determination of chirality that involves ultimately all of Rules
1-6.
|
(package private) int |
getEneChirality(CIPChirality.CIPAtom winner1,
CIPChirality.CIPAtom end1,
CIPChirality.CIPAtom end2,
CIPChirality.CIPAtom winner2,
boolean isAxial,
boolean allowPseudo)
Determine the stereochemistry of a bond
|
private SimpleNode |
getLastCumuleneAtom(SimpleEdge bond,
SimpleNode atom,
int[] nSP2,
SimpleNode[] parents) |
java.lang.String |
getRuleName(int rule) |
(package private) static boolean |
isFirstRow(SimpleNode a)
Check if an atom is 1st row.
|
private boolean |
preFilterAtomList(SimpleNode[] atoms,
javajs.util.BS bsToDo,
javajs.util.BS bsEnes)
Remove unnecessary atoms from the list and let us know if we have alkenes
to consider.
|
private int |
setBondChirality(SimpleNode a,
SimpleNode pa,
SimpleNode pb,
SimpleNode b,
boolean isAxial)
Determine the axial or E/Z chirality for the a-b bond.
|
private void |
setStereoFromSmiles(javajs.util.BS bsHelix,
int stereo,
SimpleNode[] atoms) |
static final java.lang.String RULE_2_nXX_EQ_XX
static final java.lang.String RULE_2_REDUCE_ISOTOPE_MASS_NUMBER
static final int NO_CHIRALITY
static final int TIED
static final int A_WINS
static final int B_WINS
static final int IGNORE
static final int UNDETERMINED
static final int STEREO_R
static final int STEREO_S
static final int STEREO_M
static final int STEREO_P
static final int STEREO_Z
static final int STEREO_E
static final int STEREO_BOTH_RS
static final int STEREO_BOTH_EZ
static final int RULE_1a
static final int RULE_1b
static final int RULE_2
static final int RULE_3
static final int RULE_4a
static final int RULE_4b
static final int RULE_4c
static final int RULE_5
static final int RULE_6
static final java.lang.String[] ruleNames
static final int MAX_PATH
static final int SMALL_RING_MAX
int currentRule
CIPChirality.CIPAtom root
CIPData data
boolean doTrack
boolean isAux
javajs.util.BS bsNeedRule
boolean havePseudoAuxiliary
int ptIDLogger
public java.lang.String getRuleName(int rule)
public void getChiralityForAtoms(CIPData data)
data
- private void setStereoFromSmiles(javajs.util.BS bsHelix, int stereo, SimpleNode[] atoms)
private boolean preFilterAtomList(SimpleNode[] atoms, javajs.util.BS bsToDo, javajs.util.BS bsEnes)
atoms
- bsToDo
- bsEnes
- static boolean isFirstRow(SimpleNode a)
a
- private void clearSmallRingEZ(SimpleNode[] atoms, javajs.util.Lst<int[]> lstEZ)
atoms
- lstEZ
- private void getAtomBondChirality(SimpleNode atom, javajs.util.Lst<int[]> lstEZ, javajs.util.BS bsToDo)
atom
- lstEZ
- bsToDo
- private SimpleNode getLastCumuleneAtom(SimpleEdge bond, SimpleNode atom, int[] nSP2, SimpleNode[] parents)
bond
- atom
- nSP2
- returns the number of sp2 carbons in this alkene or cumuleneparents
- int getAtomChiralityLimited(SimpleNode atom, CIPChirality.CIPAtom cipAtom, SimpleNode parentAtom)
atom
- ignored if a is not null (just checking ene end top priority)cipAtom
- ignored if atom is not nullparentAtom
- null for tetrahedral, other alkene carbon for E/Zprivate int getBondChiralityLimited(SimpleEdge bond, SimpleNode a)
bond
- a
- first atom to consider, or nullprivate int setBondChirality(SimpleNode a, SimpleNode pa, SimpleNode pb, SimpleNode b, boolean isAxial)
a
- pa
- pb
- b
- isAxial
- int getEneChirality(CIPChirality.CIPAtom winner1, CIPChirality.CIPAtom end1, CIPChirality.CIPAtom end2, CIPChirality.CIPAtom winner2, boolean isAxial, boolean allowPseudo)
winner1
- end1
- end2
- winner2
- isAxial
- if an odd-cumuleneallowPseudo
- if we are working from a high-level bond stereochemistry method