Bob Hanson wrote:
>Jmol serialization is complete.
>
>Jmol 10.9.99 completes the serialization, adding dipoles, dots, 
>isosurfaces, lcaoCartoons, MOs, and pmesh.
>
>I leave this now in the hands of our capable testers. Please give it a 
>good workout and report any oddities. You can add serialization to your 
>page the way I did, with the following simple links:
>
><a href="javascript:jmolScript('save state')">save</a>
><a href="javascript:jmolScript('console;show state')">show</a>
><a href="javascript:jmolScript('restore state')">restore</a>
>
>or you can make it fancier by having multiple states so you can go back 
>and forth between two models:
>
><a href="javascript:jmolScript('save state A')">save A</a>
><a href="javascript:jmolScript('console;show state A')">show A</a>
><a href="javascript:jmolScript('restore state A')">restore A</a>
>
><a href="javascript:jmolScript('save state B')">save B</a>
><a href="javascript:jmolScript('console;show state B')">show B</a>
><a href="javascript:jmolScript('restore state B')">restore B</a>
>
>etc. Or, of course, the Jmol.js equivalents.
>
>What we are looking for:
>
>1) You should be able to save one state, then completely change the 
>model, and when you click on "restore" you should be back to where you 
>were when you saved the state.
>
>2) You should be able to clip the "show" script into a script file and 
>run it (from the same directory) to return to the place you left off.
>
>This should be the case regardless of what you have on the page. That 
>includes solvent surfaces, complex polyhedra/connect sequences, space 
>groups, molecular orbitals, multiple files, multiple files inline, the 
>works. (Hmm, some aspects of animations may be missing. I didn't look 
>into that.) I'm sure I missed a few flags, but my limiting testing at 
>http://www.stolaf.edu/academics/jmol/docs/examples-11/new.htm suggests 
>it actually does work for the most common situations.
>
>If there is anything whatsoever different between the two models -- 
>saved and restored -- please send me the serialization script and also a 
>comment about what it was supposed to do and what it actually did.
>
>Note again that this is not a "script history". It is a "script 
>snapshot" that characterizes the current state of the model without 
>regard to its history. It is a true serialization of the objects and 
>settings that characterize the model.
>
>Thank you all for testing this. I'm REALLY taking a break now! Let's 
>choose a date now for 11.0, and I will stay out of it except for bug fixes.
>
>  

I wanted to wait until 10.9.99 is available before I send my comments on
the serialization, to see wether there are differences between 10.9.98
and 19.9.99 (besides those mentioned). But since the Jmol pages at
St.Olaf are not available now since two days and 10.9.99 is not
officially released yet I will rather do it now.

So far I could not detect any differences with our Jmol interface after
executing the state in a different interface (applet with the same size
or much larger). It really worked great!!! And also quite fast!

However, if I tried very large PDB files, e.g. 1ZYY (~275000 Atoms, 20
models) or 1HTQ (~980000 Atoms, 10 models) I got several times these
error messages in the java console and the state stopped after (or in
the middle) of the user-defined sets (SuSE 9.3 with Firefox 1.5.0.7 and
Java 1.4.2_11, example URL
"http://www.fli-leibniz.de/cgi-bin/3d_mapping.pl?CODE=1zyy&JMOLVERSION=10.9.98";,
will most probably need more RAM for the JavaVM than default; usually I
use 256MB, for 1HTQ I even needed more than 512MB):


javax.swing.text.StateInvariantError: infinite loop in formatting
    at javax.swing.text.FlowView$FlowStrategy.layout(FlowView.java:414)
    at javax.swing.text.FlowView.layout(FlowView.java:182)
    at javax.swing.text.BoxView.setSize(BoxView.java:379)
    at javax.swing.text.BoxView.updateChildSizes(BoxView.java:348)
    at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:330)
    at javax.swing.text.BoxView.layout(BoxView.java:682)
    at javax.swing.text.BoxView.setSize(BoxView.java:379)
    at
javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1599)
    at
javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:801)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1275)
    at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1212)
    at
javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
    at java.awt.Container.layout(Container.java:1020)
    at java.awt.Container.doLayout(Container.java:1010)
    at java.awt.Container.validateTree(Container.java:1092)
    at java.awt.Container.validate(Container.java:1067)
    at
javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:353)
    at
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:116)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:189)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:478)
    at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
javax.swing.text.StateInvariantError: infinite loop in formatting
    at javax.swing.text.FlowView$FlowStrategy.layout(FlowView.java:414)
    at javax.swing.text.FlowView.layout(FlowView.java:182)
    at javax.swing.text.BoxView.setSize(BoxView.java:379)
    at javax.swing.text.BoxView.updateChildSizes(BoxView.java:348)
    at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:316)
    at javax.swing.text.BoxView.layout(BoxView.java:683)
    at javax.swing.text.BoxView.setSize(BoxView.java:379)
    at
javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1599)
    at javax.swing.plaf.basic.BasicTextUI.modelToView(BasicTextUI.java:935)
    at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1049)
    at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1028)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:189)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:478)
    at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)


To be able to save/restore the complete state information not only for
the applet but also for the interface controlling the applet, it would
be necessary to submit this information to Jmol. One step in this
direction are the user-definable flags, but since they can only be set
to true or false (as far as I understood), they are not sufficient to
save the state of a pulldown menu or some other internal interface
settings.

Something similar to user-defined atom sets for arbitrary strings,
connected to a specific name, would be sufficient. Jmol would just need
to include these into the state information and otherwise ignore them.
Since the state information can get quite large (70kb in one example I
checked) it would be nice to be able to query those flags/variables also
with a separate command or something like 'show state variables'.

Regards,
Rolf

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers

Reply via email to