From: <ha...@us...> - 2013-06-24 22:57:02
|
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. |