From: <ha...@us...> - 2010-08-30 22:42:22
|
Revision: 14207 http://jmol.svn.sourceforge.net/jmol/?rev=14207&view=rev Author: hansonr Date: 2010-08-30 22:42:15 +0000 (Mon, 30 Aug 2010) Log Message: ----------- version=12.0.11_dev # bug fix: set drawHover isosurface hover error kills hover watcher Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-30 22:39:18 UTC (rev 14206) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-30 22:42:15 UTC (rev 14207) @@ -15384,8 +15384,10 @@ break; case Token.increment: Point3f pt = getPoint3f(i + 2, false); - if (pt.z <= 0) + if (pt.z <= 0 || pt.y < pt.x) error(ERROR_invalidArgument); // from to step + if (pt.z == (int) pt.z && pt.z > (pt.y - pt.x)) + pt.z = (pt.y - pt.x) / pt.z; propertyValue = pt; i = iToken; sbCommand.append(" increment ").append(Escape.escape(pt)); Modified: branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2010-08-30 22:39:18 UTC (rev 14206) +++ branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2010-08-30 22:42:15 UTC (rev 14207) @@ -1364,11 +1364,13 @@ dmin2 <<= 1; } Vector pickedContour = null; + int pickedVertex = -1; for (int i = 0; i < meshCount; i++) { IsosurfaceMesh m = isomeshes[i]; if (!isPickable(m, bsVisible)) continue; Vector[] vs = m.jvxlData.vContours; + int ilast = (m.firstRealVertex < 0 ? 0 : m.firstRealVertex); if (vs != null && vs.length > 0) { for (int j = 0; j < vs.length; j++) { Vector vc = vs[j]; @@ -1385,21 +1387,17 @@ if (pickedContour != null) return pickedContour.get(JvxlCoder.CONTOUR_VALUE).toString(); } else if (m.jvxlData.jvxlPlane != null && m.vertexValues != null) { - int pickedVertex = -1; - for (int k = m.vertexCount; --k >= m.firstRealVertex;) { - if (Float.isNaN(m.firstRealVertex)) - continue; - Point3f v = m.vertices[k]; + Point3f[] vertices = (m.ptOffset == null && m.scale3d == 0 + ? m.vertices : m.getOffsetVertices(m.jvxlData.jvxlPlane)); + for (int k = m.vertexCount; --k >= ilast;) { + Point3f v = vertices[k]; int d2 = coordinateInRange(x, y, v, dmin2, ptXY); if (d2 >= 0) { dmin2 = d2; pickedVertex = k; } } - if (pickedVertex != -1) - return "v" + pickedVertex + ": " + m.vertexValues[pickedVertex]; } else if (m.vertexValues != null) { - int pickedVertex = -1; for (int k = m.vertexCount; --k >= m.firstRealVertex;) { Point3f v = m.vertices[k]; int d2 = coordinateInRange(x, y, v, dmin2, ptXY); @@ -1408,9 +1406,9 @@ pickedVertex = k; } } - if (pickedVertex != -1) - return "v" + pickedVertex + ": " + m.vertexValues[pickedVertex]; - } + } + if (pickedVertex != -1) + return (Logger.debugging ? "v" + pickedVertex + ": " : "") + m.vertexValues[pickedVertex]; } return null; } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-30 22:39:18 UTC (rev 14206) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-30 22:42:15 UTC (rev 14207) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: set drawHover isosurface hover error kills hover watcher # code: AtomPropertyMapper isolated from IsoSolventReader # bug fix: isosurface "t.jvxl" map property temperature nonfunctional # bug fix: isosurface PROPERTY ("VDW 100%" implied) not working This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-31 10:28:03
|
Revision: 14209 http://jmol.svn.sourceforge.net/jmol/?rev=14209&view=rev Author: hansonr Date: 2010-08-31 10:27:56 +0000 (Tue, 31 Aug 2010) Log Message: ----------- version=12.0.11_dev # bug fix: isosurface plane problems Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java branches/v12_0/Jmol/src/org/jmol/shape/Mesh.java branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java branches/v12_0/Jmol/src/org/jmol/shapebio/BioShapeRenderer.java branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -155,10 +155,12 @@ : voxelValue < max; } */ + float calcContourPoint(float cutoff, float valueA, float valueB, - Point3f contourPoint) { + Point3f pt) { + return volumeData.calculateFractionalPoint(cutoff, pointA, pointB, valueA, - valueB, contourPoint); + valueB, pt); } final Point3f ptTemp = new Point3f(); @@ -216,9 +218,14 @@ if (f >= 0 && f <= 1) { pointA.set(contourVertexes[iA]); pointB.set(contourVertexes[iB]); - calcContourPoint(value, valueA, valueB, ptTemp); - iPt = addContourVertex(0, 0, 0, null, ptTemp, value); - contourVertexes[iPt].setValue(value); + value = calcContourPoint(value, valueA, valueB, ptTemp); + if (!Float.isNaN(value)) { + iPt = addContourVertex(0, 0, 0, null, ptTemp, value); + contourVertexes[iPt].setValue(value); + } else { + System.out.println("#MarchingSquares nonlinear problem for contour " + (i + 1) + " at " + ptTemp + " " + valueA + " " + valueB + + "\ndraw ID \"pt" + ptTemp + "\" scale 5.0 @{point" + ptTemp + "}" ); + } } } htPts.put(key, Integer.valueOf(iPt)); @@ -226,7 +233,9 @@ } protected void checkContour(int i, float value) { - //System.out.println(" " + contourVertexes[pts[0]].value + " " + contourVertexes[pts[1]].value + " " + contourVertexes[pts[2]].value + " " + value); + // System.out.println(" ms i=" + i + " " + contourVertexes[pts[0]].value + " " + contourVertexes[pts[1]].value + " " + contourVertexes[pts[2]].value + " " + value); + // System.out.println(pts[0] + " " + pts[1] + " " + pts[2]); + // System.out.println(contourVertexes[pts[0]] + "\n" + contourVertexes[pts[1]] + "\n" + contourVertexes[pts[2]]); int ipt0 = intercept(0, value); int ipt1 = intercept(1, value); int ipt2 = intercept(2, value); @@ -240,9 +249,6 @@ if (ipt2 >= 0) { mode += 4; } - if (mode == 0) - return; - isValid = false; switch (mode) { case 3: addTriangle(pts[0], ipt0, ipt1, 2 | (check & 1), i); @@ -259,15 +265,16 @@ addTriangle(ipt2, pts[1], ipt1, 4 | (check & 2), i); addTriangle(ipt2, ipt1, pts[2], 1 | (check & 6), i); break; + default: + return; } + isValid = false; } - void setValidity(float min, float max) { - isValid &= (contourVertexes[pts[0]].value <= max - && contourVertexes[pts[1]].value <= max - && contourVertexes[pts[2]].value <= max - && contourVertexes[pts[0]].value >= min - && contourVertexes[pts[1]].value >= min && contourVertexes[pts[2]].value >= min); + void setValidity() { + isValid &= (!Float.isNaN(contourVertexes[pts[0]].value) + && !Float.isNaN(contourVertexes[pts[1]].value) + && !Float.isNaN(contourVertexes[pts[2]].value)); } } @@ -308,8 +315,11 @@ float maxCutoff = Float.MAX_VALUE; float minCutoff = -Float.MAX_VALUE; +// float lastCutoff = 0; + float cutoff = minCutoff; for (int i = 0; i < nContourSegments; i++) { - float cutoff = (contoursDiscrete != null ? contoursDiscrete[i] + // lastCutoff = cutoff; + cutoff = (contoursDiscrete != null ? contoursDiscrete[i] : contourFromZero ? min + (i * 1f / nContourSegments) * diff : i == 0 ? -Float.MAX_VALUE : i == nContourSegments - 1 ? Float.MAX_VALUE : min @@ -322,7 +332,7 @@ cutoff = (cutoff < 0 ? -0.0001f : 0.0001f); contourValuesUsed[i] = cutoff; - Logger.info("contour " + i + " " + cutoff); + Logger.info("#contour " + (i + 1)+ " " + cutoff); int n = 0; htPts.clear(); for (int ii = triangleCount; --ii >= 0;) { @@ -345,16 +355,29 @@ minCutoff = contoursDiscrete[0]; maxCutoff = contoursDiscrete[contoursDiscrete.length - 1]; } - if (contourFromZero || contoursDiscrete != null) + valueMin = contourValuesUsed[0]; + valueMax = (contourValuesUsed.length == 0 ? + valueMin : contourValuesUsed[contourValuesUsed.length - 1]); + if (contourFromZero || contoursDiscrete != null) { + for (int i = 0; i < contourVertexCount; i++) { + float v = contourVertexes[i].value; + if (v > maxCutoff || v < minCutoff) + contourVertexes[i].value = Float.NaN; + } for (int i = triangleCount; --i >= 0;) - triangles[i].setValidity(minCutoff, maxCutoff); + triangles[i].setValidity(); + } return true; } + public float[] getMinMax() { + return new float[] { valueMin, valueMax }; + } private void addAllTriangles() { for (int i = 0; i < triangleCount; i++) if (triangles[i].isValid) { Triangle t = triangles[i]; + //System.out.println(contourVertexes[t.pts[0]].value + " " + contourVertexes[t.pts[1]].value + " " + contourVertexes[t.pts[2]].value + " " ); surfaceReader.addTriangleCheck(t.pts[0], t.pts[1], t.pts[2], t.check, t.contourIndex, false, -1); } Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -424,30 +424,46 @@ private final Vector3f edgeVector = new Vector3f(); + private Point3f ptTemp = new Point3f(); + public float calculateFractionalPoint(float cutoff, Point3f pointA, Point3f pointB, float valueA, - float valueB, Point3f contourPoint) { - float fraction = (/*false && Float.isNaN(valueA) ? 1 - : false && Float.isNaN(valueB) ? 0 - : DEAD CODE */(cutoff - valueA) / (valueB - valueA)); + float valueB, Point3f pt) { + float d = (valueB - valueA); + float fraction = (cutoff - valueA) / d; edgeVector.sub(pointB, pointA); - contourPoint.scaleAdd(fraction, edgeVector, pointA); - float dist; + pt.scaleAdd(fraction, edgeVector, pointA); if (sr == null || !doIterate || valueB == valueA || fraction < 0.01f || fraction > 0.99f - || (dist = edgeVector.length()) < 0.01f) - return fraction; - // if the surfaceReader is present, it means we can - // do a nonlinear interpolation here and get a better value + || (edgeVector.length()) < 0.01f) + return cutoff; + // Do a nonlinear interpolation here and get a better value // such is the case for atomic orbitals. - float diff = 0; + // In some cases we will find that we cannot get there, either + // because the actual point is not between valueA and valueB + // or because the projected point is not between pointA and pointB + // In that case we invalidate the point. int n = 0; - while (++n < 10 && Math.abs((diff = (cutoff - - sr.getValueAtPoint(contourPoint)) / (valueB - valueA))) > 0.005f) { - contourPoint.scaleAdd(diff, edgeVector, contourPoint); + ptTemp.set(pt); + float v = sr.getValueAtPoint(ptTemp); + float v0 = Float.NaN; + + while (++n < 10) { + float fnew = (v - valueA) / d; + if (fnew < 0 || fnew > 1) + break; + float diff = (cutoff - v) / d / 2; + fraction += diff; + if (fraction < 0 || fraction > 1) + break; + pt.set(ptTemp); + v0 = v; + if (Math.abs(diff) < 0.005f) + break; + ptTemp.scaleAdd(diff, edgeVector, pt); + v = sr.getValueAtPoint(pt); } - dist = contourPoint.distance(pointA) / dist; - return (dist > 1 || dist < 0 ? fraction : dist); + return v0; } Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -625,6 +625,7 @@ contourVertexCount = marchingSquares .generateContourData(jvxlDataIs2dContour); jvxlData.contourValuesUsed = marchingSquares.getContourValues(); + minMax = marchingSquares.getMinMax(); if (meshDataServer != null) meshDataServer.notifySurfaceGenerationCompleted(); finalizeMapping(); Modified: branches/v12_0/Jmol/src/org/jmol/shape/Mesh.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/Mesh.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/shape/Mesh.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -127,10 +127,10 @@ this.meshType = meshType; } - public void initialize(int lighting, Point3f[] vertices) { + public void initialize(int lighting, Point3f[] vertices, Point4f plane) { if (vertices == null) vertices = this.vertices; - Vector3f[] normals = getNormals(vertices); + Vector3f[] normals = getNormals(vertices, plane); normixes = new short[normixCount]; isTwoSided = (lighting == JmolConstants.FULLYLIT); BitSet bsTemp = new BitSet(); @@ -146,12 +146,18 @@ setLighting(lighting); } - public Vector3f[] getNormals(Point3f[] vertices) { + public Vector3f[] getNormals(Point3f[] vertices, Point4f plane) { normixCount = (isPolygonSet ? polygonCount : vertexCount); Vector3f[] normals = new Vector3f[normixCount]; for (int i = normixCount; --i >= 0;) normals[i] = new Vector3f(); - sumVertexNormals(vertices, normals); + if (plane == null) { + sumVertexNormals(vertices, normals); + }else { + Vector3f normal = new Vector3f(plane.x, plane.y, plane.z); + for (int i = normixCount; --i >= 0;) + normals[i] = normal; + } if (!isPolygonSet) for (int i = normixCount; --i >= 0;) normals[i].normalize(); @@ -271,7 +277,7 @@ if (normal != null && val != 0) pt.scaleAdd(val, normal, pt); } - initialize(lighting, offsetVertices); + initialize(lighting, offsetVertices, null); return offsetVertices; } } Modified: branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -317,7 +317,7 @@ } protected void exportSurface() { - mesh.vertexNormals = mesh.getNormals(vertices); + mesh.vertexNormals = mesh.getNormals(vertices, null); mesh.bsFaces = bsFaces; g3d.drawSurface(mesh, mesh.offsetVertices, latticeOffset); mesh.vertexNormals = null; Modified: branches/v12_0/Jmol/src/org/jmol/shapebio/BioShapeRenderer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shapebio/BioShapeRenderer.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/shapebio/BioShapeRenderer.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -582,7 +582,7 @@ for (int k = hermiteLevel * 2; --k >= 0;) mesh.addQuad(nPoints - k - 1, nPoints - nPer + (nPer - k) % nPer, nPoints - nPer + k + 1, nPoints - nPer + k + 2); - mesh.initialize(JmolConstants.FRONTLIT, null); + mesh.initialize(JmolConstants.FRONTLIT, null, null); //System.out.sprintln("mesh "+ mesh.thisID + " " + mesh.vertexCount+" "+mesh.vertices.length + " " + mesh.polygonCount + " " + mesh.polygonIndexes.length); mesh.setVisibilityFlags(1); return (meshReady[i] = true); Modified: branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -294,7 +294,7 @@ if (thisMesh != null) { // no points in this script statement scaleDrawing(thisMesh, newScale); - thisMesh.initialize(JmolConstants.FULLYLIT, null); + thisMesh.initialize(JmolConstants.FULLYLIT, null, null); } return; } @@ -370,7 +370,7 @@ && newScale == 1) newScale = length; scaleDrawing(thisMesh, newScale); - thisMesh.initialize(JmolConstants.FULLYLIT, null); + thisMesh.initialize(JmolConstants.FULLYLIT, null, null); setAxes(thisMesh); thisMesh.title = title; thisMesh.visible = true; Modified: branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2010-08-31 10:27:56 UTC (rev 14209) @@ -943,7 +943,7 @@ thisMesh.calculatedArea = null; thisMesh.calculatedVolume = null; thisMesh.initialize(sg.getPlane() != null ? JmolConstants.FULLYLIT - : lighting, null); + : lighting, null, sg.getPlane()); if (thisMesh.jvxlData.jvxlPlane != null) allowContourLines = false; thisMesh.isSolvent = ((sg.getDataType() & Parameters.IS_SOLVENTTYPE) != 0); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-31 10:27:18 UTC (rev 14208) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-31 10:27:56 UTC (rev 14209) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: isosurface plane problems # bug fix: set drawHover isosurface hover error kills hover watcher # code: AtomPropertyMapper isolated from IsoSolventReader # bug fix: isosurface "t.jvxl" map property temperature nonfunctional This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-31 20:29:55
|
Revision: 14211 http://jmol.svn.sourceforge.net/jmol/?rev=14211&view=rev Author: hansonr Date: 2010-08-31 20:29:49 +0000 (Tue, 31 Aug 2010) Log Message: ----------- version=12.0.11_dev # bug fix: #....... #.... two # in one line with first in first character fails Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-08-31 20:28:25 UTC (rev 14210) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-08-31 20:29:49 UTC (rev 14211) @@ -539,7 +539,7 @@ continue; break; } - if (ichFirstSharp > 0) + if (ichFirstSharp >= 0) continue; if (ch == '#') ichFirstSharp = ichT; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-31 20:28:25 UTC (rev 14210) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-31 20:29:49 UTC (rev 14211) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: #....... #.... two # in one line with first in first character fails # bug fix: isosurface plane problems # bug fix: set drawHover isosurface hover error kills hover watcher # code: AtomPropertyMapper isolated from IsoSolventReader This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-31 23:05:37
|
Revision: 14214 http://jmol.svn.sourceforge.net/jmol/?rev=14214&view=rev Author: hansonr Date: 2010-08-31 23:05:30 +0000 (Tue, 31 Aug 2010) Log Message: ----------- version=12.0.11_dev # bug fix: isosurface contour colors Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2010-08-31 23:03:50 UTC (rev 14213) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2010-08-31 23:05:30 UTC (rev 14214) @@ -223,8 +223,8 @@ iPt = addContourVertex(0, 0, 0, null, ptTemp, value); contourVertexes[iPt].setValue(value); } else { - System.out.println("#MarchingSquares nonlinear problem for contour " + (i + 1) + " at " + ptTemp + " " + valueA + " " + valueB - + "\ndraw ID \"pt" + ptTemp + "\" scale 5.0 @{point" + ptTemp + "}" ); +// System.out.println("#MarchingSquares nonlinear problem for contour " + (i + 1) + " at " + ptTemp + " " + valueA + " " + valueB + // + "\ndraw ID \"pt" + ptTemp + "\" scale 5.0 @{point" + ptTemp + "}" ); } } } @@ -337,7 +337,7 @@ htPts.clear(); for (int ii = triangleCount; --ii >= 0;) { if (triangles[ii].isValid) - triangles[ii].checkContour(i + 1, cutoff); + triangles[ii].checkContour(i, cutoff); else n++; } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-31 23:03:50 UTC (rev 14213) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-31 23:05:30 UTC (rev 14214) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: isosurface contour colors # bug fix: #....... #.... two # in one line with first in first character fails # bug fix: isosurface plane problems # bug fix: set drawHover isosurface hover error kills hover watcher This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-01 12:01:34
|
Revision: 14216 http://jmol.svn.sourceforge.net/jmol/?rev=14216&view=rev Author: hansonr Date: 2010-09-01 12:01:27 +0000 (Wed, 01 Sep 2010) Log Message: ----------- version=12.0.11_dev # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) # bug fix: color PROPERTY x with set rangeSelected does not work Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/script/Token.java branches/v12_0/Jmol/src/org/jmol/util/Parser.java branches/v12_0/Jmol/src/org/jmol/viewer/ColorManager.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-01 12:01:08 UTC (rev 14215) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-01 12:01:27 UTC (rev 14216) @@ -865,7 +865,7 @@ tok2 = Token.minmaxmask; if (tokAt(iToken + 3) == Token.per && tokAt(iToken + 4) == Token.bin) - tok2 = Token.allfloat; + tok2 = Token.selectedfloat; // fall through case Token.min: case Token.max: @@ -873,7 +873,7 @@ case Token.sum: case Token.sum2: case Token.average: - allowMathFunc = (isUserFunction || tok2 == Token.minmaxmask || tok2 == Token.allfloat); + allowMathFunc = (isUserFunction || tok2 == Token.minmaxmask || tok2 == Token.selectedfloat); token.intValue |= tok2; getToken(iToken + 2); } @@ -1086,7 +1086,7 @@ private float[] getBitsetPropertyFloat(BitSet bs, int tok, float min, float max) throws ScriptException { - float[] data = (float[]) getBitsetProperty(bs, tok | Token.allfloat, null, + float[] data = (float[]) getBitsetProperty(bs, tok, null, null, null, null, false, Integer.MAX_VALUE, false); if (!Float.isNaN(min)) for (int i = 0; i < data.length; i++) @@ -1115,8 +1115,10 @@ // check minmax flags: int minmaxtype = tok & Token.minmaxmask; - boolean allFloat = (minmaxtype == Token.allfloat); - boolean isExplicitlyAll = (minmaxtype == Token.minmaxmask || allFloat); + boolean selectedFloat = (minmaxtype == Token.selectedfloat); + int atomCount = viewer.getAtomCount(); + float[] fout = (minmaxtype == Token.allfloat ? new float[atomCount] : null); + boolean isExplicitlyAll = (minmaxtype == Token.minmaxmask || selectedFloat); tok &= ~Token.minmaxmask; if (tok == Token.nada) tok = (isAtoms ? Token.atoms : Token.bonds); @@ -1149,10 +1151,9 @@ // preliminarty checks we only want to do once: Point3f pt = (isPt || !isAtoms ? new Point3f() : null); - if (isString || isExplicitlyAll) + if (isExplicitlyAll || isString && minmaxtype != Token.allfloat) minmaxtype = Token.all; Vector vout = (minmaxtype == Token.all ? new Vector() : null); - BitSet bsNew = null; String userFunction = null; Vector params = null; @@ -1199,7 +1200,7 @@ case Token.function: userFunction = (String) ((Object[]) opValue)[0]; params = (Vector) ((Object[]) opValue)[1]; - bsAtom = new BitSet(viewer.getAtomCount()); + bsAtom = new BitSet(atomCount); tokenAtom = new ScriptVariable(Token.bitset, bsAtom); break; case Token.straightness: @@ -1245,10 +1246,10 @@ i1 = index + 1; } else if (haveBitSet) { i0 = bs.nextSetBit(0); - i1 = Math.min(viewer.getAtomCount(), bs.length()); + i1 = Math.min(atomCount, bs.length()); } else { i0 = 0; - i1 = viewer.getAtomCount(); + i1 = atomCount; } if (isSyntaxCheck) i1 = 0; @@ -1292,6 +1293,9 @@ if (fv > fvMinMax) fvMinMax = fv; break; + case Token.allfloat: + fout[i] = fv; + break; case Token.all: vout.add(new Float(fv)); break; @@ -1359,6 +1363,9 @@ if (iv > ivMinMax) ivMinMax = iv; break; + case Token.allfloat: + fout[i] = iv; + break; case Token.all: vout.add(new Integer(iv)); break; @@ -1372,16 +1379,28 @@ } break; case 2: // isString - vout.add(Atom.atomPropertyString(atom, tok)); + String s = Atom.atomPropertyString(atom, tok); + switch (minmaxtype) { + case Token.allfloat: + fout[i] = Parser.parseFloat(s); + break; + default: + vout.add(s); + } break; case 3: // isPt Tuple3f t = Atom.atomPropertyTuple(atom, tok); if (t == null) error(ERROR_unrecognizedAtomProperty, Token.nameOf(tok)); - pt.add(t); - if (minmaxtype == Token.all) { - vout.add(new Point3f(pt)); - pt.set(0, 0, 0); + switch (minmaxtype) { + case Token.allfloat: + fout[i] = (float) Math.sqrt(t.x * t.x + t.y * t.y + t.z * t.z); + break; + case Token.all: + vout.add(new Point3f(t)); + break; + default: + pt.add(t); } break; } @@ -1450,6 +1469,8 @@ } } } + if (minmaxtype == Token.allfloat) + return fout; if (minmaxtype == Token.all) { if (asVector) return vout; @@ -1462,8 +1483,8 @@ sb.append((String) vout.get(i)); return sb.toString(); } - if (allFloat) { - float[] fout = new float[len]; + if (selectedFloat) { + fout = new float[len]; Point3f zero = (len > 0 && isPt ? new Point3f() : null); for (int i = len; --i >= 0;) { Object v = vout.get(i); @@ -7318,15 +7339,15 @@ && shapeType != JmolConstants.SHAPE_HSTICKS) error(ERROR_invalidArgument); Object data = null; + BitSet bsSelected = (pid != JmolConstants.PALETTE_PROPERTY + && pid != JmolConstants.PALETTE_VARIABLE + || !viewer.isRangeSelected() ? null : viewer + .getSelectionSet(false)); if (pid == JmolConstants.PALETTE_PROPERTY) { - BitSet bsSelected = (viewer.isRangeSelected() ? viewer - .getSelectionSet(false) : null); if (isColorIndex) { if (!isSyntaxCheck) { - data = getBitsetProperty(bsSelected, (isByElement ? Token.elemno - : Token.groupid) - | Token.minmaxmask, null, null, null, null, false, - Integer.MAX_VALUE, false); + data = getBitsetPropertyFloat(bsSelected, (isByElement ? Token.elemno + : Token.groupid) | Token.allfloat, Float.NaN, Float.NaN); } } else { if (!isColorIndex && !isIsosurface) @@ -7336,21 +7357,11 @@ Token.atomproperty) && !Token.tokAttr(tok, Token.strproperty)) { if (!isSyntaxCheck) { - data = getBitsetProperty(bsSelected, getToken(index++).tok - | Token.minmaxmask, null, null, null, null, false, - Integer.MAX_VALUE, false); + data = getBitsetPropertyFloat(bsSelected, + getToken(index++).tok | Token.allfloat, Float.NaN, Float.NaN); } } } - if (data != null && !(data instanceof float[])) { - if (data instanceof String[]) { - float[] fdata = new float[((String[]) data).length]; - Parser.parseFloatArray((String[]) data, null, fdata); - data = fdata; - } else { - error(ERROR_invalidArgument); - } - } } else if (pid == JmolConstants.PALETTE_VARIABLE) { index++; name = parameterAsString(index++); @@ -7363,8 +7374,9 @@ String scheme = (tokAt(index) == Token.string ? parameterAsString( index++).toLowerCase() : null); if (scheme != null && !isIsosurface) { - setStringProperty("propertyColorScheme", - (isTranslucent && translucentLevel == Float.MAX_VALUE ? "translucent " : "") + scheme); + setStringProperty("propertyColorScheme", (isTranslucent + && translucentLevel == Float.MAX_VALUE ? "translucent " : "") + + scheme); isColorIndex = (scheme.indexOf(ColorEncoder.BYELEMENT_PREFIX) == 0 || scheme .indexOf(ColorEncoder.BYRESIDUE_PREFIX) == 0); } @@ -7388,9 +7400,9 @@ if (!isSyntaxCheck) { if (isIsosurface) { } else if (data == null) { - viewer.setCurrentColorRange(name); + viewer.setCurrentColorRange(name); } else { - viewer.setCurrentColorRange((float[]) data, null); + viewer.setCurrentColorRange((float[]) data, bsSelected); } if (isIsosurface) { checkLength(index); @@ -7556,11 +7568,11 @@ if (Token.tokAttrOr(tokProp1, Token.intproperty, Token.floatproperty) && Token.tokAttrOr(tokProp2, Token.intproperty, Token.floatproperty) && Token.tokAttrOr(tokKey, Token.intproperty, Token.floatproperty)) { - float[] data1 = getBitsetPropertyFloat(bsFrom, tokProp1, Float.NaN, + float[] data1 = getBitsetPropertyFloat(bsFrom, tokProp1 | Token.selectedfloat, Float.NaN, Float.NaN); - float[] data2 = getBitsetPropertyFloat(bsFrom, tokKey, Float.NaN, + float[] data2 = getBitsetPropertyFloat(bsFrom, tokKey | Token.selectedfloat, Float.NaN, Float.NaN); - float[] data3 = getBitsetPropertyFloat(bsTo, tokKey, Float.NaN, + float[] data3 = getBitsetPropertyFloat(bsTo, tokKey | Token.selectedfloat, Float.NaN, Float.NaN); boolean isProperty = (tokProp2 == Token.property); float[] dataOut = new float[isProperty ? viewer.getAtomCount() @@ -8709,12 +8721,12 @@ float[] dataX = null, dataY = null, dataZ = null; Point3f factors = new Point3f(1, 1, 1); if (plotType == JmolConstants.JMOL_DATA_OTHER) { - dataX = getBitsetPropertyFloat(bs, propertyX, (minXYZ == null ? Float.NaN + dataX = getBitsetPropertyFloat(bs, propertyX | Token.selectedfloat, (minXYZ == null ? Float.NaN : minXYZ.x), (maxXYZ == null ? Float.NaN : maxXYZ.x)); - dataY = getBitsetPropertyFloat(bs, propertyY, (minXYZ == null ? Float.NaN + dataY = getBitsetPropertyFloat(bs, propertyY | Token.selectedfloat, (minXYZ == null ? Float.NaN : minXYZ.y), (maxXYZ == null ? Float.NaN : maxXYZ.y)); if (propertyZ != 0) - dataZ = getBitsetPropertyFloat(bs, propertyZ, + dataZ = getBitsetPropertyFloat(bs, propertyZ | Token.selectedfloat, (minXYZ == null ? Float.NaN : minXYZ.z), (maxXYZ == null ? Float.NaN : maxXYZ.z)); if (minXYZ == null) Modified: branches/v12_0/Jmol/src/org/jmol/script/Token.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/Token.java 2010-09-01 12:01:08 UTC (rev 14215) +++ branches/v12_0/Jmol/src/org/jmol/script/Token.java 2010-09-01 12:01:27 UTC (rev 14216) @@ -158,7 +158,8 @@ * x sum * x x sum2 * xx stddev - * xxx allfloat + * xxx selectedfloat (including just the atoms selected) + * x fullfloat (including all atoms, not just selected) * x??? [available] * xxxx minmaxmask (all) * xx maximum number of parameters for function @@ -490,18 +491,20 @@ // .min and .max, .average, .sum, .sum2, .stddev, and .all // are bitfields added to a preceding property selector // for example, x.atoms.max, x.atoms.all - // .all gets incorporated as minmaxmask - // .allfloat is a special flag used by Jmol to pass - // temporary float arrays to the .bin() function + // .selectedfloat is a special flag used by mapPropety() and plot() + // to pass temporary float arrays to the .bin() function + // .allfloat is a special flag for colorShape() to get a full + // atom float array final static int minmaxmask /*all*/ = 0xF << 5; - public final static int min = 1 << 5; - public final static int max = 2 << 5; - public final static int average = 3 << 5; - public final static int sum = 4 << 5; - public final static int sum2 = 5 << 5; - public final static int stddev = 6 << 5; - public final static int allfloat = 7 << 5; //not user-selectable + public final static int min = 1 << 5; + public final static int max = 2 << 5; + public final static int average = 3 << 5; + public final static int sum = 4 << 5; + public final static int sum2 = 5 << 5; + public final static int stddev = 6 << 5; + public final static int selectedfloat = 7 << 5; //not user-selectable + public final static int allfloat = 8 << 5; //not user-selectable final static int settable = 1 << 11; Modified: branches/v12_0/Jmol/src/org/jmol/util/Parser.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/Parser.java 2010-09-01 12:01:08 UTC (rev 14215) +++ branches/v12_0/Jmol/src/org/jmol/util/Parser.java 2010-09-01 12:01:27 UTC (rev 14216) @@ -93,7 +93,8 @@ while (Float.isNaN(f = Parser.parseFloat(tokens[n++])) && n < nTokens) { } - data[(max = i)] = f; + if (!Float.isNaN(f)) + data[(max = i)] = f; if (n == nTokens) break; } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/ColorManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/ColorManager.java 2010-09-01 12:01:08 UTC (rev 14215) +++ branches/v12_0/Jmol/src/org/jmol/viewer/ColorManager.java 2010-09-01 12:01:27 UTC (rev 14216) @@ -125,7 +125,8 @@ float lo, hi; switch (pid) { case JmolConstants.PALETTE_PROPERTY: - return getPropertyColix(atom.getIndex()); + return (colorData == null || atom.index >= colorData.length + ? Graphics3D.GRAY : getColixForPropertyValue(colorData[atom.index])); case JmolConstants.PALETTE_NONE: case JmolConstants.PALETTE_CPK: // Note that CPK colors can be changed based upon user preference @@ -244,12 +245,6 @@ return (argb == 0 ? Graphics3D.HOTPINK : Graphics3D.getColix(argb)); } - private short getPropertyColix(int iAtom) { - if (colorData == null || iAtom >= colorData.length) - return Graphics3D.GRAY; - return getColixForPropertyValue(colorData[iAtom]); - } - private static int getJmolOrRasmolArgb(int id, int argb) { switch (argb) { case Token.jmol: Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 12:01:08 UTC (rev 14215) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 12:01:27 UTC (rev 14216) @@ -4,6 +4,8 @@ version=12.0.11_dev +# bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) +# bug fix: color PROPERTY x with set rangeSelected does not work # bug fix: isosurface contour colors # bug fix: #....... #.... two # in one line with first in first character fails # bug fix: isosurface plane problems Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-01 12:01:08 UTC (rev 14215) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-01 12:01:27 UTC (rev 14216) @@ -3190,6 +3190,8 @@ float[] data = getDataFloat(label); BitSet bs = (data == null ? null : (BitSet) ((Object[]) dataManager .getData(label))[2]); + if (bs != null && isRangeSelected()) + bs.and(getSelectionSet(false)); setCurrentColorRange(data, bs); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-01 14:55:14
|
Revision: 14218 http://jmol.svn.sourceforge.net/jmol/?rev=14218&view=rev Author: hansonr Date: 2010-09-01 14:55:07 +0000 (Wed, 01 Sep 2010) Log Message: ----------- version=12.0.11_dev # bug fix: isosurface ISSQUARED Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/IsoShapeReader.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2010-09-01 14:54:17 UTC (rev 14217) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2010-09-01 14:55:07 UTC (rev 14218) @@ -208,7 +208,7 @@ return -1; String key = (iA < iB ? iA + "_" + iB : iB + "_" + iA); if (htPts.containsKey(key)) - return ((Integer)htPts.get(key)).intValue(); + return ((Integer) htPts.get(key)).intValue(); float valueA = contourVertexes[iA].value; float valueB = contourVertexes[iB].value; //System.out.println(iA + " " + iB + " " + valueA + " " + value + " " + valueB); @@ -278,10 +278,10 @@ } } - public int generateContourData(boolean haveData) { + public int generateContourData(boolean haveData, float zeroOffset) { Logger.info("generateContours: " + nContourSegments + " segments"); getVertexValues(haveData); - createContours(valueMin, valueMax); + createContours(valueMin, valueMax, zeroOffset); addAllTriangles(); return contourVertexCount; } @@ -307,7 +307,7 @@ } } - private boolean createContours(float min, float max) { + private boolean createContours(float min, float max, float zeroOffset) { float diff = max - min; contourValuesUsed = new float[nContourSegments]; for (int i = triangleCount; --i >= 0;) @@ -315,10 +315,10 @@ float maxCutoff = Float.MAX_VALUE; float minCutoff = -Float.MAX_VALUE; -// float lastCutoff = 0; + //float lastCutoff = 0; float cutoff = minCutoff; for (int i = 0; i < nContourSegments; i++) { - // lastCutoff = cutoff; + //lastCutoff = cutoff; cutoff = (contoursDiscrete != null ? contoursDiscrete[i] : contourFromZero ? min + (i * 1f / nContourSegments) * diff : i == 0 ? -Float.MAX_VALUE @@ -328,8 +328,8 @@ * cutoffs right near zero cause problems, so we adjust just a tad * */ - if (contoursDiscrete == null && Math.abs(cutoff) < 0.0001) - cutoff = (cutoff < 0 ? -0.0001f : 0.0001f); + if (contoursDiscrete == null && Math.abs(cutoff) < zeroOffset) + cutoff = (cutoff < 0 ? -zeroOffset : zeroOffset); contourValuesUsed[i] = cutoff; Logger.info("#contour " + (i + 1)+ " " + cutoff); Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java 2010-09-01 14:54:17 UTC (rev 14217) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/data/VolumeData.java 2010-09-01 14:55:07 UTC (rev 14218) @@ -287,8 +287,10 @@ } public float lookupInterpolatedVoxelValue(Point3f point) { - if (sr != null) - return sr.getValueAtPoint(point); + if (sr != null) { + float v = sr.getValueAtPoint(point); + return (isSquared ? v * v : v); + } ptXyzTemp.sub(point, volumetricOrigin); inverseMatrix.transform(ptXyzTemp); //if (ptXyzTemp.x < -0.1f || ptXyzTemp.y < -0.1f || ptXyzTemp.z < -0.1f) @@ -354,8 +356,13 @@ voxelData[x][y][z] = calcVoxelPlaneDistance(x, y, z); } + private boolean isSquared; public void filterData(boolean isSquared, float invertCutoff) { boolean doInvert = (!Float.isNaN(invertCutoff)); + if (sr != null) { + this.isSquared = isSquared; + return; + } int nx = voxelCounts[0]; int ny = voxelCounts[1]; int nz = voxelCounts[2]; @@ -445,9 +452,8 @@ // In that case we invalidate the point. int n = 0; ptTemp.set(pt); - float v = sr.getValueAtPoint(ptTemp); - float v0 = Float.NaN; - + float v = lookupInterpolatedVoxelValue(ptTemp); + float v0 = Float.NaN; while (++n < 10) { float fnew = (v - valueA) / d; if (fnew < 0 || fnew > 1) @@ -461,7 +467,7 @@ if (Math.abs(diff) < 0.005f) break; ptTemp.scaleAdd(diff, edgeVector, pt); - v = sr.getValueAtPoint(pt); + v = lookupInterpolatedVoxelValue(ptTemp); } return v0; } Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/IsoShapeReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/IsoShapeReader.java 2010-09-01 14:54:17 UTC (rev 14217) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/IsoShapeReader.java 2010-09-01 14:55:07 UTC (rev 14218) @@ -64,6 +64,7 @@ private int maxGrid; private final Point3f ptPsi = new Point3f(); + protected void setup() { volumeData.sr = this; precalculateVoxelData = false; @@ -201,9 +202,16 @@ } private void autoScaleOrbital() { - double min = (params.cutoff == 0 ? 0.01f : Math.abs(params.cutoff / 2)); + double min; + if (params.cutoff == 0) { + min = 0.01f; + } else { + min = Math.abs(params.cutoff / 2); + // ISSQUARED means cutoff is in terms of psi*2, not psi + if (params.isSquared) + min = Math.sqrt(min / 2); + } for (radius = 100; radius > 0; radius--) { - //System.out.println(min + " " + radius + " " + radialPart(radius)); if (Math.abs(radialPart(radius)) >= min) break; } @@ -253,7 +261,7 @@ return rnl * theta_lm * phi_m; } - + protected void readSurfaceData(boolean isMapData) throws Exception { switch (params.dataType) { case Parameters.SURFACE_LONEPAIR: Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-09-01 14:54:17 UTC (rev 14217) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-09-01 14:55:07 UTC (rev 14218) @@ -623,7 +623,7 @@ params.valueMappedToBlue); jvxlData.saveVertexCount = marchingSquares.contourVertexCount; contourVertexCount = marchingSquares - .generateContourData(jvxlDataIs2dContour); + .generateContourData(jvxlDataIs2dContour, (params.isSquared ? 1e-8f : 1e-4f)); jvxlData.contourValuesUsed = marchingSquares.getContourValues(); minMax = marchingSquares.getMinMax(); if (meshDataServer != null) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 14:54:17 UTC (rev 14217) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 14:55:07 UTC (rev 14218) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: isosurface ISSQUARED # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) # bug fix: color PROPERTY x with set rangeSelected does not work # bug fix: isosurface contour colors This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-01 23:36:47
|
Revision: 14221 http://jmol.svn.sourceforge.net/jmol/?rev=14221&view=rev Author: hansonr Date: 2010-09-01 23:36:41 +0000 (Wed, 01 Sep 2010) Log Message: ----------- version=12.0.11_dev # bug fix: lcaoCartoon p orbitals for CO2 Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java 2010-09-01 23:35:23 UTC (rev 14220) +++ branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java 2010-09-01 23:36:41 UTC (rev 14221) @@ -1390,7 +1390,7 @@ Atom[] attached = getAttached(atom, 4, hybridizationCompatible); int nAttached = attached.length; int pt = lcaoType.charAt(lcaoType.length() - 1) - 'a'; - if (pt < 0) + if (pt < 0 || pt > 6) pt = 0; Vector3f vTemp = new Vector3f(); z.set(0, 0, 0); @@ -1458,7 +1458,7 @@ // C=C, no other atoms // fall through case 2: - hybridization = "sp2"; + hybridization = (isSp ? "sp" : "sp2"); break; case 3: // special case, for example R2C=O oxygen @@ -1572,6 +1572,7 @@ break; } // not "sp3" -- sp2 or lone pair + vTemp.cross(x, z); //x and vTemp are now perpendicular to z switch (attached[0].getCovalentBondCount()) { case 1: if (attached[0].getValence() != 2) { @@ -1585,50 +1586,65 @@ // get third atom boolean isCumulated = false; Atom a0 = attached[0]; - while (a0 != null) { + x.set(z); + vTemp.set(vRef); + while (a0 != null && a0.getCovalentBondCount() == 2) { Bond[] bonds = a0.bonds; Atom a = null; - vTemp.set(vRef); + isCumulated = !isCumulated; for (int i = 0; i < bonds.length; i++) if (bonds[i].isCovalent()) { a = bonds[i].getOtherAtom(a0); if (a != atom) { vTemp.sub(a, a0); - if (!isCumulated) - vTemp.cross(vTemp, x); break; } } - if (a0.getValence() != 4 - || a0.getCovalentBondCount() != 2) + vTemp.cross(vTemp, x); + if (vTemp.length() > 0.1f || a.getCovalentBondCount() != 2) break; - isCumulated = !isCumulated; atom = a0; a0 = a; } - // C=C or RC=C - z.cross(vTemp, x); // perp - z.normalize(); - if (pt == 1) - z.scale(-1); - z.scale(sqrt3_2); - z.scaleAdd(0.5f, x, z); + if (vTemp.length() > 0.1f) { + z.cross(vTemp, x); + // C=C or RC=C + z.normalize(); + if (pt == 1) + z.scale(-1); + z.scale(sqrt3_2); + z.scaleAdd(0.5f, x, z); + if (isP) { + vTemp.cross(z, x); + z.set(vTemp); + vTemp.set(x); + } + x.cross(vTemp, z); + } else { + z.set(x); + x.cross(vRef, x); + } break; case 3: // special case, for example R2C=O oxygen - getHybridizationAndAxes(attached[0].index, z, x, "pz", false, + getHybridizationAndAxes(attached[0].index, x, vTemp, "pz", false, doAlignZ); vTemp.set(x); if (isSp2) { // align z as sp2 orbital - z.cross(x, z); + //System.out.println("draw v1 vector @{ {_O}[1]} @{point" + x + "}"); + //System.out.println("draw v2 vector @{ {_O}[1]} @{point" + z + "} color red"); + x.cross(x, z); if (pt == 1) - z.scale(-1); - z.scale(sqrt3_2); - z.scaleAdd(-0.5f, x, z); + x.scale(-1); + x.scale(sqrt3_2); + z.scaleAdd(0.5f, z, x); + } else { + vTemp.set(z); + z.set(x); } + x.cross(vTemp, z); break; } - x.cross(vTemp, z); break; case 2: // two attached atoms -- check for linearity @@ -1646,6 +1662,10 @@ x.scale(-1); break; } + // O-C*-O + vTemp.set(vRef); + z.cross(vTemp, x); + vTemp.cross(z, x); } z.set(x); x.cross(vTemp, z); @@ -1703,7 +1723,7 @@ } return hybridization; } - + /** * dsp3 (trigonal bipyramidal, see-saw, T-shaped) * or d2sp3 (square planar, square pyramidal, octahedral) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 23:35:23 UTC (rev 14220) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 23:36:41 UTC (rev 14221) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: lcaoCartoon p orbitals for CO2 # bug fix: isosurface ISSQUARED # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) # bug fix: color PROPERTY x with set rangeSelected does not work This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-02 00:14:13
|
Revision: 14222 http://jmol.svn.sourceforge.net/jmol/?rev=14222&view=rev Author: hansonr Date: 2010-09-02 00:14:07 +0000 (Thu, 02 Sep 2010) Log Message: ----------- version=12.0.11_dev # bug fix: color label none when already none and after rendering in antialiasdisplay crashes Jmol Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/shape/Labels.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/shape/Labels.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/Labels.java 2010-09-01 23:36:41 UTC (rev 14221) +++ branches/v12_0/Jmol/src/org/jmol/shape/Labels.java 2010-09-02 00:14:07 UTC (rev 14222) @@ -396,8 +396,8 @@ private void setColix(int i, short colix, byte pid) { setColixAndPalette(colix, pid, i); - text = getLabel(i); - if (text != null) + // text is only created by labelsRenderer + if (colixes != null && ((text = getLabel(i)) != null)) text.setColix(colixes[i]); } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-01 23:36:41 UTC (rev 14221) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-02 00:14:07 UTC (rev 14222) @@ -4,6 +4,7 @@ version=12.0.11_dev +# bug fix: color label none when already none and after rendering in antialiasdisplay crashes Jmol # bug fix: lcaoCartoon p orbitals for CO2 # bug fix: isosurface ISSQUARED # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-02 13:31:33
|
Revision: 14226 http://jmol.svn.sourceforge.net/jmol/?rev=14226&view=rev Author: hansonr Date: 2010-09-02 13:31:26 +0000 (Thu, 02 Sep 2010) Log Message: ----------- 12.0.11 VERSION # bug fix: color label none when already none and after rendering for multi-line labels or with antialiasdisplay crashes Jmol # bug fix: lcaoCartoon p orbitals for CO2 # bug fix: isosurface ISSQUARED # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) # bug fix: color PROPERTY x with set rangeSelected does not work # bug fix: isosurface contour colors # bug fix: #....... #.... two # in one line with first in first character fails # bug fix: isosurface plane problems # bug fix: set drawHover isosurface hover error kills hover watcher # code: AtomPropertyMapper isolated from IsoSolventReader # bug fix: isosurface "t.jvxl" map property temperature nonfunctional # bug fix: isosurface PROPERTY ("VDW 100%" implied) not working # code: rewrite of calculateHydrogen/hybridization code # bug fix: WRITE xxx should do SHOW not clipboard for application # bug fix: % at end of line acts as a line continuation # new feature: lcaoCartoons dsp3 (a,b,c,d,e), d2sp3 (a,b,c,d,e,f) # (added because it is just an extension of lcaoCartoons and has been # asked for repeatedly) # bug fix: "sp3a" not "first bonded atom" # bug fix: failure to read old-style JVXL files. Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/AtomPropertyMapper.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/AtomPropertyMapper.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/AtomPropertyMapper.java 2010-09-02 13:30:43 UTC (rev 14225) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/AtomPropertyMapper.java 2010-09-02 13:31:26 UTC (rev 14226) @@ -59,7 +59,8 @@ protected void initializeMapping() { if (Logger.debugging) Logger.startTimer(); - bsMySelected.or(bsNearby); + if (bsNearby != null) + bsMySelected.or(bsNearby); iter = atomDataServer.getSelectedAtomIterator(bsMySelected, false, true); } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-02 13:30:43 UTC (rev 14225) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-02 13:31:26 UTC (rev 14226) @@ -2,7 +2,7 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.11_dev +version=12.0.11 # bug fix: color label none when already none and after rendering for multi-line labels or with antialiasdisplay crashes Jmol # bug fix: lcaoCartoon p orbitals for CO2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-03 14:00:55
|
Revision: 14230 http://jmol.svn.sourceforge.net/jmol/?rev=14230&view=rev Author: hansonr Date: 2010-09-03 14:00:48 +0000 (Fri, 03 Sep 2010) Log Message: ----------- version=12.0.12_dev # bug fix: non PDB large molecule should not change default rendering # bug fix: PDB large molecule default rendering flaws Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/modelset/Model.java branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/modelset/Model.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/Model.java 2010-09-03 14:00:12 UTC (rev 14229) +++ branches/v12_0/Jmol/src/org/jmol/modelset/Model.java 2010-09-03 14:00:48 UTC (rev 14230) @@ -301,18 +301,39 @@ return bioPolymers[polymerIndex]; } - String getDefaultRendering() { + void getDefaultLargePDBRendering(StringBuffer sb, int maxAtoms) { BitSet bs = new BitSet(); - if (isPDB && getBondCount() == 0) + if (getBondCount() == 0) bs = bsAtoms; - else + // all biopolymer atoms... + if (bs != bsAtoms) for (int i = 0; i < bioPolymerCount; i++) + bioPolymers[i].getRange(bs); + if (bs.nextSetBit(0) < 0) + return; + // ...and not connected to backbone: + BitSet bs2 = new BitSet(); + if (bs == bsAtoms) { + bs2 = bs; + } else { + for (int i = 0; i < bioPolymerCount; i++) if (bioPolymers[i].getType() == Polymer.TYPE_NOBONDING) - bioPolymers[i].getRange(bs); - String s = (bs.nextSetBit(0) < 0 ? "" : "select " + Escape.escape(bs) - + ";backbone;"); - s += "select " + Escape.escape(bsAtoms) + " and not visible;stars;"; - return s; + bioPolymers[i].getRange(bs2); + } + if (bs2.nextSetBit(0) >= 0) + sb.append("select ").append(Escape.escape(bs2)).append(";backbone only;"); + if (atomCount <= maxAtoms) + return; + // ...and it's a large model, to wireframe: + sb.append("select ").append(Escape.escape(bs)).append(" & connected; wireframe only;"); + // ... and all non-biopolymer and not connected to stars... + if (bs != bsAtoms) { + bs2.clear(); + bs2.or(bsAtoms); + bs2.andNot(bs); + if (bs2.nextSetBit(0) >= 0) + sb.append("select " + Escape.escape(bs2) + " & !connected;stars 0.5;"); + } } public boolean isAtomHidden(int index) { Modified: branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2010-09-03 14:00:12 UTC (rev 14229) +++ branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2010-09-03 14:00:48 UTC (rev 14230) @@ -184,7 +184,6 @@ private boolean appendNew; private int adapterModelCount = 0; private int adapterTrajectoryCount = 0; - private boolean isLargeModel; private boolean noAutoBond; private boolean is2D; @@ -193,7 +192,6 @@ int nAtoms = (adapter == null ? 0 : adapter.getAtomCount(atomSetCollection)); if (nAtoms > 0) Logger.info("reading " + nAtoms + " atoms"); - isLargeModel = (nAtoms > viewer.getSmallMoleculeMaxAtoms()); adapterModelCount = (adapter == null ? 1 : adapter .getAtomSetCount(atomSetCollection)); // cannot append a trajectory into a previous model @@ -268,13 +266,12 @@ calculatePolymers(null); // only now can we access all of the atom's properties - RadiusData rd = (isLargeModel ? null : viewer.getDefaultRadiusData()); + RadiusData rd = viewer.getDefaultRadiusData(); for (int i = baseAtomIndex; i < atomCount; i++) atoms[i].setMadAtom(viewer, rd); for (int i = models[baseModelIndex].firstAtomIndex; i < atomCount; i++) models[atoms[i].modelIndex].bsAtoms.set(i); - if (isLargeModel) - setDefaultRendering(); + setDefaultRendering(viewer.getSmallMoleculeMaxAtoms()); freeze(); calcBoundBoxDimensions(null, 1); @@ -287,12 +284,11 @@ mergeModelSet = null; } - private void setDefaultRendering() { + private void setDefaultRendering(int maxAtoms) { StringBuffer sb = new StringBuffer(); - String s; for (int i = baseModelIndex; i < modelCount; i++) - if ((s = models[i].getDefaultRendering()) != null) - sb.append(s); + if (models[i].isPDB) + models[i].getDefaultLargePDBRendering(sb, maxAtoms); if (sb.length() == 0) return; sb.append("select *;"); @@ -730,7 +726,7 @@ JmolAdapter.BondIterator iterBond = adapter.getBondIterator(atomSetCollection); if (iterBond == null) return; - short mad = (isLargeModel ? 1 : viewer.getMadBond()); + short mad = viewer.getMadBond(); short order; defaultCovalentMad = (jmolData == null ? mad : 0); boolean haveMultipleBonds = false; Modified: branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java 2010-09-03 14:00:12 UTC (rev 14229) +++ branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java 2010-09-03 14:00:48 UTC (rev 14230) @@ -53,7 +53,7 @@ ScriptContext context; Process(String name, ScriptContext context) { - System.out.println("Creating process " + name); + //System.out.println("Creating process " + name); processName = name; this.context = context; } Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-03 14:00:12 UTC (rev 14229) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-03 14:00:48 UTC (rev 14230) @@ -8320,14 +8320,16 @@ String msg = ""; if (script.length() > 0) msg += "\nUsing defaultLoadScript: " + script; - String embeddedScript = (String) viewer.getModelSetAuxiliaryInfo().remove( - "jmolscript"); - if (embeddedScript != null && viewer.getAllowEmbeddedScripts()) { - msg += "\nAdding embedded #jmolscript: " + embeddedScript; - script += ";" + embeddedScript; - setStringProperty("_loadScript", script); - script = "allowEmbeddedScripts = false;" + script - + ";allowEmbeddedScripts = true;"; + if (viewer.getAllowEmbeddedScripts()) { + String embeddedScript = (String) viewer.getModelSetAuxiliaryInfo() + .remove("jmolscript"); + if (embeddedScript != null && embeddedScript.length() > 0) { + msg += "\nAdding embedded #jmolscript: " + embeddedScript; + script += ";" + embeddedScript; + setStringProperty("_loadScript", script); + script = "allowEmbeddedScripts = false;try{" + script + + "} allowEmbeddedScripts = true;"; + } } if (msg.length() > 0) Logger.info(msg); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-03 14:00:12 UTC (rev 14229) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-03 14:00:48 UTC (rev 14230) @@ -4,6 +4,9 @@ version=12.0.12_dev +# bug fix: non PDB large molecule should not change default rendering +# bug fix: PDB large molecule default rendering flaws + # -------------------------------------------------------------- #version=12.0.11 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-03 14:34:46
|
Revision: 14231 http://jmol.svn.sourceforge.net/jmol/?rev=14231&view=rev Author: hansonr Date: 2010-09-03 14:34:40 +0000 (Fri, 03 Sep 2010) Log Message: ----------- version=12.0.12_dev # bug fix: storing atom properties from readers (CRYSTAL) messes up model atom bitset Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2010-09-03 14:00:48 UTC (rev 14230) +++ branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2010-09-03 14:34:40 UTC (rev 14231) @@ -313,7 +313,7 @@ String key = (String) e.nextElement(); String value = (String) atomProperties.get(key); // no deletions yet... - BitSet bs = getModelAtomBitSetIncludingDeleted(i, false); + BitSet bs = getModelAtomBitSetIncludingDeleted(i, true); key = "property_" + key.toLowerCase(); Logger.info("creating " + key + " for model " + getModelName(i)); viewer.setData(key, new Object[] { key, value, bs }, atomCount, 0, Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-03 14:00:48 UTC (rev 14230) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-03 14:34:40 UTC (rev 14231) @@ -4,6 +4,7 @@ version=12.0.12_dev +# bug fix: storing atom properties from readers (CRYSTAL) messes up model atom bitset # bug fix: non PDB large molecule should not change default rendering # bug fix: PDB large molecule default rendering flaws This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-03 15:00:47
|
Revision: 14235 http://jmol.svn.sourceforge.net/jmol/?rev=14235&view=rev Author: hansonr Date: 2010-09-03 15:00:41 +0000 (Fri, 03 Sep 2010) Log Message: ----------- version=12.0.12_dev # bug fix: SMILES generator allowing sp3 center in aromatic Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAromatic.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAromatic.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAromatic.java 2010-09-03 15:00:24 UTC (rev 14234) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAromatic.java 2010-09-03 15:00:41 UTC (rev 14235) @@ -128,16 +128,18 @@ JmolEdge[] bonds = ringAtom.getEdges(); if (bonds.length < 3) continue; - for (int n = 0, k = bonds.length; --k >= 0;) { + if (bonds.length > 3) + return false; +/* + // uncomment these next lines to exclude quinone and nucleic acid bases + for (int k = bonds.length; --k >= 0;) { int iAtom = ringAtom.getBondedAtomIndex(k); if (!bsSelected.get(iAtom)) continue; - if (++n > 3) + if (!bs.get(iAtom) && bonds[k].getOrder() == JmolConstants.BOND_COVALENT_DOUBLE) return false; - // uncomment these two lines to exclude quinone and nucleic acid bases - // if (!bs.get(iAtom) && bonds[k].getOrder() == JmolConstants.BOND_COVALENT_DOUBLE) - // return false; } +*/ } for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { JmolNode ringAtom = atoms[i]; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-03 15:00:24 UTC (rev 14234) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-03 15:00:41 UTC (rev 14235) @@ -4,6 +4,7 @@ version=12.0.12_dev +# bug fix: SMILES generator allowing sp3 center in aromatic # bug fix: storing atom properties from CrystalReader messes up model atom bitset # bug fix: non PDB large molecule should not change default rendering # bug fix: PDB large molecule default rendering flaws This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-05 01:26:58
|
Revision: 14238 http://jmol.svn.sourceforge.net/jmol/?rev=14238&view=rev Author: hansonr Date: 2010-09-05 01:26:52 +0000 (Sun, 05 Sep 2010) Log Message: ----------- version=12.0.12_dev # bug fix: reset should not reset spin (introduced in 11.7.47); new RESET SPIN includes reset spinning Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager.java branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager11.java branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-05 01:25:53 UTC (rev 14237) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-05 01:26:52 UTC (rev 14238) @@ -8942,7 +8942,7 @@ if (isSyntaxCheck) return; if (statementLength == 1) { - viewer.reset(); + viewer.reset(false); return; } // possibly "all" @@ -8959,7 +8959,10 @@ case Token.aromatic: viewer.resetAromatic(); return; - } + case Token.spin: + viewer.reset(true); + return; + } String var = parameterAsString(1); if (var.charAt(0) == '_') error(ERROR_invalidArgument); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-05 01:25:53 UTC (rev 14237) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-05 01:26:52 UTC (rev 14238) @@ -4,6 +4,7 @@ version=12.0.12_dev +# bug fix: reset should not reset spin (introduced in 11.7.47); new RESET SPIN includes reset spinning # bug fix: SMILES generator allowing sp3 center in aromatic # bug fix: storing atom properties from CrystalReader messes up model atom bitset # bug fix: non PDB large molecule should not change default rendering Modified: branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager.java 2010-09-05 01:25:53 UTC (rev 14237) +++ branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager.java 2010-09-05 01:26:52 UTC (rev 14238) @@ -115,9 +115,10 @@ * GENERAL METHODS ***************************************************************/ - void homePosition() { + void homePosition(boolean resetSpin) { // reset, setNavigationMode, setPerspectiveModel - setSpinOn(false); + if (resetSpin) + setSpinOn(false); setNavOn(false); navFps = DEFAULT_NAV_FPS; navX = navY = navZ = 0; @@ -2185,6 +2186,7 @@ protected void setNavOn(boolean navOn) { if (Float.isNaN(navFps)) return; + boolean wasOn = this.navOn; if (navOn && spinOn) setSpinOn(false, 0, null, null, false); this.navOn = navOn; @@ -2198,7 +2200,7 @@ spinThread = new SpinThread(0, null, null, true, false); spinThread.start(); } - } else { + } else if (wasOn) { if (spinThread != null) { spinThread.interrupt(); spinThread = null; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager11.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager11.java 2010-09-05 01:25:53 UTC (rev 14237) +++ branches/v12_0/Jmol/src/org/jmol/viewer/TransformManager11.java 2010-09-05 01:26:52 UTC (rev 14238) @@ -498,7 +498,7 @@ switch (keyCode) { case KeyEvent.VK_PERIOD: navX = navY = navZ = 0; - homePosition(); + homePosition(true); return; case KeyEvent.VK_SPACE: if (!navOn) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-05 01:25:53 UTC (rev 14237) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-05 01:26:52 UTC (rev 14238) @@ -514,18 +514,19 @@ return mouseManager.handleOldJvm10Event(e); } - public void reset() { + public void reset(boolean includingSpin) { // Eval.reset() // initializeModel modelSet.calcBoundBoxDimensions(null, 1); axesAreTainted = true; - transformManager.homePosition(); + transformManager.homePosition(includingSpin); if (modelSet.setCrystallographicDefaults()) stateManager.setCrystallographicDefaults(); else setAxesModeMolecular(false); prevFrame = Integer.MIN_VALUE; - refresh(1, "Viewer:homePosition()"); + if (!getSpinOn()) + refresh(1, "Viewer:homePosition()"); } public void homePosition() { @@ -2518,7 +2519,7 @@ private void initializeModel() { stopAnimationThreads("stop from init model"); - reset(); + reset(true); selectAll(); rotatePrev1 = rotateBondIndex = -1; movingSelected = false; @@ -6164,7 +6165,7 @@ case Token.zerobasedxyzrasmol: doRepaint = false; global.zeroBasedXyzRasmol = value; - reset(); + reset(true); break; case Token.rangeselected: doRepaint = false; @@ -6456,7 +6457,7 @@ */ global.setParameterValue("axesOrientationRasmol", TF); global.axesOrientationRasmol = TF; - reset(); + reset(true); } public boolean getAxesOrientationRasmol() { @@ -6621,7 +6622,7 @@ stopAnimationThreads("setNavigationMode"); transformManager = transformManager.getNavigationManager(this, dimScreen.width, dimScreen.height); - transformManager.homePosition(); + transformManager.homePosition(true); } transformManager.setNavigationMode(TF); } @@ -6644,7 +6645,7 @@ this.transformManager = transformManager; transformManager.setViewer(this, dimScreen.width, dimScreen.height); setTransformManagerDefaults(); - transformManager.homePosition(); + transformManager.homePosition(true); } private void setPerspectiveModel(int mode) { @@ -6661,7 +6662,7 @@ dimScreen.width, dimScreen.height); } setTransformManagerDefaults(); - transformManager.homePosition(); + transformManager.homePosition(true); } private void setTransformManagerDefaults() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-06 16:40:40
|
Revision: 14251 http://jmol.svn.sourceforge.net/jmol/?rev=14251&view=rev Author: hansonr Date: 2010-09-06 16:40:33 +0000 (Mon, 06 Sep 2010) Log Message: ----------- version=12.1.10_dev # bug fix: mep color range error (12.1.9, 12.0.11) Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Parameters.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Parameters.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Parameters.java 2010-09-06 16:39:42 UTC (rev 14250) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Parameters.java 2010-09-06 16:40:33 UTC (rev 14251) @@ -239,6 +239,7 @@ state = STATE_INITIALIZED; thePlane = null; theProperty = null; + usePropertyForColorRange = true; // except for MEP and MLP thisContour = -1; contourFromZero = true; title = null; @@ -588,6 +589,7 @@ void setMep(float[] charges, boolean isRangeDefined, boolean isMLP) { dataType = (isMLP ? SURFACE_MLP : SURFACE_MEP); theProperty = charges; + usePropertyForColorRange = false; isEccentric = isAnisotropic = false; if (cutoff == Float.MAX_VALUE) { cutoff = defaultMepCutoff; @@ -738,15 +740,16 @@ public BitSet[] bsExcluded; public int contourType; public boolean colorSchemeTranslucent; + public boolean usePropertyForColorRange = true; - void setMapRanges(SurfaceReader surfaceReader) { + void setMapRanges(SurfaceReader surfaceReader, boolean haveData) { if (!colorDensity) if (colorByPhase || colorBySign || (thePlane != null || isBicolorMap) && !isContoured) { mappedDataMin = -1; mappedDataMax = 1; } if (mappedDataMin == Float.MAX_VALUE || mappedDataMin == mappedDataMax) { - float[] minMax = surfaceReader.getMinMaxMappedValues(); + float[] minMax = surfaceReader.getMinMaxMappedValues(haveData); mappedDataMin = minMax[0]; mappedDataMax = minMax[1]; } Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-09-06 16:39:42 UTC (rev 14250) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-09-06 16:40:33 UTC (rev 14251) @@ -346,7 +346,7 @@ volumeData.setDataDistanceToPlane(params.thePlane); if (meshDataServer != null) meshDataServer.fillMeshData(meshData, MeshData.MODE_GET_VERTICES, null); - params.setMapRanges(this); + params.setMapRanges(this, false); generateSurfaceData(); volumeData.voxelData = voxelDataTemp; } else { @@ -618,7 +618,7 @@ jvxlData.saveVertexCount = 0; if (params.isContoured && marchingSquares != null) { initializeMapping(); - params.setMapRanges(this); + params.setMapRanges(this, false); marchingSquares.setMinMax(params.valueMappedToRed, params.valueMappedToBlue); jvxlData.saveVertexCount = marchingSquares.contourVertexCount; @@ -702,7 +702,7 @@ minMax = new float[] { min, max }; finalizeMapping(); } - params.setMapRanges(this); + params.setMapRanges(this, true); jvxlData.mappedDataMin = params.mappedDataMin; jvxlData.mappedDataMax = params.mappedDataMax; jvxlData.valueMappedToRed = params.valueMappedToRed; @@ -805,14 +805,14 @@ protected float[] minMax; - public float[] getMinMaxMappedValues() { + public float[] getMinMaxMappedValues(boolean haveData) { if (minMax != null && minMax[0] != Float.MAX_VALUE) return minMax; if (params.colorBySets) return (minMax = new float[] { 0, Math.max(meshData.nSets - 1, 0) }); float min = Float.MAX_VALUE; float max = -Float.MAX_VALUE; - if (params.theProperty != null) { + if (params.usePropertyForColorRange && params.theProperty != null) { for (int i = 0; i < params.theProperty.length; i++) { if (params.rangeSelected && !params.bsSelected.get(i)) continue; @@ -829,7 +829,7 @@ int vertexCount = (contourVertexCount > 0 ? contourVertexCount : meshData.vertexCount); Point3f[] vertexes = meshData.vertices; - boolean useVertexValue = (jvxlDataIs2dContour || vertexDataOnly || params.colorDensity); + boolean useVertexValue = (haveData || jvxlDataIs2dContour || vertexDataOnly || params.colorDensity); for (int i = 0; i < vertexCount; i++) { float v; if (useVertexValue) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-06 16:39:42 UTC (rev 14250) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-06 16:40:33 UTC (rev 14251) @@ -4,6 +4,7 @@ version=12.0.12_dev +# bug fix: mep color range error (12.1.9, 12.0.11) # color structure for carbohydrate fails # new feature: reset SPIN # bug fix: reset should not reset spin (introduced in 11.7.47); new RESET SPIN includes reset spinning This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-11 02:59:47
|
Revision: 14276 http://jmol.svn.sourceforge.net/jmol/?rev=14276&view=rev Author: hansonr Date: 2010-09-11 02:59:39 +0000 (Sat, 11 Sep 2010) Log Message: ----------- version=12.0.13_dev # bug fix: crystal reader can't read selected model # bug fix: 3.5E+0.0 read as "3.5 0.0" # bug fix: navY/navy color issue # bug fix: write PDB for nonPDB files incorrect Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/util/Quaternion.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java 2010-09-10 22:02:18 UTC (rev 14275) +++ branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java 2010-09-11 02:59:39 UTC (rev 14276) @@ -28,17 +28,18 @@ package org.jmol.adapter.readers.xtal; import org.jmol.adapter.smarter.*; +import org.jmol.util.Escape; import org.jmol.util.Logger; import org.jmol.util.Quaternion; -//import org.jmol.util.SimpleUnitCell; import org.jmol.util.TextFormat; import java.util.Arrays; import java.util.BitSet; import java.util.Vector; -//import javax.vecmath.Matrix3f; +import javax.vecmath.Matrix3f; import javax.vecmath.Point3f; +import javax.vecmath.Vector3f; /** * @@ -98,6 +99,7 @@ private int[] atomFrag; private boolean getLastConventional; + protected void initializeReader() throws Exception { doProcessLines = false; if (filter != null) @@ -109,31 +111,70 @@ setFractionalCoordinates(readHeader()); } + protected boolean checkLine() throws Exception { - if (line.indexOf("FRQFRQ") >= 0) { - isFreqCalc = true; + if (line.startsWith(" LATTICE PARAMETER")) { + boolean isConvLattice = (line.indexOf("- CONVENTIONAL") >= 0); + if (isConvLattice) { + // skip if we want primitive and this is the conventional lattice + if (isPrimitive) + return true; + readCellParams(true); + } else if (!isPrimitive && !havePrimitiveMapping && !getLastConventional) { + if (readPrimitiveMapping()) + return true; // just for properties + // no input coordinates -- continue; + } + if (isPrimitive) { + readCellParams(true); + } else { + readCellParams(true); + discardLinesUntilContains(" TRANSFORMATION"); + readTransformationMatrix(); + discardLinesUntilContains(" CRYSTALLOGRAPHIC"); + readCellParams(false); + discardLinesUntilContains(" CRYSTALLOGRAPHIC"); + readCrystallographicCoords(); + if (modelNumber == 1) { + // done here + } else if (!isFreqCalc) { + // conventional cell and now the lattice has changed. + // ignore? Can we convert a new primitive cell to conventional cell? + //continuing = false; + //Logger.error("Ignoring structure " + modelNumber + " due to FILTER \"conventional\""); + //return true; + } + if (!getLastConventional) { + if (!doGetModel(++modelNumber)) { + vInputCoords = null; + checkLastModel(); + } + processInputCoords(); + } + } return true; } - - if (!isPrimitive) { - if (line.startsWith(" SHIFT OF THE ORIGIN")) { - readShift(); - return true; - } + + if (isPrimitive) { + if (line.indexOf("VOLUME=") >= 0 && line.indexOf("- DENSITY") >= 0) + return readVolumePrimCell(); + //if (line.startsWith(" TRANSFORMATION MATRIX")) + //return getOrientationMatrix(); + } else { + if (line.startsWith(" SHIFT OF THE ORIGIN")) + return readShift(); if (line.startsWith(" INPUT COORDINATES")) { - readInputCoords(); + readCrystallographicCoords(); if (inputOnly) continuing = false; return true; } } - if (line.startsWith(" TRANSFORMATION MATRIX")) { - getOrientationMatrix(); - return true; - } - + if (line.startsWith(" DIRECT LATTICE VECTORS CARTESIAN COMPONENTS (ANGSTROM)")) + return setDirect(); + if (line.indexOf("DIMENSIONALITY OF THE SYSTEM") >= 0) { if (line.indexOf("2") >= 0) isSlab = true; @@ -142,58 +183,26 @@ return true; } + if (line.indexOf("FRQFRQ") >= 0) { + isFreqCalc = true; + return true; + } + if (line.indexOf("CONSTRUCTION OF A NANOTUBE FROM A SLAB") >= 0) { isPolymer = true; isSlab = false; return true; } - if (line.startsWith(" DIRECT LATTICE VECTORS CARTESIAN COMPONENTS (ANGSTROM)")) { - setDirect(); - return true; - } - - if (line.startsWith(" LATTICE PARAMETER")) { - boolean isConvLattice = (line.indexOf("- CONVENTIONAL") >= 0); - if (isConvLattice) { - // skip if we want primitive and this is the conventional lattice - if (isPrimitive) - return true; - readCellParams(); - } else if (!isPrimitive && !havePrimitiveMapping && !getLastConventional) { - readPrimitiveMapping(); // just for properties - return true; - } + if (isPrimitive && line.startsWith(" ATOMS IN THE ASYMMETRIC UNIT")) { if (!doGetModel(++modelNumber)) return checkLastModel(); - if (isPrimitive) { - readCellParams(); - } else if (getLastConventional) { - discardLinesUntilContains(" CRYSTALLOGRAPHIC"); - readCellParams(); - discardLinesUntilContains(" CRYSTALLOGRAPHIC"); - readInputCoords(); - } else if (modelNumber == 1) { - // done here - } else { - if (!isFreqCalc) { - // conventional cell and now the lattice has changed. - // ignore? Can we convert a new primitive cell to conventional cell? - continuing = false; - Logger.error("Ignoring structure " + modelNumber + " due to FILTER \"conventional\""); - } - } - return true; + return readFractionalCoords(); } + if (!doProcessLines) return true; - if (line.startsWith(" ATOMS IN THE ASYMMETRIC UNIT")) { - if (isPrimitive) - readFractionalCoords(); - return true; - } - if (line.startsWith(" TOTAL ENERGY")) { readEnergy(); readLine(); @@ -209,152 +218,113 @@ return true; } - if (isPrimitive && line.indexOf("VOLUME=") >= 0 && line.indexOf("- DENSITY") >= 0) { - readVolumePrimCell(); - return true; - } + if (line.startsWith(" MULLIKEN POPULATION ANALYSIS")) + return readPartialCharges(); - if (line.startsWith(" MULLIKEN POPULATION ANALYSIS")) { - readPartialCharges(); - return true; - } + if (line.startsWith(" TOTAL ATOMIC CHARGES")) + return readTotalAtomicCharges(); - if (line.startsWith(" TOTAL ATOMIC CHARGES")) { - readTotalAtomicCharges(); - return true; - } + if (line.startsWith(" FREQUENCIES COMPUTED ON A FRAGMENT")) + return readFragments(); - if (line.startsWith(" FREQUENCIES COMPUTED ON A FRAGMENT")) { - readFragments(); - return true; - } - if (addVibrations && line .indexOf("* CALCULATION OF PHONON FREQUENCIES AT THE GAMMA POINT.") >= 0) { if (vInputCoords != null) processInputCoords(); - readFrequencies(); - return true; + return readFrequencies(); } - if (line.startsWith(" MAX GRADIENT")) { - readGradient(); - return true; - } + if (line.startsWith(" MAX GRADIENT")) + return readGradient(); - if (line.startsWith(" ATOMIC SPINS SET")) { - readSpins(); - return true; - } + if (line.startsWith(" ATOMIC SPINS SET")) + return readSpins(); - if (line.startsWith(" TOTAL ATOMIC SPINS :")) { - readMagneticMoments(); - return true; - } + if (line.startsWith(" TOTAL ATOMIC SPINS :")) + return readMagneticMoments(); return true; } /* - DIRECT LATTICE VECTORS CARTESIAN COMPONENTS (ANGSTROM) - X Y Z - 0.290663292155E+01 0.000000000000E+00 0.460469095849E+01 - -0.145331646077E+01 0.251721794953E+01 0.460469095849E+01 - -0.145331646077E+01 -0.251721794953E+01 0.460469095849E+01 - */ - private void setDirect() throws Exception { - readLine(); - float[] f = new float[3]; + DIRECT LATTICE VECTORS CARTESIAN COMPONENTS (ANGSTROM) + X Y Z + 0.290663292155E+01 0.000000000000E+00 0.460469095849E+01 + -0.145331646077E+01 0.251721794953E+01 0.460469095849E+01 + -0.145331646077E+01 -0.251721794953E+01 0.460469095849E+01 + */ + + Vector3f[] directLatticeVectors; + + private boolean setDirect() throws Exception { + readLine(); + directLatticeVectors = new Vector3f[3]; + directLatticeVectors[0] = getPoint3f(null, 0); + directLatticeVectors[1] = getPoint3f(null, 0); + directLatticeVectors[2] = getPoint3f(null, 0); + + if (Logger.debugging) { + addJmolScript("draw va vector {0 0 0} " + Escape.escape(directLatticeVectors[0]) + " color red"); + if (!isPolymer) { + addJmolScript("draw vb vector {0 0 0} " + Escape.escape(directLatticeVectors[1]) + " color green"); + if (!isSlab) + addJmolScript("draw vc vector {0 0 0} " + Escape.escape(directLatticeVectors[2]) + " color blue"); + } + } + Vector3f a = new Vector3f(); + Vector3f b = new Vector3f(); + if (isPrimitive) { + a = directLatticeVectors[0]; + b = directLatticeVectors[1]; + } else { + if (primitiveToCryst == null) + return true; + Matrix3f mp = new Matrix3f(); + mp.setColumn(0, directLatticeVectors[0]); + mp.setColumn(1, directLatticeVectors[1]); + mp.setColumn(2, directLatticeVectors[2]); + mp.mul(primitiveToCryst); + a = new Vector3f(); + b = new Vector3f(); + mp.getColumn(0, a); + mp.getColumn(1, b); + } + matUnitCellOrientation = Quaternion.getQuaternionFrame(new Point3f(), a, b).getMatrix(); + Logger.info("oriented unit cell is in model " + atomSetCollection.getAtomSetCount()); + return true; + } - fillFloatArray(f); - Point3f a = new Point3f(f[0], f[1], f[2]); - if (Logger.debugging) - addJmolScript("draw va vector {0 0 0} {" + f[0] + " " + f[1] + " " + f[2] + "} color red"); + private Vector3f getPoint3f(float[] f, int pt) throws Exception { + if (f == null) { + f = new float[3]; + fillFloatArray(f); + return new Vector3f(f[0], f[1], f[2]); + } + return new Vector3f(f[pt++], f[pt++], f[pt]); + } - fillFloatArray(f); - Point3f b = new Point3f(f[0], f[1], f[2]); - if (Logger.debugging && !isPolymer) - addJmolScript("draw vb vector {0 0 0} {" + f[0] + " " + f[1] + " " + f[2] + "} color green"); + /* + * + TRANSFORMATION MATRIX PRIMITIVE-CRYSTALLOGRAPHIC CELL + 1.0000 0.0000 1.0000 -1.0000 1.0000 1.0000 0.0000 -1.0000 1.0000 - fillFloatArray(f); - if (Logger.debugging && !isSlab && !isPolymer) - addJmolScript("draw vc vector {0 0 0} {" + f[0] + " " + f[1] + " " + f[2] + "} color blue"); + */ + + Matrix3f primitiveToCryst; + private void readTransformationMatrix() throws Exception { + float[] f = new float[9]; + fillFloatArray(f); + primitiveToCryst = new Matrix3f(f); + } - matUnitCellOrientation = Quaternion.getQuaternionFrame(new Point3f(), a, b).getMatrix(); - } - - /** - * get the matrix that reorients the primitive coordinate axes - * to their correct orientation in relation to the conventional cell - * - * @throws Exception - */ - private void getOrientationMatrix() throws Exception { - if (!isPrimitive || isSlab || isPolymer) - return; - /* - * - * setDirect works better - * - float[] data = new float[9]; - fillFloatArray(data); - Matrix3f m = new Matrix3f(data); - System.out.println(m); - - Point3f a = new Point3f(); - - m.invert(); - - System.out.println(m); - - // now get conventional cell info so we can - // convert from conventional to cartesian - discardLinesUntilContains("GAMMA"); - float[] params = new float[6]; - fillFloatArray(params); - SimpleUnitCell u = new SimpleUnitCell(params); - - Quaternion q = new Quaternion(new Point3f(0, 0, 1), (test ? 90 : 0)); - - // find the conventional equivalents of the primitive a and b axes (sort of). - - - - if (test) - a.set(0, 0, 1); - else - a.set(1, 0, 0); - - m.transform(a); - u.toCartesian(a, false); - a = q.transform(a); - - Point3f b = new Point3f(); - if (test) - b.set(1, 0, 0); - else - b.set(0, 1, 0); - - m.transform(b); - u.toCartesian(b, false); - b = q.transform(b); - - System.out.println("CrystalReader a = " + a); - System.out.println("CrystalReader b = " + b); - // the following will align the primitive a axis such that it - // projects onto the Cartesian X axis. - // Honestly, I don't know why. - //matUnitCellOrientation = Quaternion.getQuaternionFrame(new Point3f(), a, b).getMatrix(); - */ - } - private Point3f ptOriginShift = new Point3f(); - private void readShift() { + private boolean readShift() { // SHIFT OF THE ORIGIN : 3/4 1/4 0 String[] tokens = getTokens(); int pt = tokens.length - 3; ptOriginShift.set(fraction(tokens[pt++]), fraction(tokens[pt++]), fraction(tokens[pt])); + return true; } private float fraction(String f) { @@ -362,7 +332,7 @@ return (ab.length == 2 ? parseFloat(ab[0]) / parseFloat(ab[1]) : 0); } - private void readGradient() throws Exception { + private boolean readGradient() throws Exception { /*MAX GRADIENT 0.000967 THRESHOLD RMS GRADIENT 0.000967 THRESHOLD MAX DISPLAC. 0.005733 THRESHOLD @@ -381,12 +351,14 @@ key = "rmsDisplacement"; else break; - atomSetCollection.setAtomSetAuxiliaryProperty(key, tokens[2]); + if (atomSetCollection.getAtomCount() > 0) + atomSetCollection.setAtomSetAuxiliaryProperty(key, tokens[2]); readLine(); } + return true; } - private void readVolumePrimCell() { + private boolean readVolumePrimCell() { // line looks like: PRIMITIVE CELL - CENTRING CODE 1/0 VOLUME= 113.054442 - DENSITY 2.642 g/cm^3 String[] tokens = getTokens(line); String volumePrim = tokens[7]; @@ -400,6 +372,7 @@ .formatDecimal(parseFloat(volumePrim), 3)); atomSetCollection.setAtomSetAuxiliaryProperty("densityPrimitive", TextFormat.formatDecimal(parseFloat(densityPrim), 3)); + return true; } /* @@ -412,22 +385,26 @@ ALPHA-BETA ELECTRONS LOCKED TO 0 FOR 50 SCF CYCLES */ - private void readSpins() throws Exception { + private boolean readSpins() throws Exception { String data = ""; while (readLine() != null && line.indexOf("ALPHA") < 0) data += line; data = TextFormat.simpleReplace(data, "-", " -"); setData("spin", data, 2, 3); + return true; } - private void readMagneticMoments() throws Exception { + private boolean readMagneticMoments() throws Exception { String data = ""; while (readLine() != null && line.indexOf("TTTTTT") < 0) data += line; setData("magneticMoment", data, 0, 1); + return true; } - private void setData(String name, String data, int pt, int dp) { + private void setData(String name, String data, int pt, int dp) throws Exception { + if (vInputCoords != null) + processInputCoords(); String[] s = new String[atomCount]; String[] tokens = getTokens(data); for (int i = 0, j = 0; i < atomCount; i++, pt += dp) { @@ -439,6 +416,7 @@ atomSetCollection.setAtomSetAuxiliaryProperty(name, data); } + protected void finalizeReader() throws Exception { if (vInputCoords != null) processInputCoords(); @@ -492,8 +470,10 @@ return true; } - private void readCellParams() throws Exception { - newAtomSet(); + private void readCellParams(boolean isNewSet) throws Exception { + directLatticeVectors = null; + if (isNewSet) + newAtomSet(); if (isPolymer && !isPrimitive) { float a = parseFloat(line.substring(line.indexOf("CELL") + 4)); setUnitCell(a, -1, -1, 90, 90, 90); @@ -523,16 +503,17 @@ private int[] primitiveToIndex; /** - * create arrays that map primitive atoms to conventional atoms + * create arrays that maps primitive atoms to conventional atoms * in a 1:1 fashion. Creates: * * int[] primitiveToIndex -- points to model-based atomIndex + * @return TRUE * * @throws Exception */ - private void readPrimitiveMapping() throws Exception { + private boolean readPrimitiveMapping() throws Exception { if (vInputCoords == null) - return; + return false; havePrimitiveMapping = true; BitSet bsInputAtomsIgnore = new BitSet(); int n = vInputCoords.size(); @@ -586,8 +567,8 @@ if (iPrim >= 0) primitiveToIndex[iPrim] = i; } - System.out.println(nPrim + " primitive atoms " + vInputCoords.size() + " conventionalAtoms"); + return true; } int atomIndexLast; @@ -599,15 +580,15 @@ * 3.332220233571E-01 1.664350001467E-01 5.975038441891E+00 2 T 8 O * -3.289334452690E-01 1.544678332212E-01 5.601153565811E+00 */ - private void readFractionalCoords() throws Exception { + private boolean readFractionalCoords() throws Exception { if (isMolecular) newAtomSet(); readLine(); readLine(); int i = atomIndexLast; - atomIndexLast = atomSetCollection.getAtomCount(); boolean doNormalizePrimitive = isPrimitive && !isMolecular && !isPolymer - && !isSlab; + && !isSlab && (!doApplySymmetry || latticeCells[2] != 0); + atomIndexLast = atomSetCollection.getAtomCount(); while (readLine() != null && line.length() > 0) { Atom atom = atomSetCollection.addNewAtom(); String[] tokens = getTokens(); @@ -618,7 +599,8 @@ float z = parseFloat(tokens[6]); if (haveCharges) atom.partialCharge = atomSetCollection.getAtom(i++).partialCharge; - // because with these we cannot use the "packed" keyword + // note: this normalization is unique to this reader -- all other + // readers operate through symmetry application if (x < 0 && (isPolymer || isSlab || doNormalizePrimitive)) x += 1; if (y < 0 && (isSlab || doNormalizePrimitive)) @@ -629,6 +611,7 @@ atom.elementSymbol = getElementSymbol(atomicNumber); } atomCount = atomSetCollection.getAtomCount() - atomIndexLast; + return true; } private String getAtomName(String s) { @@ -662,7 +645,7 @@ * 1 12 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 * 2 8 5.000000000000E-01 5.000000000000E-01 5.000000000000E-01 */ - private void readInputCoords() throws Exception { + private void readCrystallographicCoords() throws Exception { // we only store them, because we may want to delete some readLine(); readLine(); @@ -673,7 +656,7 @@ private void processInputCoords() throws Exception { // here we may have deleted unnecessary input coordinates - int atomCount = vInputCoords.size(); + atomCount = vInputCoords.size(); for (int i = 0; i < atomCount; i++) { Atom atom = atomSetCollection.addNewAtom(); String[] tokens = getTokens((String) vInputCoords.get(i)); @@ -714,14 +697,14 @@ private void readEnergy() { line = TextFormat.simpleReplace(line, "( ", "("); String[] tokens = getTokens(); - energy = new Double(Double.parseDouble(tokens[2])); + energy = Double.valueOf(Double.parseDouble(tokens[2])); setEnergy(); } private void setEnergy() { + atomSetCollection.setAtomSetEnergy("" + energy, energy.floatValue()); atomSetCollection.setAtomSetAuxiliaryInfo("Energy", energy); atomSetCollection.setAtomSetCollectionAuxiliaryInfo("Energy", energy); - atomSetCollection.setAtomSetEnergy("" + energy, energy.floatValue()); atomSetCollection.setAtomSetName("Energy = " + energy + " Hartree"); } @@ -732,9 +715,9 @@ * * 1 FE 26 23.991 2.000 1.920 2.057 2.057 2.057 0.384 0.674 0.674 */ - private void readPartialCharges() throws Exception { - if (haveCharges) - return; + private boolean readPartialCharges() throws Exception { + if (haveCharges || atomSetCollection.getAtomCount() == 0) + return true; haveCharges = true; discardLines(3); Atom[] atoms = atomSetCollection.getAtoms(); @@ -748,10 +731,11 @@ - parseFloat(line.substring(12, 18)); iPrim++; } + return true; } private float[] nuclearCharges; - private void readTotalAtomicCharges() throws Exception { + private boolean readTotalAtomicCharges() throws Exception { StringBuffer data = new StringBuffer(); while (readLine() != null && line.indexOf("T") < 0) // TTTTT or SUMMED SPIN DENSITY data.append(line); @@ -760,7 +744,7 @@ if (nuclearCharges == null) nuclearCharges = charges; if (atomSetCollection.getAtomCount() == 0) - return; + return true; Atom[] atoms = atomSetCollection.getAtoms(); int i0 = atomSetCollection.getLastAtomSetAtomIndex(); for (int i = 0; i < charges.length; i++) { @@ -770,13 +754,14 @@ atoms[i0 + iConv].partialCharge = nuclearCharges[i] - charges[i]; } } + return true; } private int getAtomIndexFromPrimitiveIndex(int iPrim) { return (primitiveToIndex == null ? iPrim : primitiveToIndex[iPrim]); } - private void readFragments() throws Exception{ + private boolean readFragments() throws Exception{ /* * 2 ( 8 O ) 3 ( 8 O ) 4 ( 8 O ) 85 ( 8 O ) 86 ( 8 O ) * 87( 8 O ) 89( 6 C ) 90( 8 O ) 91( 8 O ) 92( 1 H ) @@ -790,7 +775,7 @@ */ int numAtomsFrag = parseInt(line.substring(39, 44)); if (numAtomsFrag < 0) - return; + return true; atomFrag = new int[numAtomsFrag]; String Sfrag = ""; while (readLine() != null && line.indexOf("(") >= 0) @@ -799,17 +784,18 @@ String[] tokens = getTokens(Sfrag); for (int i = 0, pos = 0; i < numAtomsFrag; i++, pos += 5) atomFrag[i] = getAtomIndexFromPrimitiveIndex(parseInt(tokens[pos]) - 1); - + Arrays.sort(atomFrag); // the frequency module needs these sorted // note: atomFrag[i] will be -1 if this atom is being ignored due to FILTER "conventional" + return true; } private float[] frequencies; private String[] data; - private void readFrequencies() throws Exception { + private boolean readFrequencies() throws Exception { discardLinesUntilContains(isVersion3 ? "MODES EV" : "MODES EIGV"); readLine(); Vector vData = new Vector(); @@ -864,6 +850,7 @@ 14, 10, atomFrag); readLine(); } + return true; } private void setFreqValue(int i) { Modified: branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2010-09-10 22:02:18 UTC (rev 14275) +++ branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2010-09-11 02:59:39 UTC (rev 14276) @@ -1182,7 +1182,7 @@ tokens = (leftJustify ? (t4x == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-4.4a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) : t4x) - : (t3x == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-3.3a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : (t3x == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-3.3a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) : t3x)); else if (a.isHetero()) tokens = (leftJustify ? Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-09-10 22:02:18 UTC (rev 14275) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-09-11 02:59:39 UTC (rev 14276) @@ -2140,29 +2140,25 @@ if (ichToken == cchScript) return Float.NaN; //end int ichT = ichToken; - boolean isNegative = (script.charAt(ichT) == '-'); - if (isNegative) - ++ichT; int pt0 = ichT; - boolean digitSeen = false; + if (script.charAt(ichT) == '-') + ++ichT; + boolean isOK = false; char ch = 'X'; while (ichT < cchScript && Character.isDigit(ch = script.charAt(ichT))) { ++ichT; - digitSeen = true; + isOK = true; } if (ichT < cchScript && ch == '.') ++ichT; while (ichT < cchScript && Character.isDigit(ch = script.charAt(ichT))) { ++ichT; - digitSeen = true; + isOK = true; } - if (ichT == cchScript || !digitSeen) + if (ichT == cchScript || !isOK) return Float.NaN; //integer - int ptE = ichT; - int factor = 1; - int exp = 0; - boolean isExponential = (ch == 'E' || ch == 'e'); - if (!isExponential || ++ichT == cchScript) + isOK = (ch != 'E' && ch != 'e'); + if (isOK || ++ichT == cchScript) return Float.NaN; ch = script.charAt(ichT); // I THOUGHT we only should allow "E+" or "E-" here, not "2E1" because @@ -2170,20 +2166,16 @@ // any HET group starting with a number is unacceptable and must // be given as [nXm], in brackets. - if (ch == '-' || ch == '+') { + if (ch == '-' || ch == '+') ichT++; - factor = (ch == '-' ? -1 : 1); - } while (ichT < cchScript && Character.isDigit(ch = script.charAt(ichT))) { ichT++; - exp = (exp * 10 + ch - '0'); + isOK = true; } - if (exp == 0) + if (!isOK) return Float.NaN; cchToken = ichT - ichToken; - double value = Float.valueOf(script.substring(pt0, ptE)).doubleValue(); - value *= (isNegative ? -1 : 1) * Math.pow(10, factor * exp); - return (float) value; + return (float) Double.valueOf(script.substring(pt0, ichT)).doubleValue(); } private boolean lookingAtDecimal() { Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-10 22:02:18 UTC (rev 14275) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-11 02:59:39 UTC (rev 14276) @@ -4475,8 +4475,9 @@ private boolean isColorParam(int i) { int tok = tokAt(i); - return (tok == Token.leftsquare || tok == Token.point3f || isPoint3f(i) || (tok == Token.string || Token - .tokAttr(tok, Token.identifier)) + return (tok == Token.navy || tok == Token.leftsquare + || tok == Token.point3f || isPoint3f(i) + || (tok == Token.string || Token.tokAttr(tok, Token.identifier)) && Graphics3D.getArgbFromString((String) statement[i].value) != 0); } @@ -4496,8 +4497,11 @@ if (checkToken(index)) { switch (getToken(index).tok) { default: - if (theTok != Token.string && !Token.tokAttr(theTok, Token.identifier)) + if (!Token.tokAttr(theTok, Token.identifier)) break; + // fall through + case Token.navy: + case Token.string: return Graphics3D.getArgbFromString(parameterAsString(index)); case Token.leftsquare: return getColorTriad(++index); Modified: branches/v12_0/Jmol/src/org/jmol/util/Quaternion.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/Quaternion.java 2010-09-10 22:02:18 UTC (rev 14275) +++ branches/v12_0/Jmol/src/org/jmol/util/Quaternion.java 2010-09-11 02:59:39 UTC (rev 14276) @@ -309,7 +309,7 @@ q3 *= -1; } - public static final Quaternion getQuaternionFrame(Point3f center, Point3f x, Point3f xy) { + public static final Quaternion getQuaternionFrame(Point3f center, Tuple3f x, Tuple3f xy) { Vector3f vA = new Vector3f(x); vA.sub(center); Vector3f vB = new Vector3f(xy); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-10 22:02:18 UTC (rev 14275) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-11 02:59:39 UTC (rev 14276) @@ -4,6 +4,11 @@ version=12.0.13_dev +# bug fix: crystal reader can't read selected model +# bug fix: 3.5E+0.0 read as "3.5 0.0" +# bug fix: navY/navy color issue +# bug fix: write PDB for nonPDB files incorrect + # -------------------------------------------------------------- #version=12.0.12 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-13 03:47:38
|
Revision: 14282 http://jmol.svn.sourceforge.net/jmol/?rev=14282&view=rev Author: hansonr Date: 2010-09-13 03:47:32 +0000 (Mon, 13 Sep 2010) Log Message: ----------- version=12.0.13_dev # bug fix: applet console does not display startup message Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/applet/Jmol.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/applet/Jmol.java 2010-09-13 03:45:01 UTC (rev 14281) +++ branches/v12_0/Jmol/src/org/jmol/applet/Jmol.java 2010-09-13 03:47:32 UTC (rev 14282) @@ -1039,7 +1039,10 @@ return; //also serves to change language for callbacks and menu if (callbackName.equalsIgnoreCase("language")) { - clearDefaultConsoleMessage(); + consoleMessage(""); + defaultMessage = null; + consoleMessage(null); + return; } int id = JmolConstants.getCallbackId(callbackName); if (id >= 0 && (loading || id != JmolConstants.CALLBACK_EVAL)) { @@ -1207,10 +1210,6 @@ private String defaultMessage; - private void clearDefaultConsoleMessage() { - defaultMessage = null; - } - private void consoleMessage(String message) { JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer.getProperty("DATA_API", "getAppConsole", null); if (appConsole != null) { @@ -1225,6 +1224,7 @@ appConsole.sendConsoleMessage(message); if (message == null) { appConsole.sendConsoleMessage(defaultMessage); + return; } } output(message); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-13 03:45:01 UTC (rev 14281) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-13 03:47:32 UTC (rev 14282) @@ -4,6 +4,7 @@ version=12.0.13_dev +# bug fix: applet console does not display startup message # bug fix: undo/redo problems in AppConsole # bug fix: crystal reader can't read selected model # bug fix: 3.5E+0.0 read as "3.5 0.0" Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-13 03:45:01 UTC (rev 14281) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-13 03:47:32 UTC (rev 14282) @@ -7240,7 +7240,7 @@ case 100: if (appConsole == null && paramInfo != null && ((Boolean) paramInfo).booleanValue()) { - getProperty("DATA_API", "appConsole", Boolean.TRUE); + getProperty("DATA_API", "getAppConsole", Boolean.TRUE); scriptEditor = (appConsole == null ? null : appConsole .getScriptEditor()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-14 03:24:39
|
Revision: 14294 http://jmol.svn.sourceforge.net/jmol/?rev=14294&view=rev Author: hansonr Date: 2010-09-14 03:24:33 +0000 (Tue, 14 Sep 2010) Log Message: ----------- version=12.0.13_dev # bug fix: load {i j k} RANGE x.x not expanding load box by 1 in each direction Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java 2010-09-14 00:09:41 UTC (rev 14293) +++ branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java 2010-09-14 03:24:33 UTC (rev 14294) @@ -714,20 +714,25 @@ minXYZ = new Point3i(); maxXYZ = new Point3i(maxX, maxY, maxZ); getSymmetry().setMinMaxLatticeParameters(minXYZ, maxXYZ); - int dims = (int) getSymmetry().getUnitCellInfo( - JmolConstants.INFO_DIMENSIONS); - if (doPackUnitCell) { - minXYZ.x--; - maxXYZ.x++; - if (dims > 1) { // not polymer + if (doPackUnitCell || symmetryRange != 0 && maxXYZ.x - minXYZ.x == 1 + && maxXYZ.y - minXYZ.y == 1 && maxXYZ.z - minXYZ.z == 1) + switch ((int) getSymmetry() + .getUnitCellInfo(JmolConstants.INFO_DIMENSIONS)) { + case 3: + // standard + minXYZ.z--; + maxXYZ.z++; + // fall through; + case 2: + // slab or standard minXYZ.y--; maxXYZ.y++; - if (dims > 2) { // not polymer or slab - minXYZ.z--; - maxXYZ.z++; - } + // fall through; + case 1: + // slab, polymer, or standard + minXYZ.x--; + maxXYZ.x++; } - } int nCells = (maxXYZ.x - minXYZ.x) * (maxXYZ.y - minXYZ.y) * (maxXYZ.z - minXYZ.z); int cartesianCount = (checkSpecial ? noSymmetryCount * operationCount Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-14 00:09:41 UTC (rev 14293) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-14 03:24:33 UTC (rev 14294) @@ -4,6 +4,7 @@ version=12.0.13_dev +# bug fix: load {i j k} RANGE x.x not expanding load box by 1 in each direction # bug fix: applet console does not display startup message # bug fix: undo/redo problems in AppConsole # bug fix: crystal reader can't read selected model This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-16 12:19:41
|
Revision: 14313 http://jmol.svn.sourceforge.net/jmol/?rev=14313&view=rev Author: hansonr Date: 2010-09-16 12:19:34 +0000 (Thu, 16 Sep 2010) Log Message: ----------- 12.0.13 VERSION # two new features added retroactively: # new feature: set multipleBondRadiusFactor 0.75 # new feature: multipleBondSpacing # set multipleBondSpacing = -1 (default, varies with viewing angle) # set multipleBondSpacing = -0.5 (half that distance; varies with viewing angle) # set multipleBondSpacing = 0.35 (positive ==> fixed multiple bond spacing) # bug fix: MO NOPLANE not working # bug fix: isosurface map MEP not as accurate as could be # bug fix: SmarterJmolAdapter should not read zip bytes it doesn't have to # bug fix: spacefill JMOL does not work # bug fix: Jmol 12 does not read old 11.1 isosurface commands from states # bug fix: load {i j k} RANGE x.x not expanding load box by 1 in each direction # bug fix: applet console does not display startup message # bug fix: undo/redo problems in AppConsole # bug fix: crystal reader can't read selected model # bug fix: 3.5E+0.0 read as "3.5 0.0" # bug fix: navY/navy color issue # bug fix: write PDB for nonPDB files incorrect Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java 2010-09-16 12:18:32 UTC (rev 14312) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java 2010-09-16 12:19:34 UTC (rev 14313) @@ -506,8 +506,6 @@ float valueRed = jvxlData.valueMappedToRed; int vertexCount = (jvxlData.saveVertexCount > 0 ? jvxlData.saveVertexCount : jvxlData.vertexCount); - if(vertexCount >= vertexValues.length) - System.out.println("JVXLCODER ERROR"); float min = jvxlData.mappedDataMin; float max = jvxlData.mappedDataMax; StringBuffer list1 = new StringBuffer(); Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-09-16 12:18:32 UTC (rev 14312) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2010-09-16 12:19:34 UTC (rev 14313) @@ -387,6 +387,7 @@ jvxlData.jvxlDataIsColorMapped = jvxlDataIsColorMapped; jvxlData.isXLowToHigh = isXLowToHigh; jvxlData.vertexDataOnly = vertexDataOnly; + jvxlData.saveVertexCount = 0; if (jvxlDataIsColorMapped) { if (meshDataServer != null) { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-16 12:18:32 UTC (rev 14312) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-16 12:19:34 UTC (rev 14313) @@ -11,6 +11,7 @@ # set multipleBondSpacing = -0.5 (half that distance; varies with viewing angle) # set multipleBondSpacing = 0.35 (positive ==> fixed multiple bond spacing) +# bug fix: MO NOPLANE not working # bug fix: isosurface map MEP not as accurate as could be # bug fix: SmarterJmolAdapter should not read zip bytes it doesn't have to # bug fix: spacefill JMOL does not work This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-17 01:10:26
|
Revision: 14319 http://jmol.svn.sourceforge.net/jmol/?rev=14319&view=rev Author: hansonr Date: 2010-09-17 01:10:20 +0000 (Fri, 17 Sep 2010) Log Message: ----------- version=12.0.14 # bug fix: reading unmapped isosurface from JVXL files broken in 12.0.13 Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java 2010-09-16 18:01:26 UTC (rev 14318) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java 2010-09-17 01:10:20 UTC (rev 14319) @@ -382,10 +382,9 @@ ptReturn.scaleAdd(fReturn[0] = jvxlGetNextFraction(edgeFractionBase, edgeFractionRange, 0.5f), edgeVector, pointA); if (Float.isNaN(valueMin)) - setValueMinMax(); - if (includeValueNaN && Float.isNaN(fReturn[0])) - return Float.NaN; - return getNextValue(); + setValueMinMax(); + return (valueCount == 0 || includeValueNaN && Float.isNaN(fReturn[0]) + ? fReturn[0] : getNextValue()); } private float getNextValue() { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-16 18:01:26 UTC (rev 14318) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-17 01:10:20 UTC (rev 14319) @@ -2,8 +2,10 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.14_dev +version=12.0.14 +# bug fix: reading unmapped isosurface from JVXL files broken in 12.0.13 + # -------------------------------------------------------------- #version=12.0.13 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-18 00:26:26
|
Revision: 14329 http://jmol.svn.sourceforge.net/jmol/?rev=14329&view=rev Author: hansonr Date: 2010-09-18 00:26:19 +0000 (Sat, 18 Sep 2010) Log Message: ----------- version=12.0.15_dev # bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT" # bug fix: calculate structure requiring {xxx} Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/readers/quantum/SpartanSmolReader.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/adapter/readers/quantum/SpartanSmolReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/readers/quantum/SpartanSmolReader.java 2010-09-18 00:24:52 UTC (rev 14328) +++ branches/v12_0/Jmol/src/org/jmol/adapter/readers/quantum/SpartanSmolReader.java 2010-09-18 00:26:19 UTC (rev 14329) @@ -90,6 +90,10 @@ } if (title != null) atomSetCollection.setAtomSetName(title); + if (filter != null && filter.toLowerCase().indexOf("input") >= 0) { + continuing = false; + return false; + } } else if (lcline.endsWith("_output")) { return true; } else if (lcline.endsWith("output")) { Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-18 00:24:52 UTC (rev 14328) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-18 00:26:19 UTC (rev 14329) @@ -10910,8 +10910,6 @@ bs = (statementLength == 2 ? null : atomExpression(2)); if (isSyntaxCheck) return; - if (bs == null) - bs = viewer.getAtomBitSet(null); viewer.calculateStructures(bs); viewer.addStateScript(thisCommand, false, true); return; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-18 00:24:52 UTC (rev 14328) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-18 00:26:19 UTC (rev 14329) @@ -4,6 +4,8 @@ version=12.0.15_dev +# bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT" +# bug fix: calculate structure requiring {xxx} # -------------------------------------------------------------- #version=12.0.14 Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-18 00:24:52 UTC (rev 14328) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-18 00:26:19 UTC (rev 14329) @@ -2400,6 +2400,8 @@ public void calculateStructures(BitSet bsAtoms) { // Eval + if (bsAtoms == null) + bsAtoms = getModelUndeletedAtomsBitSet(-1); modelSet.calculateStructures(bsAtoms); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-18 11:31:48
|
Revision: 14330 http://jmol.svn.sourceforge.net/jmol/?rev=14330&view=rev Author: hansonr Date: 2010-09-18 11:31:41 +0000 (Sat, 18 Sep 2010) Log Message: ----------- version=12.0.15_dev # bug fix: catch without catch(e) causes exception # bug fix: isolated H atoms when calculating hydrogen bonds causes exception Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java 2010-09-18 00:26:19 UTC (rev 14329) +++ branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java 2010-09-18 11:31:41 UTC (rev 14330) @@ -70,8 +70,12 @@ short colixAtom; byte paletteID = JmolConstants.PALETTE_CPK; - public Bond[] bonds; + Bond[] bonds; + public Bond[] getBonds() { + return bonds; + } + public void setBonds(Bond[] bonds) { this.bonds = bonds; // for Smiles equating } @@ -286,10 +290,6 @@ return bonds; } - public Bond[] getBonds() { - return bonds; - } - public void setColixAtom(short colixAtom) { this.colixAtom = colixAtom; } Modified: branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java 2010-09-18 00:26:19 UTC (rev 14329) +++ branches/v12_0/Jmol/src/org/jmol/modelset/AtomCollection.java 2010-09-18 11:31:41 UTC (rev 14330) @@ -1916,7 +1916,7 @@ return null; Atom[] attached = new Atom[nAttached]; if (nAttached > 0) { - Bond[] bonds = atom.getBonds(); + Bond[] bonds = atom.bonds; int n = 0; for (int i = 0; i < bonds.length; i++) if (bonds[i].isCovalent()) Modified: branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2010-09-18 00:26:19 UTC (rev 14329) +++ branches/v12_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2010-09-18 11:31:41 UTC (rev 14330) @@ -2660,7 +2660,9 @@ float min2, max2, dmax; boolean firstIsCO; if (isH) { - Bond[] b = atom.getBonds(); + Bond[] b = atom.bonds; + if (b == null) + continue; boolean isOK = false; for (int j = 0; j < b.length && !isOK; j++) { Atom a2 = b[j].getOtherAtom(atom); @@ -2733,7 +2735,7 @@ private static Point3f checkMinAttachedAngle(Atom atom1, Atom atom2, float minAngle, Vector3f v1, Vector3f v2, boolean haveHAtoms) { - Bond[] bonds = atom1.getBonds(); + Bond[] bonds = atom1.bonds; Atom X = null; float dMin = Float.MAX_VALUE; if (bonds == null || bonds.length == 0) Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-18 00:26:19 UTC (rev 14329) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-18 11:31:41 UTC (rev 14330) @@ -5636,7 +5636,8 @@ && aatoken[pc + 1][0].tok == Token.catchcmd) { // set the intValue positive to indicate "not done" for the IF evaluation ContextToken ct = (ContextToken) aatoken[pc + 1][0]; - ct.contextVariables.put(ct.name0, ScriptVariable.getVariable(errMsg)); + if (ct.contextVariables != null) + ct.contextVariables.put(ct.name0, ScriptVariable.getVariable(errMsg)); ct.intValue = (errMsg.length() > 0 ? 1 : -1) * Math.abs(ct.intValue); } return false; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-18 00:26:19 UTC (rev 14329) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-18 11:31:41 UTC (rev 14330) @@ -4,6 +4,8 @@ version=12.0.15_dev +# bug fix: catch without catch(e) causes exception +# bug fix: isolated H atoms when calculating hydrogen bonds causes exception # bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT" # bug fix: calculate structure requiring {xxx} # -------------------------------------------------------------- Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-18 00:26:19 UTC (rev 14329) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-18 11:31:41 UTC (rev 14330) @@ -7703,7 +7703,7 @@ bsBranch = getBranchBitSet(atom2.index, atom1.index); } if (bsBranch != null) - for (int n = 0, i = 0; i < atom1.bonds.length; i++) { + for (int n = 0, i = atom1.getBonds().length; --i >= 0;) { if (bsBranch.get(atom1.getBondedAtomIndex(i)) && ++n == 2) { bsBranch = null; break; @@ -9132,19 +9132,21 @@ } void moveAtomWithHydrogens(int atomIndex, int deltaX, int deltaY, - BitSet bsAtoms) { + BitSet bsAtoms) { stopMinimization(); Atom atom = modelSet.atoms[atomIndex]; if (bsAtoms == null) { bsAtoms = BitSetUtil.setBit(atomIndex); - Bond[] bonds = atom.bonds; - for (int i = 0; i < bonds.length; i++) { - Atom atom2 = atom.bonds[i].getOtherAtom(atom); - if (atom2.getElementNumber() == 1) - bsAtoms.set(atom2.index); - } + Bond[] bonds = atom.getBonds(); + if (bonds != null) + for (int i = 0; i < bonds.length; i++) { + Atom atom2 = bonds[i].getOtherAtom(atom); + if (atom2.getElementNumber() == 1) + bsAtoms.set(atom2.index); + } } - moveSelected(deltaX, deltaY, Integer.MIN_VALUE, Integer.MIN_VALUE, bsAtoms, true); + moveSelected(deltaX, deltaY, Integer.MIN_VALUE, Integer.MIN_VALUE, bsAtoms, + true); } void appendLoadStates(StringBuffer commands) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-18 19:07:41
|
Revision: 14336 http://jmol.svn.sourceforge.net/jmol/?rev=14336&view=rev Author: hansonr Date: 2010-09-18 19:07:34 +0000 (Sat, 18 Sep 2010) Log Message: ----------- version=12.0.15_dev # bug fix: error writing isosurface color density JVXL file # code: deprecated "commandOption" shape property removed Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java branches/v12_0/Jmol/src/org/jmol/shape/Shape.java branches/v12_0/Jmol/src/org/jmol/util/Escape.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -233,7 +233,8 @@ float v = 0; int pti = 0; - + boolean allInside = (colorDensity && (cutoff == 0 || bsVoxels.cardinality() == 0)); + for (int x = x0; x != x1; x += xStep, ptX += ptStep, pt = ptX, cellIndex = cellIndex0) { // we swap planes of grid data when @@ -260,7 +261,6 @@ if (bsExcludedPlanes.get(x) && bsExcludedPlanes.get(x + xStep)) continue; int xCount = 0; - boolean allInside = (cutoff == 0 && colorDensity); for (int y = cubeCountY; --y >= 0; pt--) { for (int z = cubeCountZ; --z >= 0; pt--, cellIndex--) { @@ -284,7 +284,7 @@ isInside = bsVoxels.get(pti); break; case MODE_BITSET: - isInside = bsVoxels.get(pti); + isInside = (allInside || bsVoxels.get(pti)); v = vertexValues[i] = (bsExcludedVertices.get(pti) ? Float.NaN : isInside ? 1 Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/data/JvxlCoder.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -39,13 +39,14 @@ //TODO -- need to escapeXml for text data final public static String JVXL_VERSION1 = "2.0"; - final public static String JVXL_VERSION_XML = "2.1"; + final public static String JVXL_VERSION_XML = "2.2"; // 1.4 adds -nContours to indicate contourFromZero for MEP data mapped onto planes // 2.0 adds vertex/triangle compression when no grid is present // Jmol 11.7.25 -- recoded so that we do not create voxelData[nx][ny][nz] and instead // simply create a BitSet of length nx * ny * nz. This saves memory hugely. // 2.1 adds JvxlXmlReader + // 2.2 adds color density Jmol 12.0.15/12.1.13 public static String jvxlGetFile(VolumeData volumeData, JvxlData jvxlData, String[] title) { @@ -901,7 +902,9 @@ public static void jvxlAppendEncodedNumber(StringBuffer sb, int n, int base, int range) { boolean isInRange = (n < range); - if (!isInRange) + if (n == 0) + sb.append((char) base); + else if (!isInRange) sb.append((char)(base + range)); while (n > 0) { int n1 = n / range; Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/JvxlXmlReader.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -345,7 +345,7 @@ BitSet bs = new BitSet(); int bsVoxelPtr = 0; if (surfaceDataCount <= 0) - return bs; //unnecessary -- probably a plane + return bs; //unnecessary -- probably a plane or color density int nThisValue = 0; while (bsVoxelPtr < nPoints) { nThisValue = parseInt(); Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -360,17 +360,6 @@ return true; } - if ("commandOption" == propertyName) { - String s = " # " + (String) value; - // System.out.println("sg commandOption0 " + params.script + " and " + - // propertyName); - if (params.script.indexOf(s) < 0) - params.script += s; - // System.out.println("sg commandOption1 " + params.script); - - return true; - } - if ("clear" == propertyName) { if (surfaceReader != null) surfaceReader.discardTempData(true); @@ -855,7 +844,8 @@ || "sasurface" == propertyName || "nomap" == propertyName) { params.setSolvent(propertyName, ((Float) value).floatValue()); Logger.info(params.calculationType); - if (params.state < Parameters.STATE_DATA_READ) + if (params.state < Parameters.STATE_DATA_READ && + (params.cutoffAutomatic || !params.colorDensity)) params.cutoff = 0.0f; processState(); return true; Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -13522,7 +13522,7 @@ + data[0] + "\"\n" + (data[1] instanceof float[] ? Escape.escape((float[]) data[1], - true) : data[1] instanceof float[][] ? Escape.escape( + false) : data[1] instanceof float[][] ? Escape.escape( (float[][]) data[1], false) : "" + data[1]) + "\nend \"" + data[0] + "\";"); } @@ -14899,7 +14899,7 @@ case Token.within: ptWithin = i; float distance; - Point3f ptc; + Point3f ptc = null; bs = null; boolean havePt = false; if (tokAt(i + 1) == Token.expressionBegin) { @@ -14918,7 +14918,6 @@ false, true); if (bs == null) error(ERROR_invalidArgument); - ptc = viewer.getAtomSetCenter(bs); } } else { distance = floatParameter(++i); @@ -14931,6 +14930,11 @@ bs = (expressionResult instanceof BitSet ? (BitSet) expressionResult : null); if (!isSyntaxCheck) { + if (bs != null) + bs.and(viewer.getModelUndeletedAtomsBitSet(modelIndex)); + if (ptc == null) + ptc = viewer.getAtomSetCenter(bs); + getWithinDistanceVector(propertyList, distance, ptc, bs); sbCommand.append(" within ").append(distance).append(" ").append( bs == null ? Escape.escape(ptc) : Escape.escape(bs)); @@ -15829,8 +15833,6 @@ addShapeProperty(propertyList, "fileName", filename); if (localName != null) filename = localName; - //addShapeProperty(propertyList, "commandOption", "FILE" + (nFiles++) - // + "=" + Escape.escape(filename)); sbCommand.append(" /*file*/").append(Escape.escape(filename)); propertyValue = null; // null value indicates that we need a reader based on the fileName @@ -15991,8 +15993,6 @@ pts[1] = pt1; v.add(ptc); } else { - //addShapeProperty(propertyList, "commandOption", "WITHIN=\"" - // + Escape.escape(bs) + "\""); BoxInfo bbox = viewer.getBoxInfo(bs, -distance); pts[0] = bbox.getBboxVertices()[0]; pts[1] = bbox.getBboxVertices()[7]; Modified: branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -162,12 +162,6 @@ currentMesh.scriptCommand = "{\n" + StateManager.getVariableList((Hashtable) value, 0, false) + "\n" + currentMesh.scriptCommand; return; } - if ("commandOption" == propertyName) { - String s = "# " + (String) value; - if (script.indexOf(s) < 0) - script += " " + s; - return; - } if ("thisID" == propertyName) { String id = (String) value; Modified: branches/v12_0/Jmol/src/org/jmol/shape/Shape.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/Shape.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/shape/Shape.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -209,8 +209,7 @@ if (xmlProperties == null) return false; - if (propertyName == "setProperties" || propertyName == "thisID" - || propertyName == "commandOption") + if (propertyName == "setProperties" || propertyName == "thisID") return false; Vector attributes = new Vector(); attributes.add(new Object[] { "select", Modified: branches/v12_0/Jmol/src/org/jmol/util/Escape.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/Escape.java 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/util/Escape.java 2010-09-18 19:07:34 UTC (rev 14336) @@ -91,6 +91,8 @@ } public static String escape(float[] f, boolean asArray) { + if (asArray) + return toJSON(null, f); StringBuffer sb = new StringBuffer(); for (int i = 0; i < f.length; i++) { if (i > 0) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-18 18:53:36 UTC (rev 14335) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-18 19:07:34 UTC (rev 14336) @@ -4,6 +4,8 @@ version=12.0.15_dev +# bug fix: error writing isosurface color density JVXL file +# code: deprecated "commandOption" shape property removed # bug fix: catch without catch(e) causes exception # bug fix: isolated H atoms when calculating hydrogen bonds causes exception # bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-19 19:43:37
|
Revision: 14343 http://jmol.svn.sourceforge.net/jmol/?rev=14343&view=rev Author: hansonr Date: 2010-09-19 19:43:31 +0000 (Sun, 19 Sep 2010) Log Message: ----------- version=12.0.15_dev # bug fix: MEP menu item is using MOLECULAR with default range; should be using VDW with range ALL # bug fix: unescaped spaces in load "$ethyl ether" cause fault at NIH. Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java 2010-09-19 19:42:33 UTC (rev 14342) +++ branches/v12_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java 2010-09-19 19:43:31 UTC (rev 14343) @@ -495,7 +495,7 @@ { "surfSolventAccessible14", "isosurface delete resolution 0 sasurface 1.4 translucent" }, { "CHARGEsurfMEP", - "isosurface delete resolution 0 molecular map MEP translucent" }, + "isosurface delete resolution 0 vdw color range all map MEP translucent" }, { "surfOpaque", "mo opaque;isosurface opaque" }, { "surfTranslucent", "mo translucent;isosurface translucent" }, { "surfOff", "mo delete;isosurface delete;select *;dots off" }, Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-19 19:42:33 UTC (rev 14342) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-19 19:43:31 UTC (rev 14343) @@ -4,6 +4,8 @@ version=12.0.15_dev +# bug fix: MEP menu item is using MOLECULAR with default range; should be using VDW with range ALL +# bug fix: unescaped spaces in load "$ethyl ether" cause fault at NIH. # bug fix: switch to String smilesUrlFormat = "http://cactus.nci.nih.gov/chemical/structure/%FILE/file?format=sdf&get3d=True"; # bug fix: error writing isosurface color density JVXL file # code: deprecated "commandOption" shape property removed This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-20 12:54:27
|
Revision: 14348 http://jmol.svn.sourceforge.net/jmol/?rev=14348&view=rev Author: hansonr Date: 2010-09-20 12:54:20 +0000 (Mon, 20 Sep 2010) Log Message: ----------- version=12.0.15_dev # bug fix: naming a variable after a function name such as "color" should be allowed # bug fix: "smilesString" changed to "_smilesString" and properly set # bug fix: Application filename for $xxxx not properly set Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2010-09-20 12:52:48 UTC (rev 14347) +++ branches/v12_0/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2010-09-20 12:54:20 UTC (rev 14348) @@ -282,7 +282,7 @@ atomSetCollection.setAtomSetCollectionAuxiliaryInfo("loadState", s == null ? "" : s); s = (String) htParams.get("smilesString"); if (s != null) - addJmolScript("smilesString = \"" + s + "\""); + atomSetCollection.setAtomSetCollectionAuxiliaryInfo("smilesString", s); if (!htParams.containsKey("templateAtomCount")) htParams.put("templateAtomCount", new Integer(atomSetCollection .getAtomCount())); Modified: branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2010-09-20 12:52:48 UTC (rev 14347) +++ branches/v12_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2010-09-20 12:54:20 UTC (rev 14348) @@ -434,6 +434,7 @@ someModelsHaveSymmetry = true; } Model m = models[baseModelIndex]; + viewer.setSmilesString((String) modelSetAuxiliaryInfo.get("smilesString")); String loadState = (String) modelSetAuxiliaryInfo.remove("loadState"); StringBuffer loadScript = (StringBuffer)modelSetAuxiliaryInfo.remove("loadScript"); if (loadScript.indexOf("Viewer.AddHydrogens") < 0 || !m.isModelKit) { Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-20 12:52:48 UTC (rev 14347) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-09-20 12:54:20 UTC (rev 14348) @@ -889,7 +889,7 @@ break; default: if (Token.tokAttr(theTok, Token.mathop) - || Token.tokAttr(theTok, Token.mathfunc)) { + || Token.tokAttr(theTok, Token.mathfunc) && tokAt(iToken + 1) == Token.leftparen) { if (!rpn.addOp(theToken)) { if (ptAtom >= 0) { // this is expected -- the right parenthesis Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-20 12:52:48 UTC (rev 14347) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-20 12:54:20 UTC (rev 14348) @@ -4,6 +4,9 @@ version=12.0.15_dev +# bug fix: naming a variable after a function name such as "color" should be allowed +# bug fix: "smilesString" changed to "_smilesString" and properly set +# bug fix: Application filename for $xxxx not properly set # bug fix: MEP menu item is using MOLECULAR with default range; should be using VDW with range ALL # bug fix: unescaped spaces in load "$ethyl ether" cause fault at NIH. # bug fix: switch to String smilesUrlFormat = "http://cactus.nci.nih.gov/chemical/structure/%FILE/file?format=sdf&get3d=True"; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java 2010-09-20 12:52:48 UTC (rev 14347) +++ branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java 2010-09-20 12:54:20 UTC (rev 14348) @@ -340,11 +340,15 @@ if (errorMsg != null) setStatusChanged("fileLoadError", ptLoad, errorMsg, false); String sJmol = jmolScriptCallback(JmolConstants.CALLBACK_LOADSTRUCT); - if (doCallback && notifyEnabled(JmolConstants.CALLBACK_LOADSTRUCT)) + if (doCallback && notifyEnabled(JmolConstants.CALLBACK_LOADSTRUCT)) { + String name = (String) viewer.getParameter("_smilesString"); + if (name != null) + fileName = name; jmolCallbackListener.notifyCallback(JmolConstants.CALLBACK_LOADSTRUCT, new Object[] { sJmol, - fullPathName, fileName, modelName, errorMsg, new Integer(ptLoad) + fullPathName, fileName, modelName, errorMsg, Integer.valueOf(ptLoad) , viewer.getParameter("_modelNumber"), viewer.getModelNumberDotted(viewer.getModelCount() - 1) }); + } } synchronized void setStatusFrameChanged(int frameNo, int fileNo, int modelNo, Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-20 12:52:48 UTC (rev 14347) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-20 12:54:20 UTC (rev 14348) @@ -6269,6 +6269,13 @@ return language; } + public void setSmilesString(String s) { + if (s == null) + global.removeJmolParameter("_smilesString"); + else + global.setParameterValue("_smilesString", s); + } + public void removeUserVariable(String key) { global.removeUserVariable(key); if (key.indexOf("callback") >= 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-09-22 22:32:33
|
Revision: 14363 http://jmol.svn.sourceforge.net/jmol/?rev=14363&view=rev Author: hansonr Date: 2010-09-22 22:32:26 +0000 (Wed, 22 Sep 2010) Log Message: ----------- version=12.0.16_dev # bug fix: %8.4VALUE still truncating in set defaultdistancelabel # new feature: (simple enough to add this here) new 5th parameter for measureCallback is actual, unrounded value Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/modelset/Measurement.java branches/v12_0/Jmol/src/org/jmol/shape/Measures.java branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/modelset/Measurement.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/Measurement.java 2010-09-22 22:30:45 UTC (rev 14362) +++ branches/v12_0/Jmol/src/org/jmol/modelset/Measurement.java 2010-09-22 22:32:26 UTC (rev 14363) @@ -289,8 +289,9 @@ if (units == null) units = viewer.getMeasureDistanceUnits(); units = fixUnits(units); - float f = fixValue(value, units); - return formatString(f, units); + String label = getLabelString(); + float f = fixValue(value, units, (label.indexOf("%V") >= 0)); + return formatString(f, units, label); } private static String fixUnits(String units) { @@ -303,30 +304,35 @@ return units; } - private static float fixValue(float dist, String units) { + private static float fixValue(float dist, String units, boolean andRound) { if (units != null) { if (units.equals("nm")) - return (int) (dist * 100 + 0.5f) / 1000f; + return (andRound ? (int) (dist * 100 + 0.5f) / 1000f : dist / 10); if (units.equals("pm")) - return (int) ((dist * 1000 + 0.5)) / 10f; + return (andRound? (int) ((dist * 1000 + 0.5)) / 10f : dist * 100); if (units.equals("au")) - return (int) (dist / JmolConstants.ANGSTROMS_PER_BOHR * 1000 + 0.5f) / 1000f; + return (andRound ? (int) (dist / JmolConstants.ANGSTROMS_PER_BOHR * 1000 + 0.5f) / 1000f : dist / JmolConstants.ANGSTROMS_PER_BOHR); } - return (int) (dist * 100 + 0.5f) / 100f; + return (andRound ? (int) (dist * 100 + 0.5f) / 100f : dist); } private String formatAngle(float angle) { - angle = (int)(angle * 10 + (angle >= 0 ? 0.5f : -0.5f)); - angle /= 10; - return formatString(angle, "\u00B0"); + String label = getLabelString(); + if (label.indexOf("%V") >= 0) + angle = ((int)(angle * 10 + (angle >= 0 ? 0.5f : -0.5f))) / 10f; + return formatString(angle, "\u00B0", label); } - private String formatString(float value, String units) { + private String getLabelString() { String s = countPlusIndices[0]+":" + ""; String label = (strFormat != null && strFormat.indexOf(s)==0? strFormat : viewer .getDefaultMeasurementLabel(countPlusIndices[0])); if (label.indexOf(s)==0) label = label.substring(2); + return label; + } + + private String formatString(float value, String units, String label) { return LabelToken.formatLabel(viewer, this, label, value, units); } @@ -456,7 +462,7 @@ } public String getInfoAsString(String units) { - float f = (count == 2 ? fixValue(value, units) : value); + float f = (count == 2 ? fixValue(value, units, true) : value); StringBuffer sb = new StringBuffer(); sb.append(count == 2 ? "distance" : count == 3 ? "angle" : "dihedral"); sb.append(" \t").append(f); Modified: branches/v12_0/Jmol/src/org/jmol/shape/Measures.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/Measures.java 2010-09-22 22:30:45 UTC (rev 14362) +++ branches/v12_0/Jmol/src/org/jmol/shape/Measures.java 2010-09-22 22:32:26 UTC (rev 14363) @@ -307,7 +307,7 @@ return; measurementCount = 0; measurements.clear(); - viewer.setStatusMeasuring("measureDeleted", -1, "all"); + viewer.setStatusMeasuring("measureDeleted", -1, "all", 0); } private void setColor(short colix) { @@ -478,14 +478,14 @@ strFormat, measurementCount); measurements.add(measureNew); viewer.setStatusMeasuring("measureCompleted", measurementCount++, - measureNew.toVector().toString()); + measureNew.toVector().toString(), measureNew.getValue()); } private void deleteMeasurement(int i) { String msg = ((Measurement) measurements.get(i)).toVector().toString(); measurements.remove(i); measurementCount--; - viewer.setStatusMeasuring("measureDeleted", i, msg); + viewer.setStatusMeasuring("measureDeleted", i, msg, 0); } private void pending(MeasurementPending measurementPending) { @@ -494,7 +494,7 @@ return; if (measurementPending.getCount() > 1) viewer.setStatusMeasuring("measurePending", - measurementPending.getCount(), measurementPending.toVector().toString()); + measurementPending.getCount(), measurementPending.toVector().toString(), measurementPending.getValue()); } private void reformatDistances() { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java 2010-09-22 22:30:45 UTC (rev 14362) +++ branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java 2010-09-22 22:32:26 UTC (rev 14363) @@ -1733,7 +1733,7 @@ getSequence(); else viewer.setStatusMeasuring("measurePicked", n, - measurementQueued.getStringDetail()); + measurementQueued.getStringDetail(), measurementQueued.getValue()); if (atomPickingMode == PICKING_MEASURE || pickingStyleMeasure == PICKINGSTYLE_MEASURE_ON) { viewer.script("measure " @@ -1858,7 +1858,7 @@ if (a1 < 0 || a2 < 0) return; String sequence = viewer.getSmiles(a1, a2, null, true, false, false, false); - viewer.setStatusMeasuring("measureSequence", -2, sequence); + viewer.setStatusMeasuring("measureSequence", -2, sequence, 0); } private void checkTwoAtomAction(int action, Point3fi ptClicked, int atomIndex) { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-22 22:30:45 UTC (rev 14362) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-09-22 22:32:26 UTC (rev 14363) @@ -4,6 +4,9 @@ version=12.0.16_dev +# bug fix: %8.4VALUE still truncating in set defaultdistancelabel +# new feature: (simple enough to add this here) new 5th parameter for measureCallback is actual, unrounded value + # -------------------------------------------------------------- #version=12.0.15 Modified: branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java 2010-09-22 22:30:45 UTC (rev 14362) +++ branches/v12_0/Jmol/src/org/jmol/viewer/StatusManager.java 2010-09-22 22:32:26 UTC (rev 14363) @@ -387,7 +387,7 @@ new Object[] { sJmol, strEcho, new Integer(isScriptQueued ? 1 : 0) }); } - synchronized void setStatusMeasuring(String status, int intInfo, String strMeasure) { + synchronized void setStatusMeasuring(String status, int intInfo, String strMeasure, float value) { setStatusChanged(status, intInfo, strMeasure, false); String sJmol = null; if(status.equals("measureCompleted")) { @@ -397,10 +397,9 @@ setStatusChanged("measurePicked", intInfo, strMeasure, false); Logger.info("measurePicked " + intInfo + " " + strMeasure); } - if (notifyEnabled(JmolConstants.CALLBACK_MEASURE)) jmolCallbackListener.notifyCallback(JmolConstants.CALLBACK_MEASURE, - new Object[] { sJmol, strMeasure, new Integer(intInfo), status }); + new Object[] { sJmol, strMeasure, Integer.valueOf(intInfo), status , Float.valueOf(value)}); } synchronized void notifyError(String errType, String errMsg, Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-22 22:30:45 UTC (rev 14362) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-09-22 22:32:26 UTC (rev 14363) @@ -96,7 +96,6 @@ import javax.vecmath.AxisAngle4f; import java.net.URL; -import java.net.URLEncoder; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; @@ -107,7 +106,6 @@ import java.io.OutputStream; import java.io.Reader; import java.io.StringReader; -import java.io.UnsupportedEncodingException; /* * @@ -4974,7 +4972,7 @@ * Measures.deleteMeasurement Measures.pending actionManager.atomPicked */ - public void setStatusMeasuring(String status, int intInfo, String strMeasure) { + public void setStatusMeasuring(String status, int intInfo, String strMeasure, float value) { // status intInfo @@ -4983,7 +4981,7 @@ // measurePending atom count // measureDeleted -1 (all) or index // measureSequence -2 - statusManager.setStatusMeasuring(status, intInfo, strMeasure); + statusManager.setStatusMeasuring(status, intInfo, strMeasure, value); } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |