* 5/17/16 Jmol 14.15.5. adds helicene M/P chirality; 959 lines
* validated using CCDC
* structures HEXHEL02 HEXHEL03 HEXHEL04 ODAGOS ODAHAF
* http://pubs.rsc.org/en/content/articlehtml/2017/CP/C6CP07552E
On Sat, May 13, 2017 at 11:43 PM, Robert Hanson <hans...@stolaf.edu> wrote:
> OK, final (?) report. Always a good sign when code simplifies. I've
> tightened up the algorithm, which passes all pertinent Chapter 9 tests,
> plus several more. After removing unnecessary code, Jmol's CIP
> implementation is now back to 970 lines, even with added (minimal) Kekule
> considerations and full R/S, seqCis/seqTrans, and M/P mixing for Rules 4b
> and 5. It would not take much more to add helicene identification.
>
> I'm happy to report that the following simplified pseudocode is
> sufficient. There is nothing magical here. The successful one-pass use of
> auxiliary descriptors and finite digraphs should put to rest any concerns
> that CIP determination of stereochemical descriptors has any cyclical
> dependencies or routinely blows up. Except, perhaps, due to too many atoms
> and too high symmetry. Every program will have its limits in this regard,
> of course, and I think this algorithm could certainly be made more
> efficient. In any case, the algorithm I have implemented demonstrates that
> this process can be a one-pass process through all eight rules: 1a, 1b, 2,
> 3, 4a, 4b, 4c, and 5; once through does it.
>
> There are some nuances that are problematic -- a dependency on generating
> multiple Kekule models, and a problem with Rule 1b as currently stated
> actually introducing its own Kekule problems. But Rule 4b looks to me now
> to be no major problem. A bit complicated, for sure, but not so bad in the
> end. And I'm sure John will find some issues with what I have here. The
> key, as Peter Murray-Rust mentioned, is the construction of a very good set
> of test structures. There's more testing to do. I don't believe the
> structures that are in papers or in the IUPAC 2013 Blue Book are hardly
> enough to cover the bases. So I have no doubt that I missed something here,
> with the limited number of examples available to me. But I'm confident that
> the overall strategy is sound, and that additional issues will be minor.
>
> Take a look; let me know what you think. Thanks again for all the great
> comments and especially for great test cases.
>
> Bob
>
> // getChirality(molecule) {
> // prefilterAtoms()
> // checkForAlkenes()
> // checkForSmallRings()
> // checkForBridgeheadNitrogens()
> // checkForKekuleIssues()
> // checkForAtropisomerism()
> // for(all filtered atoms) getAtomChirality(atom)
> // if (haveAlkenes) {
> // for(all double bonds) getBondChirality(a1, a2)
> // removeUnnecessaryEZDesignations()
> // }
> // }
> //
> // getAtomChirality(atom) {
> // for (each Rule){
> // sortSubstituents()
> // if (done) return checkHandedness();
> // }
> // return NO_CHIRALITY
> // }
> //
> // getBondChirality(a1, a2) {
> // atop = getAlkeneEndTopPriority(a1)
> // btop = getAlkeneEndTopPriority(a2)
> // return (atop >= 0 && btop >= 0 ? getEneChirality(atop, a1, a2,
> btop) : NO_CHIRALITY)
> // }
> //
> // sortSubstituents() {
> // for (all pairs of substituents a1 and a2) {
> // score = a1.compareTo(a2, currentRule)
> // if (score == TIED)
> // score = breakTie(a1,a2)
> // }
> //
> // breakTie(a,b) {
> // score = compareShallowly(a, b)
> // if (score != TIED) return score
> // a.sortSubstituents(), b.sortSubstituents()
> // return compareDeeply(a, b)
> // }
> //
> // compareShallowly(a, b) {
> // for (each substituent pairing i in a and b) {
> // score = applyCurrentRule(a_i, b_i)
> // if (score != TIED) return score
> // }
> // return TIED
> // }
> //
> // compareDeeply(a, b) {
> // bestScore = Integer.MAX_VALUE
> // for (each substituent pairing i in a and b) {
> // bestScore = min(bestScore, breakTie(a_i, b_i)
> // }
> // return bestScore
> // }
>
>
>
--
Robert M. Hanson
Larson-Anderson Professor of Chemistry
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr
If nature does not answer first what we want,
it is better to take what answer we get.
-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Blueobelisk-discuss mailing list
Blueobelisk-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/blueobelisk-discuss