There is an apparent bug, or at least over-sensitivity in the way Jmol
reads in a state script for a small molecule which contains calculated
hydrogen bonds. I attach two scripts derived from Bob's sucrose example
("load sucrose.cif {1 1 1}; hbonds calculate;"). The first is as written out
by the signed applet with "Save script with state"; the second is identical
excepte for some white-space changes (most notably the inclusion of a blank
line within the data "connect_atoms" block).

The first loads and renders fine; the second causes the applet to crash
and the Java console shows the following error trace:

Exception in thread "QueueThread0" java.lang.ArrayIndexOutOfBoundsException: 0
        at org.jmol.modelset.ModelSet.connect(Unknown Source)
        at org.jmol.viewer.Viewer.connect(Unknown Source)
        at org.jmol.script.ScriptEvaluator.data(Unknown Source)
        at org.jmol.script.ScriptEvaluator.instructionDispatchLoop(Unknown 
Source)
        at org.jmol.script.ScriptEvaluator.runFunction(Unknown Source)
        at org.jmol.script.ScriptEvaluator.runFunction(Unknown Source)
        at org.jmol.script.ScriptEvaluator.function(Unknown Source)
        at org.jmol.script.ScriptEvaluator.instructionDispatchLoop(Unknown 
Source)
        at org.jmol.script.ScriptEvaluator.runFunction(Unknown Source)
        at org.jmol.script.ScriptEvaluator.runFunction(Unknown Source)
        at org.jmol.script.ScriptEvaluator.function(Unknown Source)
        at org.jmol.script.ScriptEvaluator.instructionDispatchLoop(Unknown 
Source)
        at org.jmol.script.ScriptEvaluator.evaluateCompiledScript(Unknown 
Source)
        at org.jmol.viewer.Viewer.evalStringWaitStatus(Unknown Source)
        at org.jmol.viewer.ScriptManager$ScriptQueueRunnable.runScript(Unknown 
Source)
        at 
org.jmol.viewer.ScriptManager$ScriptQueueRunnable.runNextScript(Unknown Source)
        at org.jmol.viewer.ScriptManager$ScriptQueueRunnable.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source

Can this be easily fixed? (The IUCr enhanced figure toolkit saves scripts
is a manner that is not guaranteed to preserve whitespace.)

The problem appears to have been present since at least Jmol 12.0.10, but is
still present in 12.1.44.

Thanks
Brian
function _setWindowState() {
  stateVersion = 1201045;
  background [x000033];
  axis1Color = "[xff0000]";
  axis2Color = "[x008000]";
  axis3Color = "[x0000ff]";
  set ambientPercent 45;
  set diffusePercent 84;
  set specular true;
  set specularPercent 22;
  set specularPower 40;
  set specularExponent 6;
  set zShadePower 1;
  statusReporting  = true;
}

function _setFileState() {

  set allowEmbeddedScripts false;
  set appendNew true;
  set appletProxy "";
  set applySymmetryToBonds false;
  set autoBond true;
  set bondRadiusMilliAngstroms 150;
  set bondTolerance 0.45;
  set defaultLattice {0.0 0.0 0.0};
  set defaultLoadFilter "";
  set defaultLoadScript "";
  set defaultStructureDssp true;
  set defaultVDW Auto;
  set forceAutoBond false;
  set legacyAutoBonding false;
  set minBondDistance 0.4;
  set minimizationCriterion  0.0010;
  set minimizationSteps  100;
  set pdbGetHeader false;
  set pdbSequential false;
  set percentVdwAtom 23;
  set smallMoleculeMaxAtoms 40000;
  set smartAromatic true;
  load 
/*file*/"http://chemapps.stolaf.edu/jmol/docs/examples-12/data/sucrose.cif"; 
/*options*/  {1 1 1};

}

function _setVariableState() {

   set defaultanglelabel "%VALUE %UNITS";
   set defaultcolorscheme "Jmol";
   set defaultdistancelabel "%VALUE %UNITS";
   set defaultdrawarrowscale 0.5;
   set defaultlattice "{0 0 0}";
   set defaultloadfilter "";
   set defaultloadscript "";
   set defaulttorsionlabel "%VALUE %UNITS";
   set defaulttranslucent 0.5;
   set defaultvdw "Auto";
  set allowembeddedscripts true;
  set allowmoveatoms false;
  set allowrotateselected false;
  set appletproxy "";
  set applysymmetrytobonds false;
  set atompicking true;
  set atomtypes "";
  set autobond true;
  set autofps false;
  set axes unitcell;
  set axesmode 2;
  set axesscale 2.0;
  set bondmodeor false;
  set bondradiusmilliangstroms 150;
  set bondtolerance 0.45;
  set cartoonbaseedges false;
  set cartoonrockets false;
  set chaincasesensitive false;
  set dataseparator "~~~";
  set defaultstructuredssp true;
  set delaymaximumms 0;
  set dipolescale 1.0;
  set disablepopupmenu false;
  set displaycellparameters true;
  set dotdensity 3;
  set dotscale 1;
  set dotsselectedonly false;
  set dotsurface true;
  set dragselected false;
  set drawhover false;
  set drawpicking false;
  set dsspcalculatehydrogenalways true;
  set dynamicmeasurements false;
  set ellipsoidarcs false;
  set ellipsoidaxes false;
  set ellipsoidaxisdiameter 0.02;
  set ellipsoidball true;
  set ellipsoiddotcount 200;
  set ellipsoiddots false;
  set ellipsoidfill false;
  set forceautobond false;
  set fractionalrelative false;
  set gestureswipefactor 1.0;
  set greyscalerendering false;
  set hbondsangleminimum 90.0;
  set hbondsbackbone false;
  set hbondsdistancemaximum 3.25;
  set hbondsrasmol true;
  set hbondssolid false;
  set helixstep 1;
  set helppath "http://chemapps.stolaf.edu/jmol/docs/index.htm";;
  set hermitelevel 0;
  set hidenameinpopup false;
  set hidenavigationpoint false;
  set highresolution false;
  set historylevel 0;
  set hoverdelay 0.5;
  set imagestate true;
  set iskiosk false;
  set isosurfacepropertysmoothing true;
  set isosurfacepropertysmoothingpower 7;
  set justifymeasurements false;
  set loadatomdatatolerance 0.01;
  set measureallmodels false;
  set measurementlabels true;
  set messagestylechime false;
  set minbonddistance 0.4;
  set minimizationcriterion 0.0010;
  set minimizationrefresh true;
  set minimizationsilent false;
  set minimizationsteps 100;
  set monitorenergy false;
  set multiplebondradiusfactor 0.0;
  set multiplebondspacing -1.0;
  set navigatesurface false;
  set navigationperiodic false;
  set navigationspeed 5.0;
  set pdbgetheader false;
  set pdbsequential false;
  set percentvdwatom 23;
  set pickingspinrate 10;
  set picklabel "";
  set pointgroupdistancetolerance 0.2;
  set pointgrouplineartolerance 8.0;
  set propertyatomnumbercolumncount 0;
  set propertyatomnumberfield 0;
  set propertycolorscheme "roygb";
  set propertydatacolumncount 0;
  set propertydatafield 0;
  set quaternionframe "p";
  set rangeselected false;
  set ribbonaspectratio 16;
  set ribbonborder false;
  set rocketbarrels false;
  set saveproteinstructurestate true;
  set selectallmodels true;
  set selecthetero true;
  set selecthydrogen true;
  set sheetsmoothing 1.0;
  set showhiddenselectionhalos false;
  set showhydrogens true;
  set showkeystrokes true;
  set showmeasurements true;
  set showmultiplebonds true;
  set shownavigationpointalways false;
  set slabbyatom false;
  set slabbymolecule false;
  set smallmoleculemaxatoms 40000;
  set smartaromatic true;
  set solventprobe false;
  set solventproberadius 1.2;
  set ssbondsbackbone false;
  set stereodegrees -5;
  set strandcountformeshribbon 7;
  set strandcountforstrands 5;
  set strutdefaultradius 0.3;
  set strutlengthmaximum 7.0;
  set strutsmultiple false;
  set strutspacing 6;
  set testflag1 false;
  set testflag2 false;
  set testflag3 false;
  set testflag4 false;
  set tracealpha true;
  set usearcball false;
  set useminimizationthread true;
  set usenumberlocalization true;
  set vectorscale 1.0;
  set vibrationscale 1.0;
  set wireframerotation false;
  set zdepth 0;
  set zoomlarge true;
  set zslab 0;

  select none;
  color label none;
  background label none;
  set labelOffset 4 4;
  set labelAlignment left;
  set labelPointer off;
  font label 13.0 SansSerif Plain;

}

function _setModelState() {
data "connect_atoms"
39      47      4096    0.0010  -1.81   hbond;
40      1       4096    0.0010  -1.924  hbond;
43      4       4096    0.0010  -2.516  hbond;
85      46      4096    0.0010  -1.924  hbond;
88      49      4096    0.0010  -2.516  hbond;
end "connect_atoms";

  select BONDS ({92:96});
  bondOrder hbond;

  measures delete;
  select *; set measures nanometers;
  font measures 15.0 SansSerif Plain;

  axes on;
  font axes 14.0 SansSerif Plain;
  axes scale 2.0;

  boundBox off;
  font boundBox 14.0 SansSerif Plain;
  boundBox off;

  unitcell on;
  font unitcell 14.0 SansSerif Plain;

  frank on;
  font frank 16.0 SansSerif Bold;
  select *;
  set fontScaling false;

}

function _setPerspectiveState() {
  set perspectiveModel 11;
  set scaleAngstromsPerInch 0.0;
  set perspectiveDepth false;
  set visualRange 5.0;
  set cameraDepth 3.0;
  boundbox corners {-1.7380257 -0.52142906 -1.4827764} {10.863301 12.111266 
9.044098} # volume = 1675.7596;
  center {4.562638 5.7949185 3.7806609};
  moveto -1.0 {0 0 1 0} 100.0 0.0 0.0 {4.562638 5.7949185 3.7806609} 9.813673 
{0.0 0.0 0.0} 0.0 0.0 0.0;
  save orientation "default";
  moveto 0.0 {0 0 1 0} 100.0 0.0 0.0 {4.562638 5.7949185 3.7806609} 9.813673 
{0.0 0.0 0.0} -23.113495 29.35601 0.0;;
  slab 100;depth 0;
  set slabRange 0.0;
  set spinX 0; set spinY 30; set spinZ 0; set spinFps 30;  set navX 0; set navY 
0; set navZ 0; set navFps 10;
}

function _setSelectionState() {
  select ({0:89});
  set hideNotSelected false;
}

function _setState() {
  initialize;
  set refreshing false;
  _setWindowState;
  _setFileState;
  _setVariableState;
  _setModelState;
  _setPerspectiveState;
  _setSelectionState;
  set refreshing true;
  set antialiasDisplay false;
  set antialiasTranslucent true;
  set antialiasImages true;
}

_setState;
function _setWindowState() {
  stateVersion = 1201045;
  background [x000033];
  axis1Color = "[xff0000]";
  axis2Color = "[x008000]";
  axis3Color = "[x0000ff]";
  set ambientPercent 45;
  set diffusePercent 84;
  set specular true;
  set specularPercent 22;
  set specularPower 40;
  set specularExponent 6;
  set zShadePower 1;
  statusReporting  = true;
}

function _setFileState() {

  set allowEmbeddedScripts false;
  set appendNew true;
  set appletProxy "";
  set applySymmetryToBonds false;
  set autoBond true;
  set bondRadiusMilliAngstroms 150;
  set bondTolerance 0.45;
  set defaultLattice {0.0 0.0 0.0};
  set defaultLoadFilter "";
  set defaultLoadScript "";
  set defaultStructureDssp true;
  set defaultVDW Auto;
  set forceAutoBond false;
  set legacyAutoBonding false;
  set minBondDistance 0.4;
  set minimizationCriterion  0.0010;
  set minimizationSteps  100;
  set pdbGetHeader false;
  set pdbSequential false;
  set percentVdwAtom 23;
  set smallMoleculeMaxAtoms 40000;
  set smartAromatic true;
  load 
/*file*/"http://chemapps.stolaf.edu/jmol/docs/examples-12/data/sucrose.cif"; 
/*options*/  {1 1 1};

}

function _setVariableState() {

   set defaultanglelabel "%VALUE %UNITS";
   set defaultcolorscheme "Jmol";
   set defaultdistancelabel "%VALUE %UNITS";
   set defaultdrawarrowscale 0.5;
   set defaultlattice "{0 0 0}";
   set defaultloadfilter "";
   set defaultloadscript "";
   set defaulttorsionlabel "%VALUE %UNITS";
   set defaulttranslucent 0.5;
   set defaultvdw "Auto";
  set allowembeddedscripts true;
  set allowmoveatoms false;
  set allowrotateselected false;
  set appletproxy "";
  set applysymmetrytobonds false;
  set atompicking true;
  set atomtypes "";
  set autobond true;
  set autofps false;
  set axes unitcell;
  set axesmode 2;
  set axesscale 2.0;
  set bondmodeor false;
  set bondradiusmilliangstroms 150;
  set bondtolerance 0.45;
  set cartoonbaseedges false;
  set cartoonrockets false;
  set chaincasesensitive false;
  set dataseparator "~~~";
  set defaultstructuredssp true;
  set delaymaximumms 0;
  set dipolescale 1.0;
  set disablepopupmenu false;
  set displaycellparameters true;
  set dotdensity 3;
  set dotscale 1;
  set dotsselectedonly false;
  set dotsurface true;
  set dragselected false;
  set drawhover false;
  set drawpicking false;
  set dsspcalculatehydrogenalways true;
  set dynamicmeasurements false;
  set ellipsoidarcs false;
  set ellipsoidaxes false;
  set ellipsoidaxisdiameter 0.02;
  set ellipsoidball true;
  set ellipsoiddotcount 200;
  set ellipsoiddots false;
  set ellipsoidfill false;
  set forceautobond false;
  set fractionalrelative false;
  set gestureswipefactor 1.0;
  set greyscalerendering false;
  set hbondsangleminimum 90.0;
  set hbondsbackbone false;
  set hbondsdistancemaximum 3.25;
  set hbondsrasmol true;
  set hbondssolid false;
  set helixstep 1;
  set helppath "http://chemapps.stolaf.edu/jmol/docs/index.htm";;
  set hermitelevel 0;
  set hidenameinpopup false;
  set hidenavigationpoint false;
  set highresolution false;
  set historylevel 0;
  set hoverdelay 0.5;
  set imagestate true;
  set iskiosk false;
  set isosurfacepropertysmoothing true;
  set isosurfacepropertysmoothingpower 7;
  set justifymeasurements false;
  set loadatomdatatolerance 0.01;
  set measureallmodels false;
  set measurementlabels true;
  set messagestylechime false;
  set minbonddistance 0.4;
  set minimizationcriterion 0.0010;
  set minimizationrefresh true;
  set minimizationsilent false;
  set minimizationsteps 100;
  set monitorenergy false;
  set multiplebondradiusfactor 0.0;
  set multiplebondspacing -1.0;
  set navigatesurface false;
  set navigationperiodic false;
  set navigationspeed 5.0;
  set pdbgetheader false;
  set pdbsequential false;
  set percentvdwatom 23;
  set pickingspinrate 10;
  set picklabel "";
  set pointgroupdistancetolerance 0.2;
  set pointgrouplineartolerance 8.0;
  set propertyatomnumbercolumncount 0;
  set propertyatomnumberfield 0;
  set propertycolorscheme "roygb";
  set propertydatacolumncount 0;
  set propertydatafield 0;
  set quaternionframe "p";
  set rangeselected false;
  set ribbonaspectratio 16;
  set ribbonborder false;
  set rocketbarrels false;
  set saveproteinstructurestate true;
  set selectallmodels true;
  set selecthetero true;
  set selecthydrogen true;
  set sheetsmoothing 1.0;
  set showhiddenselectionhalos false;
  set showhydrogens true;
  set showkeystrokes true;
  set showmeasurements true;
  set showmultiplebonds true;
  set shownavigationpointalways false;
  set slabbyatom false;
  set slabbymolecule false;
  set smallmoleculemaxatoms 40000;
  set smartaromatic true;
  set solventprobe false;
  set solventproberadius 1.2;
  set ssbondsbackbone false;
  set stereodegrees -5;
  set strandcountformeshribbon 7;
  set strandcountforstrands 5;
  set strutdefaultradius 0.3;
  set strutlengthmaximum 7.0;
  set strutsmultiple false;
  set strutspacing 6;
  set testflag1 false;
  set testflag2 false;
  set testflag3 false;
  set testflag4 false;
  set tracealpha true;
  set usearcball false;
  set useminimizationthread true;
  set usenumberlocalization true;
  set vectorscale 1.0;
  set vibrationscale 1.0;
  set wireframerotation false;
  set zdepth 0;
  set zoomlarge true;
  set zslab 0;

  select none;
  color label none;
  background label none;
  set labelOffset 4 4;
  set labelAlignment left;
  set labelPointer off;
  font label 13.0 SansSerif Plain;

}

function _setModelState() {
 
data "connect_atoms"
  39      47      4096    0.0010  -1.81   hbond;
  40      1       4096    0.0010  -1.924  hbond;
  43      4       4096 0.0010  -2.516  hbond;
  85      46      4096    0.0010  -1.924  hbond;

  88      49      4096    0.0010  -2.516  hbond;
  end "connect_atoms";
 
select BONDS ({92:96});
  bondOrder hbond;

  measures delete;
  select *; set measures nanometers;
  font measures 15.0 SansSerif Plain;

  axes on;
  font axes 14.0 SansSerif Plain;
  axes scale 2.0;

  boundBox off;
  font boundBox 14.0 SansSerif Plain;
  boundBox off;

  unitcell on;
  font unitcell 14.0 SansSerif Plain;

  frank on;
  font frank 16.0 SansSerif Bold;
  select *;
  set fontScaling false;

}

function _setPerspectiveState() {
  set perspectiveModel 11;
  set scaleAngstromsPerInch 0.0;
  set perspectiveDepth false;
  set visualRange 5.0;
  set cameraDepth 3.0;
  boundbox corners {-1.7380257 -0.52142906 -1.4827764} {10.863301 12.111266 
9.044098} # volume = 1675.7596;
  center {4.562638 5.7949185 3.7806609};
  moveto -1.0 {0 0 1 0} 100.0 0.0 0.0 {4.562638 5.7949185 3.7806609} 9.813673 
{0.0 0.0 0.0} 0.0 0.0 0.0;
  save orientation "default";
  moveto 0.0 {0 0 1 0} 100.0 0.0 0.0 {4.562638 5.7949185 3.7806609} 9.813673 
{0.0 0.0 0.0} -23.113495 29.35601 0.0;;
  slab 100;depth 0;
  set slabRange 0.0;
  set spinX 0; set spinY 30; set spinZ 0; set spinFps 30;  set navX 0; set navY 
0; set navZ 0; set navFps 10;
}

function _setSelectionState() {
  select ({0:89});
  set hideNotSelected false;
}

function _setState() {
  initialize;
  set refreshing false;
  _setWindowState;
  _setFileState;
  _setVariableState;
  _setModelState;
  _setPerspectiveState;
  _setSelectionState;
  set refreshing true;
  set antialiasDisplay false;
  set antialiasTranslucent true;
  set antialiasImages true;
}

_setState;
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to