Revision: 21645
          http://sourceforge.net/p/jmol/code/21645
Author:   hansonr
Date:     2017-06-28 22:45:07 +0000 (Wed, 28 Jun 2017)
Log Message:
-----------
CIP rewrite for 4b/5

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/symmetry/CIPChirality.java

Modified: trunk/Jmol/src/org/jmol/symmetry/CIPChirality.java
===================================================================
--- trunk/Jmol/src/org/jmol/symmetry/CIPChirality.java  2017-06-28 19:02:01 UTC 
(rev 21644)
+++ trunk/Jmol/src/org/jmol/symmetry/CIPChirality.java  2017-06-28 22:45:07 UTC 
(rev 21645)
@@ -27,36 +27,41 @@
  * 
  * Features include:
  * 
- *  - deeply validated 
- *  
- *  - implemented in Java (Jmol) and JavaScript (JSmol)
- *  
- *  - only two Java classes; roughly 1000 lines
- *  
- *  - efficient, one-pass process for each center using a single finite 
digraph for all auxiliary descriptors
- *  
- *  - exhaustive processing of all 8 sequence rules (1a, 1b, 2, 3, 4a, 4b, 4c, 
5)
- *  
- *  - includes R/S, r/s, M/P (axial, not planar), E/Z
- *  
- *  - covers any-length odd and even cumulenes
- *  
- *  - uses Jmol conformational SMARTS to detect atropisomers and helicenes 
- *  
- *  - covers chiral phosphorus and sulfur, including trigonal pyramidal and 
tetrahedral
- *  
- *  - properly treats complex combinations of R/S, M/P, and seqCis/seqTrans 
centers (Rule 4b)
+ * - deeply validated
  * 
- *  - properly treats neutral-species resonance structures using fractional 
atomic mass and a modified Rule 1b
- *  
- *  - implements CIP spiro rule (BB P-93.5.3.1)
- *  
- *  - detects small rings (fewer than 8 members) and removes E/Z 
specifications for such
+ * - implemented in Java (Jmol) and JavaScript (JSmol)
  * 
- *  - detects chiral bridgehead nitrogens and E/Z imines and diazines 
- *  
- *  - reports atom descriptor along with the rule that ultimately decided it
+ * - only two Java classes; roughly 1000 lines
  * 
+ * - efficient, one-pass process for each center using a single finite digraph
+ * for all auxiliary descriptors
+ * 
+ * - exhaustive processing of all 8 sequence rules (1a, 1b, 2, 3, 4a, 4b, 4c, 
5)
+ * 
+ * - includes R/S, r/s, M/P (axial, not planar), E/Z
+ * 
+ * - covers any-length odd and even cumulenes
+ * 
+ * - uses Jmol conformational SMARTS to detect atropisomers and helicenes
+ * 
+ * - covers chiral phosphorus and sulfur, including trigonal pyramidal and
+ * tetrahedral
+ * 
+ * - properly treats complex combinations of R/S, M/P, and seqCis/seqTrans
+ * centers (Rule 4b)
+ * 
+ * - properly treats neutral-species resonance structures using fractional
+ * atomic mass and a modified Rule 1b
+ * 
+ * - implements CIP spiro rule (BB P-93.5.3.1)
+ * 
+ * - detects small rings (fewer than 8 members) and removes E/Z specifications
+ * for such
+ * 
+ * - detects chiral bridgehead nitrogens and E/Z imines and diazines
+ * 
+ * - reports atom descriptor along with the rule that ultimately decided it
+ * 
  * Primary 236-compound Chapter-9 validation set (AY-236) provided by Andrey
  * Yerin, ACD/Labs (Moscow).
  * 
@@ -72,8 +77,9 @@
  * for discussions, Andrey Yerin for discussion and digraph checking.
  * 
  * Many thanks to the members of the BlueObelisk-Discuss group, particularly
- * Mikko Vainio, John Mayfield (aka John May), Wolf Ihlenfeldt, and Egon 
Willighagen, for
- * encouragement, examples, serious skepticism, and extremely helpful advice.
+ * Mikko Vainio, John Mayfield (aka John May), Wolf Ihlenfeldt, and Egon
+ * Willighagen, for encouragement, examples, serious skepticism, and extremely
+ * helpful advice.
  * 
  * References:
  * 
@@ -109,11 +115,13 @@
  * 
  * code history:
  * 
- * 6/28/17 Jmol 14.19.2 major rewrite of Rule 4b
+ * 6/28/17 Jmol 14.19.2 major rewrite of Rule 4b (962 lines)
  * 
- * 6/25/17 Jmol 14.19.1 minor fixes for Rule 4b and 5 for BH64_012-015; better 
atropisomer check
+ * 6/25/17 Jmol 14.19.1 minor fixes for Rule 4b and 5 for BH64_012-015; better
+ * atropisomer check
  * 
- * 6/12/2017 Jmol 14.18.2 tested for Rule 1b sphere (AY236.53, 163, 173, 192); 
957 lines
+ * 6/12/2017 Jmol 14.18.2 tested for Rule 1b sphere (AY236.53, 163, 173, 192);
+ * 957 lines
  * 
  * 6/8/2017 Jmol 14.18.2 removed unnecessary presort for Rule 1b
  * 
@@ -163,18 +171,55 @@
  * root distance, where "root distance" is defined:
  * 
  * (i) in the case of a duplicate atom for which the atomic number is averaged
- * over two or more atoms in applying Rule 1a, the distance from the duplicate
- * node itself to the root node; and
+ * over two or more atoms in applying Rule 1a (including carbon-only rings such
+ * as phenyl), the distance from the duplicate node itself to the root node; 
and
  * 
  * (ii) in all other cases, the distance of its corresponding nonduplicated 
atom
  * node to the root node.
  * 
  * 
- * Rationale: Using only the distance of the duplicated atom (ii) introduces a 
Kekule
- * bias, which is not acceptable.
+ * Rationale: Using only the distance of the duplicated atom (ii, current
+ * definition) introduces a Kekule bias, which can be illustrated with various
+ * simple models. By moving that distance by one atom (to the duplicate atom
+ * itself), the problem is resolved, because now it does not matter in which
+ * direction the bond is connected; the number is always one more than the
+ * sphere of the central atom.
  * 
+ * The proposed modification is quite minimal, changing the number for only 
half
+ * the duplicated aromatic nodes:
+ */
+
+
+  
+ //              //
+ //              \ (ring)
+ // [0]---1---2---3==4
+ // 
+ // 
+ // current:
+ // 
+ //                (4)(3)
+ //                /  /
+ // [0]---1---2---3--4
+ //
+ // 
+ // proposed:
+ // 
+ //                (4)(5)
+ //                /  /
+ // [0]---1---2---3--4
+ //
+ // 
+
+/**
+ * Thus, for all cases, one of the duplicated atoms will have the same root
+ * distance as currently. The other will always be advanced by two spheres.
+ * 
+ * 
+ * 
  * @author Bob Hanson hans...@stolaf.edu
  */
+
 public class CIPChirality {
 
   //The rules:
@@ -1520,6 +1565,7 @@
         bsPath.set(atomIndex);
       } else if (sp2Duplicate && (!allowRule1bAlkenes || isKekuleAmbiguous)) {
         // *** Rule 1b Jmol amendment ***
+        // just leaving the rootDistance to be as for other atoms
       } else if (atom == root.atom) {
         // pointing to original atom
         isDuplicate = true;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to