Revision: 18480 http://sourceforge.net/p/jmol/code/18480 Author: hansonr Date: 2013-07-19 18:57:54 +0000 (Fri, 19 Jul 2013) Log Message: ----------- reorganization of tensor methods
Modified Paths: -------------- trunk/Jmol/src/org/jmol/api/JmolNMRInterface.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/quantum/NMRCalculation.java trunk/Jmol/src/org/jmol/render/RepaintManager.java trunk/Jmol/src/org/jmol/shapespecial/Ellipsoids.java trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java Modified: trunk/Jmol/src/org/jmol/api/JmolNMRInterface.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolNMRInterface.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/api/JmolNMRInterface.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -4,7 +4,6 @@ import org.jmol.modelset.Atom; import org.jmol.modelset.MeasurementData; -import org.jmol.modelset.ModelSet; import org.jmol.util.BS; import org.jmol.util.JmolList; import org.jmol.util.SB; @@ -81,9 +80,6 @@ public float getChemicalShift(Atom atom); public boolean setChemicalShiftReference(String element, float value); - public JmolList<Tensor> getAllAtomTensors(String type); - public void setAtomTensors(ModelSet ms, int i, JmolList<Tensor> tensors); - public JmolList<Object> getTensorInfo(String tensorType, String infoType, BS bs); public Map<String, Float> getMinDistances(MeasurementData md); Modified: trunk/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -28,7 +28,9 @@ import org.jmol.util.JmolList; import java.util.Arrays; import java.util.Comparator; +import java.util.Hashtable; import java.util.Map; +import java.util.Map.Entry; import org.jmol.atomdata.AtomData; import org.jmol.atomdata.RadiusData; @@ -154,15 +156,6 @@ public Tensor[][] atomTensorList; // specifically now for {*}.adpmin {*}.adpmax public Map<String, JmolList<Tensor>> atomTensors; - public void addTensor(Tensor t, String type) { - type = type.toLowerCase(); - JmolList<Tensor> tensors = atomTensors.get(type); - if (tensors == null) - atomTensors.put(type, tensors = new JmolList<Tensor>()); - tensors.addLast(t); - } - - protected int[] surfaceDistance100s; protected boolean haveStraightness; @@ -253,11 +246,6 @@ return atoms[i].getChainIDStr(); } - public Tensor[] getAtomTensorList(int i) { - return (i < 0 || atomTensorList == null || i >= atomTensorList.length ? null - : atomTensorList[i]); - } - public Quaternion getQuaternion(int i, char qtype) { return (i < 0 ? null : atoms[i].group.getQuaternion(qtype)); } @@ -2548,6 +2536,19 @@ // what about data? } + public void getAtomIdentityInfo(int i, Map<String, Object> info) { + info.put("_ipt", Integer.valueOf(i)); + info.put("atomIndex", Integer.valueOf(i)); + info.put("atomno", Integer.valueOf(getAtomNumber(i))); + info.put("info", getAtomInfo(i, null)); + info.put("sym", getElementSymbol(i)); + } + + public Tensor[] getAtomTensorList(int i) { + return (i < 0 || atomTensorList == null || i >= atomTensorList.length ? null + : atomTensorList[i]); + } + // clean out deleted model atom tensors (ellipsoids) private void deleteAtomTensors(BS bsAtoms) { if (atomTensors == null) @@ -2567,14 +2568,91 @@ atomTensors.remove(toDelete.get(i)); } - public void getAtomIdentityInfo(int i, Map<String, Object> info) { - info.put("_ipt", Integer.valueOf(i)); - info.put("atomIndex", Integer.valueOf(i)); - info.put("atomno", Integer.valueOf(getAtomNumber(i))); - info.put("info", getAtomInfo(i, null)); - info.put("sym", getElementSymbol(i)); + public void setAtomTensors(int atomIndex, JmolList<Tensor> list) { + if (list == null || list.size() == 0) + return; + if (atomTensors == null) + atomTensors = new Hashtable<String, JmolList<Tensor>>(); + if (atomTensorList == null) + atomTensorList = new Tensor[atoms.length][]; + atomTensorList = (Tensor[][]) ArrayUtil.ensureLength(atomTensorList, atoms.length); + atomTensorList[atomIndex] = getTensorList(list); + for (int i = list.size(); --i >= 0;) { + Tensor t = list.get(i); + t.atomIndex1 = atomIndex; + t.atomIndex2 = -1; + t.modelIndex = atoms[atomIndex].modelIndex; + addTensor(t, t.type); + if (t.altType != null) + addTensor(t, t.altType); + } } + private static Tensor[] getTensorList(JmolList<Tensor> list) { + int pt = -1; + boolean haveTLS = false; + int n = list.size(); + for (int i = n; --i >= 0;) { + Tensor t = list.get(i); + if (t.forThermalEllipsoid) + pt = i; + else if (t.iType == Tensor.TYPE_TLS_U) + haveTLS = true; + } + Tensor[] a = new Tensor[(pt >= 0 || !haveTLS ? 0 : 1) + n]; + if (pt >= 0) { + a[0] = list.get(pt); + if (list.size() == 1) + return a; + } + // back-fills list for TLS: + // 0 = temp, 1 = TLS-R, 2 = TLS-U + if (haveTLS) { + pt = 0; + for (int i = n; --i >= 0;) { + Tensor t = list.get(i); + if (t.forThermalEllipsoid) + continue; + a[++pt] = t; + } + } else { + for (int i = 0; i < n; i++) + a[i] = list.get(i); + } + return a; + } + public Tensor getAtomTensor(int i, String type) { + Tensor[] tensors = getAtomTensorList(i); + if (tensors == null || type == null) + return null; + type = type.toLowerCase(); + for (int j = 0; j < tensors.length; j++) + if (tensors[j] != null && type.equals(tensors[j].type)) + return tensors[j]; + return null; + } + + public void addTensor(Tensor t, String type) { + type = type.toLowerCase(); + JmolList<Tensor> tensors = atomTensors.get(type); + if (tensors == null) + atomTensors.put(type, tensors = new JmolList<Tensor>()); + tensors.addLast(t); + } + + public JmolList<Tensor> getAllAtomTensors(String type) { + if (atomTensors == null) + return null; + if (type != null) + return atomTensors.get(type.toLowerCase()); + JmolList<Tensor> list = new JmolList<Tensor>(); + for (Entry<String, JmolList<Tensor>> e : atomTensors.entrySet()) + list.addAll(e.getValue()); + return list; + } + + + } Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -3165,7 +3165,7 @@ setOccupancy(atomCount, occupancy); setPartialCharge(atomCount, partialCharge); if (tensors != null) - viewer.getNMRCalculation().setAtomTensors((ModelSet) this, atomCount, tensors); + setAtomTensors(atomCount, tensors); atom.group = group; atom.colixAtom = viewer.getColixAtomPalette(atom, EnumPalette.CPK.id); if (atomName != null) { Modified: trunk/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -105,7 +105,7 @@ viewer.resetShapes(false); } modelSet.preserveState = viewer.getPreserveState(); - modelSet.showRebondTimes = viewer.global.showTiming; + modelSet.showRebondTimes = viewer.getBoolean(T.showtiming); if (bsNew == null) { initializeInfo(modelSetName, null); createModelSet(null, null, null); Modified: trunk/Jmol/src/org/jmol/quantum/NMRCalculation.java =================================================================== --- trunk/Jmol/src/org/jmol/quantum/NMRCalculation.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/quantum/NMRCalculation.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -35,7 +35,6 @@ import org.jmol.io.JmolBinary; import org.jmol.modelset.Atom; import org.jmol.modelset.MeasurementData; -import org.jmol.modelset.ModelSet; import org.jmol.util.BS; import org.jmol.util.Escape; import org.jmol.util.JmolList; @@ -342,7 +341,7 @@ } public float getMagneticShielding(Atom atom) { - Tensor t = getAtomTensor(atom.index, "ms"); + Tensor t = viewer.modelSet.getAtomTensor(atom.index, "ms"); return (t == null ? Float.NaN : t.getIso()); } @@ -366,39 +365,6 @@ return true; } - public void setAtomTensors(ModelSet ms, int atomIndex, JmolList<Tensor> list) { - if (list == null || list.size() == 0) - return; - if (ms.atomTensors == null) - ms.atomTensors = new Hashtable<String, JmolList<Tensor>>(); - if (ms.atomTensorList == null) - ms.atomTensorList = new Tensor[ms.atoms.length][]; - ms.atomTensorList[atomIndex] = getTensorList(list); - Atom[] atoms = ms.atoms; - for (int i = list.size(); --i >= 0;) { - Tensor t = list.get(i); - t.atomIndex1 = atomIndex; - t.atomIndex2 = -1; - t.modelIndex = atoms[atomIndex].modelIndex; - ms.addTensor(t, t.type); - if (t.altType != null) - ms.addTensor(t, t.altType); - } - } - - public JmolList<Tensor> getAllAtomTensors(String type) { - if (viewer.modelSet.atomTensors == null) - return null; - if (type != null) - return viewer.modelSet.atomTensors.get(type.toLowerCase()); - JmolList<Tensor> list = new JmolList<Tensor>(); - for (Entry<String, JmolList<Tensor>> e : viewer.modelSet.atomTensors.entrySet()) { - JmolList<Tensor> list2 = e.getValue(); - list.addAll(list2); - } - return list; - } - public JmolList<Object> getTensorInfo(String tensorType, String infoType, BS bs) { @@ -432,7 +398,7 @@ } else { boolean isChi = tensorType.startsWith("efg") && infoType.equals(";chi."); for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { - Tensor t = getAtomTensor(i, tensorType); + Tensor t = viewer.modelSet.getAtomTensor(i, tensorType); data.addLast(t == null ? null : isChi ? Float .valueOf(getQuadrupolarConstant(t)) : t.getInfo(infoType)); } @@ -440,51 +406,6 @@ return data; } - private static Tensor[] getTensorList(JmolList<Tensor> list) { - int pt = -1; - boolean haveTLS = false; - int n = list.size(); - for (int i = n; --i >= 0;) { - Tensor t = list.get(i); - if (t.forThermalEllipsoid) - pt = i; - else if (t.iType == Tensor.TYPE_TLS_U) - haveTLS = true; - } - Tensor[] a = new Tensor[(pt >= 0 || !haveTLS ? 0 : 1) + n]; - if (pt >= 0) { - a[0] = list.get(pt); - if (list.size() == 1) - return a; - } - // back-fills list for TLS: - // 0 = temp, 1 = TLS-R, 2 = TLS-U - if (haveTLS) { - pt = 0; - for (int i = n; --i >= 0;) { - Tensor t = list.get(i); - if (t.forThermalEllipsoid) - continue; - a[++pt] = t; - } - } else { - for (int i = 0; i < n; i++) - a[i] = list.get(i); - } - return a; - } - - private Tensor getAtomTensor(int i, String type) { - Tensor[] tensors = viewer.modelSet.getAtomTensorList(i); - if (tensors == null || type == null) - return null; - type = type.toLowerCase(); - for (int j = 0; j < tensors.length; j++) - if (tensors[j] != null && type.equals(tensors[j].type)) - return tensors[j]; - return null; - } - public Map<String, Float> getMinDistances(MeasurementData md) { BS bsPoints1 = (BS) md.points.get(0); int n1 = bsPoints1.cardinality(); Modified: trunk/Jmol/src/org/jmol/render/RepaintManager.java =================================================================== --- trunk/Jmol/src/org/jmol/render/RepaintManager.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/render/RepaintManager.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -26,6 +26,7 @@ import org.jmol.api.JmolRendererInterface; import org.jmol.api.JmolRepaintManager; import org.jmol.modelset.ModelSet; +import org.jmol.script.T; import org.jmol.shape.Shape; import org.jmol.util.BS; import org.jmol.util.GData; @@ -183,7 +184,7 @@ /////////// actual rendering /////////// public void render(GData gdata, ModelSet modelSet, boolean isFirstPass, int[] minMax) { - boolean logTime = viewer.global.showTiming; + boolean logTime = viewer.getBoolean(T.showtiming); try { JmolRendererInterface g3d = (JmolRendererInterface) gdata; g3d.renderBackground(null); @@ -224,7 +225,7 @@ public String renderExport(String type, GData gdata, ModelSet modelSet, String fileName) { boolean isOK; - boolean logTime = viewer.global.showTiming; + boolean logTime = viewer.getBoolean(T.showtiming); viewer.finalizeTransformParameters(); shapeManager.finalizeAtoms(null, null); shapeManager.transformAtoms(); Modified: trunk/Jmol/src/org/jmol/shapespecial/Ellipsoids.java =================================================================== --- trunk/Jmol/src/org/jmol/shapespecial/Ellipsoids.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/shapespecial/Ellipsoids.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -72,7 +72,7 @@ boolean isAll = (bsSelected == null); if (!isAll && selectedAtoms != null) bsSelected = selectedAtoms; - JmolList<Tensor> tensors = viewer.getNMRCalculation().getAllAtomTensors(typeSelected); + JmolList<Tensor> tensors = viewer.modelSet.getAllAtomTensors(typeSelected); if (tensors == null) return; Atom[] atoms = modelSet.atoms; Modified: trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2013-07-19 18:01:27 UTC (rev 18479) +++ trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2013-07-19 18:57:54 UTC (rev 18480) @@ -161,7 +161,7 @@ protected void newSg() { sg = new SurfaceGenerator(viewer, this, null, jvxlData = new JvxlData()); - sg.getParams().showTiming = viewer.global.showTiming; + sg.getParams().showTiming = viewer.getBoolean(T.showtiming); sg.setVersion("Jmol " + Viewer.getJmolVersion()); } 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