Revision: 18358
          http://sourceforge.net/p/jmol/code/18358
Author:   hansonr
Date:     2013-06-24 22:56:54 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
___JmolVersion="13.1.17_dev_2013.06.24"

bug fix: PyMOL putty broken
bug fix: pdbAddHydrogens may miss O3' or O5' H atoms at end of DNA strands
bug fix: pdbAddHydrogens may miss H in first group of a chain
bug fix: set defaultDrawArrowScale broken 

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java
    trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java
    trunk/Jmol/src/org/jmol/api/JmolBioResolver.java
    trunk/Jmol/src/org/jmol/modelset/ModelLoader.java
    trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java
    trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java
    trunk/Jmol/src/org/jmol/script/T.java
    trunk/Jmol/src/org/jmol/symmetry/UnitCell.java
    trunk/Jmol/src/org/jmol/util/Eigen.java
    trunk/Jmol/src/org/jmol/util/Quadric.java
    trunk/Jmol/src/org/jmol/viewer/JC.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties
    trunk/Jmol/src/org/jmol/viewer/StateManager.java

Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java       
2013-06-23 22:18:48 UTC (rev 18357)
+++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java       
2013-06-24 22:56:54 UTC (rev 18358)
@@ -218,10 +218,8 @@
     }
 
     switch (id) {
-    case T.trace:
-      id = JC.SHAPE_TRACE;
-      if (info != null)
-        sm.setShapePropertyBs(id, "putty", info, bsAtoms);
+    case JC.SHAPE_CGO:
+      sm.viewer.setCGO((JmolList<Object>) info);
       break;
     case JC.SHAPE_DOTS:
     case JC.SHAPE_BALLS:
@@ -350,10 +348,9 @@
     case T.script:
       sb = (SB) info;
       break;
-    case JC.SHAPE_CGO:
-      JmolList<Object> cgo = (JmolList<Object>) info;
-      //sID = (String) cgo.get(cgo.size() - 1);
-      sm.viewer.setCGO(cgo);
+    case T.trace:
+      sm.loadShape(id = JC.SHAPE_TRACE);
+      sm.setShapePropertyBs(id, "putty", info, bsAtoms);
       break;
     }
     if (sb != null) {

Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java      
2013-06-23 22:18:48 UTC (rev 18357)
+++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java      
2013-06-24 22:56:54 UTC (rev 18358)
@@ -1361,7 +1361,7 @@
                 axes = symmetry.rotateEllipsoid(iSym, ptTemp, axes, ptTemp1,
                     ptTemp2);
               }
-              atom1.ellipsoid[j] = new Quadric().fromVectors(axes, lengths, 
e.isThermalEllipsoid);
+              atom1.ellipsoid[j] = new Quadric().fromVectors(axes, lengths, 
e.eigenSignMask, e.isThermalEllipsoid);
             }
           }
         }

Modified: trunk/Jmol/src/org/jmol/api/JmolBioResolver.java
===================================================================
--- trunk/Jmol/src/org/jmol/api/JmolBioResolver.java    2013-06-23 22:18:48 UTC 
(rev 18357)
+++ trunk/Jmol/src/org/jmol/api/JmolBioResolver.java    2013-06-24 22:56:54 UTC 
(rev 18358)
@@ -24,7 +24,7 @@
 
   public void setHaveHsAlready(boolean b);
 
-  public void addImplicitHydrogenAtoms(JmolAdapter adapter, int i);
+  public void addImplicitHydrogenAtoms(JmolAdapter adapter, int i, int nH);
 
   public void initialize(ModelSet modelSet);
 

Modified: trunk/Jmol/src/org/jmol/modelset/ModelLoader.java
===================================================================
--- trunk/Jmol/src/org/jmol/modelset/ModelLoader.java   2013-06-23 22:18:48 UTC 
(rev 18357)
+++ trunk/Jmol/src/org/jmol/modelset/ModelLoader.java   2013-06-24 22:56:54 UTC 
(rev 18358)
@@ -239,7 +239,8 @@
   
   private int currentModelIndex;
   private Model currentModel;
-  private int currentChainID = 0;
+  private int currentChainID;
+  private boolean isNewChain;
   private Chain currentChain;
   private int currentGroupSequenceNumber;
   private char currentGroupInsertionCode = '\0';
@@ -276,7 +277,7 @@
     group3Of = new String[defaultGroupCount];
     seqcodes = new int[defaultGroupCount];
     firstAtomIndexes = new int[defaultGroupCount];
-    currentChainID = '\uFFFF';
+    currentChainID = Integer.MAX_VALUE;
     currentChain = null;
     currentGroupInsertionCode = '\uFFFF';
     currentGroup3 = "xxxxx";
@@ -751,7 +752,8 @@
       if (modelIndex != iLast) {
         currentModelIndex = modelIndex;
         currentModel = models[modelIndex];
-        currentChainID = '\uFFFF';
+        currentChainID = Integer.MAX_VALUE;
+        isNewChain = true;
         models[modelIndex].bsAtoms.clearAll();
         isPdbThisModel = models[modelIndex].isBioModel;
         iLast = modelIndex;
@@ -760,7 +762,8 @@
           jbr.setHaveHsAlready(false);
       }
       String group3 = iterAtom.getGroup3();
-      checkNewGroup(adapter, iterAtom.getChainID(), group3, 
iterAtom.getSequenceNumber(), 
+      int chainID = iterAtom.getChainID();
+      checkNewGroup(adapter, chainID, group3, iterAtom.getSequenceNumber(), 
           iterAtom.getInsertionCode(), addH);
       short isotope = iterAtom.getElementNumber();
       if (addH && Elements.getElementNumber(isotope) == 1)
@@ -790,8 +793,9 @@
           iterAtom.getRadius()
           );
     }
-    if (groupCount > 0 && addH)
-      jbr.addImplicitHydrogenAtoms(adapter, groupCount - 1);    
+    if (groupCount > 0 && addH) {
+      jbr.addImplicitHydrogenAtoms(adapter, groupCount - 1, isNewChain ? 1 : 
0);
+    }
     iLast = -1;
     EnumVdw vdwtypeLast = null;
     Atom[] atoms = modelSet.atoms;
@@ -853,12 +857,13 @@
       currentGroupInsertionCode = '\uFFFF';
       currentGroupSequenceNumber = -1;
       currentGroup3 = "xxxx";
+      isNewChain = true;
     }
     if (groupSequenceNumber != currentGroupSequenceNumber
         || groupInsertionCode != currentGroupInsertionCode
         || group3i != currentGroup3) {
       if (groupCount > 0 && addH) {
-        jbr.addImplicitHydrogenAtoms(adapter, groupCount - 1);
+        jbr.addImplicitHydrogenAtoms(adapter, groupCount - 1, isNewChain ? 1 : 
0);
         jbr.setHaveHsAlready(false);
       }
       currentGroupSequenceNumber = groupSequenceNumber;

Modified: trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java
===================================================================
--- trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java   2013-06-23 22:18:48 UTC 
(rev 18357)
+++ trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java   2013-06-24 22:56:54 UTC 
(rev 18358)
@@ -201,13 +201,14 @@
     plane = new P4();
   }
   
-  public void addImplicitHydrogenAtoms(JmolAdapter adapter, int iGroup) {
+  public void addImplicitHydrogenAtoms(JmolAdapter adapter, int iGroup, int 
nH) {
     String group3 = modelLoader.getGroup3(iGroup);
-    int nH;
+    int nH1;
     if (haveHsAlready || group3 == null
-        || (nH = JC.getStandardPdbHydrogenCount(Group
+        || (nH1 = JC.getStandardPdbHydrogenCount(Group
         .lookupGroupID(group3))) == 0)
       return;
+    nH = (nH1 < 0 ? -1 : nH1 + nH);
     Object model = null;
     int iFirst = modelLoader.getFirstAtomIndex(iGroup);
     int atomCount = modelSet.getAtomCount();

Modified: trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java       
2013-06-23 22:18:48 UTC (rev 18357)
+++ trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java       
2013-06-24 22:56:54 UTC (rev 18358)
@@ -48,7 +48,7 @@
 public class EllipsoidsRenderer extends ShapeRenderer {
 
   private Ellipsoids ellipsoids;
-  private boolean drawDots, drawArcs, drawAxes, drawFill, drawBall;
+  private boolean drawDots, drawArcs, drawAxes, drawFill, drawBall, drawArrows;
   private boolean wireframeOnly;
   private int dotCount;
   private int[] coords;
@@ -150,6 +150,7 @@
     wireframeOnly = (viewer.getBoolean(T.wireframerotation) && 
viewer.getInMotion(true));
     drawAxes = viewer.getBooleanProperty("ellipsoidAxes");
     drawArcs = viewer.getBooleanProperty("ellipsoidArcs");
+    drawArrows = viewer.getBooleanProperty("ellipsoidArrows");
     drawBall = viewer.getBooleanProperty("ellipsoidBall") && !wireframeOnly;
     drawDots = viewer.getBooleanProperty("ellipsoidDots") && !wireframeOnly;
     drawFill = viewer.getBooleanProperty("ellipsoidFill") && !wireframeOnly;
@@ -222,6 +223,7 @@
   private int dx;
   private float perspectiveFactor;
   private P3 center;
+  private int eigenSignMask = 7;
   
   private void render1(Atom atom, Quadric ellipsoid) {
     if (!isSet)
@@ -245,6 +247,7 @@
     setAxes();
     if (g3d.isClippedXY(dx + dx, atom.screenX, atom.screenY))
       return;
+    eigenSignMask = ellipsoid.eigenSignMask;
     renderOne(atom.screenZ, isOK);
   }
 
@@ -271,6 +274,8 @@
     }
     if (drawDots)
       renderDots();
+    if (drawArrows)
+      renderArrows();
   }
 
   private void setMatrices() {
@@ -317,6 +322,45 @@
         coef, mDeriv, selectedOctant, selectedOctant >= 0 ? selectedPoints : 
null);
   }
 
+  private void renderArrows() {
+    for (int i = 0; i < 6; i += 2) {
+      int pt = (i == 0 ? 1 : i);
+      fillConeScreen(screens[i], screens[i + 1], (eigenSignMask & pt) != 0);
+    }
+  }
+  private void fillConeScreen(P3i p1, P3i p2, boolean isPositive) {
+    if (diameter == 0)
+      return;
+    float diam = (diameter == 0 ? 1 : diameter) * 4;
+    v1.set(p2.x - p1.x, p2.y - p1.y, p2.z - p1.z);
+    v1.normalize();
+    v1.scale(diam);
+    s1.setT(p1);
+    s2.setT(p1);
+    if (isPositive) {
+      s2.x -= (int) v1.x; 
+      s2.y -= (int) v1.y; 
+      s2.z -= (int) v1.z; 
+    } else {
+      s1.x -= (int) v1.x; 
+      s1.y -= (int) v1.y; 
+      s1.z -= (int) v1.z; 
+    }
+    g3d.fillConeScreen(GData.ENDCAPS_FLAT, (int) diam, s1, s2, false); 
+    s1.setT(p2);
+    s2.setT(p2);
+    if (isPositive) {
+      s2.x += (int) v1.x; 
+      s2.y += (int) v1.y; 
+      s2.z += (int) v1.z; 
+    } else {
+      s1.x += (int) v1.x; 
+      s1.y += (int) v1.y; 
+      s1.z += (int) v1.z; 
+    }
+    g3d.fillConeScreen(GData.ENDCAPS_FLAT, (int) diam, s1, s2, false); 
+  }
+
   private void renderAxes() {
     if (drawBall && drawFill) {
       g3d.fillCylinder(GData.ENDCAPS_FLAT, diameter, s0,
@@ -349,7 +393,6 @@
 //    }
 
   }
-  
   private void renderDots() {
     for (int i = 0; i < coords.length;) {
       float fx = (float) Math.random();

Modified: trunk/Jmol/src/org/jmol/script/T.java
===================================================================
--- trunk/Jmol/src/org/jmol/script/T.java       2013-06-23 22:18:48 UTC (rev 
18357)
+++ trunk/Jmol/src/org/jmol/script/T.java       2013-06-24 22:56:54 UTC (rev 
18358)
@@ -957,10 +957,11 @@
   public final static int dsspcalchydrogen               = booleanparam | 58;
   public final static int dynamicmeasurements            = booleanparam | 59;
   public final static int ellipsoidarcs                  = booleanparam | 60;  
-  public final static int ellipsoidaxes                  = booleanparam | 61;  
-  public final static int ellipsoidball                  = booleanparam | 62;  
-  public final static int ellipsoiddots                  = booleanparam | 63;  
-  public final static int ellipsoidfill                  = booleanparam | 64;  
+  public final static int ellipsoidarrows                = booleanparam | 61;  
+  public final static int ellipsoidaxes                  = booleanparam | 62;  
+  public final static int ellipsoidball                  = booleanparam | 63;  
+  public final static int ellipsoiddots                  = booleanparam | 64;  
+  public final static int ellipsoidfill                  = booleanparam | 65;  
   public final static int filecaching                    = booleanparam | 66;
   public final static int fontcaching                    = booleanparam | 68;
   public final static int fontscaling                    = booleanparam | 69;
@@ -2350,6 +2351,7 @@
       "dsspCalculateHydrogenAlways",              T.t(dsspcalchydrogen),
       "dynamicMeasurements",                      T.t(dynamicmeasurements),
       "ellipsoidArcs",                            T.t(ellipsoidarcs),
+      "ellipsoidArrows",                          T.t(ellipsoidarrows),
       "ellipsoidAxes",                            T.t(ellipsoidaxes),
       "ellipsoidBall",                            T.t(ellipsoidball),
       "ellipsoidDots",                            T.t(ellipsoiddots),

Modified: trunk/Jmol/src/org/jmol/symmetry/UnitCell.java
===================================================================
--- trunk/Jmol/src/org/jmol/symmetry/UnitCell.java      2013-06-23 22:18:48 UTC 
(rev 18357)
+++ trunk/Jmol/src/org/jmol/symmetry/UnitCell.java      2013-06-24 22:56:54 UTC 
(rev 18358)
@@ -296,7 +296,7 @@
     if (parBorU[0] == 0) { // this is iso
       float[] lengths = new float[3];
       lengths[0] = lengths[1] = lengths[2] = (float) Math.sqrt(parBorU[7]);
-      return new Quadric().fromVectors(null, lengths, true);
+      return new Quadric().fromVectors(null, lengths, 7, true);
     }
 
     double[] Bcart = new double[6];

Modified: trunk/Jmol/src/org/jmol/util/Eigen.java
===================================================================
--- trunk/Jmol/src/org/jmol/util/Eigen.java     2013-06-23 22:18:48 UTC (rev 
18357)
+++ trunk/Jmol/src/org/jmol/util/Eigen.java     2013-06-24 22:56:54 UTC (rev 
18358)
@@ -77,7 +77,7 @@
 
   public static void getUnitVectors(double[][] m, V3[] unitVectors, float[] 
lengths) {
     newM(m).set(unitVectors, lengths);
-    sort(unitVectors, lengths);
+    sort(unitVectors, lengths, null);
   }
 
   private void set(V3[] unitVectors, float[] lengths) {
@@ -89,8 +89,6 @@
         unitVectors[i] = new V3();
       unitVectors[i].setA(eigenVectors[i]);
       lengths[i] = (float) Math.sqrt(Math.abs(eigenValues[i]));
-      //if (eigenValues[i] < 0)
-        //unitVectors[i].scale(-1);
     }
   }
 
@@ -1088,8 +1086,8 @@
     V3[] unitVectors = new V3[3];
     float[] lengths = new float[3];
     eigen.set(unitVectors, lengths);
-    sort(unitVectors, lengths);
-    return new Quadric().fromVectors(unitVectors, lengths, false);
+    int mask = sort(unitVectors, lengths, eigen.d);
+    return new Quadric().fromVectors(unitVectors, lengths, mask, false);
   }
 
   public static Quadric getEllipsoid(V3[] vectors, float[] lengths, boolean 
isThermal) {
@@ -1097,27 +1095,34 @@
     V3[] unitVectors = new V3[vectors.length];
     for (int i = vectors.length; --i >= 0;)
       unitVectors[i] = V3.newV(vectors[i]);
-    sort(unitVectors, lengths);
-    return new Quadric().fromVectors(unitVectors, lengths, isThermal);
+    sort(unitVectors, lengths, null);
+    return new Quadric().fromVectors(unitVectors, lengths, 7, isThermal);
   }
 
   /**
    * sorts vectors by absolute value and normalizes them
    * @param vectors
    * @param lengths
+   * @param values 
+   * @return mask 0 - 7 -- 1 for positive, 0 for negative eigenvalue
    */
-  private static void sort(V3[] vectors, float[] lengths) {
+  private static int sort(V3[] vectors, float[] lengths, double[] values) {
     // for atoms, lengths need to have length 3 to allow for scaling
     Object[][] o = new Object[][] {
-        new Object[] { vectors[0], Float.valueOf(Math.abs(lengths[0])) }, 
-        new Object[] { vectors[1], Float.valueOf(Math.abs(lengths[1])) },
-        new Object[] { vectors[2], Float.valueOf(Math.abs(lengths[2])) } }; 
+        new Object[] { vectors[0], Float.valueOf(Math.abs(lengths[0])), values 
== null || values[0] >= 0 ? Boolean.TRUE : null }, 
+        new Object[] { vectors[1], Float.valueOf(Math.abs(lengths[1])), values 
== null || values[1] >= 0 ? Boolean.TRUE : null },
+        new Object[] { vectors[2], Float.valueOf(Math.abs(lengths[2])), values 
== null || values[2] >= 0 ? Boolean.TRUE : null } }; 
     Arrays.sort(o, new EigenSort());
+    
+    int mask = 0;
     for (int i = 0; i < 3; i++) {
       vectors[i] = V3.newV((V3) o[i][0]);
       vectors[i].normalize();
       lengths[i] = ((Float) o[i][1]).floatValue();
+      if (o[i][2] != null)
+        mask += 1 << i;
     }
+    return mask;
   }
   
   /**

Modified: trunk/Jmol/src/org/jmol/util/Quadric.java
===================================================================
--- trunk/Jmol/src/org/jmol/util/Quadric.java   2013-06-23 22:18:48 UTC (rev 
18357)
+++ trunk/Jmol/src/org/jmol/util/Quadric.java   2013-06-24 22:56:54 UTC (rev 
18358)
@@ -32,6 +32,7 @@
   public V3[] vectors;
   public boolean isThermalEllipsoid = true;
   public float scale = 1;
+  public int eigenSignMask = 7;
   
   public void scale(float f) {
     for (int i = 0; i < 3; i++)
@@ -46,9 +47,11 @@
       + vectors[2] + "\t" + lengths[2] + "\n");
   }
   
-  public Quadric fromVectors(V3[] vectors, float[] lengths, boolean isThermal) 
{
+  public Quadric fromVectors(V3[] vectors, float[] lengths, 
+                             int eigenSignMask, boolean isThermal) {
     this.vectors = vectors;
     this.lengths = lengths;
+    this.eigenSignMask = eigenSignMask;
     isThermalEllipsoid = isThermal;
     return this;
   }

Modified: trunk/Jmol/src/org/jmol/viewer/JC.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/JC.java      2013-06-23 22:18:48 UTC (rev 
18357)
+++ trunk/Jmol/src/org/jmol/viewer/JC.java      2013-06-24 22:56:54 UTC (rev 
18358)
@@ -940,6 +940,8 @@
   }
   
   private final static String[] pdbBondInfo = {
+    // added O3' HO3' O5' HO5' for nucleic and added 1 H atom for res 1 for 
13.1.17
+    // this could throw off states from previous versions
     "",
     /*ALA*/ "N N CA HA C O CB HB?",
     /*ARG*/ "N N CA HA C O CB HB2@HB3 CG HG2@HG3 CD D NE HE CZ NH1 NH1 
HH11@HH12 NH2 HH21@HH22", 
@@ -964,18 +966,18 @@
     /*ASX*/ "CA HA C O CB HB2@HB1 C H",
     /*GLX*/ "CA HA C O CB HB1 CB HB2 CG HG1 CG HG2", 
     /*UNK*/ "",
-    /*G*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 
C4 C6 O6 N1 H1 C2 N3 N2 H21@H22", 
-    /*C*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 C4 N4 
H41@H42 C5 C6 C5 H5 C6 H6", 
-    /*A*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 
C4 C6 N1 N6 H61@H62 C2 N3 C2 H2",
-    /*T*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 
C7 H7? C6 H6",
-    /*U*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 H3 C4 
O4 C5 C6 C5 H5 C6 H6", 
-    /*I*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 
C4 C6 O6 N1 H1 C2 N3 C2 H2",
-    /*DG*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 
N1 H1 C2 N3 N2 H21@H22", 
-    /*DC*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 C4 N4 H41@H42 
C5 C6 C5 H5 C6 H6", 
-    /*DA*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 
N6 H61@H62 C2 N3 C2 H2", 
-    /*DT*/ "P OP1 C5' H5'@H5'' C4' H4' C3' H3' C2' H2'@H2'' C1' H1' C2 O2 N3 
H3 C4 O4 C5 C6 C7 H7? C6 H6",
-    /*DU*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2'@H2'' C1' H1' C2 O2 N3 H3 C4 O4 
C5 C6 C5 H5 C6 H6",  
-    /*DI*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 
N1 H1 C2 N3 C2 H2",  
+    /*G*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 
C4 C6 O6 N1 H1 C2 N3 N2 H21@H22 O3' HO3' O5' HO5'", 
+    /*C*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 C4 N4 
H41@H42 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", 
+    /*A*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 
C4 C6 N1 N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5'",
+    /*T*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 H3 C4 O4 C5 C6 
C7 H7? C6 H6 O3' HO3' O5' HO5'",
+    /*U*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C2 O2 N3 H3 C4 
O4 C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", 
+    /*I*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2' O2' HO2' C1' H1' C8 N7 C8 H8 C5 
C4 C6 O6 N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'",
+    /*DG*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 
N1 H1 C2 N3 N2 H21@H22 O3' HO3' O5' HO5'", 
+    /*DC*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C2 O2 N3 C4 N4 H41@H42 
C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'", 
+    /*DA*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 N1 
N6 H61@H62 C2 N3 C2 H2 O3' HO3' O5' HO5'", 
+    /*DT*/ "P OP1 C5' H5'@H5'' C4' H4' C3' H3' C2' H2'@H2'' C1' H1' C2 O2 N3 
H3 C4 O4 C5 C6 C7 H7? C6 H6 O3' HO3' O5' HO5'",
+    /*DU*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' H2'@H2'' C1' H1' C2 O2 N3 H3 C4 O4 
C5 C6 C5 H5 C6 H6 O3' HO3' O5' HO5'",  
+    /*DI*/ "P OP1 C5' 5 C4' H4' C3' H3' C2' 2 C1' H1' C8 N7 C8 H8 C5 C4 C6 O6 
N1 H1 C2 N3 C2 H2 O3' HO3' O5' HO5'",  
       };
 
   private final static int[] pdbHydrogenCount = {

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2013-06-23 22:18:48 UTC 
(rev 18357)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2013-06-24 22:56:54 UTC 
(rev 18358)
@@ -9,8 +9,11 @@
 #  The quotes above look odd for a parameter file, but they are 
 #  important for the JavaScript version of Jmol.
 
-___JmolVersion="13.1.17_dev_2013.06.23"
+___JmolVersion="13.1.17_dev_2013.06.24"
 
+bug fix: PyMOL putty broken
+bug fix: pdbAddHydrogens may miss O3' or O5' H atoms at end of DNA strands
+bug fix: pdbAddHydrogens may miss H in first group of a chain
 bug fix: set defaultDrawArrowScale broken 
 
 TODO: PyMOL uniqueAtomSettings for transparency

Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/StateManager.java    2013-06-23 22:18:48 UTC 
(rev 18357)
+++ trunk/Jmol/src/org/jmol/viewer/StateManager.java    2013-06-24 22:56:54 UTC 
(rev 18358)
@@ -852,6 +852,7 @@
       //setParameterValue("edsUrlOptions", edsUrlOptions);
       setS("edsUrlCutoff", edsUrlCutoff);
       setB("ellipsoidArcs", ellipsoidArcs);
+      setB("ellipsoidArrrow", ellipsoidArrows);
       setB("ellipsoidAxes", ellipsoidAxes);
       setF("ellipsoidAxisDiameter", ellipsoidAxisDiameter);
       setB("ellipsoidBall", ellipsoidBall);
@@ -1238,6 +1239,7 @@
     boolean ellipsoidAxes = false;
     boolean ellipsoidDots = false;
     boolean ellipsoidArcs = false;
+    boolean ellipsoidArrows = false;
     boolean ellipsoidFill = false;
     boolean ellipsoidBall = true;
 

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


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

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to