Revision: 20957
          http://sourceforge.net/p/jmol/code/20957
Author:   hansonr
Date:     2016-02-10 02:22:20 +0000 (Wed, 10 Feb 2016)
Log Message:
-----------
Jmol.___JmolVersion="14.5.2_2016.02.09"

new feature: invertselected ATOMS {ring atoms to invert}
 -- inverts ring stereochemistry
 -- requires prior selection of all atoms to be involved in the inversion
 
bug fix: SMARTS pattern [ALA.*] not working without biological polymer type 
indication
bug fix: SMARTS pattern [r500] not working outside of MINIMIZE

Revision Links:
--------------
    http://sourceforge.net/p/jmol/code/500

Modified Paths:
--------------
    branches/v14_4/Jmol/src/org/jmol/script/ScriptEval.java
    branches/v14_4/Jmol/src/org/jmol/smiles/SmilesSearch.java
    branches/v14_4/Jmol/src/org/jmol/viewer/ActionManager.java
    branches/v14_4/Jmol/src/org/jmol/viewer/JC.java
    branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
    branches/v14_4/Jmol/src/org/jmol/viewer/Viewer.java
    trunk/Jmol/src/org/jmol/script/ScriptEval.java
    trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java
    trunk/Jmol/src/org/jmol/viewer/ActionManager.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties
    trunk/Jmol/src/org/jmol/viewer/Viewer.java

Modified: branches/v14_4/Jmol/src/org/jmol/script/ScriptEval.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/script/ScriptEval.java     2016-02-06 
21:26:19 UTC (rev 20956)
+++ branches/v14_4/Jmol/src/org/jmol/script/ScriptEval.java     2016-02-10 
02:22:20 UTC (rev 20957)
@@ -4078,6 +4078,7 @@
     // invertSelected PLANE
     // invertSelected HKL
     // invertSelected STEREO {sp3Atom} {one or two groups)
+    // invertSelected ATOM {ring atom sets}
     P3 pt = null;
     P4 plane = null;
     BS bs = null;
@@ -4104,6 +4105,14 @@
     case T.hkl:
       plane = hklParameter(2);
       break;
+    case T.atoms:
+      bs = atomExpressionAt(2);
+      if (!chk) {
+        for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) {
+          vwr.invertRingAt(i, false);
+        }
+      }
+      return;
     }
     checkLengthErrorPt(iToken + 1, 1);
     if (plane == null && pt == null && iAtom == Integer.MIN_VALUE)

Modified: branches/v14_4/Jmol/src/org/jmol/smiles/SmilesSearch.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/smiles/SmilesSearch.java   2016-02-06 
21:26:19 UTC (rev 20956)
+++ branches/v14_4/Jmol/src/org/jmol/smiles/SmilesSearch.java   2016-02-10 
02:22:20 UTC (rev 20957)
@@ -206,7 +206,7 @@
     boolean aromaticStrict = ((flags & Edge.FLAG_AROMATIC_STRICT) != 0);
     boolean aromaticDefined = ((flags & Edge.FLAG_AROMATIC_DEFINED) != 0);
     if (aromaticStrict && vRings == null)
-      vRings = AU.createArrayOfArrayList(4); 
+      vRings = AU.createArrayOfArrayList(4);
     if (aromaticDefined && needAromatic) {
       // predefined aromatic bonds
       bsAromatic = SmilesAromatic.checkAromaticDefined(jmolAtoms, bsSelected);
@@ -235,10 +235,10 @@
       SmilesSearch search = SmilesParser.getMolecule(smarts, true);
       Lst<Object> vR = (Lst<Object>) subsearch(search, false, true);
       if (vRings != null && i <= 5) {
-        Lst<BS> v = new  Lst<BS>();
-        for (int j = vR.size(); --j >= 0; )
+        Lst<BS> v = new Lst<BS>();
+        for (int j = vR.size(); --j >= 0;)
           v.addLast((BS) vR.get(j));
-        vRings[i-3] = v;
+        vRings[i - 3] = v;
       }
       if (needAromatic) {
         if (!aromaticDefined && (!aromaticStrict || i == 5 || i == 6))
@@ -246,8 +246,18 @@
             BS bs = (BS) vR.get(r);
             if (aromaticDefined
                 || SmilesAromatic.isFlatSp2Ring(jmolAtoms, bsSelected, bs,
-                    (aromaticStrict ? 0.1f : 0.01f)))
+                    (aromaticStrict ? 0.1f : 0.01f))) {
               bsAromatic.or(bs);
+              if (!aromaticStrict)
+                switch (i) {
+                case 5:
+                  bsAromatic5.or(bs);
+                  break;
+                case 6:
+                  bsAromatic6.or(bs);
+                  break;
+                }
+            }
           }
         if (aromaticStrict) {
           switch (i) {
@@ -260,7 +270,7 @@
                   bsAromatic);
             else
               SmilesAromatic.checkAromaticStrict(jmolAtoms, bsAromatic, v5, 
vR);
-            vRings[3] = new  Lst<BS>();
+            vRings[3] = new Lst<BS>();
             setAromatic56(v5, bsAromatic5, 5, vRings[3]);
             setAromatic56(vR, bsAromatic6, 6, vRings[3]);
             break;
@@ -859,11 +869,10 @@
         if (patternAtom.residueChar != null || patternAtom.elementNumber == 
-2) {
           char atype = a.getBioSmilesType();
           char ptype = patternAtom.getBioSmilesType();
-          char resChar = (patternAtom.residueChar == null ? '*'
-              : patternAtom.residueChar.charAt(0));
           boolean ok = true;
           boolean isNucleic = false;
           switch (ptype) {
+          case '\0':
           case '*':
             ok = true;
             break;
@@ -882,6 +891,8 @@
           if (!ok)
             break;
           String s = a.getGroup1('\0').toUpperCase();
+          char resChar = (patternAtom.residueChar == null ? '*'
+              : patternAtom.residueChar.charAt(0));
           boolean isOK = (resChar == s.charAt(0));
           switch (resChar) {
           case '*':

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/ActionManager.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/ActionManager.java  2016-02-06 
21:26:19 UTC (rev 20956)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/ActionManager.java  2016-02-10 
02:22:20 UTC (rev 20957)
@@ -1823,44 +1823,8 @@
       }
       return;
     case PICKING_INVERT_STEREO:
-      if (bnd(clickAction, ACTION_assignNew)) {
-        bs = vwr.getAtomBitSet("connected(atomIndex=" + atomIndex
-            + ") and !within(SMARTS,'[r50,R]')");
-        int nb = bs.cardinality();
-        switch (nb) {
-        case 0:
-        case 1:
-          // not enough non-ring atoms
-          return;
-        case 2:
-          break;
-        case 3:
-        case 4:
-          // three or four are not in a ring. So let's find the shortest two
-          // branches and invert them.
-          int[] lengths = new int[nb];
-          int[] points = new int[nb];
-          int ni = 0;
-          for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), 
ni++) {
-            lengths[ni] = vwr.getBranchBitSet(i, atomIndex, true)
-                .cardinality();
-            points[ni] = i;
-          }
-          for (int j = 0; j < nb - 2; j++) {
-            int max = Integer.MIN_VALUE;
-            int imax = 0;
-            for (int i = 0; i < nb; i++)
-              if (lengths[i] >= max && bs.get(points[i])) {
-                imax = points[i];
-                max = lengths[i];
-              }
-            bs.clear(imax);
-          }
-        }
-        vwr.undoMoveActionClear(atomIndex, AtomCollection.TAINT_COORD, true);
-        vwr.invertSelected(null, null, atomIndex, bs);
-        vwr.setStatusAtomPicked(atomIndex, "inverted: " + Escape.eBS(bs), 
null);
-      }
+      if (bnd(clickAction, ACTION_assignNew))
+        vwr.invertRingAt(atomIndex), true);
       return;
     case PICKING_DELETE_ATOM:
       if (bnd(clickAction, ACTION_deleteAtom)) {

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/JC.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/JC.java     2016-02-06 21:26:19 UTC 
(rev 20956)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/JC.java     2016-02-10 02:22:20 UTC 
(rev 20957)
@@ -60,7 +60,7 @@
     "cod", 
"http://www.crystallography.net/cod/cif/%c1/%c2%c3/%c4%c5/%FILE.cif";,
     "nmr", "http://www.nmrdb.org/new_predictor?POST?molfile=";,
     "nmrdb", "http://www.nmrdb.org/service/predictor?POST?molfile=";,
-    "pdb", 
"http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz";,
 // new Jmol 14.5.0 10/28/2015
+    "pdb", 
"http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz";,
 // new Jmol 14.5.0 10/28/2015 -- not enabled for JavaScript
     "pdb0", "http://www.rcsb.org/pdb/files/%FILE.pdb.gz";,
     "pdbe", "http://www.ebi.ac.uk/pdbe/entry-files/download/%FILE.cif";,
     "pdbe2", "http://www.ebi.ac.uk/pdbe/static/entry/%FILE_updated.cif";,

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2016-02-06 
21:26:19 UTC (rev 20956)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2016-02-10 
02:22:20 UTC (rev 20957)
@@ -7,8 +7,13 @@
 
 # see also http://chemapps.stolaf.edu/jmol/zip for daily updates
        
-Jmol.___JmolVersion="14.4.2_2016.02.06"
+Jmol.___JmolVersion="14.4.2_2016.02.09"
 
+bug fix: SMARTS pattern [ALA.*] not working without biological polymer type 
indication
+bug fix: SMARTS pattern [r500] not working outside of MINIMIZE
+
+JmolVersion="14.4.2_2016.02.06"
+
 bug fix: isosurface "==xxxx" not setting default omap cutoff and sigma 3.0
 bug fix: small MRC map files mistaken for DELPHI files, which start with the 
4-byte integer 20.
 bug fix: MRC/CCP4 surface/map files still sometimes inside out. 

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/Viewer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/Viewer.java 2016-02-06 21:26:19 UTC 
(rev 20956)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/Viewer.java 2016-02-10 02:22:20 UTC 
(rev 20957)
@@ -3926,17 +3926,17 @@
           return name;
         }
       } else {
-        format = ( 
-            // following is temporary, until issues are resolved for AJAX asych
-            isJS && g.loadFormat.equals(g.pdbLoadFormat) ? g.pdbLoadFormat0 
-                : g.loadFormat);
+        format = (
+        // following is temporary, until issues are resolved for AJAX asych
+        isJS && g.loadFormat.equals(g.pdbLoadFormat) ? g.pdbLoadFormat0
+            : g.loadFormat);
       }
       //$FALL-THROUGH$
     case '#': // ligand
       if (format == null)
         format = g.pdbLoadLigandFormat;
       if (id.indexOf(".") >= 0 && format.equals(g.pdbLoadFormat))
-          format = g.pdbLoadFormat0; // older version for =1crn.cif or  
=1crn.pdb
+        format = g.pdbLoadFormat0; // older version for =1crn.cif or  =1crn.pdb
       return g.resolveDataBase(null, id, format);
     case '*':
       // European Bioinformatics Institute
@@ -7435,6 +7435,46 @@
     sm.setStatusAtomMoved(bs);
   }
 
+  public void invertRingAt(int atomIndex, boolean isClick) {
+    // [r50 here just sets the max ring size to 50
+    BS bs = getAtomBitSet("connected(atomIndex=" + atomIndex + ") and 
!within(SMARTS,'[r50,R]')");
+    int nb = bs.cardinality();
+    switch (nb) {
+    case 0:
+    case 1:
+      // not enough non-ring atoms
+      return;
+    case 2:
+      break;
+    case 3:
+    case 4:
+      // three or four are not in a ring. So let's find the shortest two
+      // branches and invert them.
+      int[] lengths = new int[nb];
+      int[] points = new int[nb];
+      int ni = 0;
+      for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), ni++) {
+        lengths[ni] = getBranchBitSet(i, atomIndex, true).cardinality();
+        points[ni] = i;
+      }
+      for (int j = 0; j < nb - 2; j++) {
+        int max = Integer.MIN_VALUE;
+        int imax = 0;
+        for (int i = 0; i < nb; i++)
+          if (lengths[i] >= max && bs.get(points[i])) {
+            imax = points[i];
+            max = lengths[i];
+          }
+        bs.clear(imax);
+      }
+    }
+    if (isClick) 
+      undoMoveActionClear(atomIndex, AtomCollection.TAINT_COORD, true);
+    invertSelected(null, null, atomIndex, bs);
+    if (isClick)
+      setStatusAtomPicked(atomIndex, "inverted: " + Escape.eBS(bs), null);
+  }
+
   public void invertSelected(P3 pt, P4 plane, int iAtom, BS invAtoms) {
     // Eval
     BS bs = bsA();
@@ -9363,4 +9403,5 @@
       jsonParser = ((JSJSONParser) 
Interface.getInterface("javajs.util.JSJSONParser", this, "script"));
     return jsonParser.parseMap(ann, true);
   }
+
 }

Modified: trunk/Jmol/src/org/jmol/script/ScriptEval.java
===================================================================
--- trunk/Jmol/src/org/jmol/script/ScriptEval.java      2016-02-06 21:26:19 UTC 
(rev 20956)
+++ trunk/Jmol/src/org/jmol/script/ScriptEval.java      2016-02-10 02:22:20 UTC 
(rev 20957)
@@ -4078,6 +4078,7 @@
     // invertSelected PLANE
     // invertSelected HKL
     // invertSelected STEREO {sp3Atom} {one or two groups)
+    // invertSelected ATOM {ring atom sets}
     P3 pt = null;
     P4 plane = null;
     BS bs = null;
@@ -4104,6 +4105,14 @@
     case T.hkl:
       plane = hklParameter(2);
       break;
+    case T.atoms:
+      bs = atomExpressionAt(2);
+      if (!chk) {
+        for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) {
+          vwr.invertRingAt(i, false);
+        }
+      }
+      return;
     }
     checkLengthErrorPt(iToken + 1, 1);
     if (plane == null && pt == null && iAtom == Integer.MIN_VALUE)

Modified: trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java
===================================================================
--- trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java    2016-02-06 21:26:19 UTC 
(rev 20956)
+++ trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java    2016-02-10 02:22:20 UTC 
(rev 20957)
@@ -206,7 +206,7 @@
     boolean aromaticStrict = ((flags & Edge.FLAG_AROMATIC_STRICT) != 0);
     boolean aromaticDefined = ((flags & Edge.FLAG_AROMATIC_DEFINED) != 0);
     if (aromaticStrict && vRings == null)
-      vRings = AU.createArrayOfArrayList(4); 
+      vRings = AU.createArrayOfArrayList(4);
     if (aromaticDefined && needAromatic) {
       // predefined aromatic bonds
       bsAromatic = SmilesAromatic.checkAromaticDefined(jmolAtoms, bsSelected);
@@ -235,10 +235,10 @@
       SmilesSearch search = SmilesParser.getMolecule(smarts, true);
       Lst<Object> vR = (Lst<Object>) subsearch(search, false, true);
       if (vRings != null && i <= 5) {
-        Lst<BS> v = new  Lst<BS>();
-        for (int j = vR.size(); --j >= 0; )
+        Lst<BS> v = new Lst<BS>();
+        for (int j = vR.size(); --j >= 0;)
           v.addLast((BS) vR.get(j));
-        vRings[i-3] = v;
+        vRings[i - 3] = v;
       }
       if (needAromatic) {
         if (!aromaticDefined && (!aromaticStrict || i == 5 || i == 6))
@@ -246,8 +246,18 @@
             BS bs = (BS) vR.get(r);
             if (aromaticDefined
                 || SmilesAromatic.isFlatSp2Ring(jmolAtoms, bsSelected, bs,
-                    (aromaticStrict ? 0.1f : 0.01f)))
+                    (aromaticStrict ? 0.1f : 0.01f))) {
               bsAromatic.or(bs);
+              if (!aromaticStrict)
+                switch (i) {
+                case 5:
+                  bsAromatic5.or(bs);
+                  break;
+                case 6:
+                  bsAromatic6.or(bs);
+                  break;
+                }
+            }
           }
         if (aromaticStrict) {
           switch (i) {
@@ -260,7 +270,7 @@
                   bsAromatic);
             else
               SmilesAromatic.checkAromaticStrict(jmolAtoms, bsAromatic, v5, 
vR);
-            vRings[3] = new  Lst<BS>();
+            vRings[3] = new Lst<BS>();
             setAromatic56(v5, bsAromatic5, 5, vRings[3]);
             setAromatic56(vR, bsAromatic6, 6, vRings[3]);
             break;
@@ -859,11 +869,10 @@
         if (patternAtom.residueChar != null || patternAtom.elementNumber == 
-2) {
           char atype = a.getBioSmilesType();
           char ptype = patternAtom.getBioSmilesType();
-          char resChar = (patternAtom.residueChar == null ? '*'
-              : patternAtom.residueChar.charAt(0));
           boolean ok = true;
           boolean isNucleic = false;
           switch (ptype) {
+          case '\0':
           case '*':
             ok = true;
             break;
@@ -882,6 +891,8 @@
           if (!ok)
             break;
           String s = a.getGroup1('\0').toUpperCase();
+          char resChar = (patternAtom.residueChar == null ? '*'
+              : patternAtom.residueChar.charAt(0));
           boolean isOK = (resChar == s.charAt(0));
           switch (resChar) {
           case '*':

Modified: trunk/Jmol/src/org/jmol/viewer/ActionManager.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/ActionManager.java   2016-02-06 21:26:19 UTC 
(rev 20956)
+++ trunk/Jmol/src/org/jmol/viewer/ActionManager.java   2016-02-10 02:22:20 UTC 
(rev 20957)
@@ -1823,44 +1823,8 @@
       }
       return;
     case PICKING_INVERT_STEREO:
-      if (bnd(clickAction, ACTION_assignNew)) {
-        bs = vwr.getAtomBitSet("connected(atomIndex=" + atomIndex
-            + ") and !within(SMARTS,'[r50,R]')");
-        int nb = bs.cardinality();
-        switch (nb) {
-        case 0:
-        case 1:
-          // not enough non-ring atoms
-          return;
-        case 2:
-          break;
-        case 3:
-        case 4:
-          // three or four are not in a ring. So let's find the shortest two
-          // branches and invert them.
-          int[] lengths = new int[nb];
-          int[] points = new int[nb];
-          int ni = 0;
-          for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), 
ni++) {
-            lengths[ni] = vwr.getBranchBitSet(i, atomIndex, true)
-                .cardinality();
-            points[ni] = i;
-          }
-          for (int j = 0; j < nb - 2; j++) {
-            int max = Integer.MIN_VALUE;
-            int imax = 0;
-            for (int i = 0; i < nb; i++)
-              if (lengths[i] >= max && bs.get(points[i])) {
-                imax = points[i];
-                max = lengths[i];
-              }
-            bs.clear(imax);
-          }
-        }
-        vwr.undoMoveActionClear(atomIndex, AtomCollection.TAINT_COORD, true);
-        vwr.invertSelected(null, null, atomIndex, bs);
-        vwr.setStatusAtomPicked(atomIndex, "inverted: " + Escape.eBS(bs), 
null);
-      }
+      if (bnd(clickAction, ACTION_assignNew))
+        vwr.invertRingAt(atomIndex), true);
       return;
     case PICKING_DELETE_ATOM:
       if (bnd(clickAction, ACTION_deleteAtom)) {

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-02-06 21:26:19 UTC 
(rev 20956)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-02-10 02:22:20 UTC 
(rev 20957)
@@ -64,8 +64,18 @@
 
 TODO: isosurface molecular has an issue with 2gb1
 
-Jmol.___JmolVersion="14.5.2_2016.02.06"
+Jmol.___JmolVersion="14.5.2_2016.02.09"
 
+new feature: invertselected ATOMS {ring atoms to invert}
+ -- inverts ring stereochemistry
+ -- requires prior selection of all atoms to be involved in the inversion
+ 
+bug fix: SMARTS pattern [ALA.*] not working without biological polymer type 
indication
+bug fix: SMARTS pattern [r500] not working outside of MINIMIZE
+
+
+JmolVersion="14.5.2_2016.02.06"
+
 new feature: isosurface BACKSHELL
   -- displays just the back side of an isosurface
   -- works by reversing the normals, then showing front only

Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Viewer.java  2016-02-06 21:26:19 UTC (rev 
20956)
+++ trunk/Jmol/src/org/jmol/viewer/Viewer.java  2016-02-10 02:22:20 UTC (rev 
20957)
@@ -7435,6 +7435,46 @@
     sm.setStatusAtomMoved(bs);
   }
 
+  public void invertRingAt(int atomIndex, boolean isClick) {
+    // [r50 here just sets the max ring size to 50
+    BS bs = getAtomBitSet("connected(atomIndex=" + atomIndex + ") and 
!within(SMARTS,'[r50,R]')");
+    int nb = bs.cardinality();
+    switch (nb) {
+    case 0:
+    case 1:
+      // not enough non-ring atoms
+      return;
+    case 2:
+      break;
+    case 3:
+    case 4:
+      // three or four are not in a ring. So let's find the shortest two
+      // branches and invert them.
+      int[] lengths = new int[nb];
+      int[] points = new int[nb];
+      int ni = 0;
+      for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1), ni++) {
+        lengths[ni] = getBranchBitSet(i, atomIndex, true).cardinality();
+        points[ni] = i;
+      }
+      for (int j = 0; j < nb - 2; j++) {
+        int max = Integer.MIN_VALUE;
+        int imax = 0;
+        for (int i = 0; i < nb; i++)
+          if (lengths[i] >= max && bs.get(points[i])) {
+            imax = points[i];
+            max = lengths[i];
+          }
+        bs.clear(imax);
+      }
+    }
+    if (isClick) 
+      undoMoveActionClear(atomIndex, AtomCollection.TAINT_COORD, true);
+    invertSelected(null, null, atomIndex, bs);
+    if (isClick)
+      setStatusAtomPicked(atomIndex, "inverted: " + Escape.eBS(bs), null);
+  }
+
   public void invertSelected(P3 pt, P4 plane, int iAtom, BS invAtoms) {
     // Eval
     BS bs = bsA();
@@ -9363,4 +9403,5 @@
       jsonParser = ((JSJSONParser) 
Interface.getInterface("javajs.util.JSJSONParser", this, "script"));
     return jsonParser.parseMap(ann, true);
   }
+
 }

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


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to