Revision: 18492 http://sourceforge.net/p/jmol/code/18492 Author: hansonr Date: 2013-07-26 11:46:53 +0000 (Fri, 26 Jul 2013) Log Message: ----------- ___JmolVersion="13.3.3_dev_2013.07.26" bug fix: PDB header don't do trim(); bug fix: isosuface ID @x ... becomes isosurface ID "@x" bug fix: color chain broken bug fix: rockets with color chain bug fix: filter ":X" broken bug fix: O not 2- in PDB adding hydrogens bug fix: NWChem reader error
Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlXsdReader.java trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java trunk/Jmol/src/org/jmol/minimize/MinPosition.java trunk/Jmol/src/org/jmol/minimize/Minimizer.java trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsMMFF.java trunk/Jmol/src/org/jmol/minimize/forcefield/ForceField.java trunk/Jmol/src/org/jmol/modelset/AtomCollection.java trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/modelset/ModelLoader.java trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java trunk/Jmol/src/org/jmol/script/ScriptCompiler.java trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java trunk/Jmol/src/org/jmol/shapespecial/Dots.java trunk/Jmol/src/org/jmol/util/Measure.java trunk/Jmol/src/org/jmol/viewer/ColorManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/PropertyManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -786,7 +786,7 @@ ch = chain < 256 ? (char) chain : 0; if (chainAtomCounts != null) chainAtomCounts[ch]++; - atom.chainID = ch; + setChainID(atom, ch); atom.sequenceNumber = seqNo; atom.insertionCode = JmolAdapter.canonizeInsertionCode(insCode); atom.isHetero = isHetero; @@ -898,7 +898,7 @@ String msg = " atom [" + atom.group3 + "]" + atom.sequenceNumber + (atom.insertionCode == '\0' ? "" : "^" + atom.insertionCode) - + (atom.chainID == '\0' ? "" : ":" + atom.chainID) + + (atom.chainID == 0 ? "" : ":" + viewer.getChainIDStr(atom.chainID)) + "." + atom.atomName + "%" + atom.alternateLocationID + "\n"; if (conformationIndex >= 0 && atom.alternateLocationID != lastAltLoc) { @@ -1695,8 +1695,8 @@ for (int j = ranges.size(); --j >= 0;) { String chains = (String) ranges.get(j).get("chains"); int[] residues = (int[]) ranges.get(j).get("residues"); - char chain0 = chains.charAt(0); - char chain1 = chains.charAt(1); + int chain0 = 0 + chains.charAt(0); + int chain1 = 0 + chains.charAt(1); int res0 = residues[0]; int res1 = residues[1]; int index1 = findAtomForRange(index0, indexMax, chain0, res0, false); @@ -1732,13 +1732,13 @@ atomSetCollection.setTensors(); } - private int findAtomForRange(int atom1, int atom2, char chain, int resno, + private int findAtomForRange(int atom1, int atom2, int chain, int resno, boolean isLast) { int iAtom = findAtom(atom1, atom2, chain, resno, true); return (isLast && iAtom >= 0 ? findAtom(iAtom, atom2, chain, resno, false) : iAtom); } - private int findAtom(int atom1, int atom2, char chain, int resno, boolean isTrue) { + private int findAtom(int atom1, int atom2, int chain, int resno, boolean isTrue) { Atom[] atoms = atomSetCollection.getAtoms(); for (int i = atom1; i < atom2; i++) { Atom atom = atoms[i]; Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -184,7 +184,7 @@ chainID++; } lastSequenceNumber = atom.sequenceNumber; - atom.chainID = chainID; + setChainID(atom, (char) chainID); } if (tokens.length > 7) atom.group3 = tokens[7]; Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -1144,7 +1144,7 @@ int thisModel = -1; for (int i = atomCount0; i < n; i++) { if (i == atomCount) { - thischain = '\0'; + thischain = 0; } else { seqNo = atoms[i].sequenceNumber; thischain = atoms[i].chainID; Modified: trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlXsdReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlXsdReader.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlXsdReader.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -89,7 +89,7 @@ atom.atomName = atts.get("ID"); atom.atomSerial = ++iAtom; if (iChain >= 0) - atom.chainID = (iChain - 1)%26 + 'A'; + setChainID(atom, (char) ((iChain - 1)%26 + 'A')); atom.group3 = "UNK"; if (iGroup == 0) iGroup = 1; Modified: trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -47,7 +47,8 @@ public float radius = Float.NaN; public boolean isHetero; public int atomSerial = Integer.MIN_VALUE; - public int chainID; + public int chainID; // not public -- set using AtomSetCollectionReader.setChainID + public char alternateLocationID = '\0'; public String group3; public int sequenceNumber = Integer.MIN_VALUE; Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -922,8 +922,8 @@ || atom.atomName.toUpperCase().indexOf("\0" + filterAtomTypeStr) >= 0) && (!filterElement || atom.elementSymbol == null || !filterReject(f, "_", atom.elementSymbol.toUpperCase() + ";")) - && (!filterChain || atom.chainID == '\0' || !filterReject(f, ":", "" - + atom.chainID)) + && (!filterChain || atom.chainID == 0 || !filterReject(f, ":", "" + + viewer.getChainIDStr(atom.chainID))) && (!filterAltLoc || atom.alternateLocationID == '\0' || !filterReject( f, "%", "" + atom.alternateLocationID)) && (!filterHetero || !filterReject(f, "HETATM", @@ -1615,4 +1615,7 @@ // PyMOL reader only } + public void setChainID(Atom atom, char ch) { + atom.chainID = viewer.getChainID("" + ch); + } } Modified: trunk/Jmol/src/org/jmol/minimize/MinPosition.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/MinPosition.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/minimize/MinPosition.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -1,5 +1,8 @@ package org.jmol.minimize; +/** + * not implemented -- would be a force toward a given position in space + */ public class MinPosition extends MinObject { MinPosition(int[] data, double[] ddata) { this.data = data; Modified: trunk/Jmol/src/org/jmol/minimize/Minimizer.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/Minimizer.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/minimize/Minimizer.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -59,6 +59,8 @@ public MinBond[] minBonds; public MinAngle[] minAngles; public MinTorsion[] minTorsions; + public MinPosition[] minPositions; + public BS bsMinFixed; private int atomCount; private int bondCount; Modified: trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsMMFF.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsMMFF.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsMMFF.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -34,7 +34,6 @@ import org.jmol.minimize.MinObject; import org.jmol.minimize.MinPosition; import org.jmol.minimize.MinTorsion; -import org.jmol.minimize.forcefield.CalculationsUFF.PositionCalc; import org.jmol.util.TextFormat; /** Modified: trunk/Jmol/src/org/jmol/minimize/forcefield/ForceField.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/forcefield/ForceField.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/minimize/forcefield/ForceField.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -103,6 +103,7 @@ this.minBonds = minimizer.minBonds; this.minAngles = minimizer.minAngles; this.minTorsions = minimizer.minTorsions; + this.minPositions = minimizer.minPositions; // not implemented this.bsFixed = minimizer.bsMinFixed; minAtomCount = minAtoms.length; minBondCount = minBonds.length; Modified: trunk/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -1390,7 +1390,8 @@ Atom a = atoms[i]; int nH = getImplicitHydrogenCount(a, true); if (nH != 0) { - int c0 = a.getFormalCharge(); + + int c0 = a.getFormalCharge(); int c = c0 - nH; a.setFormalCharge(c); taintAtom(i, TAINT_FORMALCHARGE); Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -3259,6 +3259,13 @@ return BSUtil.deleteBits(bs, bs1); } + /** + * + * @param iFirst + * 0 from ModelLoader.freeze; -1 from Viewer.assignAtom + * @param baseAtomIndex + * @param mergeSet + */ public void setAtomNamesAndNumbers(int iFirst, int baseAtomIndex, AtomCollection mergeSet) { // first, validate that all atomSerials are NaN @@ -3281,10 +3288,14 @@ // 1) do not change numbers assigned by adapter // 2) do not change the number already assigned when merging // 3) restart numbering with new atoms, not a continuation of old - if (atomSerials[i] == 0 || baseAtomIndex < 0) - atomSerials[i] = (i < baseAtomIndex ? mergeSet.atomSerials[i] : atomNo); - if (atomNames[i] == null || baseAtomIndex < 0) - atomNames[i] = (atom.getElementSymbol() + atomSerials[i]).intern(); + if (i >= -baseAtomIndex) { + if (atomSerials[i] == 0 || baseAtomIndex < 0) + atomSerials[i] = (i < baseAtomIndex ? mergeSet.atomSerials[i] + : atomNo); + if (atomNames[i] == null || baseAtomIndex < 0) + atomNames[i] = (atom.getElementSymbol() + atomSerials[i]).intern(); + } + if (!models[lastModelIndex].isModelKit || atom.getElementNumber() > 0 && !atom.isDeleted()) atomNo++; Modified: trunk/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -248,7 +248,7 @@ public int baseModelIndex = 0; private int baseModelCount = 0; - private int baseAtomIndex = 0; + public int baseAtomIndex = 0; private int baseGroupIndex = 0; private int baseTrajectoryCount = 0; Modified: trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java =================================================================== --- trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/modelsetbio/Resolver.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -40,6 +40,7 @@ import org.jmol.modelset.ModelLoader; import org.jmol.modelset.ModelSet; import org.jmol.util.BS; +import org.jmol.util.BSUtil; import org.jmol.util.JmolEdge; import org.jmol.util.Logger; import org.jmol.util.Measure; @@ -206,12 +207,9 @@ public void addImplicitHydrogenAtoms(JmolAdapter adapter, int iGroup, int nH) { String group3 = modelLoader.getGroup3(iGroup); - if (group3 != null && group3.equals("FS4")) - System.out.println("hest"); int nH1; if (haveHsAlready || group3 == null - || (nH1 = JC.getStandardPdbHydrogenCount(Group - .lookupGroupID(group3))) == 0) + || (nH1 = JC.getStandardPdbHydrogenCount(Group.lookupGroupID(group3))) == 0) return; nH = (nH1 < 0 ? -1 : nH1 + nH); Object model = null; @@ -351,7 +349,6 @@ modelSet.viewer.getLigandModel(null); finalizePdbMultipleBonds(); addHydrogens(); - modelSet.fixFormalCharges(bsAtomsForHs); } private void addHydrogens() { @@ -453,6 +450,7 @@ } } deleteUnneededAtoms(); + modelSet.fixFormalCharges(BSUtil.newBitSet2(modelLoader.baseAtomIndex, modelLoader.modelSet.atomCount)); } /** Modified: trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -171,8 +171,8 @@ viewer.transformPt3f(pointEnd, screenB); int zMid = (int) Math.floor((screenA.z + screenB.z) / 2f); int diameter = (int) viewer.scaleToScreen(zMid, mad); - g3d.fillCylinderBits(GData.ENDCAPS_FLAT, diameter, screenA, screenB); if (g3d.setColix(colix)) { + g3d.fillCylinderBits(GData.ENDCAPS_FLAT, diameter, screenA, screenB); if (tEnd && renderArrowHeads) { vtemp.sub2(pointEnd, pointStart); vtemp.normalize(); Modified: trunk/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -2348,7 +2348,7 @@ ichT = ptLastChar + 1; else if (ptSpace > 0) ichT = ptSpace; - if (isVariable && ptSpace < 0 && parenpt <= 0 && ichT - ichToken > 1) { + if (isVariable && (!allowSpace || ptSpace < 0 && parenpt <= 0 && ichT - ichToken > 1)) { // if we have @xxx then this is not an implied string return false; } Modified: trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -47,7 +47,6 @@ import org.jmol.util.BS; import org.jmol.util.BSUtil; import org.jmol.util.BoxInfo; -import org.jmol.util.C; import org.jmol.util.ColorEncoder; import org.jmol.util.ColorUtil; import org.jmol.util.Escape; Modified: trunk/Jmol/src/org/jmol/shapespecial/Dots.java =================================================================== --- trunk/Jmol/src/org/jmol/shapespecial/Dots.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/shapespecial/Dots.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -30,7 +30,6 @@ import org.jmol.util.BSUtil; import org.jmol.util.C; import org.jmol.util.Escape; -import org.jmol.util.Logger; import org.jmol.util.Matrix3f; import org.jmol.util.Matrix4f; import org.jmol.util.SB; Modified: trunk/Jmol/src/org/jmol/util/Measure.java =================================================================== --- trunk/Jmol/src/org/jmol/util/Measure.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/util/Measure.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -510,7 +510,7 @@ for (int i = 1; i <= n; i++) { P3 aij = centerAndPoints[0][i]; P3 bij = centerAndPoints[1][i]; - if (aij instanceof Atom) + if (aij instanceof Atom && bij instanceof Atom) Logger.info(" atom 1 " + ((Atom) aij).getInfo() + "\tatom 2 " + ((Atom) bij).getInfo()); else Modified: trunk/Jmol/src/org/jmol/viewer/ColorManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ColorManager.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/viewer/ColorManager.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -253,6 +253,7 @@ chain = 0; else if (chain >= 256) chain -= 256; + chain &= 0x1F; chain = chain % JC.argbsChainAtom.length; argb = (atom.isHetero() ? JC.argbsChainHetero : JC.argbsChainAtom)[chain]; break; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-07-26 11:46:53 UTC (rev 18492) @@ -11,11 +11,19 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="13.3.3_dev_2013.07.23" +___JmolVersion="13.3.3_dev_2013.07.26" + +bug fix: PDB header don't do trim(); +bug fix: isosuface ID @x ... becomes isosurface ID "@x" +bug fix: color chain broken +bug fix: rockets with color chain +bug fix: filter ":X" broken +bug fix: O not 2- in PDB adding hydrogens +bug fix: NWChem reader error -bug fix: NWChem reader error -- unclear what is going on with "OR +TODO: mouse exit then release doesn't trigger release TODO: ingenol/jsmetest.htm? - +TODO: minimization set position calculation optimization? TODO: documentation (see below, including % units on measure distance) TODO: isosurface SLAB TRANSLUCENT 0.x color Modified: trunk/Jmol/src/org/jmol/viewer/PropertyManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/PropertyManager.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/viewer/PropertyManager.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -538,10 +538,11 @@ } String[] lines = TextFormat.split((String) objHeader, '\n'); // this is meant to be for PDB files only - if (lines.length == 0 - || lines[0].length() < 6 - || lines[0].charAt(6) != ' ' - || !lines[0].substring(0, 6).equals(lines[0].substring(0, 6).toUpperCase())) { + if (lines.length == 0 + || lines[0].length() < 6 + || lines[0].charAt(6) != ' ' + || !lines[0].substring(0, 6).equals( + lines[0].substring(0, 6).toUpperCase())) { ht.put("fileHeader", (String) objHeader); return ht; } @@ -569,7 +570,7 @@ keyLast = key; } if (!haveType || key.equals(type)) - sb.append(line.substring(10).trim()).appendC('\n'); + sb.append(line).appendC('\n'); } if (!haveType) { ht.put(keyLast, sb.toString()); Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2013-07-24 11:28:50 UTC (rev 18491) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2013-07-26 11:46:53 UTC (rev 18492) @@ -9437,8 +9437,10 @@ return; clearModelDependentObjects(); if (pt == null) { + int atomCount = modelSet.getAtomCount(); modelSet.assignAtom(atomIndex, type, true); - modelSet.setAtomNamesAndNumbers(atomIndex, -1, null); + if (!Parser.isOneOf(type,";Mi;Pl;X;")) + modelSet.setAtomNamesAndNumbers(atomIndex, -atomCount, null); refresh(3, "assignAtom"); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits