Bob,

I thought maybe you were taking a well deserved vacation. It sounds like it was a working vacation.

The apology is mine. In my usual verbose style, the guts of the problem is in my third email. The square planar notation in the alkene SMILES is throwing a monkey wrench into compare and find. All of this worked so well in the examples we looked at that I missed the point that alkenes were presenting this problem.

FYI, NIH translate recognizes these @SP# alkene SMILES, at least it returns a molfile. Daylight Depict throws errors, but still renders a structure.

Otis

Otis Rothenberger
chemagic.com


On 8/7/2010 5:19 PM, Robert Hanson wrote:
sorry -- was at the BCCE conference....

var i = {*}.atomIndex.max + 1;
select within(branch, {atomIndex = i}, {atomIndex=0});


What is the intent of that, Otis? I'm pretty sure that's the same as

select molecule=1

right?

Bob

On Wed, Aug 4, 2010 at 10:16 AM, Otis Rothenberger <osrot...@chemagic.com <mailto:osrot...@chemagic.com>> wrote:

    The following Jmol script works flawlessly with two small (C6 ish)
    molecules as they undergo model kit editing in the same frame:

    var sm = {*}.find('SMILES');var i = {*}.atomIndex.max + 1;select
    within(branch, {atomIndex = i}, {atomIndex=0});var x =
    {selected}.size;var y={*}.size;var z = y - x;var w = 'The models are
    identical.';if (z != 0){var i = compare({selected},{not
    selected},'SMILES',sm,'stddev');if (i == 'NAN'){w = 'The models
    are NOT
    identical.'};echo @w;}

    I mean flawlessly, including stereochemistry.

    With large models (e.g. some monoterpenes), the behavior of the script
    is erratic - works once and stops; does not work at all, throwing a
    script error after if (i == 'NAN'), or reporting incorrect comparison
    results. To make sure that the assumption that I was making with the
    opening var sm = {*}.find('SMILES') was correct, I rearranged the
    script
    to place this fragment in a more certain position:

    var i = {*}.atomIndex.max + 1;select within(branch, {atomIndex = i},
    {atomIndex=0});var sm = {selected}.find('SMILES');var x =
    {selected}.size;var y={*}.size;var z = y - x;var w = 'The models are
    identical.';if (z != 0){var i = compare({selected},{not
    selected},'SMILES',sm,'stddev');if (i == 'NAN'){w = 'The models
    are NOT
    identical.'};echo @w;}

    Same result.

    Is this a matter of the compare function inherently  "stressing out"
    with model size, or is there a logic error in my script code. Things
    seem to go erratic at about 20-30 total atoms.


definitely not. I've compared the entire ribosomal large subunit.


    By way of example with two pulegone models, the first run of the
    script
    produces the models identical echo. After the edit of one model (H
    to Cl
    back to H, just to do an edit back to identical), I get the following
    history:


sounds like a good test.

    var sm = {*}.find('SMILES');


..SMILES for both models as though one...

    var i = {*}.atomIndex.max + 1;
    select within(branch, {atomIndex = i}, {atomIndex=0});


...same as select molecule=1, I think

    27 atoms selected
    var x = {selected}.size;
    var y={*}.size;
    var z = y - x;
    var w = 'The models are identical.';
    if (z != 0);


... true if there is more than one molecule, I think...

    var i = compare({selected},{not selected},'SMILES',sm,'stddev');
    script ERROR:

    Otis



OK, one thing is that Jmol isn't numbering molecules correctly after atoms are deleted. But that's not the problem here. What you seem to be doing is using the compare command with SMILES -- meaning a conformational search. A value of 0.0 for i would mean the two models have the same configuration AND conformation. "NAN" would mean they failed the SMILES match and so are nonidentical.

The way I was thinking to categorize two models is this:

var m1 = {molecule=1} # or whatever
var m2 = {molecule=2} # or whatever

# check molecular formulas

var sameMF = (m1.find("MF") == m2.find("MF"))

# get SMILES string for molecule 1

var smiles = m1.find("SMILES")
var smiles_enantiomer = sm.replace("@@","!@").replace("@","@@").replace("!@@","@")
var smiles_nostereo = smiles.replace("@","")

# note: we can't just compare SMILES strings like we can molecular formulas # because SMILES strings here are not "cannonical" - but that is no problem at all # instead, we "find" the SMILES string for one model in the other. Using "SMILES" # here instead of "SMARTS" guarantees an exact search and not a substructure search

var identical = sameMF && (m2.find("SMILES",smiles)> 0)
var configurationalIsomers = sameMF && !identical && (m2.find("SMILES",sm_nostereo) > 0) var enantiomers = configurationalIsomers && (m2.find("SMILES",smiles_enantiomer) > 0)
var diastereomers = configurationalIsomers && !enantiomers
var constitutionalIsomers = sameMF && !identical && !configurationalIsomers


...but "molecule=2" won't work right now after you delete atoms. It's fixed for Jmol 12.1.2 and Jmol 12.0.4

Bob




    --
    Otis Rothenberger
    chemagic.com <http://chemagic.com>




    
------------------------------------------------------------------------------
    The Palm PDK Hot Apps Program offers developers who use the
    Plug-In Development Kit to bring their C/C++ apps to Palm for a share
    of $1 Million in cash or HP Products. Visit us here for more details:
    http://p.sf.net/sfu/dev2dev-palm
    _______________________________________________
    Jmol-users mailing list
    Jmol-users@lists.sourceforge.net
    <mailto:Jmol-users@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/jmol-users




--
Robert M. Hanson
Professor of Chemistry
St. Olaf College
1520 St. Olaf Ave.
Northfield, MN 55057
http://www.stolaf.edu/people/hansonr
phone: 507-786-3107


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


------------------------------------------------------------------------------
This SF.net email is sponsored by

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev


_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to