Revision: 18277
http://sourceforge.net/p/jmol/code/18277
Author: hansonr
Date: 2013-06-03 02:09:09 +0000 (Mon, 03 Jun 2013)
Log Message:
-----------
___JmolVersion="13.1.16_dev_2013.06.01"
Modified Paths:
--------------
trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java
trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java
trunk/Jmol/src/org/jmol/viewer/StateManager.java
Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java
2013-06-02 19:32:41 UTC (rev 18276)
+++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java
2013-06-03 02:09:09 UTC (rev 18277)
@@ -37,7 +37,7 @@
import org.jmol.api.PymolAtomReader;
import org.jmol.constant.EnumStructure;
import org.jmol.script.T;
-import org.jmol.util.BoxInfo; //import org.jmol.util.Escape;
+import org.jmol.util.BoxInfo;
import org.jmol.util.BS;
import org.jmol.util.BSUtil;
import org.jmol.util.C;
@@ -45,7 +45,6 @@
import org.jmol.util.Logger;
import org.jmol.util.P3;
import org.jmol.util.TextFormat;
-import org.jmol.viewer.JC;
/**
* PyMOL PSE (binary Python session) file reader.
@@ -365,14 +364,14 @@
}
for (int i = 1; i < n; i++)
processObject(listAt(names, i), false, 0);
- pymolScene.setObjectInfo(null, 0, null, false, null, null);
+ pymolScene.setObjectInfo(null, 0, null, false, null, null, null);
// not currently generating selections
//processSelections();
// meshes are special objects that depend upon grid map data
if (mapObjects != null && allowSurface)
- processMeshes();
+ processMeshes();
// trajectories are not supported yet
if (isTrajectory) {
@@ -531,7 +530,7 @@
if (haveFrames && !haveCommands && !haveViews) {
// simple animation
isMovie = true;
- pymolScene.setObjectInfo(null, 0, null, false, null, null);
+ pymolScene.setObjectInfo(null, 0, null, false, null, null, null);
pymolScene.setFrameObject(T.movie, movie);
} else {
//isMovie = true; for now, no scripted movies
@@ -562,8 +561,8 @@
}
/**
- * The main object processor.
- * Not implemented: ALIGNMENT, CALLBACK, SLICE, SURFACE
+ * The main object processor. Not implemented: ALIGNMENT, CALLBACK, SLICE,
+ * SURFACE
*
* @param execObject
* @param moleculeOnly
@@ -580,8 +579,17 @@
if ((type == PyMOL.OBJECT_MOLECULE) != moleculeOnly ||
!checkObject(execObject))
return;
JmolList<Object> pymolObject = listAt(execObject, 5);
- if (iState > 0 && (type != PyMOL.OBJECT_MOLECULE ||
!moleculeHasState(iState, pymolObject)))
+ JmolList<Object> stateSettings = null;
+ if (type == PyMOL.OBJECT_MOLECULE) {
+ JmolList<Object> states = listAt(pymolObject, 4);
+ JmolList<Object> state = listAt(states, iState);
+ JmolList<Object> idxToAtm = listAt(state, 3);
+ if (iState > 0 && (idxToAtm == null || idxToAtm.size() == 0))
return;
+ stateSettings = listAt(state, 7);
+ } else if (iState > 0) {
+ return;
+ }
Logger.info("PyMOL model " + (nModels) + " Object " + objectName
+ (isHidden ? " (hidden)" : " (visible)"));
@@ -590,7 +598,7 @@
execObject, 6));
if (" ".equals(parentGroupName))
parentGroupName = null;
- pymolScene.setObjectInfo(objectName, type, parentGroupName, isHidden,
listAt(objectHeader, 8), (moleculeOnly ? "_" + (iState + 1) : ""));
+ pymolScene.setObjectInfo(objectName, type, parentGroupName, isHidden,
listAt(objectHeader, 8), stateSettings, (moleculeOnly ? "_" + (iState + 1) :
""));
BS bsAtoms = null;
boolean doExclude = (bsBytesExcluded != null);
String msg = null;
@@ -660,13 +668,6 @@
Logger.error("Unprocessed object type " + msg + " " + objectName);
}
- private boolean moleculeHasState(int iState, JmolList<Object> pymolObject) {
- JmolList<Object> states = listAt(pymolObject, 4);
- JmolList<Object> state = listAt(states, iState);
- JmolList<Object> idxToAtm = listAt(state, 3);
- return (idxToAtm != null && idxToAtm.size() > 0);
- }
-
/**
* Create a CGO JmolObject, just passing on key information.
*
@@ -678,10 +679,8 @@
if (isHidden)
return;
JmolList<Object> data = listAt(listAt(pymolObject, 2), 0);
- data.addLast(objectName);
- JmolObject jo = addJmolObject(JC.SHAPE_CGO, null, data);
- jo.argb = PyMOL.getRGB(intAt(listAt(pymolObject, 0), 2));
- jo.translucency = pymolScene.floatSetting(PyMOL.cgo_transparency);
+ int color = PyMOL.getRGB(intAt(listAt(pymolObject, 0), 2));
+ pymolScene.addCGO(data, color);
appendLoadNote("CGO " + PyMOLScene.fixName(objectName));
}
Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java
2013-06-02 19:32:41 UTC (rev 18276)
+++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java
2013-06-03 02:09:09 UTC (rev 18277)
@@ -63,6 +63,7 @@
colixes = null;
atomColorList = null;
objectSettings = null;
+ stateSettings = null;
if (!isAll)
return;
groups = null;
@@ -74,6 +75,7 @@
htObjectGroups = null;
htObjectAtoms = null;
htObjectSettings = null;
+ htStateSettings = null;
objectInfo = null;
settings = null;
uniqueSettings = null;
@@ -97,6 +99,8 @@
private Map<String, Map<Integer, JmolList<Object>>> htObjectSettings = new
Hashtable<String, Map<Integer, JmolList<Object>>>();
private Map<String, Object[]> objectInfo = new Hashtable<String, Object[]>();
private JmolList<Object> settings;
+ private Map<String, Map<Integer, JmolList<Object>>> htStateSettings = new
Hashtable<String, Map<Integer, JmolList<Object>>>();
+ private Map<Integer, JmolList<Object>> stateSettings;
private Map<Integer, JmolList<Object>> uniqueSettings;
private int bgRgb;
@@ -161,14 +165,15 @@
0, labelPosition0);
}
- @SuppressWarnings("unchecked")
void setObjectInfo(String name, int type, String groupName, boolean isHidden,
- JmolList<Object> list, String ext) {
+ JmolList<Object> listObjSettings,
+ JmolList<Object> listStateSettings, String ext) {
objectName = name;
objectHidden = isHidden;
objectNameID = (objectName == null ? null : PyMOLScene.fixName(objectName
+ ext));
objectSettings = new Hashtable<Integer, JmolList<Object>>();
+ stateSettings = new Hashtable<Integer, JmolList<Object>>();
if (objectName != null) {
objectSelectionName = getSelectionName(name);
if (groupName != null) {
@@ -177,19 +182,31 @@
}
objectInfo.put(objectName, new Object[] { objectNameID,
Integer.valueOf(type) });
- htObjectSettings.put(objectName, objectSettings);
- if (list != null && list.size() != 0) {
- if (Logger.debugging)
- Logger.info(objectName + " local settings: " + list.toString());
- for (int i = list.size(); --i >= 0;) {
- JmolList<Object> setting = (JmolList<Object>) list.get(i);
- objectSettings.put((Integer) setting.get(0), setting);
- }
+ if (htObjectSettings.get(objectName) == null) {
+ listToSettings(listObjSettings, objectSettings);
+ htObjectSettings.put(objectName, objectSettings);
}
+ if (htStateSettings.get(objectNameID) == null) {
+ listToSettings(listStateSettings, stateSettings);
+ htStateSettings.put(objectNameID, stateSettings);
+ }
}
getObjectSettings();
}
+ @SuppressWarnings("unchecked")
+ private static void listToSettings(JmolList<Object> list,
+ Map<Integer, JmolList<Object>> objectSettings) {
+ if (list != null && list.size() != 0) {
+// if (Logger.debugging)
+// Logger.info(objectName + " local settings: " + list.toString());
+ for (int i = list.size(); --i >= 0;) {
+ JmolList<Object> setting = (JmolList<Object>) list.get(i);
+ objectSettings.put((Integer) setting.get(0), setting);
+ }
+ }
+ }
+
private void getObjectSettings() {
nonBondedSize = floatSetting(PyMOL.nonbonded_size);
sphereScale = floatSetting(PyMOL.sphere_scale);
@@ -442,6 +459,7 @@
String groupName = htObjectGroups.get(objectName);
objectHidden = (htHiddenObjects.containsKey(name) || groupName != null
&& !groups.get(groupName).visible);
+ stateSettings = htStateSettings.get(objectName+"_" + istate);
getObjectSettings();
}
@@ -454,6 +472,7 @@
// for (int m = moleculeNames.size(); --m >= 0;) {
for (int m = 0; m < moleculeNames.size(); m++) {
setObject(moleculeNames.get(m), istate);
+ getObjectSettings();
if (objectHidden)
continue;
BS[] molReps = new BS[PyMOL.REP_JMOL_MAX];
@@ -786,34 +805,36 @@
return (floatSetting(i) != 0);
}
- @SuppressWarnings("unchecked")
float floatSetting(int i) {
try {
- JmolList<Object> setting = null;
- if (objectSettings != null)
- setting = objectSettings.get(Integer.valueOf(i));
- if (setting == null)
- setting = (JmolList<Object>) settings.get(i);
+ JmolList<Object> setting = getSetting(i);
return ((Number) setting.get(2)).floatValue();
} catch (Exception e) {
return PyMOL.getDefaultSetting(i, pymolVersion);
}
}
- @SuppressWarnings("unchecked")
String stringSetting(int i) {
try {
- JmolList<Object> setting = null;
- if (objectSettings != null)
- setting = objectSettings.get(Integer.valueOf(i));
- if (setting == null)
- setting = (JmolList<Object>) settings.get(i);
+ JmolList<Object> setting = getSetting(i);
return setting.get(2).toString();
} catch (Exception e) {
return null;
}
}
+ @SuppressWarnings("unchecked")
+ private JmolList<Object> getSetting(int i) {
+ JmolList<Object> setting = null;
+ if (stateSettings != null)
+ setting = stateSettings.get(Integer.valueOf(i));
+ if (setting == null && objectSettings != null)
+ setting = objectSettings.get(Integer.valueOf(i));
+ if (setting == null)
+ setting = (JmolList<Object>) settings.get(i);
+ return setting;
+ }
+
static P3 pointAt(JmolList<Object> list, int i, P3 pt) {
pt.set(floatAt(list, i++), floatAt(list, i++), floatAt(list, i));
return pt;
@@ -847,6 +868,13 @@
return labelPos;
}
+ void addCGO(JmolList<Object> data, int color) {
+ data.addLast(objectName);
+ JmolObject jo = addJmolObject(JC.SHAPE_CGO, null, data);
+ jo.argb = color;
+ jo.translucency = floatSetting(PyMOL.cgo_transparency);
+ }
+
boolean addMeasurements(MeasurementData[] mdList, int nCoord,
JmolList<Object> list, BS bsReps, int color,
JmolList<Object> offsets, boolean haveLabels) {
Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/StateManager.java 2013-06-02 19:32:41 UTC
(rev 18276)
+++ trunk/Jmol/src/org/jmol/viewer/StateManager.java 2013-06-03 02:09:09 UTC
(rev 18277)
@@ -430,7 +430,7 @@
}
public String getMoveToText(boolean asCommand) {
- return (asCommand ? " " + moveToText + "\n save orientation "
+ return (asCommand ? " " + moveToText + "\n save orientation "
+ Escape.eS(saveName.substring(12)) + ";\n" : moveToText);
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Jmol-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-commits