1# NOTE: This is not the development trunk. It is the release branch.
2# NOTE: Generally only bug fixes should be entered here.
3# NOTE: New features should be introduced in the trunk version 11.9.x
4
5version=11.8.18
6
7# bug fix: (not really) -- " " character in VRML export added to accomodate AutoDesk 3D MAX import read bug
8# bug fix: drawHover status not reported properly after zap/new model loaded
9# code: model properties atomCount, bondCount should be private
10# bug fix: bitsets not properly handled in model deletion
11# bug fix: bfactor min/max was ignoring first atom
12# bug fix: within molecule was using undocumented "visible"
13# bug fix: frame *;draw {atomno=1} {atomno=5} not working properly
14# bug fix: pdb reader as trajectory error
15# bug fix: MO export to cartesian exporters (VRML/X3D/Maya) should not do front-only
16# bug fix: APBS reader could hang on empty line
17# bug fix: message this is a @{test} fails
18# bug fix: CCP4/MRC and XPLOR map file reader fix/upgrade
19
20# -----------------------------------------------------------------------------
21
22#version=11.8.17
23
24# bug fix: revertings changes to cancelRendering
25# bug fix: applet cannot load inline
26
27# -----------------------------------------------------------------------------
28
29#version=11.8.16
30
31# bug fix: connected(0, {carbon}) not working
32# bug fix: obscure compiler PDB bug for polyhedra, structure, frame commmands
33#            utilizing user-defined functions of the form @{xxx({n})}
34# bug fix: polyhedra colors not deleted when polyhedra deleted
35# bug fix: polyhedra can be lost if only a subset are colored
36# bug fix: write to clipboard not working
37# bug fix: label %i not working
38# bug fix: select within(0.3, hkl, {1 2 3}) requires quotes: "hkl"
39
40# -----------------------------------------------------------------------------
41
42#version=11.8.15
43
44# bug fix: PDB cryst1 record for NMR files not ignored
45# bug fix: symop in biomolecule context not recsognized by label "%[symmetry]"
46# bug fix: "label %"  can cause Java exception
47# bug fix: older format %{...} not recognized by script compiler
48# bug fix: long scripts in setEcho being chopped when saved in state
49# bug fix: "color background xxxx" clears background image as well
50# bug fix: labels given text after containing an image have incorrect y-displacement
51# bug fix: transparent pixels in images not respected
52
53# -----------------------------------------------------------------------------
54
55#version=11.8.14
56
57# bug fix: _width and _height lost after initialize
58# bug fix: Jmol 11.8.10-11.8.13 will not read state orientation correctly
59
60# -----------------------------------------------------------------------------
61
62#version=11.8.13
63
64# bug fix: font axes not functional
65# bug fix: FILTER "biomolecule ..." option broken in LOAD command.
66# bug fix: {xxx}.xxx = syntax immediately following "for ( ) {...}" causes compilation error
67# bug fix: draw: when only some models are visible, does not properly assign models to drawn object
68# code: draw: dmesh.modelFlags not properly implemented (reset in setModelVisibility)
69# bug fix: zoomTo out not functioning
70
71# -----------------------------------------------------------------------------
72
73#version=11.8.12
74
75# bug fix: zoom/zoomTo does not refresh transform parameters
76# bug fix: dot product miscalculation
77# bug fix: NWChem reader not reading files with lower-case-only atom names
78# bug fix: code - viewer.getDisplayModelIndex() not used properly when background model is present
79# bug fix: rear mesh lines not visible on isosurface when surface also drawn
80# bug fix: Export uses incorrect width/height parameters when size is not window size
81
82# -----------------------------------------------------------------------------
83
84#version=11.8.11
85
86# bug fix: select *.CD not accepted.
87# bug fix: navigation key release causing unnecessary refresh
88# bug fix: console command recall (up arrow) does not always return full command line
89# bug fix: zShade/navigation mode incompatibility
90# bug fix: navigate TRACE broken in 11.7.47
91# bug fix: zshade not resetting properly; now reset off with reset() or load of model
92# bug fix: occasional null pointer error during ZAP due to continued rendering by
93#          previous graphic painting thread
94# code: JmolFrameExportJmolAdapter abandoned -- hasn't been implemented since 11.0
95
96# -----------------------------------------------------------------------------
97
98#version=11.8.10
99
100# bug fix: MSIE mouse-wheel malfunction due to Jmol not consuming the wheel motion
101# bug fix: isosurface xxx lcaocartoon ... does not always honor xxx as isosurface name
102# bug fix: Hall name translator can incorrectly assign matrix for F m -3 m group
103# bug fix: Gaussian '09 reader not reading "  Atom   AN" properly in frequency lists
104# bug fix: zoom/rotateXY modes not properly isolated
105# bug fix: moveto with {0 0 0 0} uses instead {0 0 1 0}
106# bug fix: zoomto fights with user over orientation
107# bug fix: AIMS files with empty lines preceding keyword lines are now recognized
108# bug fix: AIMS reader not reading multipole lines describing monopoles
109# bug fix: CASTEP and AIMS readers now properly load unit cells using cell vectors
110#   which are not suitably aligned with the coordinate axes of the reference coordinate system
111# bug fix: CASTEP reader not understanding unit specifier in .cell files
112
113# -----------------------------------------------------------------------------
114
115#version=11.8.9
116
117# bug fix: strand count assignment error in cif/pdb readers causes failure to load 3ovo.cif
118# bug fix: labels offset using set picking select label not saved in state properly;
119#          added "set labelOffsetExact"
120# bug fix: set picking select label shifting label causes jump and not saved in state reproducibly
121# bug fix: set toggleLabel inappropriately resets label to default setting
122# bug fix: moveto QUATERNION (undocumented for 11.8) not distinguishing between
123#          orientation quaternions and molecular quaternions
124#          -- MOLECULAR keyword added
125# bug fix: setting perspective model stops animation in state script
126# bug fix: GAMESS reader not reading all vibrational frequencies
127
128# -----------------------------------------------------------------------------
129
130#version=11.8.8
131
132# bug fix: GAMESS reader not reading BETA MOs.
133# bug fix: A function starting with "_" originally was considered
134#          local to the applet, with all other functions being static.
135#          Then, in 11.7.45, this was switched. Unfortunately,
136#          that meant state functions _set... were static
137#          causing applet-applet interference.
138#          So for this fix I've changed that to be "static_..." for
139#          expressly static functions, and then also designated
140#          "_...." functions as not generally declared when writing
141#          a state or in "show functions" so that a state does not
142#          duplicate itself, and "show functions" works as before.
143# bug fix: jmol -ionxs with a script that includes measurement tries to update a nonexistant measurementTable
144# bug fix: select xxx when xxx is an array fails to do lookup of defined values
145# bug fix: legacy code: Bond.getBondModelIndex returning atomIndex instead
146# bug fix:  water:  +", (oxygen & connected(2) & connected(2, hydrogen or deuterium or tritium), (hydrogen or deuterium or tritium) & connected(oxygen & connected(2) & connected(2, hydrogen or deuterium or tritium)))",
147# bug fix: data3d_ not working for saving state after functionXYZ
148# bug fix: isosurface does not clear data after functionXY or functionXYZ
149# bug fix: label %vx giving x coord, not vibration x component
150# bug fix: write VAR for string array does not work.
151# bug fix: GAMESS reader vibrations use wrong atom coordinates
152# bug fix: PQR reader not adaptive
153# bug fix: zshade now working correctly (almost -- see 11.8.11)
154# bug fix: setting spacefill to a large user-defined VDW radius incorrect
155# bug fix: Gaussian 09 LOG file reader upgrade for MOs
156# bug fix: unitcell offset {1 1 1}; select UNITCELL
157
158# -----------------------------------------------------------------------------
159
160#version=11.8.7
161
162# bug fix: incorrect reference to jmolStatusListener for sync callback in StateManager
163# bug fix: file drop needs zap prior to load for cleaner operation
164# bug fix: Hall symbol translation generates incorrect Jones-Faithful operation (missing translation)
165#  (broken by 11.8.4 9/5/2009) -- Thank you, Sarah Mattler, WUSTL!
166
167# -----------------------------------------------------------------------------
168
169#version=11.8.6
170
171# bug fix: context menu View... broken when boundbox or unitcell are on
172# bug fix: syncScript broken
173# bug fix: load trajectory not working properly
174# bug fix: animation/spin incompatibility problem
175# bug fix: initialize does not reset antialiasDisplay or set animation off
176# bug fix: getProperty("menu") does not work until a menu has been called up by user
177# bug fix: menu item for style does not respect bondMode
178# bug fix: lcaocartoon not working
179
180# -----------------------------------------------------------------------------
181
182#version=11.8.5
183
184# bug fix: select *.? not working properly
185# bug fix: isosurface not retrieving exact reference for jvxl files in state
186# bug fix: (potential) draw symop could have incorrect glide
187
188# -----------------------------------------------------------------------------
189
190#version=11.8.4
191
192# bug fix: "zapped" file does not clear menu
193# bug fix: x = {255,0,0}; select color=x; #did not work
194# bug fix: symop() -- can now be used without "all."
195# bug fix: isosurface reading of contoured JVXL files defaults to "nomesh nofill"
196
197# -----------------------------------------------------------------------------
198
199#version=11.8.3
200
201# bug fix: file save from menu does not pull up dialog
202# bug fix: aims/castep readers
203# bug fix: "initialize" should not reset defaultDiretory
204# bug fix: compiler error for {xxx}.yy = n \n {xxx}.yy = n
205# bug fix: compiler error for literal -0 or -0.0
206# bug fix: show pointgroup can give wrong format after getproperty PointGroupInfo
207# bug fix: mmCIF misreads bfactor data
208# bug fix: load append of file with ellipsoids causes array out of bounds exception
209# bug fix: show spacegroup can cause null exception
210# bug fix: animation direction -1 not functional
211# bug fix: script lines 1-3 not functional
212
213# -----------------------------------------------------------------------------
214
215#version=11.8.2
216
217# bug fix: 2D mesh property not cleared
218# bug fix: popupMenu disabling nonfunctional
219# bug fix: acos, to be consistent, needs to deliver degrees, not radians
220# bug fix  for MOReaders * NBO: --- note, "-" can be in column with " " causing tokenization failure
221
222# -----------------------------------------------------------------------------
223
224#version=11.8.1
225
226# bug fix: grp.property_x = n   can change definition of grp
227# code: refactoring of Measure/Graphics3D
228# bug fix: q1.dot(q2)
229# new feature: CASTEP (http://www.castep.org/) and AIMS readers
230# new feature: popup menu gives Symmetry operation display option
231# new features for the 238th American Chemical Society National Meeting, Washington, D.C., Aug. 19, 2009
232# new feature: draw ID xxx SYMOP [n or "-x,y,z"] [optional {atom or position}]
233#   draws symmetry operation for spacegroup
234#   see http://chemapps.stolaf.edu/jmol/docs/examples-11/showsym.htm
235# new feature: pt = all.symop(3, {atomno=3})
236# new feature: sdrawCommands = all.symop(3, {atomno=3},"draw_id")
237#
238# new feature: ho, ho, this is fun. Wouldn't it be nice to just drag a JPG into
239#   Jmol and have it come alive?
240# write IMAGE t.jpg
241# load t.jpg (Or just drag it into the Jmol window from a file directory.
242# The IMAGE option instructs Jmol to add its state to the JPG image, so when it is
243# dragged in, Jmol recognizes that and loads the state. Very cool.
244#
245# also with PNG images; to not do this, use
246#
247#  set imagestate false
248#
249
250# bug fix: polyhedra saving in state
251# bug fix: function call as statement with expression argument fails:
252#
253#  testing({atomno=3})
254#
255# bug fix: isosurface map property can create holes in isosurface
256# code: dissociation of applet console from jvm12
257
258# bug fix: Various Examples fixes
259# bug fix: defaultDirectory should not be part of the state
260# new feature: select structureID="xxx"  selects structures by alphanumeric id such as "S1" or "H3"
261# bug fix: show structure not properly showing structure indices, IDs, or strand counts for PDB or CIF files
262# code: Jmol embedded in applications can use Jmol menu and Jmol console directly (needs testing)
263# code: PdfCreator incorporated into ImageCreator and outputs antialiased image
264
265# -----------------------------------------------------------------------------
266
267#version=11.8.RC5
268
269# new feature: Jmol embedded in applications can use WRITE command to create all types of images and exports
270# new feature: VERY COMPACT IDTF export (for U3D conversion; all except background color)
271#   * after
272#   *
273#   * write t.idtf
274#   *
275#   * using IDTFConverter.exe, on Windows one can turn these files into VERY COMPACT U3D files.
276#   *
277#   * IDTFConverter.exe -input t.idtf -output t.u3d
278#   *
279#   * see http://sourceforge.net/projects/u3d/
280#   * see http://en.wikipedia.org/wiki/Universal_3D
281#   * see http://www.ecma-international.org/publications/standards/Ecma-363.htm
282#   * in the downloadable zip file, see docs/IntermediateFormat/IDTF Format Description.pdf
283#
284# bug fix: (application) delaying saveChooser load makes startup MUCH faster when loading a file
285# bug fix: gaussian reader may fail to read MOs from Gaussian 03:  AM64L-G03RevC.01  3-Apr-2004
286
287# -----------------------------------------------------------------------------
288
289#version=11.8.RC4
290
291# from the 2009 GORDON RESEARCH CONFERENCE ON EDUCATION:
292# bug fix: DRAW point size 6 pixels (an even number) sets it just one pixel off center -- 7 is better.
293# new feature (TODO): 4D extension (that's right -- FOUR dimensions)
294# new feature: set picking Label now allows label offset by holding SHIFT down while dragging atom
295# new feature: lone pairs and radicals -- extension of lcaoCartoon:
296#
297# select oxygen; lcaocartoon lonePair "sp2a"
298# select oxygen; lcaocartoon radical "sp3"
299#
300# new feature: print getProperty("FileInfo","REMARK300") //was PdbInfo
301# new feature: print getProperty("FileInfo","models",1,"_citation_year");
302
303# TODO: load 1crn.pdb;quaternion;quaternion diff;zap 2.1 -- leaves blank model 2.1 and destroys state
304# TODO: what to do about deleting models prior to current -- why statescript removed?
305# bug fix: zap x.y when have measures to draw objects causes exception
306# bug fix: isosurface mapping with property where property can be NaN does not render some regions
307# bug fix: lcaoCartoon wildcard problems
308# bug fix: undocumented rotate[selected] {pt1} {pt2} ... has pt1/pt2 backward. Should be such that:
309#
310#     rotate x 10
311#
312#   is the same as
313#
314#     rotate {0 0 0} {1 0 0} 10
315#
316# new feature: set quaternionFrame "a"  -- alpha-carbon-ONLY straightness. see 1JGQ
317# bug fix: compiler error when integer typed instead of command
318# bug fix: state for lcaocartoon broken
319# bug fix: set picking spin for draw objects broken in 11.8.RC1
320# new feature: set helixStep 0 -- relates a quaternion to the standard reference frame
321# bug fix: DRAW CIRCLE size may not be correct when restored from state
322# new feature: write "xxx.X3D"
323# new feature: [x,y,z].sum2 or {xx}.someProperty.sum2 -- sum of squares
324# new feature: VRML export nearly full support
325#  -- includes draw, ellipsoids, dots, isosurface, cartoons, stars, halos,
326#     polyhedra, vectors, dipoles, etc.
327#  -- no background labels
328#  -- labels are not exactly the right size
329#  -- no background image
330#  -- no ellipsoid quadrant cutouts
331#  -- slightly irregular trace when very small diameter
332
333# code: simplified export interfaces
334
335# -----------------------------------------------------------------------------
336
337# version=11.8.RC3
338
339# code: more efficient VRML export
340# new feature: set helixStep 1,2,3,...  sets step for quaternion-based analysis of structure -- see 1C4D
341# bug fix: 1C4D has [FOR] -- not accepted
342# bug fix: color isosurface red translucent prior to isosurface command causes null pointer exception
343# new feature: isosurface select(....) SET n
344#  where n is an integer 1,2,3... that selects which set is to be displayed and
345#  counted for area or volume
346# bug fix: spacegroup reading when center of molecule is not in unit cell can cause bonding errors
347# new feature: isosurface area for subsets -- use
348# isosurface area select(oxygen) sasurface colorscheme sets
349# bug fix: draw OFF in state script is not selective
350
351# -----------------------------------------------------------------------------
352
353# version=11.8.RC2
354
355# bug fix: mouse-picked measurements broken in 11.8.RC1
356
357# -----------------------------------------------------------------------------
358
359# version=11.8.RC1
360
361# bug fix: measurements defined using points not restricting to models
362#  -- note, bug fixes in .RCx versions will not be fixed in 11.6
363
364# -----------------------------------------------------------------------------
365
366# version=11.7.47
367
368# new feature: set quaternionFrame "RC" or "RP" -- ramachandran-derived straightness
369# new feature: array1.add("sep", array2) adds a new column of values separated by sep, for example:
370#   set quaternionFrame "P";ap = {*.ca}.straightness;
371#   set quaternionFrame "C";ac = {*.ca}.straightness;
372#   print {*.ca}.label("%n\t%R").add("\t",ap).add("\t",ac);
373#
374# bug fix: VRML balls missing; VRML/POVRAY error on partial surfaces
375# new feature: NAVIGATION STOP -- sets navX, navY, navZ to 0
376# new feature: navX, navY, navZ, navFPS all settable
377# new feature: NAVIGATION ON/OFF now does continuous motion with arrow keys
378#   SPACE to stop
379#   LEFT/RIGHT to pan left or right
380#   UP/DN to move forward/back
381#   ALT UP/DN to pitch up/down
382#   CNTL UP/DN to increase/decrease speed in larger amounts
383
384# code: more efficient labelGroup calculatiion
385# bug fix: navigationmode not properly adapting with window resize or antialiasdisplay
386# new feature: draw HELIX AXIS or quaternion HELIX AXIS, also for DNA/RNA
387# code: cleaned up navigation business; an attempt at navigating a surface...Maybe not...
388# new feature: GROMACS reader
389# bug fix: arrays passed to functions by reference do not update if size is increased
390# new feature: by passing an array to a function, you can make that variable
391#              return a value -- any value, not just an array:
392# function test(a) {
393#  a = "new value"
394# }
395# b = []
396# test(b)
397# print b     ==> "new value"
398#
399# bug fix: spacegroup "-- [--]" displayed when load command option SPACEGROUP is used
400# bug fix: mol2 reader not properly allowing override of CRYSIN unit cell record
401# bug fix: %r not correct label
402# bug fix: quaternionFrame default now "p"
403# bug fix: quaternion difference off by one group
404# bug fix: show FUNCTIONS not working
405# bug fix: draw picking in multimodel context causes null pointer exception
406# new feature: within("HELIX"), within("SHEET") -- helix and sheet, but not ends
407# new feature: all.bin(f0, f1, df) -- binning of data to give an integer array of counts
408#     for example: print {*}.straightness.all.bin(0, 1, 0.05)
409# bug fix: WRITE MO does not work when no current MO is present
410# new feature: draw ARC {center} {plane}
411# new feature: draw ARC {center} {axisPoint}
412# new feature: draw CIRCLE {center} {plane}
413# new feature: draw CIRCLE {center} {axisPoint}
414# new feature: draw SCALE works with CIRCLE
415# bug fix: draw ARC was using radius, not diameter, for scale
416# bug fix: draw RAMACHANDRAN angle arrow radii too small
417
418# bug fix: quaternion difference draw not quite correct on axis position
419# bug fix: 11.7.43 broke restoration of state having multimodel draw
420
421# -----------------------------------------------------------------------------
422
423#version=11.7.46
424
425# bug fix: select model=1 does not work (since 11.6.RC17!)
426# new application: JmolData.jar
427# This application completely disallows any display -- it is totally formless
428# There are no Java Swing JFrames involved, no dialogs, no popup menus,
429# no display, no shapes, no labels, no echos -- just the model data.
430#
431# bug fix: command-line jmol scripts not exiting jmol upon an error condition
432# argh. FOR broken in 11.7.45
433# new feature: helix(resno or {atomExpression},type)
434#   given x = C-alpha, C-carbonyl, or N (depending upon set quaternionFrame)
435#   where type =
436#   "point" -- nearest point to x on local helix axis
437#   "axis" -- quaternion derivative vector normal indicating local helix axis
438#   "angle" -- rotation around local heix axis for resno i --> i+1
439#   "radius" -- vector normal from local helix point to x
440#   "draw" -- draw command for the local helix vector
441# note that the axis length is the rise, radius length is the radius,
442# and 360 / angle is the pitch of the helix
443#
444# bugfix: gamess readers crashing if keywords missing from basis options or control options
445# code: findNearestAtomPicked added to JmolViewer
446# new feature: VRML exporter displays ribbons and cartoons by automatically setting
447#              hermiteLevel 1 if necessary.
448# new feature: VRML exporter recognizes color and normals for isosurface
449
450# -----------------------------------------------------------------------------
451
452#version=11.7.45
453
454# bug fix: load trajectory XXX.cif not applying fractional coordinates.
455# bug fix: load trajectory {0 -1 1} not loading any models if first model has 0 atoms
456#          (as in certain cif files)
457# bug fix: dipole offsetside not working for molecular dipole (EVER!)
458#
459# code: refactored scriptEvaluator and Jmol.java. Now it is much simpler
460# to create a truly "headless" Jmol application, where Jmol is being
461# used for the investigation of the structure instead of visualization.
462#
463# script editor behaving properly except for a nasty SWING bug that will
464# require recasting this in AWT instead of SWING.
465# See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4353673
466#
467# new feature: gamessUS reader now reads dipoles and partial charges.
468#
469# TODO script editor --  search? argh... I knew this would be a can of worms...
470# script editor -- undo/redo works (CTRL-Z, then SHIFT-CTRL-Z or CTRL-Y)
471#
472# new feature: drag/drop and file menu-open scripts directly into editor, from where they can be checked or tested.
473# code: refactored readers, allowing for more obvious initialization/finalization methods
474# new feature: App and applet consoles now have "editor" buttons
475# that load scripts into a "script editor" and allow stepping through
476# scripts (and changing values during the pauses) - preliminary only
477#
478# opens a rough draft ScriptEditor
479# new feature: Gamess file reader now translates internal basis set and calculation
480#	methods representations into roughly literature standard for Pople & Dunning basis
481#	sets as well as perturbation, CI and CC calculation methods.  This is dumped to
482#	calculationType.
483# new feature: application console buttons: PAUSE, ?, STEP
484# new feature: SHOW TRACE -- reports stack trace
485# bug fix: functions with names starting with _ were local instead of global
486# bug fix: 2 pixels off in y for labels. Don't know why I thought that was necessary in Text.java::setBoxXY.
487# new feature: SHOW VARIABLES now gives variable trace through function stack
488# new feature: [Oh, VERY COOL!] You can now pause the app anywhere in a
489# script, do anything you want -- even within functions -- change variables,
490# set parameters, anything -- and then resume with RESUME. Some of us
491# have dreamt of having this with JavaScript. Very very useful!
492# so, for example:
493#
494# function testing(i,j) {
495#   n = 3
496#   show variables
497#   pause change any variable and then enter RESUME
498#   show variables
499# }
500# testing(3,5)
501#
502# bug fix: problems with PAUSE/RESUME within App
503# bug fix: "set ?" nonfunctional
504# bug fix: unmatched { in quotes in @{ } not properly treated: echo @{" testing}"}
505# new feature: strings may start with ' or ", like JavaScript:
506#   x = 'testing'
507#   print 'there are ' + all.length + ' atoms'
508#   cd, echo, gotocmd, help, hover, javascript, label, message, and pause
509#   all are implicitly strings. You CAN use "..." but you don't have to,
510#   and you cannot use '...'. This way the introduction of single quotes
511#   as an equivalent of double quotes cannot break existing scripts. -- BH 06/2009
512# new feature: print getProperty("PDBInfo","REMARK300")
513
514
515# -----------------------------------------------------------------------------
516
517#version=11.7.44
518
519# bug fix: write FRAMES also for trajectories
520# new feature: MO LIST or SHOW MO LIST display listing of orbitals for all files
521# new feature: GAMESS reader now sets calculationType, orbital type, and auxiliaryInfo.calculationOptions
522# bug fix: select(x;{xxx};...) or for(x;{xxx};...) when {xxx} is empty returns incorrect result
523# bug fix: dipoles cannot be colored by name
524# bug fix: dipole settings not accessible via wildcards
525# new feature: merging of label() and format() functions -- same in all respects.
526# bug fix: spartan'08 reader not reading vibrations
527
528# -----------------------------------------------------------------------------
529
530#version=11.7.43
531
532# bug fix: /** comment ending line can cause odd error
533
534# bug fix: set xxxx n where n is an integer fails.
535# bug fix: GAMESS reader not properly assigning MOs
536# code: better .stddev calculation
537# new feature: a = []    note that a+=2 then produces [2] -- "a+=" similar to JavaScript a.push(2)
538# bug fix: a="test";a[1] = "b"  not working
539# bug fix: {atomExpression}.min, .max
540
541# -----------------------------------------------------------------------------
542
543#version=11.7.42
544
545# new feature: function parameter arrays passed by reference, so, for example:
546#
547#   var a = [1,2,3,4]
548#   function incrementA(a, i) { a[i]++ }
549#   incrementA(a, 3)
550#   show a
551#
552# gives a = [1,2,4,4]
553#
554# new feature: general commands no longer restricted to single lines.
555#              any unpaired ( or [ or { triggers continuation
556#
557# new feature: set or x = command no longer restricted to single lines.
558#              any binary math operator at end of line or beginning of next line
559#              marks continuation, also any unpaired ( or [ or { triggers continuation
560#              (same as JavaScript)
561#
562# new feature: -p Jmol application command line option  --printOnly silent operation with only print command output or warnings going to the console
563#              for example:
564#                java -Xmx512m -jar "Jmol.jar" -pions "myscript.spt"
565#              just outputs messages from the print commands in that script
566#
567# bug fix: pickMeasureScriptTip not found
568#
569# new feature: support for extended inline if: x = (a ? this : b ? that : theother)
570# default change: load trajectory "myfile.top" COORD {first,last,stride} "mdcrd::myfile.trj" defaults to last = -1 ("load all trajectories") not "load one trajectory"
571# bug fix: gzipped gzip file not read properly. (Jmol-FAH files)
572# new feature: {*}.modelindex
573#
574# bug fix: y = q improperly defining q if q does not exist.
575# "all" equivalent to {*}
576# new feature: load ("filename", nBytesMax) --- and returns "java.io.FileNotFoundException" if file
577#              does not exist when nBytesMax == 0, so is a simple test for "Local File Exists"
578#              would be   if (load("filename",0).length == 0)...
579#
580# new feature: print {xxx}.label.all("xxxx") -- forces array even if only one atom (like "{xxx}.label.all")
581# bug fix: color.all not working properly
582# bug fix: xxx.all was not forcing array when only one value
583#
584# code: refactored classes -- next best thing to a separate package (they aren't really public)
585#
586#   CompilationTokenParser --> ScriptCompilationTokenParser
587#   Compiler --> ScriptCompiler
588#   Eval -> ScriptEvaluator
589#   FlowContext --> ScriptFlowContext
590#   Function -> ScriptFunction
591#   Variable -> ScriptVariable
592#
593# bug fix: load @filename
594# new feature: format("sprintf format", a, b, c, ...)
595# new feature: {xxxx}.label("")  shows current label
596# new feature: [array].sort
597# new feature: [array].reverse
598# new feature: [array].min
599# new feature: [array].max
600# new feature: [array].average
601# new feature: [array].stddev
602# new feature: (value).label("C++ printf format")
603
604# bug fix: quarternion().q not working
605# bug fix: Crystallographic Information File  not recognized.
606
607# -----------------------------------------------------------------------------
608
609#version=11.7.41
610
611# bug fix -- bitsets not copied:  m1 = {m and selected} changes m to "m and selected"
612#
613# OK, this version basically turns Jmol scripting language into a subset of JavaScript.
614# Or, maybe a superset of the basic JavaScript constructs. Anyway, they are related.
615#
616# Similarities to JavaScript:
617#
618# --Jmol scripting now supports ++, --, +=, -=, *=, /=, \=, |=, &=
619# --The if, for, while, and function constructs are all about the same, using braces.
620#   for example:
621#
622#     for (i = 1; i <= 10; i++) {print {*}[i].radius}
623#     for (i = 0; ++i <= 10;) {print {*}[i].temperature}
624#     if (var i < 10) {{*}[i].radius *= 2} else {spacefill off;wireframe}
625#     i = 0; while (++i < 10) {select {*}[i * 2]; color red }
626#
627# --A relatively free typing of variables. Jmol is going to save variables as strings
628#   in terms of the Jmol "state" but in this version I introduce the Variable class that
629#   subclasses Token and allows for a more organized approach to variables and sets the
630#   stage for future improvements.
631# --Commands separated by semicolons or line breaks
632# --Object-like methods and fields such as {*}.xyz.all.join(" ") and {atomno=3}.radius
633# --On-the-fly compilation.
634#
635# Differences include:
636#
637# --A broarder range of variable types, including boolean, integer, decimal,
638#   string, point, axis-angle/plane/quaternion, atom bitset, bond bitset,
639#   and one-dimensional array.
640# --No case-sensitivity for variable names.
641# --1-based rather than 0-based arrays. (ONLY because that's the way models are numbered.)
642# --Array indexing from the back to the front using n <= 0: A[0] A[-1] A[-2].
643# --Array ranges [n][m], for example A[-3][0]
644# --Core commands do not use commas or parentheses.
645# --Visual-Basic-like IF / ELSEIF /END IF, FOR/END FOR, WHILE /END WHILE, and GOTO options.
646# --A broad range of mathematical operations
647# --Of course, a whole suite of methods that relate to molecular structure.
648#
649#
650# nested ( ... ? ... : ... ) phrases ready for testing.
651#
652# print (1   < 30 ? 1 : 2)
653# print (1   < 30 ? (5 < 1  ? "yes" : "no") : 0)
654# print (1   < 30 ? (5 < 1  ? "yes" : (6 > 20 ? "yes2" : "hmm")) : (33))
655# print (100 < 30 ? (5 < 10 ? "yes" : (6 > 20 ? "yes2" : "hmm")) : (33))
656# print (1   < 30 ? (5 < 10 ? "yes" : (6 >  2 ? "yes2" : "hmm")) : (33))
657# print (100 < 30 ?  33 : (5 < 1  ? "yes" : (6 >  2 ? "yes2" : "hmm")))
658#
659# bug fix: echo @{....  .... .... } not counting braces
660
661# -----------------------------------------------------------------------------
662
663#version=11.7.40
664
665# bug fix: setting commandOptions "" in Viewer.setAppletContext()
666
667# {atomno=3}.radius += 0.1
668#
669# bug fix: in certain APPEND cases, binary space partitioning forest initialization is not complete
670# bug fix: minimization not trapping error on viewer going null
671# new feature: set useMinimizationThread T/F  nec. to be FALSE when running minimizations in scripts that require values
672#
673#
674# code: compiler refactoring and efficiencies;
675# code: compiler continued development of advanced scripting syntax.
676#
677# new feature:
678#
679# Jmol scripting now supports ++, --, +=, -=, *=, /=, \=, |=, &=
680#
681# i++
682# ++i
683# i += 3
684#
685# and basically all the standard flow syntax of Java and JavaScript:
686#
687#
688# for (i = 1; i <= 10; i++) {print {*}[i].radius}
689# for (i = 0; ++i <= 10;) {print {*}[i].temperature}
690# if (i < 10) { {*}[i].radius *= 2}
691# i = 0; while (++i < 10) {select {*}[i]; color red }
692#
693#
694#
695# plus some more -- no line breaks necessary for for/if/while:
696# the braces really aren't necessary; there is no ambiguity here:
697#
698# for (i = 1; i <= 10; i++) print {*}[i].radius
699#
700# if (i < 10) { {*}[i].radius *= 2}
701#
702# for (i = 1; i < 10; i++) print i
703# if (i < 10) print i
704#
705# bug fix: isosurface efvet reader not displaying data properties as colors
706# bug fix: select {*.ca} (_x.atomno < 100) not working
707#
708# code: major refactoring of variables.
709#
710# new feature: complete freedom from lines and "end if, end for, end while" --
711#   just use standard { } notation. If no braces are used, then END must be used:
712#
713#   for (var x = 1; x < {*}; x = x + 1)
714#   	if ({*}[x].temperature < 10)
715#			({*}[x]).radius = 1
716#	    else
717#			({*}[x]).radius = 0
718#		end if
719#   end for
720#
721# same as:
722#
723#   for (var x = 1; x < {*}; x = x + 1){
724#   	if ({*}[x].temperature < 10) {
725#			({*}[x]).radius = 1
726#	    } else {
727#			({*}[x]).radius = 0
728#		}
729#   }
730#
731# same as:
732#
733#   for (var x = 1; x < {*}; x = x + 1){
734#   	{{*}[x]}.radius = ({*}[x].temperature < 10 ? 1 : 0)
735#   }
736#
737# same as:
738#
739#   for (var x = 1; x < {*}; x = x + 1){{{*}[x]}.radius = ({*}[x].temperature < 10 ? 1 : 0)}
740#
741# new feature: standard { ... ? ... : ... ) notation in Jmol math:
742#
743#  print ({*} < 100 ? "a small molecule" : "at least 100 atoms")
744#
745# new feature: load "@x"  -- inline load of data contained in variable x.
746#
747# new feature: {*}.label = xxx and {*}.label("%[label]") and select label="xxx"
748#
749# new feature: An XML reader for Materials Studio .xsd files  http://accelrys.com/products/materials-studio/
750#
751# new feature: greatly expanded item selecting:
752#
753#   n = 2
754#   {{atomno > 10}[n+2][n+5]}.radius = 0.3
755#
756# note that an outer set of {} is required when setting a property
757# You cannot just do {atomno>10}[5][6].radius
758#
759# new feature: .length alias for .size except for x.bonds - so it can be
760# used where you would use that in Java, for instance:
761#
762#   natoms = {*}.length
763#   for (i = 1; i <= natoms; i = i + 1)
764#    ...
765#   end for
766#
767# new feature: inline FOR(varName;{atom expression};math expression)
768#
769#   ans = for(x;{*.ca};x.resno)
770#
771# produces a list of values
772#
773# new feature: .add() sums up values
774#
775#   ans = for(x;{*.ca};x.bonds.length).all.add()
776#
777# new feature: inline IF(math expression;math if true; math if false)
778#
779#   ans = if (x.resno < 5 ; "low resno"; "high resno")
780#
781# and combined:
782#
783#   var ave = {*.ca}.boundcount.all.add()
784#   print for(x;{*.ca};if (x.bonds.length < )
785#
786# bug fix: MO reader can fail setting min/max bounds
787# bug fix: various tweaks of atom properties business.
788# bug fix: x = array();x[1] = "testing" not working
789# -----------------------------------------------------------------------------
790
791#version=11.7.39
792
793# bug fix: biomolecules for new PDB format
794
795# new feature: consistent set of atom properties now accessible via:
796#
797#   select {xxxx = whatever}
798#
799# rather than the more cumbersome:
800#
801#   select {*} (_x.xxxx = "whatever")
802#
803# for example:
804#
805#  select insertion = "A" // see 1jgq.pdb
806#  display insertion = "?" // single-character wildcard here
807#  select altloc != ""    // see 1vwh.cif
808#  select atomName = "O11" and cell = 555
809#  select atomType = "OXT"
810#  select atomName = "O*" // wildcards accepted
811#
812#  This largely duplicates the current Rasmol notation but adds more of a
813#  natural language search language.
814#
815#  The full set of atom properties can be checked this way:
816#
817#  adpmax        adpmin       altloc        atomID          atomIndex     atomName
818#  atomno        atomType     atomX         atomY           atomZ         bondcount
819#  cell          color        covalent      element         elemno        file
820#  formalCharge  fracX        fracY         fracZ           group         group1
821#  groupID       groupindex   identify      insertion       ionic         model
822#  molecule      occupancy    partialCharge phi             polymerLength property_xx
823#  psi           radius       resno         sequence        site          spacefill
824#  straightness  strucno      structure     surfacedistance symop         temperature
825#  unitX         unitY        unitZ         valence         vanderwaals   vibX
826#  vibY          vibZ
827#
828# full parameter list:
829#
830#{*}.xxx = y
831#   	"select xxxx=yyyy"
832#			"label %x"
833#				"label %[xxxx]"
834#						property
835#								description
836#		yes		yes		adpmax	the maximum anisotropic displacement parameter for the selected atom
837#		yes		yes		adpmin	the minimum anisotropic displacement parameter for the selected atom
838#		yes	A	yes		altloc	PDB alternate location identifier
839#	yes	yes		yes		atomID	special atom IDs for PDB atoms assigned by Jmol
840#		yes	D	yes		atomIndex	atom 0-based index; a unique number for each atom regardless of the number of models loaded
841#	yes	yes	a	yes		atomName	atom name
842#		yes	i	yes		atomno	sequential number
843#	yes	yes	B	yes		atomType	atom type (mol2, AMBER files) or atom name (other file types) -- Jmol 11.7.1
844#	yes	yes	x	yes		atomX	Cartesian X coordinate
845#	yes	yes	y	yes		atomY	Cartesian Y coordinate
846#	yes	yes	z	yes		atomZ	Cartesian Z coordinate
847#		yes		yes		bondcount	covalent bond count
848#		yes				cell	crystallographic unit cell
849#			c/s	yes		chain	protein chain
850#	yes	yes				color	the atom color
851#		yes		yes		covalent	covalent bonding radius
852#	yes	yes	e	yes		element	element symbol
853#	yes	yes	l	yes		elemno	atomic e<b>l</b>ement number
854#		yes		yes		file	file number containing this atom
855#	yes	yes	C	yes		formalCharge	formal charge
856#	yes			yes		fracXyz	fractional XYZ coordinates
857#	yes	yes	X	yes		fX	fractional X coordinate
858#	yes	yes	Y	yes		fY	fractional Y coordinate
859#	yes	yes	Z	yes		fZ	fractional Z coordinate
860#		yes	n	yes		group	3-letter residue code
861#		yes	m	yes		group1	single-letter residue code (amino acids only)
862#		yes		yes		groupID	group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file. <br /> <br /> [|| 0 | noGroup||  1-5  |ALA, ARG, ASN, ASP, CYS|| 6-10|  GLN, GLU, GLY, HIS, ILE|| 11-15|  LEU, LYS, MET, PHE, PRO|| 16-20 | SER, THR, TRP, TYR, VAL || 21-23 | ASX, GLX, UNK||  24-29|  A, +A, G, +G, I, +I || 30-35|  C, +C, T, +T, U, +U||] <br /><br />Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly.
863#		yes	G	yes		groupindex	 overall group index (Jmol 11.5.35)
864#		yes	U	yes		identify	for a  PDB/mmCIF file, same as [%[group]]%[sequence]:%[chain] %%%[altloc]/%[model]  #%[atomno]. For non-PDB data, same as %[atomname]/%[model]  #%[atomno]
865#		yes	E	yes		insertion	protein residue insertion code
866#		yes	I	yes		ionic	radius used for bonding (<b>i</b>onic radius when a formal charge is defined)
867#		yes	M	yes		model	model number
868#		yes	N	yes		molecule	molecule number
869#	yes	yes	Q	yes		occupancy	 occupancy 0.00 - 1.00
870#	yes	yes	P	yes		partialCharge	partial charge
871#		yes	f	yes		phi	protein group PHI angle for atom\'s residue  (Jmol 11.3.41)
872#		yes	L	yes		polymerLength	polymer length
873#		yes		yes		property_xx	a property created using the DATA command
874#		yes	p	yes		psi	protein group PSI angle for the atom\'s residue  (Jmol 11.3.41)
875#	yes	yes	I	yes		radius	currently displayed radius -- in SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms
876#		yes	R	yes		resno	PDB residue number, not including insertion code
877#		yes	r	yes		sequence	PDB residue number, including insertion code
878#		yes	S	yes		site	crystallographic site number
879#	yes	yes		yes		spacefill	currently displayed radius
880#		yes	T	yes		straightness	quaternion-derived straightness (second derivative of the quaternion describing the orientation of the residue. This quantity will have different values depending upon the setting of <b>quaternionFrame</b> as "C" (alpha-carbon based), "P" (carbonyl-carbon based), or "N" (amide-nitrogen based). The default is alpha-carbon based, which corresponds closely to the following combination of Ramachandran angles involving three consecutive residues i-1, i, and i+1: -psi<sub>i-1</sub> - phi<sub>i</sub> + psi<sub>i</sub> + phi<sub>i+1</sub>.
881#		yes		yes		strucno	a unique number for each helix, sheet, or turn in a model, starting with 1.
882#		yes		yes		structure	"helix", "sheet", "turn", or "none"
883#		yes	u	yes		surfacedistance	shortest distance to a surface atom
884#		yes				symop	symmetry operation code
885#			o	yes		symmetry	list of crystallographic symmetry operators generating this atom
886#	yes	yes	t	yes		temperature	temperature factor (B-factor)
887#				yes		unitXyz	unit cell XYZ coordinates
888#		yes		yes		uX	unit cell X coordinate normalized to [0,1)
889#		yes		yes		uY	unit cell Y coordinate normalized to [0,1)
890#		yes		yes		uZ	unit cell Z coordinate normalized to [0,1)
891#	yes	yes		yes		valence	the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3
892#	yes	yes	V	yes		vanderwaals	van der Waal radius
893#	yes		v	yes		vibXyz	vibration vector, or individual components as %vx %vy %vz
894#	yes	yes		yes		vibX	vibration vector X coordinate
895#	yes	yes		yes		vibY	vibration vector Y coordinate
896#	yes	yes		yes		vibZ	vibration vector Z coordinate
897#	yes			yes		xyz	Cartesian XYZ coordinates
898#			g	yes			group index in chain
899#			q	yes			occupancy (0-100%)
900#			W	yes			PDB residue designator with x, y, z included: [%n]%r %x %y %z (Jmol 11.3.41)
901
902
903# bug fix: isosurface cavity colorscheme not applied
904# bug fix: isosurface cavity colorscheme "sets" error
905# code: extensive rewrite of Eval in terms of getting and setting atom properties
906# code: Token.atomproperty broken down into intproperty, floatproperty, and stringproperty
907# new feature: consistent set of atom properties now accessible via:
908# select {xxxx = whatever}
909# select {*} (_x.xxxx = "whatever")
910#
911# code: removed duplication in Eval for getBitSetProperty() and atomProperty()
912# code: artificial size limitations in spacefill, halo, star, dots was not
913#       consistent with setting those values using {xx}.radius (for example)
914# new feature: relaxed limitation on spacefill, halo, star, dots size to 16A.
915# new feature: {xxx}.spacefill = n
916# new feature: {xxx}.radius = n    (same)
917# new feature: print {xxx}.ionic    ionic radius
918# new feature: print {xxx}.covalent covalent radius
919#
920#
921# code: ver efficient and flexible atom label compiler class modelset.LabelToken
922#   see Eval, Atom, Bond, and Measurement for implementation.
923#
924# new feature: label %[....] where .... is one of:
925#   %[altloc]		%A
926#   %[atomIndex]	%D
927#   %[atomName]		%a
928#   %[atomno]	    %i
929#   %[atomType]		%B
930#   %[atomX]        %x
931#   %[atomY]        %y
932#   %[atomZ]        %z
933#   %[bondcount]
934#   %[chain]        %c
935#   %[chain]        %s
936#   %[element]	    %e
937#   %[elemno]	    %l
938#   %[formalCharge]	%C
939#   %[fxyz]
940#   %[fx]           %X
941#   %[fy]           %Y
942#   %[fz]           %Z
943#   %[group]        %n
944#   %[group1]       %m
945#   %[groupID]
946#   %[groupIndex]	%G
947#   %[identify]     %U
948#   %[insertion]	%E
949#   %[ionic]		%I
950#   %[model]	    %M
951#   %[molecule]     %N
952#   %[occupancy]    %
953#   %[partialCharge] %P
954#   %[phi]	        %f
955#   %[polymerlength] %L
956#   %[psi]          %p
957#   %[radius]
958#   %[resno]        %R
959#   %[sequence]     %r
960#   %[site]         %S
961#   %[spacefill]
962#   %[straightness] %T
963#   %[strucno]    (1,2,3,...)
964#   %[structure]  (helix,sheet,turn,none)
965#   %[surfaceDistance] %u
966#   %[symmetry]     %o
967#   %[temperature]  %b, %t
968#   %[uxyz]
969#   %[ux]           %ux
970#   %[uy]           %uy
971#   %[uz]           %uz
972#   %[valence]
973#   %[vanderwaals]  %V
974#   %[vxyz]         %v
975#   %[vx]           %vx
976#   %[vy]           %vy
977#   %[vz]           %vz
978#   %[xyz]
979#
980# this leaves only three label abbreviations without equivalents:
981#
982#                	%g	// getSelectedGroupIndexWithinChain()
983#                   %q  // occupancy * 100
984#                   %W  // identifier and XYZ coord
985
986# bug fix: selected connected(hbond) not working.
987# bug fix: quaternion straightness not following quaternionFrame type (was using testflag3)
988# bug fix: quaternion straightness not setting end points to Float.NaN
989# new feature: color hbonds energy
990# new feature: application flag -L --nosplash no splash screen (For Jmol in Sun Wonderland dev. 5)
991# new feature: load XYZ ...  loads just the XYZ coordinates, in sequence, based on selected atoms.
992#   lots of potential uses for this:
993#   --NMR files where you want just one model at a time and, once loaded, want to save the positions
994#   --basically anywhere you want a "trajectory" but don't want to save all that data
995# bug fix: QchemReader reading second set of MOs with spherical basis problem (at end of optimization)
996
997# -----------------------------------------------------------------------------
998
999#version=11.7.38
1000
1001# new feature: load OCCUPANCY ...     int [0 to 255]
1002# new feature: load PARTIALCHARGE ... float ~[-3.4 x 10^38 to 3.4 x 10^38]
1003# new feature: load TEMPERATURE ...   float [-327.68 to 327.67], with 0.01 precision (stored as short)
1004# new feature: loadAtomDataTolerance, with default 0.01 Angstroms
1005
1006# spartan smol reader broken in 11.7.37
1007
1008# -----------------------------------------------------------------------------
1009
1010#version=11.7.37
1011
1012# new feature: load VIBRATION "filename" n .......
1013#   --all features of the load command, but only loads the vibrational information
1014#   --applies {within(loadAtomDataTolerance,xyzcoord)}.vxyz = vibcoord, so to all unit cells
1015#   --optional n is just as for any load -- optional nth model
1016#   --operates on previously selected atoms only
1017#   --allows embedded jmolscript, just as for any load
1018#   --sets _vibrationName from file's atom set collection name
1019# new feature: loadAtomDataTolerance (see above)
1020# bug fix: load {n n n} not saved in state
1021# new feature: load {a b -c} packs a x b x c cells
1022# new feature: select within(-0.1, {1/2 1/2 1/2}) -- negative distance within selects atoms based on unitcell coordinates
1023# new feature: select within(-0.1, atomno=3) -- negative distance within selects atoms based on unitcell coordinates of all atoms involved
1024# new feature: select within(-0.1, true, atomno=3) -- negative distance within model selects atoms based on unitcell coordinates
1025# new feature: select ux|uy|uz < x.x  -- selection based on unit coordinates
1026# new feature: {x y z}.fxyz -- returns fractional from cartesian
1027# new feature: {x y z}.uxyz -- returns unitcell from cartesian
1028# new feature: {x y z}.ux, .uy, .uz similar to .fx, .fy, .fz
1029# new feature: {x y z}.xyz -- returns cartesian from fractional
1030#       note that .x .y .z does NOT do this conversion. If that is
1031#       intended, you need to use {x y z}.xyz.x
1032# if multiple models are visible, then all these just return as through there were no unit cell.
1033#
1034# new feature: {atomExpression}.uxyz, .ux, .uy, .uz -- unit cell coordinate
1035# The value depends upon the setting of unitcell offset. For example, if we have
1036#
1037#  unitcell 444
1038#
1039# then {x}.uxyz will be in the range {-1,-1,-1/1} (inclusive) to {0,0,0/1} (exclusive)
1040# Note that uxyz is not settable, but fxyz is, so one could, for example,
1041# pack a unit cell using:
1042#
1043#   unitcell 555
1044#	n = {*}.size
1045#	for (var a = 1; a < n; a = a + 1)
1046#		{atomno=a}.fxyz = {atomno=a}.uxyz
1047#	end for
1048
1049# bug fix: {atomExpression}.fxyz does not return factional value, just 0.0
1050
1051# -----------------------------------------------------------------------------
1052
1053#version=11.7.36
1054
1055# code: better treatment of user-defined space group
1056# new feature: "xxxxx".find("pattern","flags") allows regular expression matching;
1057#    flags include:
1058#         "i" (case insensitive)
1059#         "v" (reverse -- "true" if a string does NOT match; nonmatching elements for list)
1060#         "m" (without "v", returns matching phrase in string or each list element or
1061#                 with "v", returns all but the matching phrase in string or on any matching list element)
1062#    for example:
1063#
1064#       print script("show spacegroup all").split().find("Hall symbol:").find("primitive","v")
1065#
1066# 			Hall symbol: P 1
1067# 			Hall symbol: -P 1
1068# 			Hall symbol: P 2y
1069# 			Hall symbol: P 2y
1070# 			Hall symbol: P 2
1071#           ...
1072#
1073#       print script("show spacegroup all").split().find("Hall symbol:")
1074#						.find("primitive","v").find("Hall symbol: ","vm")
1075#
1076# 			P 1
1077# 			-P 1
1078# 			P 2y
1079# 			P 2y
1080# 			P 2
1081#           ...
1082#
1083# bug fix: Hall lattice operation (SHELX only) could place atoms in unexpected unit cell
1084# bug fix: unitCell normalization error could miss some atoms in multi-unit cell visualizations
1085# new feature: Wien2k reader
1086# bug fix: possible exception when writing large image with translucency due to caught memory overflow leaving plotting buffer null
1087
1088# -----------------------------------------------------------------------------
1089
1090#version=11.7.35
1091
1092# bug fix: calculate hbonds can fail when group does not have O or OXT atoms
1093# bug fix: (applet) jmolGetPropertyAsString("image") not functional
1094# new feature: label %G  -- group index, like atom index, 0-based for entire collection
1095# new feature: ramachandran DRAW -- draws dihedral planes and angles
1096# bug fix: draw/isosurface *name*
1097# bug fix: data "append" does not set model the way load "append" does
1098# bug fix: application frame arrows do not work after loading multiple models
1099
1100# -----------------------------------------------------------------------------
1101
1102#version=11.7.34
1103
1104# bug fix: isosurface incorrectly setting number of grid points for MEP surface map
1105# new feature: application -s - reads input from System.in (untested)
1106# new feature: \? in atom name escapes ? wildcard. Still no * in names,
1107#   but you can use multiple ?s: select ?\? or ??\? or ???\? or ????\?
1108
1109# new feature: isosurface FunctionXYZ -- same as FunctionXY, but must return float[][][]
1110# -- note, this involves an additional required function in interface JmolStatusListener
1111#   public float[][][] functionXYZ(String functionName, int nx, int ny, int nz);
1112
1113# -----------------------------------------------------------------------------
1114
1115#version=11.7.33
1116
1117# bug fix: minimization callback does not report dE
1118# bug fix: minimization does not interrupt or stop in applet
1119# bug fix: rotate quaternion with NaN values not ignored
1120# bug fix: applet console not closed when web page destroyed
1121# bug fix: load file:///xxx.xxx (file:/// with file in root path) causes unrecoverable exception
1122# bug fix: signed applet JmolAppletSigned0.jar does not include minimizer in internal jar index
1123# bug fix: rotate -x n rotates wrong direction
1124# new feature: load xxxx FILTER "NBOcharges" loads NBO charges instead of Mulliken
1125#   note: for NBOs you still need FILTER "NBO" so with charges that would be FILTER "NBO;NBOcharges"
1126# bug fix: Jaguar reader vibrations not correct
1127# bug fix: autoBond option in Preference menu was not writing to properties file in $HOME/.jmol
1128# new feature: preliminary NBO support for Gaussian and QChem needs checking
1129# code: subclassing Gaussian, QChem, NWChem, Gamess, Jaguar, Psi readers all into MOReader class
1130
1131# -----------------------------------------------------------------------------
1132
1133#version=11.7.32
1134
1135# bug fix: reading multiple files from a ZIP file collection, Jmol was forcing autobond
1136#          even when bonds were defined
1137# bug fix: load MANIFEST not working properly
1138# bug fix: V3000 reader chokes on CHG=n and does not recognize MASS=n
1139# bug fix: Spartan SMOL file reader failure (coded & instead of && in if statement!)
1140# new feature: CML "isotope" and CML "partial12" bond order.
1141# new feature: GAMESS reader reads NBOs using
1142#  load "xxx.gamess" filter "!EIGEN"  # to only load NBOs; by default ALL MOs are loaded.
1143# new feature: QChem reader reads occupancy, frequencies and MOs
1144
1145# -----------------------------------------------------------------------------
1146
1147#version=11.7.31
1148
1149# bug fix: automatic adjustment for 5D (spherical) orbitals, especially for Spartan Smol reader
1150# bug fix -- Spartan reader adding " in front of atom label
1151# new feature: frame ALIGN {atoms} -- aligns frames around designated atoms in each frame
1152#  for example: frame ALIGN {C2} -- align each frame on C2/n where n is a frame number
1153#  for example: frame ALIGN {*} -- align all frames on center for that frame
1154# new feature: Spartan MO-Animation files can be read
1155# bug fix -- animation/spin while script is rendering can cause Exception
1156#  in general, one needs to use
1157#    set refreshing FALSE
1158#    ...
1159#    set refreshing TRUE
1160#  around code that might be running and deleting atoms or bonds while some other
1161#  process is rendering
1162
1163# bug fix -- trajectories with files having bonds can be a problem
1164# bug fix -- animation/spinning while connections are being made can cause exception
1165# code -- more documentation and somewhat reorganized adapter section.
1166# bug fix: antialiasdisplay with MO does not show correct font size.
1167# new feature: Spartan zip directories xxx.spardir.zip containing directory xxx.spardir can be read
1168# new feature: Spartan reader now reads all models in an energy profile
1169# new feature: MO no longer restricted to one per model set; rather, one per MODEL
1170# new feature: MO command operates on all models in current frame set:
1171#   for instance:
1172#     load t.spardir
1173#     frame *; MO HOMO
1174#     animation on
1175#   will generate highest-occupied MO for all models and run through them quickly
1176#   This allows for animation of molecular orbitals along a reaction pathway
1177# code: first attempt at Gaussian WFN file reading was unsuccessful.
1178
1179# -----------------------------------------------------------------------------
1180
1181#version=11.7.30
1182
1183# bug fix: signed applet does not use CD to set dialog default directory
1184# bug fix: errorCallback not functional
1185# new feature: set autoLoadOrientation (default: FALSE) automatically sets "reset" orientation to that in file, if present
1186# new feature: restore orientation DEFAULT -- resets orientation to file's default orientation or stanadard "reset" if not present
1187# code: generalized setTransform() in JmolAdapter readers CSF and SpartanSmol (.spardir)
1188# bug fix: Spartan .spardir /input files not being read
1189# bug fix: draw arrow/vector slightly overshoots end point
1190
1191# -----------------------------------------------------------------------------
1192
1193#version=11.7.29
1194
1195# bug fix: isosurface/mo FRONTONLY not operative
1196# new feature: draw ID xxx FRAME {center} {quaternion}
1197#  draws x,y,z coordinates for the frame defined by the specified quaternion at the specified center.
1198
1199# bug fix: MO calculations skips d2+ orbital due to integer division.
1200
1201# -----------------------------------------------------------------------------
1202
1203#version=11.7.28
1204
1205# bug fix: 11.7.27 does not display color for MOs; "color MO" can crash Jmol
1206
1207# -----------------------------------------------------------------------------
1208
1209#version=11.7.27
1210
1211# bug fix: line raster not completing lines
1212# code: JmolCallbackListener implemented, extended by JmolStatusListener
1213# code: JmolViewer now includes setJmolCallbackListener
1214# bug fix: measure n1 n2 n3 n4  with just numbers selecting atoms in frame 1 rather than current frame.
1215# bug fix: toolbar icon for pickMeasure tied to tools "measurements..." item
1216# bug fix: (Application) meaurement table not updating properly
1217# bug fix: (Application) measurements toolbar icon does not stay shaded
1218# bug fix: very subtle code error on lines and cylinders rasterization not completing line end pixel in most cases
1219# bug fix: (Application) measurement icon measures angles, not distances.
1220# new feature: JVXL format supports polygonColixes[]
1221# code: polygonColixes[] to define polygon colors rather than vertex-based colors (as in OBJ file)
1222# new feature: isosurface points can be retrieved using $id[n] where n=0,1,2,3... similar to $draw[n]
1223# debugging: setTestflag2() turns on vertex labeling in isosurfaces
1224# new feature: isosurface OBJ file reader using
1225#   isosurface OBJ "myfilename" n
1226#   where n is an optional pointer to a specific group (starting with 1)
1227#
1228# bug fix: subtle MarchingSquares calculation error produces incorrect contours for mapped plane
1229# new feature: hover displays isosurface values for contour plots and planar plots
1230# new feature: isosurface .... map contour [n] [mep|MO homo|etc]
1231#   for example:   isosurface molecular map contour 10 mep
1232#   [n] is optional; defaults to 9
1233# new feature: isosurface CONTOURLINES|NOCONTOURLINES
1234#   displays contour lines; for planes, same as MESH|NOMESH
1235# new feature: default rendering for isosurfaces involving the
1236#   CONTOUR keyword is CONTOURLINES NOFILL
1237# new feature: hovering over isosurface contourlines displays value
1238# bug fix: isosurface TRIANGLES not turning off when isosurface cleared
1239# bug fix: remapping colors of translucent isosurface can have incorrect colors
1240# bug fix: isosurface sphere 1.0 map molecular  not working
1241# bug fix: MO calculation with selected atoms can fail
1242# bug fix: picked atoms automatically selected -- bug in 11.7.24
1243# new feature: very preliminary isosurface ED (RHF only) //and isosurface ESD
1244# bug fix: JVXL writing after reading JVXL file may not write properly
1245# bug fix: Jmol in other applications not initialized the same way can cause null pointer exception loading file with symmetry
1246
1247# -----------------------------------------------------------------------------
1248
1249#version=11.7.26
1250
1251# new feature: isosurface VOLUME reports the volume of an isosurface and stores the number in variable isosurfaceVolume
1252# new feature: ASimpleJvxlWriter can calculate the volume of the surface
1253# new feature: isosurface AREA reports the area of an isosurface and stores the number in variable isosurfaceArea
1254# new feature: ASimpleJvxlWriter can calculate the area of the surface
1255# bug fix: Spartan reader reads MOs improperly when only a partials set of MOs is included in the file
1256# bug fix: Some Spartan files not reading: Compound Document not properly finding root directory block
1257# code: rewritten code for Marching Cubes no longer requires 2D array of cube data
1258
1259# -----------------------------------------------------------------------------
1260
1261#version=11.7.25
1262
1263# code: rewritten code for ASimpleJvxlWriter allows streaming data
1264# code: rewritten code for Marching Cubes no longer requires 3D array of data
1265# new feature: CTRL-K toggles keystrokes with display; ALT-K or CTRL_ALT_K same without display
1266#              color of frank displays condition -- blue (unsigned) or orange (signed) indicates keystrokes enabled
1267# bug fix: PDB load filter broken for ANISOU
1268# bug fix: isosurface plane improperly coloring nonmapped planes
1269# code: rewritten code for JvxlReader saves nx*ny*nz*8 bytes of memory on loading JVXL files
1270#       because there is no need for voxelData = float[nx][ny][nz].
1271# new application: org.openscience.app.jvxl.simplewriter.ASimpleJvxlWriter.java
1272#  -- streamlined methods for converting CUBE data to JVXL files
1273
1274# -----------------------------------------------------------------------------
1275
1276#version=11.7.24
1277
1278# bug fix: Mopac graphf UHF files not read properly for beta orbitals, or can't read file
1279
1280# new feature: character \0 at the start of an echo does screen echo only, not to callback or console
1281# new feature: typing into applet executed as script commands
1282# new feature: set showKeyStrokes
1283#   sets the echo to bottom left and shows the key strokes as they appear
1284
1285# new feature: set dragSelected (was "set picking dragSelected")
1286#
1287#    ALT_LEFT or CTRL_ALT_RIGHT highlights atoms and rotates them
1288#    ALT_SHIFT_LEFT highlights atoms and translates them
1289
1290# bug fix: set picking draw can lose focus during drag operation
1291
1292# -----------------------------------------------------------------------------
1293
1294#version=11.7.23
1295
1296# new feature: load "myfile.cif" {ijk i'j'k' -1}
1297#    loads crystal structure and packs unit cell
1298# new feature: load "myfile.cif" PACKED
1299#    same as {555 555 -1}
1300#
1301# bug fix: {*}.formalCharge = 1 after {*}.formalCharge = -1 sets formal charge to -7 and exception
1302# bug fix: Menu File|Open does not honor "start in" directory
1303
1304# -----------------------------------------------------------------------------
1305
1306#version=11.7.22
1307
1308# new feature: translate x|y|z x.x nm|angstroms|%
1309
1310# bug fix: structure helix ({xx:yy}) compiler bug
1311# new feature: additional VRML support (Angel Herraez)
1312# new feature: u3d exporter template only -- no actual output
1313
1314# -----------------------------------------------------------------------------
1315
1316#version=11.7.21
1317
1318# bug fix: user menu ...Text menus not translated
1319# bug fix: minimization broken
1320# bug fix: menu save ?.spt
1321# bug fix: write PovRay "?.pov"
1322
1323# -----------------------------------------------------------------------------
1324
1325#version=11.7.20
1326
1327# bug fix: protein-protein hydrogen bonds not calculated across biopolymer boundaries
1328
1329# -----------------------------------------------------------------------------
1330
1331#version=11.7.19
1332
1333# bug fix: vibrationperiod set to 0 if vibration off when state saved
1334# bug fix: Compilation problem with "new IOException(e)"
1335# bug fix: application -i option still gives message from "set xxxx"
1336# bug fix: recent application changes do not work with -w option
1337
1338# -----------------------------------------------------------------------------
1339
1340#version=11.7.18
1341
1342# bug fix: 11.7.15 does not run script after loadInline applet parameter
1343# new feature: Alchemy/3DNA reader
1344#
1345# new feature: new command "exitJmol" does just that -- application only;
1346#   can be overridden in a script by user defining the function "exitJmol"
1347#
1348# new feature: application -d --debug sets loglevel to 5
1349# new feature: application -J --jmolscript1 Jmol script BEFORE -s
1350# new feature: application -j --jmolscript2 Jmol script AFTER -s not accepting values
1351#
1352# new feature: (embedded application method of JmolViewer):
1353#
1354# public Object viewer.getImageAs(String type,
1355#                                 int quality,
1356# 								  int width,
1357# 								  int height,
1358#                                 String filename,
1359#                                 OutputStream outputStream);
1360#
1361#   allows creation of an image of a given type ("JPG", "JPEG", "JPG64", "PNG", "GIF", "PPM")
1362#   of a specific quality (-1 indicates default)
1363#     0 to 100 for JPG (-1 = default of 75)
1364#     0-9 for PNG (-1 = default of 2)
1365#   and specific width and height
1366#   and returned as byte[] (when fileName = null, os = null)
1367#   or sent to an output stream (os != null)
1368#   or set to a file (os == null, fileName != null)
1369#
1370#   return can be String if there is an error.
1371#
1372#   command sequence, for example:
1373#
1374#     jmol.viewer.scriptWait("load =1crn;cartoons on;set antialiasdisplay");
1375#     Object nullOrErrorMsg = jmol.viewer.getImageAs("JPG", 75, 300, 300, "t75.jpg", null);
1376#     Object nullOrErrorMsg = jmol.viewer.getImageAs("JPG", 75, 300, 300, null, os);
1377#     Object bytesOrError = jmol.viewer.getImageAs("JPG", 75, 300, 300, null, null);
1378#     Object stringOrError = jmol.viewer.getImageAs("JPG64", 75, 300, 300, null, null);
1379#
1380#   this method, like WRITE IMAGE uses the antialiasImage settings
1381#
1382#   primarily, this is for writing to an OutputStream directly, but
1383#   the rest seemed simple to implement along with that.
1384#
1385# new feature: (embedded application method of JmolViewer):
1386#
1387# public String clipImage(String text);
1388#
1389#   sends image (null parameter) or text to clipboard
1390
1391# -----------------------------------------------------------------------------
1392
1393#version=11.7.17
1394
1395# new feature: q = quaternion(matrixColumn1, matrixColumn2)
1396#   quaternion from first two columns of a 3x3 rotation matrix
1397# bug fix: some quaternions cannot be created from a 3x3, namely:
1398#   q = quaternion({1 2 -2}, {2 1 2}) = {0.57735026 0.57735026 0.0 0.57735026} (xyzw format)
1399
1400# bug fix: ignoreError -- need not get error string
1401# bug fix: write image does not set mustRender
1402# bug fix: set debugscript and set loglevel do not act in script immediately
1403#
1404# new feature: Jmol.js jmolScriptWaitOutput(script) returns all messages that would
1405#			   have been sent to the console.
1406# new feature: applet.getJmolStatus("AS_VECTOR") and applet.getJmolStatus("AS_HASHTABLE")
1407#              allows slightly different format for JSON return
1408# new feature: measureCallback reports pending measurements as well as completed ones
1409#
1410# code: documentation for callbacks in Viewer; refactoring of StatusManager
1411#
1412#    function myAnimFrameCallback(frameNo, fileNo, modelNo, firstNo, lastNo) {}
1413#    function myEchoCallback(app, message, queueState) {}
1414#    function myErrorCallback(app, errType, errMsg, objectInfo, errMsgUntranslated) {}
1415#    function myHoverCallback(strInfo, iAtom) {}
1416#    function myLoadStructCallback(fullPathName, fileName, modelName, errorMsg, ptLoad) {}
1417#    function myMeasureCallback(strMeasure, intInfo, status) {}
1418#    function myMinimizationCallback(app, minStatus, minSteps, minEnergy, minEnergyDiff) {}
1419#    function myPickCallback(strInfo, iAtom) {}
1420#    function myResizeCallback(width, height) {}
1421#    function myScriptCallback(app, status, message, intStatus, errorMessageUntranslated) {}
1422#    function mySyncCallback(app, script, appletName) {
1423#       ...[modify script here]...
1424#       return newScript
1425#    }
1426#
1427# new feature: errorCallback and scriptCallback report untranslated errors
1428# new feature: when errorCallback or scriptCallback is enabled, messages are translated
1429# note: To get translation in message callbacks, use jmolSetTranslation(true)
1430# bug fix: translations of Console not implemented correctly
1431# bug fix: translation not disabled when messageCallback is present
1432
1433# -----------------------------------------------------------------------------
1434
1435#version=11.7.16
1436
1437# new feature: set errorCallback -- cannot be a Jmol script!
1438# new feature: load xxx.gamess FILTER "natural,optimized"
1439# new feature: load xxx.gamess FILTER "!natural,!initial"
1440
1441# bug fix: script error messages not updating when language changed (coding)
1442# bug fix: app -j "xxx" option not properly implemented
1443# bug fix: MO scale
1444
1445# readers: MOLDEN reader update contributed by Albert DeFusco - adefusco
1446# readers: GAMESS reader update contributed by Albert DeFusco - adefusco
1447
1448# -----------------------------------------------------------------------------
1449
1450#version=11.7.15
1451
1452# bug fix: measure allConnected broken
1453# bug fix: 11.7.14 has broken define ({...}) statement
1454# code: better handling of OutOfMemoryError conditions (2)
1455# code: refactoring of method names in FileManager and Viewer
1456# code: refactoring of method names to remove ambiguities between "openFile" and "createModelSet"
1457# code: fixing inappropriate calls to getOpenFileError(), which actually creates the model set.
1458# new feature: applet methods jmolLoadInline, jmolLoadInlineScript, jmolLoadInlineArray,
1459#  jmolAppendInlineArray, jmolAppendInlineScript all return load error message
1460
1461# -----------------------------------------------------------------------------
1462
1463#version=11.7.14
1464
1465# code: efficiencies
1466
1467# new feature: jmolGetPropertyAsString("errorMessage")
1468# new feature: out-of-memory "Java heap error" trapping in scripts and image creation
1469# new feature: save [bonds|coordinates|orientation|selected|state|structure] DELETE
1470
1471# bug fix: write .... @{...} can fail
1472# bug fix: write coords CLIPBOARD broken
1473# bug fix: select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi) fails when atomExpression is ({})
1474# bug fix: applet compilation error not sent in termination message
1475# bug fix: build javax package does not include AxisAngle4d.class, Matrix4d.class
1476# bug fix: compilation of myfunc({1 2 3}) fails
1477# bug fix: hover watcher occasional uncaught exception
1478
1479# -----------------------------------------------------------------------------
1480
1481#version=11.7.13
1482
1483# new feature: sync * stereo
1484# bug fix: applet improperly reporting status of "quiet" commands
1485# bug fix: stereo not in state
1486# bug fix: stereoDegrees parameter not reported correctly
1487# bug fix: quaternion straightness update
1488# bug fix: translucency of mapped isosurfaces not saved in state
1489# bug fix: Dialog look and feel for Mac
1490# bug fix: negative number in range involving ^ fails: select 10^P -17^P
1491# code: better allocateViewer method
1492
1493# -----------------------------------------------------------------------------
1494
1495#version=11.7.12
1496
1497# new feature: isosurface PMESH; pmesh command deprecated
1498# code: pmesh now a subclass of isosurface, with org.jmol.jvxl.PmeshReader doing the work.
1499# new feature: all options of isosurface now option for pmesh.
1500# all pmesh command does is guarantee that if the pmesh data is standard pmesh ASCII data,
1501#  then it will be read correctly. Binary pmesh files may be read with isosurface command.
1502# new feature: pmesh files and inline scripts now can be colored and saved as JVXL files
1503# new feature: isosurface INLINE "--pmesh data--"
1504#
1505# bug fix: .xxx broken for Jmol 11.7.11
1506# JVXL 2.0 format enhancements
1507# new feature: #xxx comments act as targets for goto as well as MESSAGE commands
1508# bug fix: goto xxx  with trailing white space fails to find xxx
1509# bug fix: goto with a # comment in the script prior to the target line fails
1510# bug fix: two //xxx comments in a row breaks script
1511# new feature: fully remappable JVXL files
1512# new feature: JVXL file format version 2.0 writing and reading for general vertex/triangle file source.
1513# code: superfast JVXL compression/decompression
1514# bug fix: straightness absolute value -- values 0 (not straight) to 1 (straight)
1515#  load =1crn;calculate straightness;color "bwr" range 0 1;color straightness
1516# new feature: efvet file reader (http://ef-site.hgc.jp/eF-site)
1517#   isosurface color "rwb" "myfile.efvet"
1518# bug fix: isosurface APBS dx file reader broken (since 4/2007)
1519# menu: "Minimize" GT
1520
1521# -----------------------------------------------------------------------------
1522
1523#version=11.7.11
1524
1525# bug fix: UFF.txt not included in build
1526# new feature: user-definable atom selector for extended select:
1527#
1528#  select {*.ca} (myfunc < 3.0)
1529#
1530# new feature: user-definable atom selector functions.
1531# _x is used for the selected atom (not _atom) as for
1532# select {atomExpression} (property expression)
1533#
1534#   function myFunc()
1535#     return _x.x + _x.y + _x.z
1536#   end function
1537#
1538#   print {*}.myFunc
1539#   print {*}.myFunc.min
1540#   print {*}.myFunc.max
1541#   print {*}.myFunc.all
1542#
1543#  parenthetical parameters are allowed provided .min, .max, .all are not used
1544#
1545
1546# -----------------------------------------------------------------------------
1547
1548#version=11.7.10
1549
1550# bug fix: function definitions occurring before prior script commands are executed.
1551# bug fix: message @{xxxx} in function not picking up function context variables
1552# new feature: set fontCaching false -- for testing of font caching issues
1553# bug fix: CD command not working for writing
1554# bug fix: Some browsers do NOT strip \n from <param> tags, necessitating changes in loadInLine()
1555
1556# -----------------------------------------------------------------------------
1557
1558#version=11.7.9
1559
1560# bug fix:  initializeBspf(); missing in setTrajectory()
1561# new feature: hbonds delete
1562# new feature: calculate hbonds {*} {*}
1563#  between {O or N} and {O or N} only
1564# new feature: set hbondsAngleMinimum
1565#  if hbondsAngleMinimum is set > 0 (default 90 ?), then that angle is checked
1566#  for any atoms A--X- - -Y where A is attached to X,
1567#  and X and Y are the two heteroatoms involved.
1568# new feature: set hbondsDistanceMaximum
1569#  maximum distance for X---Y. (default 3.25 ?)
1570#
1571# bug fix: AMBER atom type IM and IP not recognized
1572# bug fix: AMBER topology file reading of IFBOX=2 files
1573# bug fix: antialiased fontscaling labels can appear incorrectly
1574# bug fix: font maximum reduced
1575# code: major scaled memory font savings
1576# bug fix: more lenient MopacGraphF format resolving
1577# bug fix: "valence" not "valency" in data property_valence
1578
1579# -----------------------------------------------------------------------------
1580
1581#version=11.7.8
1582
1583# bug fix: set antialiastranslucent false not functional
1584# bug fix: text color near black with antialiasdisplay becomes white
1585# bug fix: text antialiasing of near-black text looks very bad when antialiased
1586
1587# new feature: settable atom elements, atomType, and atomName
1588#   {atomno=3}.element = 6  # set atom 3 to carbon
1589#   {atomno=3}.element = "C"
1590#   note -- this will reset the atom color to its standard CPK value.
1591#   {atomno=3}.atomType = "xxx"
1592#   {atomno=3}.atomName = "xxx"
1593# new feature: select within("atomName", "xxx,yyy")
1594# new feature: select within("atomType", "xxx,yyy")
1595
1596# -----------------------------------------------------------------------------
1597
1598#version=11.7.7
1599
1600# bug fix: forcefield file UFF.prm --> UFF.txt
1601# bug fix: better Escape method for strings
1602# bug fix: connect auto not registered in state
1603#
1604# new feature: Jmol math simple array definitions using brackets: x = [3,4,5,6]
1605# new feature: set atomTypes "abcd=>C;efgh=>H" for reading mol2 and mdTop files
1606#
1607# code: better algorithm for atom types in Mol2Reader
1608# code: faster loading -- no "pre" definition of atom sets
1609# code: Eval load conversion of param[] values to htParams entries
1610
1611# -----------------------------------------------------------------------------
1612
1613#version=11.7.6
1614
1615# bug fix: draw point translucent only draws ring
1616# new feature: mol2 format reads force field atom types for AMBER, CFF91, GAFF, ESFF, CHARMM, COMPASS, CVFF, CVFF_aug, PCFF force fields (rev2)
1617# bug fix: load string inline with multiple models fails
1618# code: FindBugs fixes for Eval, DrawRenderer, Isosurface, ForceFieldUFF,PdbReader
1619# code: ScriptWindow public: sendConsoleEcho,sendConsoleMessage,notifyScriptStart,notifyScriptTermination
1620
1621# -----------------------------------------------------------------------------
1622
1623#version=11.7.5
1624
1625# code: ScriptWindow public: sendConsoleEcho,sendConsoleMessage,notifyScriptStart,notifyScriptTermination
1626# bug fix: set labelToggle malfunctioning
1627# bug fix: missing default background for toggled labels
1628# bug fix: color {oxygen} translucent blue
1629# bug fix: color translucent 1 blue  1-8 integer settings off by one
1630# bug fix: background color +/-1 adjustment removed
1631
1632# -----------------------------------------------------------------------------
1633
1634#version=11.7.4
1635
1636# bug fix: spardir within /M... directory
1637# new feature: write MENU "filename.mnu"
1638# new feature: (Application) -c option checks without loading files; -C option checks with loading files
1639# code: LOAD command ignores all nonrecognized pre-filename keywords
1640
1641# -----------------------------------------------------------------------------
1642
1643#version=11.7.3
1644
1645# new feature: x = file("some file name") or x = file("?")  -- returns full path to file
1646# new feature: (Application) Files...Export...Gaussian... Build Gaussian Input File Dialog
1647# new feature: (Application) command line option -j --jmolscript "script commands"
1648# new feature: load MODELS ({bitset})|{first,last,stride}
1649# new feature: load TRAJECTORY ({bitset})|{first,last,stride}
1650# new feature: load APPEND MODELS ({bitset})|{first,last,stride}
1651# new feature: load APPEND TRAJECTORY ({bitset})|{first,last,stride}
1652# new feature: load APPEND "[topolopy file]" COORD ({bitset})|{first,last,stride} "mdcrd::md1.crd COORD ..."
1653# new feature: load FILES "[topology file]" COORD ({bitset})|{first,last,stride} "mdcrd::md1.crd COORD ..."
1654
1655# -----------------------------------------------------------------------------
1656
1657#version=11.7.2
1658
1659# new feature: independent JAR files for language localizations
1660# bug fix: XML readers broken in 11.7.1
1661# bug fix: AMBER molecular dynamics topology file misreads P atoms
1662#
1663# new feature: select within(atomName,"ATOMNAME1,ATOMNAME2,...")
1664# new feature: select within(atomType,"ATOMTYPE1,ATOMTYPE2,...")
1665# NOTE: 11.7.8 changes just "type" to "atomType"
1666#  selects within a set of atom types (defined currently only for mol2 and AMBER topology file types)
1667#  matching is case-sensitive.
1668#  defaults to atom name if no types are indicated
1669#  for example: select not within(atomType,"HW,OW")
1670#
1671# new feature: cd command sets defaultDirectory
1672#  cd   # reports current directory and sets default directory to that
1673#  cd ? # (signed applet and app only) opens a directory
1674#  cd .. # moves up one directory
1675#  cd temp # moves to subdirectory temp
1676#  cd "" # resets the default directory
1677
1678# -----------------------------------------------------------------------------
1679
1680#version=11.7.1
1681
1682# new feature: draw LINE {...} {...} {...} {...}  draws line segments
1683# new feature: making Jmol movies using write frames {atomExpression} [width] [height] "movie.jpg"
1684# creates a set of files movie0001.jpg, movie0002.jpg, etc. for frames in atomExpression
1685# these fils can then be combined using an external program of user's choice to create
1686# a movie from a sequence of JPEG images
1687#
1688# write frames {*} "all.jpg"
1689# write frames {1.0} "firstFile.jpg"
1690# write frames {1.0} 200 200 "smallFile.jpg"
1691#
1692# new feature: load of molecular dynamics topology file and coordinates
1693#
1694#   load files "u.mdtop" FILTER "![WAT],![URE]" COORD {0 -1 1} "mdcrd::u.mdcrd" ;
1695#
1696#  -- mdtop file must have %FLAG and %FORMAT comments
1697#  -- FILTER is optional
1698#  -- COORD {first,last,step} is optional for each coordinate file loaded
1699#      first,last,step same as in VMD -- 0 for very first trajectory, last -1 meaning "all"
1700#      default {0 0 1} so that just one trajectory is loaded from each file
1701#  -- explicit format "mdcrd::" is required, because these files have no identifying characteristics
1702#  -- as many COORD keywords/coordinate files as desired can be included:
1703#
1704#   load files "u.mdtop" FILTER "![WAT],![URE]" COORD {0 -1 1} "mdcrd::u1.mdcrd"  "mdcrd::u2.mdcrd" COORD {0 300 10} "mdcrd::u3.mdcrd" ;
1705#
1706# new feature: x = quaternion({center_or_point}, {atomX_or_point}, {atomXY_or_point})
1707#
1708#  -- quaternion is created based on three atoms or coordinates
1709#  -- such that X = atomX - center, Z = cross(atomXY - center, atomX), Y = cross(Z, X)
1710#
1711# new feature: x = quaternion(q, "id", {center})
1712#
1713#  -- creates DRAW sequence to draw quaternion q as three arrows red(x), green(y), blue(z)
1714
1715# -----------------------------------------------------------------------------
1716
1717#version=11.6.RC19_dev
1718
1719# bug fix: GIF encoder color / class not found issues
1720# bug fix: very thin cylinder does not appear at all viewing angles
1721# bug fix: load "/xxx" with unsigned remote applet loads local file instead of remote root directory
1722#  -- this change represents a difference in behavior between the unsigned applet and other code (signed applet or application)
1723# bug fix: sulfur/sulphur always spelt as in IUPAC Red Book
1724# bug fix: display of aromaticSingle bond for NEW bond results in dotted bond.
1725# translation: English language variants no longer ignored
1726
1727# -----------------------------------------------------------------------------
1728
1729#version=11.6.RC18
1730
1731# bug fix: fileName not reset after ZAP
1732# bug fix: set echo none; color echo green  null pointer exception
1733# bug fix: .x not recognized
1734# bug fix: set xxxCallback "" does not clear callback ("none" was required unnecessarily)
1735# bug fix: cartoons ending in helix or strand draw single dot for final amino acid
1736# -----------------------------------------------------------------------------
1737
1738# version=11.6.RC17
1739
1740# bug fix: draw scale not saved in state for arc or xy arrow
1741# bug fix: drag/drop not enabled on consoles
1742# bug fix: Jmol state command "calculate surfaceDistance WITHIN ({...})" not passing compiler
1743# bug fix: Swing antialiasDisplay broken due to setTransparentBackground debugging
1744# bug fix: trajectories not enabled
1745# code: if (true...)/ if (false...) code cleanup
1746# bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1
1747# bug fix: select model=0.0 caused infinite loop
1748
1749# -----------------------------------------------------------------------------
1750
1751#version=11.6.RC16
1752
1753# bug fix: mol2 PDB format better handling of chains and derived element types
1754# bug fix: save image button/menu interface broken in 11.6.RC15
1755
1756# -----------------------------------------------------------------------------
1757
1758#version=11.6.RC15
1759
1760# new feature: MOL2 reader is PDB-enabled.
1761# new feature: data() and DATA expanded to allow fixed-column entry
1762# bug fix: data property_partialcharge does not update atomic partialCharge data itself for MEP
1763#  but instead just creates a data type "property_partialcharge"
1764# bug fix: CML reader failst to load primitive lattice parameters when no symmetry
1765# note: CML reader only reads the first structure of a file
1766# bug fix: CML reader not assigning atom labels
1767# bug fix: CML files not properly loading symmetry
1768# bug fix: O- formal charge radius MUCH too large; N+ MUCH too small. -- REMOVED
1769# code: thread control for Java Swing in applet context
1770#     thread creating Swing objects MUST be event thread
1771#     -- using SwingUtilities.invokeAndWait() from the commandWatcher thread
1772# new feature: load menu items for signed applet
1773# new feature: save menu items for signed applet
1774# bug fix: applet -- setting a jmolScript callback prevents menu updates
1775# new feature: minimize menu item
1776# new feature: signed applet allows "load ?" and includes previewer
1777# bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default
1778
1779# new feature: signed applet/application   load ?xxx  uses load dialog
1780# webexport help updated to reflect ability to handle files opened with "load append"
1781
1782# -----------------------------------------------------------------------------
1783
1784#version=11.6.RC14
1785
1786# new feature: signed applet may write file, images, scripts, variables to disk. User dialog is required.
1787
1788# new feature: write GIF
1789# code: allows for getJpeg(quality,asString) option to return byte array instead of base64.
1790# bug fix: xxx.split()[3].replace  does not do selection first
1791# bug fix: ramachandran and quaternion derivative not indicating structure due to dropping last atom
1792
1793# -----------------------------------------------------------------------------
1794
1795#version=11.6.RC13
1796
1797# bug fix: set historyLevel  recording full scripts, not individual commands
1798# bug fix: y-offset for echo text and images
1799# bug fix/new feature: HIDE/DiSPLAY/DELETE/COLOR $*xxx* extended to ECHO
1800# bug fix: findbugs input stream closure
1801# translation: add GT.escapeHTML and stricter checking for special characters in file names
1802#				used by web export.
1803
1804# -----------------------------------------------------------------------------
1805
1806#version=11.6.RC12
1807
1808# bug fix: getProperty("atominfo",{atom expression}) not working for "atominfo[0].xxx
1809# bug fix: getProperty("modelinfo",{atom expression}) not working
1810# new feature: set atomPicking TRUE/FALSE
1811# new feature: set bondPicking TRUE/FALSE
1812# bug fix: draw pointgroup when principalPlane == null
1813# bug fix: findbugs corrections in minimize.forcefield, modelset.AtomCollection, shapespecial.DrawRenderer
1814# new feature: applet parameter jmolSetCallback("maximumSize", nnn) -- sets maximum size of applet when resizing to this value
1815# cml reader fix for not applying symmetry to first model
1816# translation: added GT._ calls for HTML templates and JS in WebExport
1817
1818# -----------------------------------------------------------------------------
1819
1820#version=11.6.RC11
1821
1822# bug fix:   echo IMAGE and antialiasdisplay
1823# bug fix: super/subscripts with antialiasdisplay
1824# translation: menu items in console
1825# bug fix: web export / language
1826# bug fix: draw pointgroup C2 2 not distinguished from draw pointgroup C2 1
1827# bug fix: d2 point groups cause null pointer exception due to missing principal axis
1828# bug fix: {*}.x = ....  broken
1829
1830# -----------------------------------------------------------------------------
1831
1832#version=11.6.RC10
1833
1834# new feature: (just not documented) rotate {atom1} {atom2} 10
1835# new feature: moveto quaternion {resno=3} {3.ca}
1836
1837# bug fix -- set picking spin, also compatibility of set picking spin and doing measurements
1838# bug fix -- draw pointgroup, write pointgroup draw
1839
1840# -----------------------------------------------------------------------------
1841
1842#version=11.6.RC9
1843
1844# code: more efficient return of point group information and calculation
1845# new feature: getProperty PointGroupInfo
1846# bug fix: show pointgroup draw null pointer exception
1847# bug fix: print $planeA - capital letters in a draw name disallow finding it.
1848
1849# -----------------------------------------------------------------------------
1850
1851#version=11.6.RC8
1852
1853# bug fix: ramachandran / ramachandran r navigation problem
1854# code: Minor refactoring and pruning.
1855#    --- Core applet now 715K (JmolApplet0.jar + _Core, _Jars, _Main, _Popup, and _Viewer)
1856# code: Pre-Jmol.js button controls removed, saving about 10K
1857# new feature: script APPLET appletName "some script"
1858#   --allows direct inter-applet communication independent of set SYNC
1859#   --appletName can be * (all applets), > (other applets), . (this applet),
1860#     or an applet name such as "jmolApplet0" or just the extension "0"
1861#     or a quoted set of applet names separated by commas.
1862#   --for *, the current applet always reports LAST
1863# new feature: x = script("some script", "appletName")
1864#   --same as above
1865#   --in addition, allows retrieval of information from another applet
1866#     for example:
1867#
1868#		x = script("print getProperty(\"modelInfo.modelCount\")","B")
1869#
1870#     gets the number of models loaded in applet jmolAppletB.
1871#
1872#		x = script("show orientation moveto","jmolApplet2")
1873#
1874#     gets the current orientation of applet jmolApplet2.
1875#
1876#		xList = script("print getProperty(\"appletInfo.fullName\").split(\"__\")[1] + \":\" + script(\"show rotation\").trim()","*")
1877#
1878#     gets a new-line-separated list of rotational quaternions for all applets with applet names.
1879#
1880#
1881# new feature: print getProperty("modelInfo.models[3].file") syntax
1882
1883# -----------------------------------------------------------------------------
1884
1885#version=11.6.RC7
1886
1887# new feature: draw ramachandran includes planes connecting atoms.
1888# bug fix: refresh for hover
1889# bug fix: state definition for lcaoCartoons, isosurface with IDs containing spaces
1890# new feature: $*xx*  double wild cards
1891# new feature: generally for objects (draw,pmesh,isosurface,etc.) use DISPLAY/HIDE rather than ON/OFF
1892#   so as to be consistent with other objects. (OFF was not deleting these)
1893# new feature: support for application transparent background -- "-b" command switch (testing only)
1894#   and setAppletContext "-b" switch as well.
1895# bug fix: structure helix|sheet|turn|none {atomExpression} was undocumented and had state issues
1896# new feature: HIDE $xxx
1897# new feature: DISPLAY $xxx
1898# new feature: DELETE $xxx
1899# bug fix: adaptation for malformed PDB files (HEADER with nothing following it)
1900# bug fix: more language localization in webexport
1901# new feature: applet message regarding help and command entry
1902
1903# -----------------------------------------------------------------------------
1904
1905#version=11.6.RC6
1906
1907# code: better navigation refreshing
1908# bug fix: oops, 11.6.RC5 is totally broken due to missing refreshes
1909# bug fix: language localization in webexport
1910
1911# -----------------------------------------------------------------------------
1912
1913#version=11.6.RC5
1914
1915# bug fix: set fontscaling with multiple echo texts/images at the same xyz location only scaling the first item
1916# bug fix: set echo xxxx 30 40
1917# bug fix: WAY more streamlined refreshing
1918# bug fix: createImage(), not getImage() in order to allow dynamic file change
1919# bug fix: halo size for antialiased display
1920# Addition of translation tags to webexport
1921# bug fix: write IMAGE broken for 11.6.RC2+
1922# bug fix: unnecessary refreshes removed from moveto/zoom with time 0
1923# new feature: background IMAGE "filename"
1924# code: viewer refactoring to simplify/remove private methods and synchronization
1925
1926# -----------------------------------------------------------------------------
1927
1928#version=11.6.RC4
1929
1930# bug fix: select @m  throws an error
1931# code: refactoring shapespecial into shapespecial and shapesurface
1932# code: refactoring modelset.CellInfo into symmetry.SymmetryInfo
1933# code: realignment of applet JAR files
1934#  -- new _ShapeSurface.jar, which now includes org.jmol.jvxl/**
1935#  -- removal of _Jvxl.jar
1936#  -- refactoring reduces preliminary applet Jar file loading to 720K (if English)
1937#  -- should provide faster loading of simple models and more efficient loading of more complex ones
1938#  -- basic minimum load involves just JmolApplet0.jar + _Core, _Jars, _Main, _Popup, and _Viewer
1939
1940# -----------------------------------------------------------------------------
1941
1942#version=11.6.RC3
1943
1944# bug fix: minor error in pointgroup; dimension tied to radius
1945# new feature: set dotDensity [-3 to 3]
1946# new feature: draw pointGroup [type] [index] SCALE [x]
1947#  where [type] is one of Cs, Ci, Cn, or Sn, where n is an integer or the character "n"
1948
1949# -----------------------------------------------------------------------------
1950
1951#version=11.6.RC2
1952
1953# bug fix: image background transparency
1954
1955# new feature: set pointGroupDistanceTolerance (default 0.2 angstroms)
1956# new feature: set pointGroupLinearTolerance (default 8 degrees)
1957
1958# bug fix: Cs pointgroup not found
1959# bug fix: set echo DEPTH/IMAGE
1960# bug fix: workaround for Java 1.6.0_10 diallowing popup menu
1961# new feature: in Java 1.6.0_10, right-click activates the console, and the
1962#   console has a menubar menu item "Jmol" that is the pop-up menu.
1963# new feature: applet console has "help" menu item, which includes several hundred items.
1964
1965# -----------------------------------------------------------------------------
1966
1967#version=11.6.RC1
1968
1969# bug fix: D3h point group
1970# bug fix: LOAD "..." nn   loading of model numbers for PDB files should read real model number, not sequentially.
1971
1972# new feature: write/show pointgroup gives counts and tab-separated listing;
1973# new feature: write pointgroup draw delivers draw commands
1974# new feature: better draw pointgroup
1975# new feature: no saving of point group -- just recalculated each time
1976# bug fix: measures were messed up
1977# new feature: echo myecho IMAGE "filename"
1978#  -- reads a JPG, GIF, or PNG image and displays it the
1979#     same as text is displayed.
1980# new feature: echo myecho DEPTH xx
1981#  -- sets the depth in percent (0% far back, 100% front) for the placement of the image
1982#  -- note that images can be placed in 3D, just as for text.
1983#  -- setting "background echo xxx" then specifies the color
1984#     that is to be designated as the background color (the color that should be omitted).
1985#  -- using "background echo none" specifies that the first pixel
1986#     of the image specifies the color that should be omitted.
1987
1988# bug fix: 11.5.52 may have lost "true" as a keyword
1989# new feature: pointgroups with vibration vectors
1990# bug fix: more testing with pointgroups
1991# new feature: spacefill/dots/geosurface/cartoon/trace/etc. ONLY
1992#   -- show only this rendering type
1993#   -- same as restrict not selected; spacefill ON
1994# bug fix: application rubberband selecting inappropriately selects atoms not visible
1995# new feature: wildcard at beginning for draw/pmesh/isosurface/etc. *xxx on/off/delete allowed
1996# bug fix: in draw pointGroup -- height of cylinder was too small
1997# bug fix: longstanding exception: isosurface fullylit --> isosurface backlit --> isosurface frontlit
1998
1999# -----------------------------------------------------------------------------
2000
2001#version=11.5.52
2002
2003# new feature: calculate pointGroup
2004# new feature: draw pointGroup
2005# new feature: write pointGroup
2006#  including x = script("write pointGroup")
2007# new feature: webexport now compresses data files over 512 MB
2008# new feature: calculate pointGroup  -- preliminary only -- untested
2009
2010# -----------------------------------------------------------------------------
2011
2012#version=11.5.51
2013
2014# bug fix: 11.5.49 and 11.5.50 broken for ".max"
2015
2016# new feature: PRELIMINARY aniso_beta for cif files -- has not been checked for correct Ortep type -- set to 0 for now
2017# new feature: application select button reinstated
2018# new feature: application pick button reinstated
2019# new feature: application measure button tied to picking style
2020# new feature: application [>|] button
2021# bug fix: ramachandran/quaternion "reset" not decoupled from model decouple
2022# code: model orientation saved with model.
2023# bug fix: set axesOrientationRasmol finally correctly implemented
2024# new feature: axes labels change subtly for set axesMolecular and setAxesOrientationRasmol
2025# bug fix: JmolViewer interface deprecated "rotateTo..." methods changed to "rotate..."
2026#  because that's what they really do.
2027# bug fix: set defaults jmol/rasmol must do reset().
2028
2029# new feature: webexport now cleans up scratch files on deletion of instances and program exit.
2030
2031# -----------------------------------------------------------------------------
2032
2033#version=11.5.50
2034
2035# bug fix: vibration thread not closing down for applet destroy when applet is off-screen
2036# bug fix: was reading server path for local path from history in Webexport
2037# bug fix: $ptx[2] notation broken in 11.5.49
2038# code: various cleaning/simplifying
2039# code: way cleaner quaternion derivative calculation code
2040
2041# -----------------------------------------------------------------------------
2042
2043#version=11.5.49
2044
2045# bug fix: strange "scripted: ?" message with measurements removed
2046# bug fix: extra values in measure reporting, and wrong format
2047# bug fix: 11.5.48 is broken for scripts with array definitions such as
2048#   p = array(); p[pt] = ....
2049# code: simplification/unification of statement length checking AFTER allowing for variable substitution
2050# code: removal of unnecessary/inflexible compilation step involving color parameters
2051# code: major refactoring/simplification of Token
2052# code: refactoring/simplification of Compiler
2053# code: compiler flags for allowed number of parameters removed (not consistent with Jmol math)
2054#       (defaultON and noArgs remain)
2055# new feature: dipole/draw/ellipsoid/isosurface/pmesh/mo/lcaocartoon ID keyword optional
2056#   but without ID, one is restricted to words that are simple text and not Jmol entities.
2057#   with ID, the next quantity can be anything.
2058# new feature: $"xxx" quotations or $@{...} allows variable definition of object id reference
2059# new feature: draw {point} PLANE [plane def, including xy, yz, x, etc.]
2060
2061# -----------------------------------------------------------------------------
2062
2063#version=11.5.48
2064
2065# new feature: mol file bond type 8 as partial
2066# code: compiler error reporting improved
2067# bug fix: PDB site definition does not ignore empty site definitions
2068# bug fix: DEFINE can cause compiling error, e.g. "[2MO]" in 1tmo
2069# bug fix: quaternion derivative DRAW arrows placed on residue i+1 instead of residue i
2070# bug fix: connect aromatic auto; select connected([bond type],...)
2071# bug fix: queue thread termination when applets are off screen
2072# bug fix	: sheetsmoothing not consistent among structures in multi-chain systems
2073# bug fix: messages not sent to messageCallback
2074# code: simpler matrix-->quaternion code
2075# bug fix: 11.5.47 shows oddly sized arrow for very first rendering
2076# bug fix: quaternion frame "n" after rotationSelected does not reset NH hydrogen positions
2077# new feature:  // at beginning of a line marks comments
2078
2079# -----------------------------------------------------------------------------
2080
2081#version=11.5.47
2082
2083# bug fix: Removed stray semicolons from header script comments in webexport templates.  They
2084#   were causing WYSIWG web editors to corrupt the code scripts.
2085# bug fix: 11.5.46 broke standard "spin x 30" (b)
2086# new feature: draw ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset}
2087# new feature: draw ARROW ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset}
2088#
2089#  draws a circular arc or arrow around an axis defined by {pt1} and {pt2}
2090#   using {ptref} as a starting point (looking down the axis, angles
2091#   are measured in a clockwise manner, starting with the projected position
2092#   of {ptref} in a plane perpendicular to the axis. This is similar (but opposite)
2093#   to the way dihedral angles are indicated.
2094#   theta0 is the the offset angle from 0
2095#   nDegrees is the number of degrees of arc to draw
2096#   fractionalOffset is the fraction of the distance from {pt1} to {pt2} for the
2097#   plane containing the arc.
2098#
2099# new feature: draw RAMACHANDRAN
2100#   draws phi and psi angles in the form of draw ARROW ARC
2101# new feature: write RAMACHANDRAN draw
2102
2103# -----------------------------------------------------------------------------
2104
2105#version=11.5.46
2106
2107# bug fix:  remove the skipping of semicolons if parentheses or braces have been closed. (11.5.43 bug)
2108# bug fix:  set picking on   broken in 11.5.39
2109#
2110# new feature: measure {atomExpression or point} {atomExpression or point} ...
2111#  measurements to POINTS, including using the mouse (set drawPicking on)
2112#  will persist and can be saved in the state (11.5.38 did not allow this)
2113# for example:
2114#  measure {0 0 0} {atomno=3} {atomno=5}
2115#  measure  $point2 {atomno=3} $line[1]
2116#
2117# new feature: rotate branch {atom1} {atom2} ...
2118# new feature: select within(branch, {atom1}, {atom2})
2119# new feature: Jmol math within("branch", {atom1}, {atom2})
2120# code: refactoring of getAtomsWithin() and getAtomBits()
2121#
2122# bug fix: array size limited
2123# new feature: quaternion({atom expression}) -- returns calculated
2124#              frame based on quaternionFrame setting.
2125# bug fix: drawhover not in state
2126# bug fix: ramachandran for systems including nucleic acids when quaternionFrame = 'n'
2127# new feature: isosurface functionXY can be used for mapping.
2128# new feature: spacegroup/symmetry for CML files with <module> tags
2129#
2130# bug fix: 11.5.39 could break isosurface/pmesh save/write state in certain cases.
2131# bug fix: Popin.png in WebExport replaced, was too large, causing dialog box to default to too big on small screens.
2132# bug fix: zap 2.1 for quaternion frame causes exception
2133# bug fix: quaternion r derivative2 nonfunctional in 11.5.45
2134# bug fix: isosurface functionXY not working
2135# bug fix for 11.5.45: application not returning echos and status messages to console
2136
2137# -----------------------------------------------------------------------------
2138
2139#version=11.5.45
2140
2141# new feature: show rotation    aka  show orientation rotation
2142# new feature: show translation aka  show orientation translation
2143
2144# code: mouse manager refactoring
2145
2146# bug fix: picking off structure did not clear picking for set picking spin
2147# bug fix: jmolScriptWait() improperly reporting to applet console
2148# bug fix: too many messages to applet console
2149#
2150#  Note: planes, axisAngles, and quaternions are all saved as Token.point4f
2151#  axisAngle() and quaternion() are both processed to quaternion format
2152#  {x y z w} where w = cos(theta/2) and {x y z} = sin(theta/2)*unitNormal
2153#  quaternions are always fixed so that cos(theta/2) > 0 -- that is, so that
2154#  the reported theta (q %-2) is in the range [0, 180]
2155#  This is important. One can also get a directed theta based on a
2156#  specified axis using q % {x y z w}. w is ignored; x y z is the
2157#  axis to dot with the quaternion normal in order to switch the
2158#  sign of theta if that value is negative.
2159#
2160# new feature: show atom(s)
2161# new feature: show group(s)
2162# new feature: show selected
2163# new feature: draw {point} {plane}
2164# new feature: draw vector {point} {plane}
2165# new feature: draw arrow {point} {plane}
2166# new feature: q = axisAngle({x y z}, theta)
2167# new feature: q = axisAngle(x, y, z, theta)
2168# new feature: q = axisAngle("{x y x theta}")
2169# new feature: q = quaternion("{x y z w}")
2170# new feature: rotate @{quaternion(....)}
2171# new feature: rotate @{axisAngle(....)}
2172# new feature: rotate quaternion {x y z w}
2173# new feature: rotate axisAngle {x y z theta}
2174
2175# new feature: {point1} == {point2} if distance < 0.000001
2176# new feature: {quaternion} == {quaternion2} if distance < 0.000001
2177# new feature: float1 == float2 if |float1 - float2| < 0.000001
2178
2179# code: refactoring and simplification of rotate/spin
2180# code: threads named
2181
2182# bug fix: hover will find atom in hidden frame.
2183# bug fix: ellipsoid translucency not saved in state.
2184# bug fix: local assignment var x = array() followed by x[n] = ... does not work
2185# bug fix: f(x[i],x[j]) selects only x[j], not both x[i] and x[j]
2186# bug fix: quaternion frame "n" recognizes file-based H atoms on N for frame definition
2187
2188# -----------------------------------------------------------------------------
2189
2190#version=11.5.44
2191
2192# bug fix: Java exception with write(quaternion) instead of write("quaternion")
2193# bug fix: set picking spin did not enable draw spin/picking
2194# bug fix: _applet variable not initializing properly
2195# bug fix: math calculation .xyz, .color averages broken in 11.5.42
2196# bug fix: select @x broken in 11.5.43
2197# bug fix: integer addition not remaining integer
2198
2199# -----------------------------------------------------------------------------
2200
2201#version=11.5.43
2202
2203# bug fix -- if last helix is last atom, SHOW STRUCTURE fails to identify it.
2204#
2205# new feature/feature change:
2206#
2207# selectX is no longer necessary. Simply use
2208#
2209#   select {atomExpression} (property expression)
2210#
2211# with no "x." An implied variable "_x" can be used explicitly:
2212#
2213#   select {*} (straightness < 0.995) # does not round
2214#   select {*.ca} (atomY < atomX)
2215#   select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi))
2216#
2217# new feature: quaterion % point4f --- "thetaDirected" --
2218#   point4f is {x, y, z, w} (w ignored), where {x y z} is a
2219#   preferred direction.
2220#   Returns a point4f angle-Axis equivalent with x, y, z the normal for the quaternion
2221#   rotation and w = theta for the rotation, where the normal and theta are chosen
2222#   to be directed with a positive dot product between the input {x y z}
2223#   vector and the output {x y z}.
2224#
2225# thus, because the negative angle switches the normal:
2226#
2227#   print quaternion({1 0 0}, -20) % 1 ==> {-1 0 0}; %1 ==> 20
2228#
2229# but % {1 0 0 0} forces the angle associated with {1 0 0} to be reported
2230#
2231#   print quaternion({1 0 0}, -20) % {1 0 0 0} ==> {1 0 0 20}
2232#
2233# bug fix: POV-RAY output of quadrilaterals.
2234
2235# new feature: Ramachandran "r" --- includes third (Z) axis quaternion r difference2 X component equivalent
2236
2237# bug fix: quaternion definition with dot-product check not effective -- removed
2238# bug fix: quaternion construction from matrix error
2239#
2240# new feature: _applet boolean
2241#
2242# new feature: extended quaternion math
2243#
2244#   q = quaternion({x y z}, angleDegrees)
2245#   q = quaternion(q0, q1, q2,q3)
2246#   q = {qx, qy, qz, qw}
2247#
2248# returning component values:
2249#
2250#   q.x, q.y, q.z, q.w
2251#
2252# note that the Point4f equivalent stores w LAST, even though it is "q0"
2253# because the Java Quat4f() and Point4f() both do that as well. We're just
2254# being consistent with other Java use.
2255#
2256# Modulus operator for extended information retrieval:
2257#
2258#   (q%0) -- q0 (w)
2259#   (q%1) -- q1 (x)
2260#   (q%2) -- q2 (y)
2261#   (q%3) -- q3 (z)
2262#   (q%-1) -- the vector {q1, q2, q3}
2263#   (q%-2) -- theta
2264#   (q%-3) -- equivalent rotational frame X-axis
2265#   (q%-4) -- equivalent rotational frame Y-axis
2266#   (q%-5) -- equivalent rotational frame Z-axis
2267#   (q%{x y z})  -- rotational transform of a point or vector based on a quaternion
2268#
2269# thus, for example, (q%{1 0 0}) is the same as (q%-3)
2270#
2271#   (!q) -- quaternion inverse
2272#
2273#
2274# Quaternion right division (difference "dq"):
2275#
2276#   q2 / q1 = q2 * (!q1)
2277#
2278# Quaternion left division (relative difference n):
2279#
2280#   q2 \ q1 = (!q1) * q2
2281#
2282# Examples:
2283#
2284#   q = quaternion({1 1 1},120)
2285#   print "" + (q%{1 0 0}) + " " + (q%{0 1 0}) + " " + (q%{0 0 1})
2286#
2287#   {0 1.0 0} {0 0 1.0} {1.0 0 0}
2288#
2289# new feature: Numerical left division (integer divide)
2290#
2291#   3.6 \ 2 = 1
2292#   3.6 \ 1.3 = 2
2293#
2294# new feature: sqrt(x)
2295#
2296# bug fix: load trajectory for cases with different atom counts.
2297#
2298# experimental: "straightness" defined as 1 - 2 * acos(normal(dq[i]%-1) dot normal(dq[i+1])) / PI
2299# giving a measure proportional to the difference in local helical axis angle
2300# and ranging from -1 (opposite direction) to 1 (same direction) for proteins
2301# -- a work in progress. See
2302#
2303#   load =1d66
2304#   calculate straightness;color straightness
2305
2306# -----------------------------------------------------------------------------
2307
2308#version=11.5.42
2309
2310# code: modified Jmol encoded PDB data output
2311
2312# bug fix: color of NaN float values changed from "center of color scheme" to GRAY
2313# bug fix: connect "_1" was inadvertently dropped in 11.5.26.
2314# bug fix: state script fails to save data for atoms created using the quaternion command
2315# bug fix: axes/boundbox/unitcell dotted not working since 11.5.6
2316# bug fix: spin thread not stopped for applet destroy()
2317# bug fix: quaternion derivative for i/i+1 assigned to i+1 instead of i; now assigned to i
2318# bug fix: quaternion calculation using published algorithms was giving inverted quaternions
2319#
2320# new feature: set PICKLABEL "xxx"  -- allows customized pick reports
2321#
2322#  for example: set pickLabel "%n x = %x, y = %y, z = %z"
2323#
2324# new feature: "quaternion derivative" --> "quaternion difference", which is more
2325# appropriate, we think, with "absolute" and "relative" qualifiers:
2326#
2327#   quaternion absolute difference # in the molecular frame
2328#   quaternion relative difference # in the (local) frame of first quaternion:
2329#
2330#   dq_absolute = q2 * q1_inverse
2331#   dq_relative = q1_inverse * q2
2332#
2333# absolute involves un-doing q1's rotation (making it the reference frame), then applying q2.
2334# relative involves applying q2 (maintaining the original reference frame), then undoing q1.
2335#
2336# new feature: quaternion [w|x|y|z|a|r] [difference][2] [draw]
2337# new feature: draw quaternion [w|x|y|z|a|r] [difference][2]
2338# new feature: write quaternion [w|x|y|z|a|r] [difference][2] [draw]
2339#   and with that: write("quaternion" [,"w"|"x"|"y"|"z"|"a"|"r"][,"difference"|"difference2"][,"draw"])
2340#
2341# new feature: set quaternionFrame "N" -- for solid state NMR PISEMA 15N chemical shift frame
2342#  using alpha = 0 and beta = 17 degrees.
2343#
2344# new feature: select whatever; quaternion draw
2345#  draws x,y,z and n vectors for a quaternion center
2346#
2347# new feature: straightness, defined as:
2348#
2349#   straightness =  2*|n(dq1).dot(n(dq2))| - 1
2350#
2351# where q1 and q2 are quaternions defined generally as:
2352#
2353#     q = frame{ vA, (vC x vA), vC }
2354#
2355# using quaternionFrame "p", which I define as
2356#
2357# protein:
2358#
2359#     vA = C--CA
2360#     vB = C--N[i+1]
2361#
2362# purine:
2363#
2364#     vA = N9--C4
2365#     vB = N9--C8
2366#
2367# pyrimidine:
2368#
2369#     vA = N1--C2
2370#     vB = N1--C6
2371#
2372# Differences dq1 and dq2 are absolute quaternion differences
2373# on the two sides of a residue:
2374#
2375#        dq1 === q[i] * q[i-1]_inverse
2376#        dq2 === q[i+1] * q[i]_inverse
2377#
2378# and n(dq) = the normal vector associated with this quaternion.
2379# Range is from -1 to 1
2380#
2381# applications (note that CALCULATE must be invoked first):
2382#
2383#    calculate straightness # must be invoked first;
2384#    color straightness;
2385#    select straightness < 0.70;   # rounds to nearest hundredth
2386#    selectX {*} x.straightness < 0.995 # does not round
2387#
2388# new feature: "%T" label format for straightness
2389
2390# -----------------------------------------------------------------------------
2391
2392#version=11.5.41
2393
2394# new feature: xyz reader reads partial charge in 5th field
2395# bug fix: carbohydrate popup menu script incorrect
2396# new feature: "load" of Jmol state scripts works same as "script" command
2397#   (file recognized as SPT type and read as a script instead)
2398# bug fix: Jmol Embedded scripts containing script comments /* */
2399# new feature: getproperty menu current
2400# bug fix: 11.5.40 cannot read most state scripts.
2401
2402# -----------------------------------------------------------------------------
2403
2404#version=11.5.40
2405
2406# (with corrected 40_dev draw scale)
2407# new feature: new command:
2408#
2409# selectX {atomExpression} booleanEvaluation
2410#
2411#   same as select() function, but simpler to implement
2412#
2413# new feature: full math on individual atom properties using
2414#  a new function:
2415#
2416#   select(x;{atomexpression};booleanEvaluation)
2417#
2418# for example:
2419#
2420#  x = select(x;{*};x.distance({atomno=3}) / 3 > x.distance({atomno=2}))
2421#  x = select(x;{*.ca};x.phi < select(y; {*.ca}; y.resno = x.resno + 1).phi)
2422#
2423# bug fix: H1 and H3 in DNA are NOT backbone
2424# new feature: quaternion derivative2 (2nd derivative) and quaternion e derivative [experimental]
2425# new feature: draw Vector [x y] or [x y %] {x' y' z'}
2426# new feature: draw [x y] or [x y %] can be incorporated into lines, curves, arrows
2427# bug fix: set picking center should not zoom -- just too annoying
2428# new feature: set echo myecho [x y] and set echo myecho [x y %]
2429# new feature: axes position [x y] and axes position [x y %]
2430#  sets the axes to the x y screen position or percent indicated.
2431# bug fix: echos with active script and a model designation
2432#   and multiple models select even if not displayed because it is not their model
2433#   that is displayed.
2434# bug fix: missing echocallback, scriptcallback, measurecallback "set"able variables
2435# bug fix: "set picking identify" should be equivalent to "set picking ident"
2436# bug fix: popup menu had stereo reversed
2437#
2438# new feature: signed applet shows frank "Jmol-S" which is NOT removable.
2439# possibly to come: signed applet will send confirmation first time it reads a local file?
2440# bug fix: reading .mmol (biological unit) files such as
2441#  http://pqs.ebi.ac.uk/pqs-doc/macmol/1j7n_1.mmol
2442# new feature: frank appears RED in signed applet, and popup about menu identifies the applet as signed.
2443# code: better handling of twin script manager threads
2444# new feature: /*SPLIT*/ in a command string allows it to be processed by
2445#   the two independent processors. (just to isolate javascript from load commands
2446#   for the signed applet
2447
2448# -----------------------------------------------------------------------------
2449
2450#version=11.5.39
2451
2452# new feature: --threaded  option for command processor uses
2453#  a watcher thread to monitor a Vector, allowing the signed applet to open any file
2454#  the signed applet uses this automatically unless there is a
2455#    jmolSetCallback("useCommandThread", "false")
2456#  which overrides the default behavior and disallows reading of files from
2457#  JavaScript.
2458#
2459#  NOTE a limitation: scripts intended for the signed applet that
2460#  contain both load/script commands or the load() function
2461#  CANNOT be combined with the JAVASCRIPT command. This is because
2462#  in that environment, the JAVASCRIPT command must run on the browser's
2463#  JavaScript thread, and the load command -- if crossing server boundaries --
2464#  must NOT run on that thread. I have configured the ScriptManager to
2465#  detect the presence of the word "javascript" followed by a space (exactly that case)
2466#  and if found, use the JavaScript thread instead of the applet thread.
2467#
2468#  Because it might be useful to combine LOAD and JAVASCRIPT (for the equivalent of a
2469#  "file loaded" callback (but see set LoadStructCallback), if a script contains
2470#  the phrase /*SPLIT*/ in upper case, exactly like that, it will be split and then run
2471#  correctly as two independent scripts.
2472#
2473# new feature: _signedApplet boolean is available:
2474#
2475#  print _signedApplet
2476#  if(_signedApplet);
2477#     javascript alert("you are using the signed applet");
2478#  end if;
2479#
2480# bug fix: JmolSimpleViewer caused null pointer exception -- needed setAppletContext()
2481# bug fix: model-based drawing in multiple-model mode using an
2482#  array of points to load causes null pointer exception:
2483#    load cyclohexane_movie.xyz;pts = {C5}.split();print pts;draw @{pts.xyz.sub({1 0 0})} "X"
2484# bug fix: quaternion derivative multiplication order
2485# bug fix: 3D echo text not centering properly with set ECHO myEcho CENTER
2486# bug fix: select _Xx; select unknown
2487# bug fix: better reporting of script commands and comments
2488# new feature: reading COMPND and HEADER records of PDB file
2489# new features for Protein Explorer:
2490# new feature: set messageStyleChime
2491#   -- No atoms selected!
2492#   -- <n> atoms selected!
2493#   -- atom picking:
2494#        Atom: xxx Group: xxx Chain: xxx Model: xxx Coordinates: x y z
2495#   -- script <exiting>
2496#   -- Chime script completed.
2497# new features:
2498#  show info
2499#  show residue(s)
2500#  show chain(s)
2501#  show sequence
2502#  show orientation moveto  # just the moveTo; no comments
2503#  set pdbGetHeader TRUE  # to get the header when loading (for Protein Explorer)
2504# new feature: jmolSetCallback("evalCallback", "someFunction")
2505#  -- overrides _jmol.noEval
2506#  -- canNOT be set using "set evalCallback"
2507#  -- was necessary for Protein Explorer javascript callbacks
2508
2509# -----------------------------------------------------------------------------
2510
2511#version=11.5.38
2512
2513# bug fix: lcaoCartoon naming for multiple centers
2514# bug fix: pm rounding to integer value
2515# bug fix: scaling of draw object for multimodel environment can cause null pointer exception
2516# bug fix: scaling of VECTOR was from center, not origin
2517# bug fix: select n-m:c  chain selection inappropriately case sensitive
2518# bug fix: draw ARROW {atom center} {xyz}  draws arrow the wrong way
2519# bug fix: draw CIRCLE for multiple models
2520# bug fix: application -- "make crystal..." menu item does nothing -- removed
2521# bug fix: zap of quaternion also zaps model inappropriately
2522# bug fix: zap to one model assigns -1 to currentModelIndex instead of 0
2523# new feature: draw CIRCLE [FILL | MESH NOFILL] more intuitive open/filling syntax
2524# new feature: draw VECTOR {atom center} {dx dy dz}
2525# new feature: draw with mixed types processes them in order
2526#   (11.4 does {x,y,z}, then $xxx, then {atomExpression}, then @{{atoms}.split()})
2527# new feature: draw .... ">xxx" first character of title ">" forces title to
2528#   last point, not first
2529# new feature: set quaternionFrame "c" "p" "q"
2530#   - "c" -- CA-C and CA-N, as per Andy Hanson
2531#   - "q" -- peptide plane CA-C and N'-CA' as per J.R.Quine
2532#   - "p" -- peptide plane CA-C and C-N'
2533# new feature: random(a), random(a,b)  where a is lower bound and b is upper bound
2534# new feature: cross(a,b)
2535# new feature: sin(x), cos(x)
2536# new feature: set pdbSequential (default FALSE) for custom PDB files
2537#   -- bypasses inter-group bonding check when creating polymers
2538# new feature: set drawPicking now enables measuring among atoms and DRAW points
2539#   -- not saved -- just transient measurements (see 11.5.46)
2540# new feature: CIF reading of B factors for thermal ellipsoids
2541# new feature: [draw|pmesh|isosurface] xxx* [on|off|delete]
2542#   -- turns on, turns off, or deletes all objects of the type starting with "xxx"
2543
2544
2545# code: refactoring of biopolyer resolver
2546
2547# -----------------------------------------------------------------------------
2548
2549#version=11.5.37
2550
2551# code: faster ellipsoid rendering with precalc radius factors
2552# bug fix: spacefill ADPMIN/ADPMAX using probability ellipsoids
2553#          and ellipsoid size setting (Note -- ellipsoid command
2554#          must be run once prior to setting spacefill
2555# bug fix: reading output from "set showscript 1"
2556# bug fix: ellipsoids for Uiso atoms uses simple r = sqrt(value)
2557# bug fix: ellipsoids for applied symmetry causes odd shapes (s8.cif)
2558# bug fix: security for no mayscript may cause problem with measure callback
2559# bug fix: rocket positions after translateselected
2560
2561# -----------------------------------------------------------------------------
2562
2563#version=11.5.36
2564
2565# bug fix: frame titles not positioning correctly for antialiased display
2566# bug fix: quaternions created with extraneous atom lines
2567# bug fix: select symop not behaving intuitively
2568# code: meshrenderer debug line not removed
2569
2570# new feature: (popup menu) Biomolecules submenu added within title menu
2571
2572# -----------------------------------------------------------------------------
2573
2574#version=11.5.35
2575
2576# bug fix: proper thermal ellipsoid probability measures
2577# code: better garbage collection in relation to JmolAdapter class
2578# bug fix: load FILTER not saved in state
2579# bug fix: application -- undo/redo buttons not disabling
2580# new feature: ZAP clears undo stack
2581
2582# -----------------------------------------------------------------------------
2583
2584#version=11.5.34
2585
2586# bug fix: biomolecule really works this time!
2587
2588# -----------------------------------------------------------------------------
2589
2590#version=11.5.33
2591
2592# bug fix: modelLoader was assigning too much array space for chains
2593
2594# new feature: more load FILTER options:
2595#
2596#     #i   a specific BIOMT transformation
2597#    !#i   not a specific BIOMT transformation
2598#  [XXX]   a specific group ID
2599# ![XXX]   not a specific group ID (e.g. ![HOH])
2600#   *.XX   an atom name, such as .CA
2601#   !.XX   not a specific atom name
2602#    *:X   a chain ID
2603#    !:X   not a specific chain ID
2604#
2605#  Between types, or involving NOT, options are AND'd together
2606#  Within a type not involving NOT, options are OR'd together
2607#  Within a type, a single ! implies all are NOT
2608#  Within a type, a single * implies all are ANY
2609
2610# new feature: load [file info] FILTER "BIOMOLECULE n;NOSYMMETRY"
2611# FILTER "BIOMOLECULE 1" by default now reads the symmetry;
2612#    use load FILTER "BIOMOLECULE 1;NOSYMMETRY" to not read symmetry
2613#
2614# bug fix: ellipsoids for navigation mode and perspective depth
2615# bug fix: PDB biomolecule for many-BIOMT system
2616
2617# -----------------------------------------------------------------------------
2618
2619#version=11.5.32
2620
2621# bug fix: load FILTER "BIOMOLECULE 1;APPLY SYMMETRY" does not read second line of chain list
2622# bug fix: added connections do not save properly in state
2623#
2624# application only: command undo disabled automatically if saving takes more than one second
2625# flag is "set undo TRUE/FALSE"
2626#
2627# new feature: load [file info] FILTER "[filter string]"
2628# new feature: load [file info] FILTER "BIOMOLECULE n"
2629# new feature: load [file info] FILTER "[filter string];BIOMOLECULE n"
2630#
2631# The first format loads only those atoms matching a specific filter or set of
2632# filter terms -- only a crude filter here, only for PDB and mmCIF files:
2633#
2634#   *.XX   an atom name, such as .CA
2635#   *:X    a chain ID
2636#
2637# multiple matches are allowed -- implied AND:
2638#
2639#  load "1sva.pdb" FILTER "*.CA"
2640#
2641# the match IS CASE SENSITIVE; * IS required
2642#
2643# also, "BIOMOLECULE 1" automatically selects for the chains listed for biomolecule 1
2644# in REMARK 350, and APPLY SYMMETRY applies the symmetry as described in those REMARKS
2645#
2646# new feature: isosurface ELLIPSOID id
2647#           AXES {ix iy iz} {jx jy jz} {kx ky kz}
2648#           CENTER {x y z}
2649#           SCALE n.m
2650#           COLOR [translucent [x.y] |opaque] [color]
2651#           ON|OFF
2652#
2653#   id is a REQUIRED field. AXES is required if a new ellipsoid is being defined
2654#   these axes must be perpendicular
2655#   all other parameters are optional
2656#
2657# bug fix: isosurface ELLIPSOID was disabled
2658# bug fix: Vector4f in Sphere3D causes applet failure, as it includes
2659#          an implicit Vector4d call
2660# bug fix: stronger wireframe for antialiased display and generator (POV-ray)
2661# default change: ellipsoids ball only, no axes
2662# code: better ellipsoid fill method
2663# default change: ellipsoids ball only, no axes
2664
2665# Hungarian translation
2666
2667# -----------------------------------------------------------------------------
2668
2669#version=11.5.31
2670
2671# bug fix: set picking measure distance not doing callback (from 11.5.23)
2672# bug fix: picking echos not working with set antialiasdisplay
2673# default change: ellipsoids are so fast now, can use default "set ellipsoidBall true"
2674# bug fix: set ellipsoidAxisDiameter [int] sets the diameter in milliAngstroms
2675# bug fix: sequence range for missing sequence numbers returns 0
2676#
2677# code: fast ellipsoid ball+fill - axis idea; no luck with POV-ray fill
2678# code: ellipsoid equation/axes conversion in Sphere3D;
2679# code: POV-Ray ellipsoid generation
2680# code: better ellipsoid ball rendering using Shade3D.calcIntensity()
2681# code: 2-fold improvement in rendering ellipsoids by not using getNormix()
2682# code: 4-fold improvement in rendering ellipsoids by using Miguel's no-mesh idea
2683# code: 2-fold improvement in rendering ellipsoids by using 40x40x40 shade cache
2684# code: overall 20-fold improvement in rendering over mesh/normix;
2685# code: full POV-ray support for ellipsoids
2686# code: proper partial derivative normalization of ellipsoid shading
2687# code: refactoring of static quadric surface methods into their own class
2688
2689# -----------------------------------------------------------------------------
2690
2691#version=11.5.30
2692
2693# bug fix: measurement labels for angles do not appear in slab mode (goes WAY back before 10.0)
2694# bug fix: U_iso_or_equiv fields not read in CIF
2695# bug fix: (application) writeTip GT string not defined.
2696# bug fix: (forwared compatibility) invalid state setting (due to later version) now ignored.
2697# bug fix: state for draw arrow in multimodel context delivers wrong coordinates
2698#
2699# new feature: ellipsoid ball rendering tied to "set wireframerotation" option
2700# new feature: set ellipsoidAxisDiameter x.y
2701#
2702# code: better ellipsoid arc rendering using Hermite fill
2703# code: CifReader cleanup
2704
2705# -----------------------------------------------------------------------------
2706
2707#version=11.5.29
2708
2709# new features for ellipsoid rendering:
2710#
2711#  set ellipsoidAxes     [true]
2712#  set ellipsoidArcs     [true]
2713#  set ellipsoidFill     [false]
2714#  set ellipsoidDots     [false]
2715#  set ellipsoidBall     [false]
2716#  set ellipsoidDotCount [200]
2717#
2718#  [dots|stars|spacefill] ADPMIN [percent]
2719#  [dots|stars|spacefill] ADPMAX [percent]
2720#
2721#    /* general logic:
2722#     *
2723#     *
2724#     * 1) octant and DOTS are incompatible; octant preferred over dots
2725#     * 2) If not BALL, ARCS, or DOTS, the rendering defaults to AXES
2726#     * 3) If DOTS, then turn off ARCS and FILL
2727#     *
2728#     * note that FILL serves to provide a cut-out for BALL and a
2729#     * filling for ARCS
2730#     */
2731
2732# -----------------------------------------------------------------------------
2733
2734#version=11.5.28
2735
2736# bug fix: state "set measures angstroms" does not include "select *"
2737# bug fix: labels can change size in returning from antialiasdisplay=true to antialiasdisplay=false
2738# ELLIPSOID command -- with symmetry and crude footballs, including PDB files
2739#  note that for now PDB file reading of ANISOU requires using {x y z} in load
2740#  command, but you can use {1 1 0} to load ANISOU without applying symmetry
2741#
2742# Italian translation
2743
2744# -----------------------------------------------------------------------------
2745
2746#version=11.5.27
2747
2748# bug fix: data CLEAR command nonfunctional
2749# bug fix: "....".trim("xyz") function not properly trimming ANY x,y,z
2750# bug fix: draw OFFSET not working properly
2751# bug fix: PovRAY output of draw objects -- cylinder end caps not considered
2752# bug fix: draw width 0.05 {...} {...} -- line does not properly render
2753# bug fix: data "model"...end "model" saves state without first line if first line is empty
2754# bug fix: "show data types" putting comma in wrong location
2755# new feature: DATA "data2d_xxxxx"..... end "data2d_xxxxx"
2756# new feature: isosurface FunctionXY "data2d_xxxxx" {origin} {ni x 0 0} {nj 0 y 0} {nk 0 0 z}
2757#   allows setting isosurface Z values using a block of data (ni rows by nj columns)
2758# new feature: isosurface FunctionXY "data2d_xyz_xxxx" {origin} {ni x 0 0} {nj 0 y 0} {nk 0 0 z}
2759#   allows setting isosurface values using a block of x y z data, all points for which should be
2760#   on the surface.
2761# new feature: GamessUK reader
2762# new feature: reset VARIABLES (replaces "reset ALL")
2763
2764# -----------------------------------------------------------------------------
2765
2766#version=11.5.26
2767
2768# bug fix: draw adds extra circle in 11.5.25
2769# bug fix: minimization out-of-plane energy calculation error
2770# bug fix: better initial minimization parameters
2771# bug fix: (applet) script termination callback should not be sent to message queue
2772# bug fix: hover appears when a load script leaves an atom very close to (0,0) in the window
2773# bug fix: draw width -1 or draw mesh nofill with very short cylinders creates odd jumpy effect
2774# bug fix: draw CIRCLE for multiple model sets
2775#
2776#
2777# new feature: draw CYLINDER
2778#
2779# Korean translation
2780
2781# -----------------------------------------------------------------------------
2782
2783#version=11.5.25
2784
2785# new feature: draw CIRCLE
2786#
2787#   A circle is a 2D object that behaves like a halo, always appearing circular
2788#
2789#   draw circle {molecule=1} mesh nofill            # around specified atoms
2790#   draw diameter 2.0 circle {atomno=3} mesh nofill # 2.0 angstroms; scales
2791#   draw diameter 100 circle {_O}[1] mesh nofill    # 100 pixels (doesn't scale)
2792#   draw circle {*} fill  # a solid plane in the shape of a circle
2793
2794# -----------------------------------------------------------------------------
2795
2796#version=11.5.24
2797
2798# new feature: minimization CONSTRAINTS {xx} {xx} [{xx} [{xx}]] x.y
2799# new feature: minimization FIX {atom expression}
2800#
2801#  multiple constraints can be present; one per line input
2802#  minimization CLEAR releases constraints and fixed atoms
2803#  also, minimize ENERGY saves a detailed listing, which can be
2804#  displayed using one of the two following commands:
2805#
2806# new feature: show minimization
2807# new feature: x = getProperty("minimizationInfo")
2808#
2809#  to dump the info to a file:
2810#    minimize
2811#    var x = getProperty("minimizationInfo")
2812#    write VAR x "myfile.out"
2813#
2814# new feature: isosurface MAXSET n # removes larger fragment sets
2815# new feature: isosurface DOWNSAMPLE n # down-factors the number of points in a CUBE file by a factor of n
2816
2817# -----------------------------------------------------------------------------
2818
2819#version=11.5.23
2820
2821# new feature: minimize ENERGY # no stepping
2822# new feature: minimize STEPS n
2823# new feature: minimize CRITERION x.y
2824# new feature: minimize CLEAR # flushes logged info and saved atom info
2825#
2826# new feature: echoCallback
2827# new feature: measureCallback
2828# new feature: minimizationCallback
2829# new feature: scriptCallback
2830# new feature: save/restore coordinates
2831# new feature: getProperty minimizationInfo
2832#
2833# code: more efficient minimize calculation setup; better logging
2834# code: "notify" methods in JmolStatusListener consolidated
2835# code: Tokens organized
2836#
2837
2838# -----------------------------------------------------------------------------
2839
2840#version=11.5.22
2841
2842# bug fix: UFF torsion calculation incorrect
2843# bug fix: UFF.prm not properly recognizing sp2 N in N-oxides
2844# bug fix: minimizer for compounds containing isotopes D and T
2845#
2846# code: eval/compiler error processing update
2847
2848# -----------------------------------------------------------------------------
2849
2850#version=11.5.21
2851
2852# new feature: minimize command -- mostly untested
2853#
2854#   set minimizationSteps 100
2855#   set minimizationRefresh true
2856#   set minimizationCriterion 0.001
2857#   set loglevel 4  # for a very minimal report
2858#   set loglevel 5  # for a summary report
2859#   set loglevel 6  # for a detailed report
2860#   minimize
2861#   minimize stop
2862#   minimize cancel
2863#
2864#
2865# for example:
2866#
2867# load caffeine.xyz
2868# minimizationSteps = 80
2869# minimizationRefresh = true
2870# set loglevel 4
2871# select connected(2) or connected(3) or oxygen and connected(1)
2872# connect aromatic modify
2873# calculate aromatic
2874# set measurementunits pm
2875# measure {_O}[1] {_O}[2]
2876# color measure red
2877# minimize
2878#
2879# new feature: set loglevel 6 allows a "debugHigh" setting
2880#
2881# bug fix: load unitcell {a b c alpha beta gamma} not working (since 11.5.8)
2882
2883# -----------------------------------------------------------------------------
2884
2885#version=11.5.20
2886
2887# bug fix: zap file > 2  multiple models do not properly delete
2888
2889# -----------------------------------------------------------------------------
2890
2891#version=11.5.19
2892
2893# bug fix: null surfaceGenerator causes MO exception
2894# bug fix: isosurface reading/writing JVXL files having insideout keyword
2895
2896# -----------------------------------------------------------------------------
2897
2898#version=11.5.18
2899
2900# bug fix: zap x.y additional work -- connections, isosurfaces
2901# bug fix: zap x.y not correcting Eval variables
2902# bug fix: isosurface user VolumeData not properly loading
2903
2904# -----------------------------------------------------------------------------
2905
2906#version=11.5.17
2907
2908# new feature: delete {atom expression} NEEDS TESTING
2909
2910# bug fix: zap x.y for dots
2911# bug fix: zap {atom expression} for not including all atoms in a model in the selection
2912
2913# -----------------------------------------------------------------------------
2914
2915#version=11.5.16
2916
2917# new feature: zap {atom expression} # zaps models associated with given atoms.
2918#   use "show models" to see what models are present, then zap them with their
2919#   file.model number:
2920#
2921#   zap 1.1,2.1  # these two models deleted
2922#   zap atomIndex=0 # ALL ATOMS IN FIRST MODEL deleted
2923#
2924# Note that file.model numbers do not change after this.
2925# So if initially there were two files loaded
2926#
2927#   zap 1.1
2928#
2929# removes the first model and leaves the second as "2.1"
2930#
2931# NEEDS THOROUGH TESTING, particularly in regard to saving/restoring the state
2932
2933# bug fix: atomChooser not updated for zap
2934# bug fix: isosurface model keyword does not carry on to saved state
2935# bug fix: lcaocartoons do not color properly or get restored from state properly
2936# bug fix: popup menu selection of groups and symmetry operations does not work
2937
2938# menu: internationalization of "Monomer" and "Shapely"
2939# bug fix: mol2 reader cannot read files with single-line comments
2940
2941# -----------------------------------------------------------------------------
2942
2943#version=11.5.15
2944
2945# bug fix: CAChe CSF reader not reading partial charges
2946# bug fix: WebExport with http:// files fails to save file
2947# bug fix: WebExport with local . directory fails to save JmolApplet.jar and Jmol.js
2948# code: refactoring of jmol.app.webexport: adding html subdirectory
2949
2950# bug fix: state saving with rotateSelected spinning spins entire model
2951# bug fix: getproperty("chaininfo") for non-biological model causes null pointer exception
2952
2953# -----------------------------------------------------------------------------
2954
2955#version=11.5.14
2956
2957# bug fix: rotateSelected INTERNAL not adjusting for internal rotation center
2958# bug fix: .max/.min not allowed in context: "select resno=@{{visible}.resno.max}"
2959# bug fix: Parser: "3xxx" read as 3 instead of 0; "3.5xxx" read as 3.5 instead of NaN
2960# application menu: Write state moved to main export menu; Export PDF to image writing
2961# new feature: MODEL/ENDMDL records in write PDB (still no TER records)
2962# bug fix: write PDB format incorrectly writes atoms with 4-length names
2963# bug fix: Spartan SMOL directory reader doesn't assign bonds
2964# new feature: Spartan archive reader now reads aromatic bonding
2965
2966# -----------------------------------------------------------------------------
2967
2968#version=11.5.13 BROKEN FOR XYZ READER
2969
2970# bug fix: Parser: "3xxx" read as 3 instead of 0; "3.5xxx" read as 3.5 instead of NaN
2971# application menu: Write state moved to main export menu; Export PDF to image writing
2972# new feature: MODEL/ENDMDL records in write PDB (still no TER records)
2973# bug fix: write PDB format incorrectly writes atoms with 4-length names
2974# bug fix: Spartan SMOL directory reader doesn't assign bonds
2975# new feature: Spartan archive reader now reads aromatic bonding
2976
2977# -----------------------------------------------------------------------------
2978
2979#version=11.5.12
2980
2981# new feature: four optional defaults for Van der Waals radii:
2982#
2983#  set defaultVDW jmol
2984#  set defaultVDW rasmol
2985#  set defaultVDW babel
2986#  set defaultVDW user
2987#
2988# To set the user variety, first set one of the other sets as a basis
2989# Then add a DATA statement to include the specific elements you want to give
2990# new radii to:
2991#
2992#  set defaultVDW babel;
2993#  DATA "element_vdw" 6 1.7 END "element_vdw";
2994#  DATA "element_vdw" 6 1.7; 7 1.8 END "element_vdw"; # separate using semicolons or new lines
2995#
2996# For full state compatibility, these commands should be given prior to
2997# model loading, as they affect all calculations involving Van der Waals
2998# radii -- except default zoom.
2999#
3000# Now select the user set:
3001#
3002#  set defaultVDW user
3003#  spacefill on
3004#
3005# To delete all user entries:
3006#
3007#  reset VDW
3008#
3009# If user vdw radii are currently set, then this resets the defaults to Jmol.
3010#
3011# new feature: show vdw  shows a listing of the currently set VDW radii
3012#
3013# new feature: integration of star, halo, and spacefill code so all behave the same.
3014#
3015# stars     1.0      # set to a specific angstrom radius
3016# spacefill 100%     # percent of CURRENT vdw set
3017# stars     100%Jmol # percent of Jmol standard
3018# stars     50%Babel # percent of Babel standard
3019# spacefill 5%Rasmol # percent of Rasmol standard
3020# spacefill 30%User  # percent of User-defined values (or CURRENT if not defined)
3021# spacefill +1.2     # angstroms added to current vdw scheme
3022# halos     50%Jmol  # -- halos also have an added bit to make sure they are visible
3023# spacefill 250      # RasMol 250 units/Angstrom units still
3024# spacefill -20      # neg numbers same as percentages: 20% here, using current vdw set
3025# stars     @{x+0.1} # math OK
3026# spacefill @x%      # make sure x comes out integer, otherwise % is ignored
3027#
3028# note that dots do not have a %Jmol option:
3029#
3030# dots   30     # syntax already assumes percent for dots using an integer
3031#
3032#
3033#
3034# see src/org/jmol/_documents/vdw_comparison.xls
3035
3036# -----------------------------------------------------------------------------
3037
3038#version=11.5.11
3039
3040# bug fix: save/restore of atom data incorrect when user has set propertyAtomNumberField or propertyDataField
3041# bug fix: functions, save/restore state were disabled by bug in 1.5.8
3042# bug fix: command "test()" where test() is a user-defined function causes array-out-of-bounds error
3043# bug fix: undocumented .vdw atom property was equivalent to .valence
3044# bug fix: GAMESS reading of F orbital order incorrect
3045
3046# new feature: settable Van der Waals radius using {carbon}.vanderwaals = 1.7
3047#  or using DATA "property_vanderwaals"
3048# new feature: DATA "property_x i j" .... END "property_x i j"
3049#   overrides default propertyAtomNumberField (i) and propertyDataField (j)
3050# new feature: State save of property_xxx  now in easily readable Jmol Data Format
3051
3052# -----------------------------------------------------------------------------
3053
3054#version=11.5.10
3055
3056# NOTE: REMOVED FROM SERVICE -- see 11.5.11
3057# bug fix: ISOSURFACE LIST command requires current isosurface
3058# bug fix: JVXL writing does not properly save pocket cavities or minsets
3059# bug fix: DATA command assigning property to last atom in structure fails
3060
3061# -----------------------------------------------------------------------------
3062
3063#version=11.5.9
3064
3065# NOTE: REMOVED FROM SERVICE -- see 11.5.11
3066# bug fix: Gaussian reader not considering possibility of cartesian D and spherical F
3067# bug fix: ADF reader not reading coordinates for newer ADF output
3068
3069# -----------------------------------------------------------------------------
3070
3071#version=11.5.8
3072
3073# NOTE: REMOVED FROM SERVICE -- see 11.5.11
3074# bug fix: lines starting with @{ redefine "{"
3075# bug fix: echo offsets do not correct for window position
3076# bug fix: menu reports too many chains
3077# new feature: menu includes all standard color scheme options
3078# new feature: inline math @{x+3} extended to all commands
3079# new feature: .sub(), .add(), .mul(), .div() extended to all operand types
3080
3081# -----------------------------------------------------------------------------
3082
3083#version=11.5.7
3084
3085# bug fix: explicit "SELECT NONE" must be given for label defaults to be set
3086
3087# bug fix: menu select element missing SELECT command
3088# bug fix: for delayed font scaling animation using the font command and antialias display
3089
3090# -----------------------------------------------------------------------------
3091
3092#version=11.5.6
3093
3094# bug fix: HETATM atoms not automatically bonded to nearby ATOM atoms
3095# bug fix:  setParameterValue("perspectiveDepth",perspectiveDepth);
3096
3097# bug fix: sets offset based on imageFontScaling, not overall font scaling
3098# bug fix: multiline labels not positioned properly with offset 0 0
3099# bug fix: labels not scaling properly
3100# new feature: label "scaleReference" if > 5.0 is taken to be a reference zoom setting
3101#   saying "make the font size X at a zoom of Y"
3102# bug fix: labels not scaling properly when in script with file load
3103# bug fix: labels not appearing in contrast when given same color as background
3104# bug fix: fixes applet memory leak in relation to consoles
3105
3106# -----------------------------------------------------------------------------
3107
3108#version=11.5.5
3109
3110# bug fix: fixes applet memory leak due to
3111#   platform objects/delay threads not being destroyed
3112
3113# new feature -- syncCallback -- intercepts messages that would otherwise go to applets for syncing
3114#   when syncCallback is set to a JavaScript function name, that function
3115#   intercepts the sync message and can pass it on (by returning it),
3116#   consume it (by returning an empty string ""), or modify it as desired.
3117#   this allows, for example, monitoring of orientation information so that
3118#   zoom sliders and such can accurately portray their values
3119
3120# -----------------------------------------------------------------------------
3121
3122#version=11.5.4
3123
3124# bug fixes -- font scaling
3125
3126# new feature: Spartan input files read as Odyssey format
3127#
3128# new feature: set delayMaximumMs  sets the maximum delay that scripts will use, primarily for testing scripts
3129# new feature: set fontScaling TRUE/FALSE
3130# new feature: font [type] [size] [face] [weight] [scaleReference (Angstroms per pixel)]
3131#  atom labels and 3D echos then scale properly.
3132#  note that the current zoom affects the label size.
3133# bug fix: image writing does not scale fonts properly.
3134# bug fix: antialias of images not functionally independent of antialias for display
3135# bug fix: label offset doubled for multiline labels with left/right/center alignment not specified
3136# bug fix: default label offsets mangled by default Front/Group
3137
3138# new feature: getProperty("appletInfo") includes a key "registry" for which
3139#   the value is the static Hashtable htRegistry
3140#    //note that the following JavaScript retrieves the registry:
3141#        var registry = jmolGetPropertyAsJavaObject("appletInfo").get("registry")
3142#    // and the following code then retrieves an array of applets:
3143#        var AppletNames = registry.keySet().toArray()
3144#    // and the following sends commands to an applet in the registry:
3145#        registry.get(AppletNames[0]).script("background white")
3146
3147# new feature: reading of Spartan spinput files (uses Odyssey reader)
3148
3149# bug fix: PDB files with missing amino acid carbonyl O cause exception
3150
3151# -----------------------------------------------------------------------------
3152
3153#version=11.5.3
3154
3155# bug fix: check if the file is CIF before PDB
3156# bug fix: color hbonds translucent
3157# bug fix: state: calculate hbonds not saved
3158# bug fix: state: calculate surfaceDistance WITHIN (({....}))
3159#  missing outermost parentheses
3160# bug fix: state: selection state "end function" missing semicolon
3161# bug fix: isosurface lcaoCartoon "pz" translucent not setting both lobes translucent
3162# bug fix: color isosurface when isosurface is an lcaoCartoon only colors one lobe
3163# bug fix: save state for "color SelectionHalos"
3164
3165# -----------------------------------------------------------------------------
3166
3167#version=11.5.2
3168
3169# Translation update: Estonian
3170
3171# new feature: "getProperty FILECONTENTS ." in the context of
3172#  a zip directory defaultDirectory
3173# new feature: zip file reading extended to write FILE
3174#
3175# bug fix: unclosed InputStream readers in zip file accessing
3176#
3177# new feature: allows zip files to be designated as default directoriesusing
3178#    set defaultDirectory "myfile.zip"
3179#  and then using a filename
3180# bug fix: unclosed readers in Pmesh, FileManager, Jvxl
3181# new feature: pmesh BINARY "filename"
3182#   BINARY keyword is optional, but recommended for efficiency
3183#
3184#       *  4 bytes: P M \1 \0
3185#       *  1 byte: \0 for bigEndian
3186#       *  3 bytes: reserved
3187#       *  4 bytes: (int) vertexCount
3188#       *  4 bytes: (int) polygonCount
3189#       * 64 bytes: reserved
3190#       *  ------------------------------
3191#       *  float[vertexCount*3]vertices {x,y,z}
3192#       *  [polygonCount] polygons
3193#       *  --each polygon--
3194#       *    4 bytes: (int)nVertices (1,2,3, or 4)
3195#       *    [4 bytes * nVertices] int[nVertices]
3196#       *
3197#       * note that there is NO redundant extra vertex in this format
3198#
3199#  see little-endian example at http://chemapps.stolaf.edu/jmol/docs/misc/pmesh.bin
3200#  and http://chemapps.stolaf.edu/jmol/docs/misc/pmesh.bin.txt
3201
3202# -----------------------------------------------------------------------------
3203
3204#version=11.5.1
3205
3206# bug fix: quaternion for nucleic acids
3207# code: inefficiencies in Quaternion code
3208# new feature: within(structure,atom_expression)
3209#  for proteins, just the helix or turn or sheet containing those atoms;
3210#  for nucleic acids, just the chain
3211
3212# bug fix: wing vectors for biopolymers
3213#   not containing O improperly drawn for sheets
3214#   and, in the case of set traceAlpha TRUE (the default), helixes
3215# bug fix: translateSelected/rotateSelected does not move cartoons
3216# bug fix: tainted occupancy not saved in state
3217# bug fix: biopolymers have wrong wing vectors (from 11.3.62)
3218# bug fix: restore of state does not reset user-defined atom properties
3219# code: refactoring Atom and AtomCollection
3220
3221# -----------------------------------------------------------------------------
3222
3223#version=11.3.66
3224
3225# bug fix: CIF reader not skipping loops with load of a specific model of a model set
3226# bug fix: explicit format LOAD "XXX::whatever" extended to XML variants
3227# code: adapter/readers/more/JmolDataReader.java removed.
3228# code: adapter/smarter/Resolver.java cleaned up in relation to XML and DOM options
3229
3230# -----------------------------------------------------------------------------
3231
3232#version=11.3.65
3233
3234# full run of monster_script.spt
3235
3236# bug fix: pmesh test1 "inline" "1 {2. 0. 0.} 0"  disallowed, but that should be OK
3237# bug fix: isosurface gridpoints "ch3cl_map.jvxl" -- gridpoints for jvxl files that are already mapped
3238# bug fix: isosurface lcaoCartoon "type" {atomExpression}
3239
3240# files: JUnitTest for scripts --
3241#  monster script in run directory tests scripts now uses
3242#    files at http://chemapps.stolaf.edu
3243#  all monster scripts made the same
3244#  tests/scripts/check_performance removed.
3245#
3246# bug fix: better checking of scripts involving full run of all scripts
3247# bug fix: defaultDirectory for Jmol application not usable for http:// protocols
3248# bug fix: load "files" not properly loading zip files or files involving default directory
3249
3250# -----------------------------------------------------------------------------
3251
3252#version=11.3.64
3253
3254# bug fix: version integer missing sometimes
3255# bug fix: isosurface with trajectories
3256#  interesting that if 1.1 and 1.2 are trajectories you can do
3257#    frame 1.2; isosurface select(*/1.1) sasurface
3258#  this creates an isosurface for model 1.2 that uses the atomic coordinates of model 1.1!
3259#
3260# bug fix: isosurface MEP mapped to plane not exactly reproduced in JVXL
3261# bug fix: isosurface COLOR RANGE by itself does nothing -- changed to use full range
3262# new feature: isosurface COLOR RANGE ALL added as an equivalent to COLOR RANGE with no numbers
3263
3264# -----------------------------------------------------------------------------
3265
3266#version=11.3.63
3267
3268#  -- all functionality in new.htm, new2.htm, and new0.htm tested --
3269
3270# bug fix: draw/isosurface/etc. on/off/delete should operate on all objects
3271# bug fix: display within(plane...)
3272# bug fix: select site=n  broken
3273# bug fix: quaternion/ramachandran/model can show up together if user issues FRAME ALL
3274# bug fix: frame 1.2 when file 1 only has one model displaying all files
3275# bug fix: quaternion x reports wrong frame number
3276# bug fix: selectionHalo status and color not in state
3277# bug fix: color selectionHalos none
3278# bug fix: polyhedra .... translucent 0.3 green
3279# bug fix: moveto alternative format missing necessary 0 rotationRadius requirement
3280#   moveTo ...... {atomExpression} 0 [zoomOrZoomFactor]
3281#   where [zoomOrZoomFactor] is n, +n, -n, *n, /n, or 0 (to indicate fill screen)
3282# bug fix: subsets not properly handling restrict
3283# bug fix: models with turns crash jmol if not first model loaded
3284# bug fix: quaternion command by itself not switching to most recent quaternion
3285# bug fix: background color off when not white and ends in "FF"
3286# bug fix: print {atomSet}.color  -- .color returning bounding box!
3287# bug fix: multiframe draw with labels different for each frame not properly saved in state
3288# bug fix: within upgrade for boundbox: within(boundbox), within(boundbox,atomExpression)
3289
3290# -----------------------------------------------------------------------------
3291
3292#version=11.3.62
3293
3294# bug fix: calculate hbonds for trajectories
3295# code: distinction between file-derived or connected hbonds and calculated hydrogen bonds
3296# bug fix: calculate hbonds broken in 11.3.58 (missing model field in BioPolymer)
3297# bug fix: Jmol not putting structures in for all models in a PDB file
3298# bug fix: calculate polymers (never documented) not necessary -- calculate structure suffices
3299# bug fix: calculate structure updated for ignoring jmolDataFrames and using currently selected atoms
3300# webexport help instructions fix to be consistent for local testing.
3301
3302# -----------------------------------------------------------------------------
3303
3304#version=11.3.61
3305
3306# bug fix: multifile cartoons improperly rendering in all frames
3307# bug fix: dipoleScale not saved in state
3308# bug fix: quaternions broken in 11.3.58
3309# code: Closest class deleted
3310# code: Quaternion class moved to modelsetbio
3311# code: dipoles moved to shapespecial
3312# bug fix: select 1.5 in trajectory context should switch to that set of coordinates
3313# bug fix: draw not colored
3314# bug fix: mousewheel too low power
3315# bug fix: select */4 when "4" is inappropriate returns all instead of none
3316# bug fix: memory leak in applet due to mouse/hoverwatcher listeners
3317# bug fix: applets not self-destroying when window containing them close
3318# bug fix: rotate commands not sent to other applets when set syncScript if OFF
3319
3320# -----------------------------------------------------------------------------
3321
3322#version=11.3.60
3323
3324# bug fix: more work on trajectories in a multimodel context
3325
3326# bug fix: quick fix for disabling popup menu under Java 7 where permissions are not granted
3327
3328# bug fix: load trajectory extended to multifile context
3329#  in which case "select 1.3", if file 1 is a trajectory, not only
3330#  selects that file, but also sets the trajectory to 1.3.
3331#  So a "select" of a trajectory also affects the display.
3332#  This makes "select" in a trajectory context similar to "display"
3333#  but doesn't require listing of all the models.
3334
3335# -----------------------------------------------------------------------------
3336
3337#version=11.3.59
3338
3339# bug fix: load append not saved in state properly
3340# code: trajectory command (never documented) removed
3341# bug fix: draw ... nofill mesh  properties not processed
3342# bug fix: draw DIAMETER N not properly functioning for curves or arrows
3343# new feature: draw DIAMETER X.Y allows setting diameter of points, lines, curves, and arrows to Angstroms
3344
3345# bug fix: 11.3.58 can't set bond diameters
3346# bug fix: with set syncMouse, target applet sets syncMouse off inappropriately
3347
3348# -----------------------------------------------------------------------------
3349
3350#version=11.3.58
3351
3352# bug fix: set mouseSync with sync * ON disabling sync but not reenabling it
3353# bug fix: spin on missing in final state function.
3354# bug fix: select within (3.3, {-1 1 1}) does not work with negative integer coordinate
3355# bug fix: trajectories were not fully implemented
3356# code: refactoring of ModelSet and related classes for trajectories
3357# code: trajectories implemented as independent models
3358# code: debug comments in AppletRegistry
3359
3360# new feature: trajectory command no longer necessary -- deprecated (was in 11.2)
3361
3362# -----------------------------------------------------------------------------
3363
3364#version=11.3.57
3365
3366# bug fix: revised sync commands
3367# new feature: set syncScript; set syncMouse
3368# sync ON; set syncMouse false; set syncScript false    Tracks orientation only
3369# sync ON; set syncMouse true;  set syncScript false    Sends mouse events only
3370# sync ON; set syncMouse false; set syncScript true     Sends script commands only
3371# sync ON; set syncMouse true;  set syncScript true     Sends both mouse events and script commands
3372#
3373# bug fix: "load trajectory" broken
3374
3375# -----------------------------------------------------------------------------
3376
3377#version=11.3.56
3378
3379# bug fix: isosurface map of properties lost in 11.3.54
3380# new feature: set c?  -- displays all Jmol parameters starting with "c" or "_c"
3381#              set _?  -- displays all read-only variables (starting with "_")
3382# new feature: formatted gOpenMol formatted plt volume data reader.
3383# new Jmol.js for 11.4
3384
3385# -----------------------------------------------------------------------------
3386
3387#version=11.3.55
3388
3389# bug fix: axes/unitcell improperly slabbing on internal slab
3390# bug fix: XOR returning OR when not a bitset
3391# bug fix: unary minus for planes and points
3392# FEATURE CHANGE: slab REFERENCE removed -- no longer necessary
3393# new feature: set wireframeRotation
3394# code: simplified Logger.debugging flag
3395# bug fix: slab/depth planes not properly constructed
3396# new feature: _slabPlane, _depthPlane variables
3397# code: MUCH simpler slab plane code
3398
3399# bug fix: applet.loadInline(String[] models) messes up
3400#  this involves the fact that Safari will deliver null pointer when it
3401#  mistakenly matches a String[] signature to a String, or vice-versa.
3402#  The solution is to use
3403#
3404#    applet.loadInlineString(String model, String script, boolean isAppend)
3405#
3406#  and
3407#
3408#    applet.loadInlineArray(String[] model_or_models, String script, boolean isAppend)
3409#
3410#  explicitly
3411# code: refactoring loadInline and interfaces WrappedApplet and JmolAppletInterface
3412# bug fix: scroll wheel with synchronization does not track properly
3413
3414# -----------------------------------------------------------------------------
3415
3416#version=11.3.54
3417
3418# bug fix: JVXL writing/reading of simple plane writes precision color flag
3419
3420# new feature: (isosurface) reading of XPLOR ascii electron density map data
3421
3422# bug fix: reinstating "insideout" isosurface option
3423# bug fix: JVXL writing of lobe, sphere, ellipsoid, hydrogenOrbital
3424# bug fix: loadInline not properly autobonding -- causes null pointer error
3425# bug fix: data ... end model instead of end "model" causes null pointer exception
3426
3427# -----------------------------------------------------------------------------
3428
3429#version=11.3.53
3430
3431# bug fix: symop=0NNN not returning all atoms with translation NNN
3432# code: optimization of algorithm used for load RANGE
3433# modification for load RANGE -x.x (within x.x Angstroms of symop=1555) to be within x.x of the
3434#  box containing symop=1555, not the atoms themselves.
3435# code: cleanup of readers.
3436
3437# bug fix: no special atom checks for PDB symmetry files
3438
3439# bug fix: HallInfo --- Hall term miscalculation OUCH! -- mistken commenting out of code in 11.1.28 March, 29, 2007. revision 7243
3440# bug fix: set measures 0.1 --- solid line does not move.
3441
3442# bug fix: completion of set parameter clean up
3443
3444# -----------------------------------------------------------------------------
3445
3446#version=11.3.52
3447
3448# bug fix: set of many more (but not all) parameters can accept mathematical expressions
3449# bug fix; set strandCount not properly handled
3450# new feature: set strandCountForStrands
3451# new feature: set strandCountForMeshRibbon
3452# note --- set strandCount sets BOTH, but now each is independent
3453
3454# bug fix: quaternion not including chain designation
3455# bug fix: default connections include proper PDB CONECT records
3456
3457# new feature: connect PDB       # just does PDB CONECT connections
3458# new feature: connect PDB AUTO  # PDB CONECT and autobonding
3459
3460# -----------------------------------------------------------------------------
3461
3462#version=11.3.51
3463
3464# bug fix: write FILE not handling binary file formats properly
3465
3466# bug fix: PDB CONECT records not creating bonds for ALL models
3467# bug fix: load =xxxx broken in 11.3.50
3468# bug fix: amino not a subset of protein
3469# bug fix: proteins with just C CA N not recognized as such
3470
3471# code: minor refactoring in org/jmol/util
3472# code: minor refactoring in org/jmol/jvxl
3473# code: minor refactoring in org/jmol/adapter
3474
3475# -----------------------------------------------------------------------------
3476
3477#version=11.3.50
3478
3479# new feature: MOL isotope column read; interpreted for D, T, 11C, 13C, 15N (for now)
3480# bug fix: WebExport not properly accessing files in more complicated situations (pmesh, isosurface, multiple files, etc.)
3481# bug fix: WebExport not allowing variety of local location options
3482
3483# bug fix: return command not allowed in simple context
3484# bug fix: setting perspective model resets unit cell on
3485# bug fix: debug comment in TransformManager
3486# bug fix: hideNotSelected not in state.
3487
3488# -----------------------------------------------------------------------------
3489
3490#version=11.3.49
3491
3492# bug fix: set perspectiveDepth off broken in 11.3.48
3493# bug fix: set scaleAngstromsPerInch not turning off perspectiveDepth
3494# bug fix: scaleAngstromsPerInch not in state
3495# bug fix: _firstFrame/_lastFrame variables mess up state
3496# bug fix: calculate surfaceDistance broken for 11.3.48
3497
3498# new feature: direct reading of MAC Spartan06 directories.
3499
3500# -----------------------------------------------------------------------------
3501
3502#version=11.3.48
3503
3504#
3505# new feature: script "myfile.zip|xxx.spt"
3506#
3507# bug fix: scale3D not working
3508#
3509# new feature: load "myfile.zip|CH3CL.MOL"
3510#   loads a given named model from within a zip file.
3511#
3512# new feature: load "myfile.zip|myfile2.zip|CH3CL.MOL"
3513#   loads a given named model from within a zip file within a zip file.
3514#
3515# these selections override any manifest that might be in a ZIP file.
3516
3517# new feature: print getProperty("fileContents","zipFileName", "subfile", "subFile",...)
3518#  getProperty now allows drilling down through a ZIP file. If no subfile is shown,
3519#  then the directory listing is given:
3520#
3521# print getProperty("fileContents", "data/test.zip")
3522#
3523# CH3CL.MOL
3524# CH3CL~1.MOL
3525# CH3F~1.MOL
3526# CH3OH~1.MOL
3527# CH4~1.MOL
3528# BENZEN~1.ZIP
3529# ENALSP~1.ZIP
3530# WATERV~1.ZIP
3531# JmolManifest
3532#
3533# print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP")
3534#
3535# benzenevib.spardir/
3536# benzenevib.spardir/_locked
3537# benzenevib.spardir/_spartandir
3538# benzenevib.spardir/Document
3539# benzenevib.spardir/M0001/
3540# benzenevib.spardir/M0001/_spartan
3541# benzenevib.spardir/M0001/archive
3542# ...
3543# benzenevib.spardir/SpreadSheet/
3544# benzenevib.spardir/SpreadSheet/SheetData
3545
3546# print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP","benzenevib.spardir/M0001/")
3547#
3548# benzenevib.spardir/M0001/
3549# benzenevib.spardir/M0001/_spartan
3550# benzenevib.spardir/M0001/archive
3551# benzenevib.spardir/M0001/Calculations
3552# benzenevib.spardir/M0001/Commands
3553# benzenevib.spardir/M0001/Geometry
3554# benzenevib.spardir/M0001/input
3555# benzenevib.spardir/M0001/log
3556# benzenevib.spardir/M0001/Molecule
3557# benzenevib.spardir/M0001/output
3558# benzenevib.spardir/M0001/parchive
3559# benzenevib.spardir/M0001/proparc
3560# benzenevib.spardir/M0001/ret_code
3561# benzenevib.spardir/M0001/voutput
3562#
3563# print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP","benzenevib.spardir/M0001/Commands")
3564#
3565# # Verbose Mode: 1
3566# # version: MacSPARTAN '06 129  129 x86/Darwin
3567# # rootKeys: 'OPT' 'HF' '3-21G(*)' '' ''
3568# # new Keys: 'OPT HF 3-21G(*) FREQ '
3569# # ...etc....
3570
3571#
3572# new feature: load "myfile.zip" MANIFEST "...."
3573# new feature: JmolManifest in a zip file directs which files to load and in what order
3574#  JmolManifest is simply a list of files, one per line.
3575#
3576#  Rules include:
3577#
3578#  1) blank lines and lines beginning with # are ignored.
3579#  2) file names are case-sensitive and must be complete, with full path within the ZIP file
3580#  3) files must be on separate lines or separated by vertical bar | marks; no whitespace around names
3581#  4) files may be ZIP files themselves.
3582#  5) some comments are special:
3583#      IGNORE_ERRORS   --- process the file and do not stop if some files are not valid model files
3584#      IGNORE_MANIFEST --- (on the load command line) indicates that the internal ZIP file manifest should be ignored
3585#      EXCEPT_FILES    --- process all files EXCEPT those given
3586#
3587
3588# new feature: show spacegroup "X,Y,Z;-X,Y,Z;..." finds space group associated with specific operations
3589
3590# bug fix: multimodel files could have connected atoms between different models.
3591
3592# bug fix: application animation frame button reset always goes to frame 1
3593
3594# new feature: load xxx.zip n   # where n is the desired file, starting with 1
3595# new feature: Spartan06 file format reader
3596# new feature: ZIP file reading for multiple models
3597
3598# bug fix: antialiasDisplay changes during spinning (or any rendering) causes null pointer error
3599
3600# -----------------------------------------------------------------------------
3601
3602#version=11.3.47
3603
3604# coding efficiencies in atom iterators
3605
3606# vast speed up of smoothed isosurface map properties
3607
3608# deprecated: calculate surface (equates to surfaceDistance WITHIN)
3609# deprecated: calculate surface {...} (equates to surfaceDistance FROM)
3610
3611# new feature: calculate surfaceDistance FROM {atomExpression}
3612# new feature: calculate surfaceDistance WITHIN {atomExpression}
3613
3614# -----------------------------------------------------------------------------
3615
3616#version=11.3.46
3617
3618# new feature: calculate surface {atomExpression}
3619
3620# new feature: set isosurfacePropertySmoothing # default TRUE
3621#  smooths the coloring for isosurface ... map property ...
3622
3623# bug fix: "isosurface select() map property xxxx" array out of bounds error
3624# bug fix: color bonds CPK not working
3625# new feature: calculate polymers
3626# allows recalculation of polymers after connections are made/broken
3627
3628# bug fix: tRNA, rRNA with abnormal distances do not connect biopolymers
3629# bug fix: Jmol math getProperty() doesn't pass parameter in some cases
3630# code: refactoring,optimizing Escape.toJSON() and Escape.toReadable()
3631# bug fix: isosurface CAP not turned off prior to map sasurface
3632# bug fix: adjustable boundbox in multimodel context not specific to model of selected atoms
3633# bug fix: Jmol math (x[2])[3]  indistinguishable from x[2][3]
3634
3635# -----------------------------------------------------------------------------
3636
3637#version=11.3.45
3638
3639# bug fix: new boundbox command with small numbers of atoms
3640# bug fix: state not saved for coloring elements
3641# bug fix: state not properly representing deleted bonds
3642# bug fix: setColix not clearing shading in certain cases
3643
3644# new feature: Jmol math {atomset}.boundbox returns list of center, vector, corner0, corner1 for this set of atoms
3645# code: ModelSet.BoxInfo abstraction/refactoring
3646
3647# -----------------------------------------------------------------------------
3648
3649#version=11.3.44
3650
3651# new feature: Jmol math getProperty() function
3652#  allows FULL math access to ALL getProperty types
3653#
3654#  syntax: getProperty(propertyType, qualifier, item, item, item,...)
3655#
3656# examples:
3657#
3658# print getProperty("modelInfo")
3659# print getProperty("boundboxInfo")
3660# print getProperty("boundboxInfo", "center")
3661# print getProperty("boundboxInfo", "vector")
3662# print getProperty("atomInfo",{atomno=3})
3663# print getproperty("bondInfo",{*},2,"atom1")
3664# print getProperty() # displays list of possibilities
3665# print getproperty("polymerinfo",{*},"models",2,"polymers",1,"monomers",39,"atomIndex2")
3666#
3667# For many property types, the qualifier is an atom set
3668# If the atom set is not given, those properties default to {visible}
3669# For "stateInfo", the qualifier is string: "fileState", "modelState", etc.
3670# Items may be integers or string-based keys
3671# Integer items follow the rules of Jmol math selectors:
3672#  1 first item, 0 last item, -1 next to last item, etc.
3673
3674# code: set instead of = in measures and labels state
3675
3676# bug fix: POVRAY and other buttons aren't enabled when there are no atoms but instead draw objects and isosurfaces
3677# bug fix: new label fonts not loaded when labels resized
3678
3679# bug fix: nuisance "render mesh error" console report
3680
3681# new feature: boundbox {atomExpression} [on|off]
3682# sets the bound box around the specified atom expression
3683# default ON/OFF is to NOT change current setting
3684
3685# new feature: boundbox {point or expression} {vector to corner} [on|off]
3686# sets the bound box to be centered with a given size based on a vector to a corner
3687
3688# new feature: boundbox corners {point or expression} {point or expression} [on|off]
3689# sets the bound box to encompass the two corner points
3690
3691# strangely enough this allows setting the boundbox to a 2D or 1D box
3692
3693# new feature: show boundbox gives valid boundbox commands and volume
3694
3695# bug fix for bioshapes visible outside of current visible frame set
3696
3697# bug fix for selecting atoms of atomsets using [-n] or [0]
3698
3699# isosurface POINTSPERANGSTROM synonym for RESOLUTION
3700#  also reported in show isosurface
3701
3702# bug fix: more natural mouse SHIFT-RIGHT behavior.
3703
3704# new feature: isosurface CAP [plane definition]
3705
3706# caps the isosurface at the designated plane.
3707# Specifically for molecular/solvent-type isosurface.
3708# [plane definition] can be {x y z w} or any combination of
3709# three {x y z} points, draw point references, or atom expressions
3710
3711# -----------------------------------------------------------------------------
3712
3713#version=11.3.43
3714
3715# bug fix: select statement comparisons of negative decimal properties to "-1" (not "-1.0") causes none found
3716
3717
3718# new feature: Back to "SET" for state definitions of Jmol parameters.
3719
3720# bug fix: Strings too long in state can cause Eclipse "infinite loop" bug
3721#
3722# solution is a new feature:
3723
3724# new feature: "\" at the end of a line marks a continuation of that line
3725
3726# bug fix: assigning a negative value to a dataAtomNumberField value caused BitSet.set() exception
3727
3728# bug fix: Jmol parameter setting syntax too loose
3729
3730# The following statement was allowed:
3731
3732#   pickCallback = myfunction
3733
3734# OK, so that might look good, but it evaluates to
3735#
3736#  pickCallback = ""
3737#
3738# since the VARIABLE myfunction has not been defined.
3739#
3740# Solution: Don't allow the syntax
3741#
3742#  [jmolParameter] = [Token.identifier]
3743#
3744# the following is OK:
3745#
3746#  [jmolParameter] = "some string"
3747#
3748# the following is preferred:
3749#
3750#   SET [jmolParameter] [value]
3751#
3752
3753# bug fix: antialias with translucent but antialiasTranslucent = false; labels, text, echos, hover, picking, out of alignment
3754# bug fix: negative formal charges
3755
3756# new feature: set drawPicking TRUE
3757# then reports picking of draw objects as a JavaScript array:
3758# [  "draw","[drawID]",[modelIndex],[vertexIndex],[x],[y],[z]  ]
3759# this goes to the pickCallback function as the second parameter,
3760# with the first parameter (normally the atomIndex) being -2.
3761
3762# bug fix: write coord mol   not working
3763
3764# new feature: connect (...) (...) aromatic auto
3765# similar to calculate aromatic, except it's isolated to this set of connections; implicit modifyOnly
3766# can be used in place of
3767#  select *; calculate aromatic
3768#
3769# code: refactoring of BondCollection.makeConnections
3770#
3771# bug fix: connect (..) (..)  # with implicit "single" causes state to use "partial 0"
3772
3773# new feature: shadows can be activated again via noShadows parameter in .pov file
3774
3775# -----------------------------------------------------------------------------
3776
3777#version=11.3.42
3778
3779# bug fix: new frame title and state
3780
3781# new feature: set echo [echoID] MODEL [model number]
3782
3783# bug fix: select by itself not working; oy. Since at least 11.0
3784
3785# bug fix: ramachandran/quaternion fix for assignment of structure
3786# bug fix: isosurfaces not taking their default name properly
3787
3788# new feature: frame title "this a title for THIS frame only"
3789
3790# bug fix: small fix for povray cap at back side
3791# bug fix: overly long titles now again substringed in the popup menu.
3792
3793# bug fix: memory leak in merge -- models[i].modelSet causes modelSet to not finalize.
3794# bug fix: quaternion
3795
3796
3797# bug fix: set xxxCallback not allowed
3798
3799# new feature: **** Jmol Embedded Script **** recognized in /* ... */ comments and /** ... **/ super-comment blocks
3800# if found, ONLY this text is processed and all other text in the file is ignored.
3801
3802# -----------------------------------------------------------------------------
3803
3804#version=11.3.41
3805
3806# bug fix: math operations with bond bitsets; % and + operating on arrays
3807# bug fix: _set variable definition removed
3808
3809# new feature: .type math function
3810
3811# new feature: Jmol math allows direct string replacement in select atom expressions:
3812#  x = "atomno=3"
3813#  select @x  #  or select @{x}
3814#  select @{x + 3} # selects atomno=33
3815#  x = array("atomno<10","atomno>20")
3816# select @x   # OR of the list elements
3817# select @{x[2]} # just element 2 of x (atomno>20)
3818# select @x[2]   # same as {@x}[2]
3819
3820
3821# new feature: set atom properties using an array instead of a DATA statement:
3822# (was introduced in 11.3.29, but not fully articulated)
3823# {*}.x = array(2,3,4,5,6);
3824# {atomno<=3}.color = array("red","green","blue")
3825# {*}.property_mydata = array(1.0,5.5,4.4,3.3);
3826# {atomno < 4}.xyz = array({3 4 5},{4 5 6},{5 6 7})
3827# if the array is shorter than the number of atoms selected, then
3828# only that number of atoms are affected
3829
3830# new feature: set atom properties from space-separated string:
3831
3832# {atomno < 5}.property_mydata = "1.0 5.5 4.4 3.3";
3833
3834# -----------------------------------------------------------------------------
3835
3836#version=11.3.40
3837
3838# new feature: Ramachandran/Model commands switch between plot and model
3839#  -- one Ramachandran plot per model
3840#  -- axes labels and special hover label for Ramachandran plots
3841#  -- Ramachandran saved in state
3842
3843# bug fix: Overlapping CPK at a slab now correct for up to 10.000 clipped atoms.
3844
3845# bug fix: @{} for within(1.0,point,@{....})
3846
3847# new feature: set xxxx where xxxx is not a Jmol variable causes ERROR
3848
3849# code: privatized Token to avoid null value problem in Eval.statementAsString()
3850
3851# POV-Ray clipping coding minor tweak
3852# POV-Ray fix for number formatting width > 999
3853
3854# new feature: model-based parallel array calculations:
3855#   x = {atomno=3}.split()  # a list, one element for each model
3856#   draw @{x.xyz.sub({1 0 0})} # a set of points, one per model
3857
3858# new feature: point3f in array():
3859#  xlist = array({1,2,3}, {1,1,0});print xlist[1]+{1 0 0};
3860# bug fix: draw @{x - {1 0 0}}
3861# bug fix: antialias with set picking draw
3862# bug fix: draw object text not selective for frame
3863# new feature: draw object title line number corresponds to model number for multi-model draw objects
3864
3865# new feature: matte finish for isosurfaces
3866# remark: matte finish replaced by adaptable translucent finish (see below)
3867
3868# bug fix: noninteger MO occupancies
3869# bug fix: antialias labels not fully bitmapped
3870# bug fix: RPN processor too limited in nesting level
3871# bug fix: MO processing for Gaussian and PSI3 errors
3872
3873# new feature: MoldenReader (Matthew Zwier <mczwier@gmail.com>)
3874# new feature: MO calculations for spherical orbital basis (Matthew Zwier <mczwier@gmail.com>)
3875
3876# bug fix: slabbed atoms are now capped in povray output.
3877#   Note: In CPK mode atoms overlap, but are capped at the same height.
3878#     there is a priority in Jmol, but not yet clear to me which. The current priority
3879#     in povray is based on the signed distance from the slab to the atom center.
3880# bug fix: povray output of translucent objects now have reduced glare, for
3881#   clarity of the representation and better compatibility with the Jmol viewer.
3882
3883# -----------------------------------------------------------------------------
3884
3885#version=11.3.39
3886
3887# bug fix: antialias causing image to be partial size.
3888# bug fix: hover state not properly showing specific-atom hover labels.
3889
3890# new feature: write FILE (text-files only)
3891
3892#new feature webexport: automatic usage of a different path to the applet for local files to allow testing
3893#  only works for Pop-In template at present.  Required updates to JmolPopin.js and templates.
3894#webexport instruction updated to reflect new feature.
3895
3896
3897# bug fix: antialias adjustments for hover text and background box
3898# bug fix: antialias fix for text color same as background and in front of translucent surface appearing transparent
3899# bug fix: antialias fix for applet
3900
3901# webexport instruction updates.
3902# bug fix: webexport scriptbutton template had erroneous script names.
3903
3904# -----------------------------------------------------------------------------
3905
3906#version=11.3.38
3907
3908# bug fix: antialiasing with translucent/POV-ray
3909# new feature: set antialiasTranslucent TRUE/FALSE
3910#  along with antialiasDisplay and antialiasImages
3911#  determines the extent of antialiasing. Requires
3912#  antialiasDisplay or antialiasimages TRUE.
3913
3914# -----------------------------------------------------------------------------
3915
3916#version=11.3.37
3917
3918# new feature: @{mathExpression} for echos, select, etc. where @x can be used.
3919#   select atomno=@{x*2};
3920#   xlist = array("red", "green", "blue");
3921#   n = 2;
3922#   color atoms @{xlist[n]};
3923
3924# new feature: {atomExpression}.color = "red" (or "[xff0000]" or {255,0,0}
3925
3926# new feature: helixes as barrels in cartoons or rockets using
3927#    rocketBarrels = true
3928
3929
3930# bug fix: -- adds antialiasing for translucent objects
3931# bug fix: error in state for connect DELETE
3932# bug fix: 0-diameter atoms displayed as single pixels when perspectiveDepth = false
3933
3934# -----------------------------------------------------------------------------
3935
3936#version=11.3.36
3937
3938# antialias better dots
3939
3940# bug fix: inline loading not working
3941
3942# POV-Ray dialog update
3943
3944# set antialiasDisplay T/F (false by default)
3945# set antialiasImages T/F   (true by default)
3946
3947# -----------------------------------------------------------------------------
3948
3949#version=11.3.35
3950
3951# POV-Ray  slab/depth
3952# POV-Ray  text -- ALL text (echos, labels, axes, etc.)
3953
3954# POV-Ray cleaner for Molecular Orbitals
3955# bug fix: getproperty atominfo returning string to Integer()
3956# PDB remediated atom name upgrade -- NEEDS CAREFUL CHECKING
3957
3958# -----------------------------------------------------------------------------
3959
3960#version=11.3.34
3961
3962# write povray [width] [height] filename
3963
3964# POV-Ray for mapped isosurfaces
3965# POV-Ray embeds Jmol script
3966# POV-Ray .pov files created by Jmol can be loaded as scripts
3967
3968
3969# code: cleaning of JmolConstants specialAtomNames
3970# code: cleaning of TextFormat.simpleReplace
3971# bug fix: select [SET] or [2MO] or [DB']
3972# bug fix: app -c flag errors not going to Logger.Error
3973# bug fix: no partial charges!
3974# bug fix: 11.3.14+ does not write colormapped JVXL files
3975# bug fix: Using isosurface within 1.0 @pt1 where pt1 is a draw point save state cannot be restored
3976
3977# -----------------------------------------------------------------------------
3978
3979#version=11.3.33
3980
3981# code: PovRay tweaks -- multiple bonds
3982# code: PovRay output uses BufferedWriter
3983
3984# adds support for "xx'" atom designations in PDB and variable names
3985
3986# bug fix: insertion codes stored incorrectly in 11.3.32
3987
3988# new feature: inline scripting allows math
3989#
3990#   script INLINE "select " + site_list[2]
3991
3992
3993# new feature: site_ support for PDB and CIF
3994#
3995# loading of PDB and CIF files containing site information
3996# automatically defines variables site_xxx and defines selections site_xxx and site_n
3997# where xxx is the site identifier and n is the site number.
3998# These settings are reset each time a file is loaded.
3999# They do not carry over from one file to the next.
4000
4001# adds    "OP1" and "OP2" as backbone designators (new PDB designation)
4002
4003
4004# _PovrayExporter adds draw, halos, stars, dipoles, vectors, polyhedra,
4005#    backbone, cartoons, meshRibbon, ribbon, rockets, strands, trace,
4006#    dots, geosurface, molecular orbitals, LCAO cartoons, pmesh,
4007#    single-color isosurfaces
4008
4009# Web Export Dialog changes: new intro tab, new minilog at bottom, instructions converted to
4010#   buttons which open the info in the standard Jmol Help Dialog.
4011
4012
4013# bug fix: rockets color incorrect for head groups
4014
4015# -----------------------------------------------------------------------------
4016
4017#version=11.3.32
4018
4019# bug fix: vibration disabled in 11.3.31
4020# bug fix: zoomto cancels slabbing
4021# bug fix: zoomto (atomExpression) 0  # zooms to 2x
4022
4023# new feature: getproperty stateinfo TYPE
4024# where TYPE is one of:
4025#
4026#   colorState
4027#   dataState
4028#   fileState
4029#   frameState
4030#   modelState
4031#   perspectiveState
4032#   selectionState
4033#   variableState
4034#   windowState
4035#
4036# bug fix: backbone not in state
4037
4038# code(I): Mmset merged into ModelSet;
4039#       Viewer accesses ModelSet methods directly
4040#       ModelManager streamlined substantially
4041#
4042#   This basically removes two full layers of abstraction.
4043#   All the atoms, bonds, and models are now in ModelSet.
4044#
4045# code(II): ModelSet extends ModelCollection extends BondCollection extends AtomCollection
4046#
4047# bug fix: dipoles moved back into shape from shapespecial
4048# bug fix: semi missing in show orientation message, second part (zyz text)
4049# bug fix: select 0 selects all instead of PDB group 0
4050# bug fix: write t.xxx
4051
4052# -----------------------------------------------------------------------------
4053
4054#version=11.3.31
4055
4056# bug fix: calculate aromatic for N and O refined
4057
4058# new feature: valence -- sum of bond orders
4059#  print {atomno=3}.valence
4060#  {atomno=1}.valence = 3
4061#  select (carbon and valence != 4)
4062
4063# new feature: settable atom properties (preliminary):
4064#  .x, .y. .z, .xyz,
4065#  .fx, .fy, .fz, .fxyz,
4066#  .vx, .vy, .vz, .vxyz,
4067#  .formalcharge, .occupancy, .partialcharge
4068#  .temperature, .valence
4069# for example:
4070#   a = {atomno=30}
4071#   a.xyz = {1.0, 2.0, 2.3}
4072#   a.temperature = 3.0
4073#   a.formalcharge = 2
4074
4075# new feature: set atom properties using {xxxx}.x =
4076#
4077# {atomno=3}.x = 3
4078# {(*)[2]}.xyz = {1 2 3}
4079# for(var i = 1; i < 3; i = i + 1); {(*)[i]}.x = 5;end for;
4080# {atomno=3}.property_whatever = 2.0
4081
4082# new feature: set atom properties using an array instead of a DATA statement:
4083
4084# {*}.property_mydata = array(1.0,5.5,4.4,3.3);
4085# {*}.property_mydata = "3 4 5 6 7 8";
4086# {atomno < 4}.xyz = array({3 4 5},{4 5 6},{5 6 7})
4087
4088# code optimization for within() and setAtomBits()
4089
4090# more export generator classes
4091
4092# bug fix: unitcell missing some lines when axes turned off
4093
4094# -----------------------------------------------------------------------------
4095
4096#version=11.3.30
4097
4098# new feature: adds H/Br/Cl/I/C logic to aromatic bond assignments
4099# new feature: adds Oxygen/Sulfur logic to aromatic bond assignments
4100# new feature: adds Nitrogen logic to aromatic bond assignments
4101# bug fix: menu for UNITCELL
4102
4103# new feature: PovrayExporter (pim schravendijk <pimlists@googlemail.com>)
4104
4105# -----------------------------------------------------------------------------
4106
4107#version=11.3.29
4108
4109# new feature: aromaticSingle and aromaticDouble bond order options
4110# new feature: "smartaromatic" bonds # turned off with "smartAromatic = false"
4111# new feature: calculate aromatic    # calculates reasonable aromatic double/single alternation.
4112# new feature: reset aromatic        # sets all aromaticDouble and aromaticSingle back to aromatic
4113# new feature: select ISAROMATIC     # selects aromatic atoms
4114# new feature: MOL reader recognizes bond types 4,5,6,7
4115
4116# new feature: isosurface/mo "squared"
4117
4118# new feature: fully generalized bond order "partial n.m"
4119#   n = number of lines, up to 5
4120#   m = binary mask for dottedness, up to 31 (0x1F)
4121#         00001  first line of bond dotted
4122#         00010  second line of bond dotted
4123#         00011  first and second line of bond dotted, etc.
4124
4125# new feature: connect may use numeric bond orders, including "partial n.m"
4126
4127# new feature: preliminary work on functionalized state
4128# new feature: global/local functions (to applet, for instance
4129#   in general, functions are global -- common to all applets.
4130#   first-character "_" indicates this function is a LOCAL function, private to this applet.
4131
4132# -----------------------------------------------------------------------------
4133
4134#version=11.3.28
4135
4136# critical bug fix for color command not coloring objects properly
4137# new feature: bondOrders 2.5 and -2.5  PartialTriple and partialTriple2
4138
4139# -----------------------------------------------------------------------------
4140
4141#version=11.3.27
4142
4143# critical bug fix for functions not returning values
4144# bug fix for atomarray[i] not selecting properly
4145# bug fix for write not working with VAR
4146# bug fix for application not accepting pastes into the
4147#   console consisting of multiple lines
4148# bug fix for bondOrder command not properly treating 4.0 or 0.5
4149# bug fix for decimals not represented properly in error messages
4150
4151# -----------------------------------------------------------------------------
4152
4153#version=11.3.26
4154
4155# new feature: _1 parameter for "first atom" in second expression of connect:
4156#   connect 3.0 (_H and connected(_N) (_O and not within(chain,_1)) hbond
4157# new feature: better reporting of PMESH file format errors
4158
4159# code cleanup: pmesh moved to shapespecial; privatized
4160
4161# bug fix within(chain,xxx) not working
4162# bug fix for() as first command in script or line
4163# bug fix we were not exporting error free xhtml 1.1.
4164# bug fix for WebPageMaker not writing files
4165# bug fix for PAUSE causes app to hang -- this is a reversion of use of SwingUtilities.invokeLater(),
4166#  which actually will not work in ScriptWindow. We need the direct execution in
4167#  order to avoid the event queue from stopping itself.
4168
4169# -----------------------------------------------------------------------------
4170
4171#version=11.3.25
4172
4173# bug fix compiler not recognizing "axes =" or "measures = "
4174# bug fix for WebPageMaker creating uncompressed PNG
4175# bug fix for WebPageMaker not stripping \ in load file names
4176
4177# -----------------------------------------------------------------------------
4178
4179#version=11.3.24
4180
4181# critical bug fix for 11.3.23 compiler not recognizing line endings
4182# bug fix for show state for draw in multi-model environment
4183# bug fix? for background model not available for multiple frame range (e.g. frame 2.0) or after invalid frame number
4184#
4185# new feature: within(distance,isWithinAllModels,atomExpression)
4186#
4187# allows finding atoms within a specified distance of other atoms in OTHER models:
4188#
4189#   select within(5.0,true,model=2.1)  # TRUE indicates we should check all models
4190#   select within(5.0,false,model=2.1) # FALSE -- only model 2.1
4191#   select within(5.0,model=2.1)      # default is FALSE
4192
4193# -----------------------------------------------------------------------------
4194
4195#version=11.3.23
4196
4197# VERSION full script flow control support:
4198
4199# if / else if / else / end if
4200# for / end for
4201# while / end while
4202#
4203# var i = 4
4204# if (i = 3)
4205#   print "i=3"
4206# else if (i = 4)
4207#   print "i=4"
4208# else if (i = 5)
4209#   print "i=5"
4210# end if
4211#
4212# var i = 5
4213# while ( i > 0)
4214# 	print "atom " + i + " " + {atomno=i}.ident + " is at " + {atomno=i}.xyz
4215# 	i = i - 1
4216# end while
4217#
4218# n = {*}.size
4219# for (i = 1;    i <= n; i = i + 1)
4220# for (j = i + 1;j <= n; j = j + 1)
4221#
4222# 	var dist = {atomno=i}.distance({atomno=j})
4223#
4224# 	if (dist < 1.77)
4225# 		 print "i-j: " + i + "," + j + " " + dist%2
4226# 		 measure {atomno=i} {atomno=j}
4227# 	endif
4228#
4229# end for
4230# end for
4231#
4232# var i = 4
4233# while ( i > 0)
4234# 	print "in while: i="+i
4235#	if (i = 2);print "i is 2";endif
4236#	i = i - 1
4237# end while
4238#
4239#
4240
4241# -----------------------------------------------------------------------------
4242
4243#version=11.3.22
4244
4245# Changes to webexport package only
4246#	New Features: textboxes for entry of author name and title for browser window
4247#		persistence across launches of authorname and applet size
4248#		automatic gzip of large structure/quantum files.
4249#	Bug? fix: update the page templates to XHTML 1.1
4250#	Minor fixes to instruction .html files.
4251
4252# tweak: using "var" keyword prevents display of global variable value
4253
4254# -----------------------------------------------------------------------------
4255
4256#version=11.3.21
4257
4258#
4259# bug fix: isosurface of MOs not properly displaying color in saved state
4260# bug fix: state saving of @ definitions has extra = sign.
4261#
4262# new feature: fully functional user-defined functions:
4263#
4264# MACROS (no parameters)
4265#
4266# function mymacro
4267# 	background red
4268# 	color atoms blue
4269# end function
4270#
4271# function mymacro2
4272# 	background black
4273# 	color atoms cpk
4274# end function
4275#
4276# background white
4277# delay 2
4278#
4279# mymacro
4280#
4281# delay 2
4282#
4283# mymacro2
4284#
4285#
4286# SUBROUTINES (parameters, but no return)
4287#
4288# function drawline(id,a,b)
4289#   var x = script("draw line"+ id + " {atomno=" + a + "} {atomno=" + b + "}")
4290# end function
4291#
4292# drawline(1,3,5)
4293# drawline(2,10,12)
4294#
4295#
4296# FUNCTIONS (parameters and returns)
4297#
4298# function d(a,b)
4299#	return a.distance(b)
4300# end function
4301#
4302# x = d({atomno=3},{atomno=4})
4303# print x
4304#
4305# SHOW AND WRITE:
4306#
4307# show functions
4308#
4309# write functions macros.spt
4310#
4311
4312# -----------------------------------------------------------------------------
4313
4314#version=11.3.20
4315
4316# bug fix for arrows way too fat (introduced in 11.3.19) :(
4317
4318# -----------------------------------------------------------------------------
4319
4320#version=11.3.19
4321
4322# bug fix: critical arrow fix of 11.3.17 for 2-point arrows
4323# bug fix: write PNG default was 0 compression. -q flag was OK for setting 0-9
4324# bug fix: ragged arrow tip
4325
4326# -----------------------------------------------------------------------------
4327
4328#version=11.3.18
4329
4330# critical bug fix for 11.3.17 in regard to serialization of arrays
4331# also introduces
4332#
4333#  reset ALL  # resets all user-created variables
4334#
4335# also "exitJmol" typed into the script window for the application does that.
4336#
4337
4338# -----------------------------------------------------------------------------
4339
4340#version=11.3.17
4341
4342# bug fix: problem with unescaping comma-separated point strings "{1,2,3}" as a point.
4343# bug fix: drawn arrows scale improperly when zooming; arrow heads off-kilter
4344
4345# new feature: set defaultDrawArrowScale # 0.5 initially
4346# Drawn arrows now have a head size that can be set and a dimension that
4347# scales with the model, so arrow head:atom size ratio remains constant
4348
4349#
4350# new feature: setting Jmol,Rasmol,Shapely,Amino,Roygb,Rwb
4351# color schemes makes those colors the default colors for these schemes.
4352
4353# rename byResidue_jmol --> byResidue_shapely
4354# rename byResidue_rasmol --> byResidue_amino
4355
4356# new feature: array variables saved as arrays
4357# prior to 11.3.17, you could not do:
4358#
4359# x = "this is a test".split(" ")
4360# y = x[3]
4361#
4362# because x was only saved as a string, not an array
4363# now x is saved as an array, so this is no problem.
4364#
4365# new feature Jmol math point(x,y,z) function
4366#
4367# point(a,b,c) or point("{x,y,z}")
4368#
4369# x = point(y[3], y[6], y[2])
4370# x = point("{2,3,5}")
4371#
4372# needed because, with simple numbers, just
4373#
4374# x = {3.0,4.0,5.0}
4375#
4376# works, but
4377#
4378#  x = {r,g,b}
4379#
4380# does(did) not.
4381#
4382# new feature: Jmol math array element assignment:
4383#
4384# a = "2,3,4,5".split(",")
4385#
4386# a[3] = "now the 4 becomes this phrase"
4387# a[a[2]] = "not any more; now it's this"
4388# a[0] = "setting the final element"
4389# a[6] = "expanding the array"
4390# print a
4391#
4392# 2
4393# 3
4394# not any more; now it's this
4395# setting the final element
4396#
4397# expanding the array
4398#
4399# works with strings as well:
4400#
4401# a = "this is a test"
4402# a[8] = " not"
4403# print a
4404# >> a = "this is not a test"
4405#
4406# new feature: Jmol math x = array(a,b,,,,)
4407#
4408# x = array(3,4,5,6)
4409# print x[3]
4410# >> 5
4411#
4412
4413# new feature: Jmol math plane(x,y,z,w) function
4414#
4415# plane(a,b,c,d) or plane("{x,y,z,w}")
4416# or through three points:
4417# plane({atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint})
4418# or through three points with a reference point
4419# plane({atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint})
4420#
4421# x = plane(y[3], y[6], y[2], 3.0)
4422# x = plane("{2,3,5,4}")
4423# x = plane({_H}[1],{_H}[2],{_H}[3],{_C}[1])
4424# new feature: print command prints a variable expression
4425#
4426# print x
4427# print x * 3
4428# print x[4] + x[3]
4429# print x.split(" ")[2][0]
4430
4431# new feature: aPlane.distance({some atoms})
4432
4433# new feature: someArray.add("string") adds string to right of each item
4434# new feature: someArray.sub("string") adds string to left of each item
4435
4436# colorManager clean-up
4437
4438# -----------------------------------------------------------------------------
4439
4440#version=11.3.16
4441
4442# bug fix: Eval RPN processor for list[n] addition operator not doing selection
4443
4444# new feature: MOPAC mgf file UHF orbital reading -- preliminary only
4445
4446# new feature: byElement and byResidue color schemes allow
4447# customized element and residue coloring schemes.
4448# built-in include: byElement_Jmol, byElement_Rasmol,
4449# byResidue_Jmol (shapely) and byResidue_Rasmol (amino)
4450# with abbreviations byElement == byElementJmol; byResidue == byResidue_Jmol
4451# color atoms "byresidue_Jmol"
4452#
4453# Users can set up their own byElement and byResidue color schemes
4454# simply by preficing a name with "byElement" or "byResidue":
4455#
4456# color "byElement_Mine=[x......] [x......] [x......] ..."
4457#                       0(unknown)    1(H)    2(He) ...
4458#
4459# then:
4460#
4461# color atoms "byElement_Mine"
4462#
4463# RANGE min and max are ignored for byElement and byResidue schemes,
4464# and there is no scaling done ever, so effectively these prefixes
4465# make the correlated value a simple index into the array.
4466# This is what one would want for something that should be a given
4467# for a specific element or residue
4468#
4469# Residue indexes in order correspond to the groupID of an atom:
4470#
4471#    0  noGroup,
4472#    1  ALA, ARG, ASN, ASP, CYS,
4473#    6  GLN, GLU, GLY, HIS, ILE,
4474#   11  LEU, LYS, MET, PHE, PRO,
4475#   16  SER, THR, TRP, TYR, VAL,
4476#   21  ASX, GLX, UNK,
4477#   24  A, +A, G, +G, I, +I,
4478#   30  C, +C, T, +T, U, +U
4479#
4480# so this opens the door to user-created residue coloring schemes.
4481#
4482# color "byResidue_Mine=[x......] [x......]..."
4483#                       nogroup   ALA    ...
4484#
4485# then
4486#
4487# color cartoons "byResidue_Mine"
4488
4489# -----------------------------------------------------------------------------
4490
4491#version=11.3.15
4492
4493# new feature: fully customizable popup menu -- see file jmol.mnu
4494#
4495#   load menu jmol.mnu
4496#
4497# applet parameter  param=menuFile value="jmol.mnu"
4498#
4499# application parameter -m filename
4500#
4501# mostly untested
4502#
4503# new feature: show menu
4504# new feature: getProperty menu
4505#
4506# These deliver the current menu (as translated) in jmol.mnu format
4507
4508# -----------------------------------------------------------------------------
4509
4510#version=11.3.14
4511
4512# new feature: fully customizable popup menu -- see file jmol.mnu
4513#
4514#   load menu jmol.mnu
4515#
4516# applet parameter  param=menuFile value="jmol.mnu"
4517#
4518# largely untested
4519
4520
4521# bug fix: HDO not recognized as "water"
4522# bug fix: rotateSelected MOLECULAR not around {0 0 0}
4523# bug fix: -g ignored on -n option, even if -w is present
4524# bug fix: unknown color palette could cause error
4525
4526# new feature: %l atomic element number
4527
4528# new feature: APPLICATION -q (quality) option
4529# new feature: lcaoCartoon, mo, isosurface, pmesh: color [translucent [n]|opaque] [colors...]
4530
4531# adjustment: setting JPG default quality to 75, not 100
4532
4533# new feature: {r,g,b} can be used in place of [r,g,b] for indicating color,
4534# allowing programmatic color definition:
4535#
4536#   r = 255; g = 255; b = 0;
4537#   background {@r,@g,@b}
4538
4539# new feature: expanded color command for properties
4540#
4541#   color atoms property partialcharge "rwb" range -1.0 1.0
4542#
4543# and reverse with range inverted:
4544#
4545#   color atoms property partialcharge "rwb" range 1.0 -1.0
4546
4547# new feature: unlimited user-defined color schemes:
4548#
4549#   select none;
4550#   color "myname=[xff00ff] [xffff00] [xff00ff]"
4551#
4552# colors must be [xRRGGBB] format for this one
4553
4554# new feature: fully remappable isosurface using COLOR command:
4555#
4556#   isosurface s1 molecular map mep
4557#   color $s1 "bwr"
4558#   color $s1 "rwb" range -0.2 0.2
4559
4560
4561# APPLICATION adjustment to console window scaling/size
4562
4563# -----------------------------------------------------------------------------
4564
4565#version=11.3.13
4566
4567# this version introduces fully customizable color schemes
4568#
4569# new feature: .color for numbers and points delivers the
4570# color associated with a given value in the current
4571# coloring or propertyColorScheme.
4572# (some number).color gives a color triple as a point {x y z}
4573# {x y z}.color gives a hexadecimal string [xRRGGBB]
4574#
4575#
4576#  select atomno=3;color yellow
4577#  x = {atomno=3}.color # gives {255.0, 255.0, 0.0}
4578#  x = {atomno=3}.color.color # gives "[xFFFF00]"
4579#
4580#  set propertyColorScheme "bwr"
4581#  x = {atomno=3}.partialcharge.color
4582#
4583
4584# new feature: color ["schemeName"] RANGE [min] [max]
4585# allows setting of color range and scheme so that color
4586# values can be determined. This would be used for making
4587# a color key using positionable ECHO text boxes:
4588#
4589#  color "bwr" absolute -0.1 0.1
4590#  x = (0.01).color # gives the point-color associated with that number
4591#  set echo myecho 100 100 # position
4592#  echo "    " # just some space
4593#  color echo @x; background echo @x  # color this bar the color of 0.01
4594#
4595# new feature: show colorscheme "schemeName"
4596# delivers "colorscheme = " followed by a string of color values.
4597# without the scheme name, returns the current colorscheme listing
4598# For example: show colorscheme "low" delivers:
4599#
4600# colorscheme = [xff0000] [xff2000] [xff4000] [xff6000] [xff8000] [xffa000] [xffc000] [xffe000] [xfff000] [xffff00] [xf0f000]
4601#
4602# setting an array variable to the color values:
4603#
4604#  list = script("show colorscheme \"low\"")[15][0].split(" ")
4605#
4606# new feature: set userColorScheme [list of color names]
4607# creates a colorscheme referred to as "user" and its reverse, "resu"
4608# based on a list of color values:
4609#
4610#  set userColorScheme red green [x00FFFF] blue
4611#  color atoms property partialcharge "user" range -1.0 1.0
4612
4613# -----------------------------------------------------------------------------
4614
4615#version=11.3.12
4616
4617# bug fix: zoomTo 100%
4618# bug fix: set language fr  needs quotes but should not
4619# bug fix: load multiple files inline causes null pointer exception
4620#
4621# new feature: APPLICATION:  File|Export...|Export to Web Page
4622
4623# -----------------------------------------------------------------------------
4624
4625#version=11.3.11
4626
4627# bug fix: lcaoCartoon for sp center requires "sp2" not "sp"
4628# bug fix: mo not showing titles
4629#
4630# new feature: lcaoCartoon rotate [x|y|z] degrees create "px"
4631# new feature: adds Jaguar PLT plot file reader for isosurface
4632#   isosurface sign red blue "myfile.plt"
4633
4634# -----------------------------------------------------------------------------
4635
4636#version=11.3.10
4637
4638# bug fix: script window using swing thread start not from event queue
4639# bug fix: state of multi-polymer protein cannot be restored
4640# bug fix: dots nn% not operational
4641# bug fix: molecular dipole and multiple frames
4642#
4643# new feature: molecular dipole for Gaussian files
4644#
4645# new feature: simple calculation of approximate dipole moment from charge distributions.
4646#    dipole molecular # from file value if provided
4647#    dipole calculate molecular # from "center of gravity" of charges calculation
4648#
4649# new feature: show frame # based on models in the current frame set, displays information about frames
4650#
4651# new feature: application option for web page export
4652#
4653# new feature: write JPG n "filename" # where n is the quality (<=100)
4654
4655# -----------------------------------------------------------------------------
4656
4657#version=11.3.9
4658
4659# bug fix for isosurface mapping of planes by MEP (see 11.3.2)
4660
4661# new feature: symmetryRange: load "someFile" {mmm nnn 1|0} range x.x   where x.x is a maximum distance away from closest atom in the base cell
4662# new feature: synchronization of applets using JavaScript
4663# new feature: synchronization of applets using Jmol scripts:
4664#
4665# synchronize .|>|*|appletId[syncId] ON|OFF|SLAVE|command
4666#
4667# The synchronize (sync) command allows two or more applets to be synchronized in
4668# terms of orientation. Move one with the mouse, and the other moves as well.
4669# In addition, the sync command allows ANY command to be sent to one or more
4670# other applets directly, without the intervention of JavaScript.
4671#
4672# Applets are identified by appletId (jmolApplet0, for instance)
4673# along with an optional bracketed sync group identifier -- generally a random
4674# number that identifies the page containing the controlling applet. If the
4675# syncId is not given, then the ID for the page containing the controlling applet
4676# is used. This feature is important for cross-frame synchronization only.
4677#
4678#
4679# .          this applet only
4680# >          all applets except this one
4681# *          all applets
4682# appletId   id of a specific applet
4683# [syncId]   (optional) a unique string of digits -- brackets included
4684#
4685# ON         sync as driver (default)
4686# OFF        turn sync off
4687# SLAVE      turn sync on, but not as driver
4688# command    command to send
4689#
4690# for example:
4691#
4692# sync *   # synchronize all applets as drivers
4693# sync jmolApplet1  #syncs this applet with jmolApplet1 both as drivers
4694# sync > "set echo top left;echo OK"  # sends OK to top left of all OTHER applets
4695# sync jmolApplet2[254678942] OFF  # turns sync off for an applet ON A DIFFERENT PAGE
4696#                                  # or in a different FRAME
4697# sync . OFF # turns sync off for this applet
4698#
4699# new Jmol.js feature: jmolGetSyncId(); jmolSetSyncId(id);
4700# allows control over the sync ID via javascript. jmolSetSyncId(id)
4701# should be called prior to jmolApplet() and should incorporate some sort of
4702# random digits and no space characters. (A number is good.)
4703# This should only be necessary for multi-frame pages.
4704
4705# -----------------------------------------------------------------------------
4706
4707#version=11.3.8
4708
4709# bug fix: isosurface color -- not operating for some isosurface types
4710# bug fix: isosurface "xxxx.cube" -- not assigning proper default colors
4711# bug fix: gamess reader MO fix
4712# bug fix: state save of STRUCTURE misplaced
4713
4714# feature: adds adjustable scale for unitcell axes
4715
4716# -----------------------------------------------------------------------------
4717
4718#version=11.3.7
4719
4720# bug fix: reading of JVXL files for orbitals loses phase information
4721# bug fix: ACD/Labs nonstandard cml "builtin" property reader
4722# bug fix: isosurface interior cavity was not setting meshdata surfaceSet null
4723# bug fix: select dna can select rna if chain is mixed hybrid dna+rna
4724
4725# -----------------------------------------------------------------------------
4726
4727#version=11.3.6
4728
4729# bug fix: inappropriate draw pick spinning for single point
4730# bug fix: dots not available in multimodel mode
4731# bug fix: multiple isosurface cavities incorrect in a multimodel environment
4732# bug fix: isosurface cavity not filled completely
4733# bug fix: nested ifs can cause last endif to throw error
4734# bug fix: compiler bug working with very small real numbers
4735# bug fix: Support for mol2 files with blank line after comments.
4736
4737# -----------------------------------------------------------------------------
4738
4739#version=11.3.5
4740
4741# bug fix: ACD/Labs nonstandard cml "builtin" property reader
4742#   note that xmlReader (SAX reader) is now set to ignore all DOCTYPE declarations
4743# bug fix: odydata fix for files with \r\n for line ending
4744# bug fix for PDB remediated T/DT difference of C5M/C7
4745# bug fix: set spin X was case-selective
4746# bug fix: echo text not re-orienting on resize of applet or application
4747# bug fix: multiple isosurface cavities in a multimodel environment
4748# bug fix: missing set picking ident in popup window
4749# bug fix: popup menu set picking label not working
4750
4751# -----------------------------------------------------------------------------
4752
4753#version=11.3.4
4754
4755# rough export of VRML using
4756#
4757#    write VRML "myfile.wrl"
4758#
4759# includes colored balls and sticks; uncolored isosurfaces
4760
4761# -----------------------------------------------------------------------------
4762
4763#version=11.3.3
4764
4765# bug fix pmesh not working
4766# bug fix for state after calculate surface, calculate hbonds, configuration, dynamic variable definition in multimodel environment (ModelSet::addStateScript)
4767
4768# NEW FEATURES from the 2007 Gordon Research Conference on Visualization in Science and Education:
4769#
4770# internal dataFrame concept
4771#
4772# new command: ramachandran
4773#
4774# new command: quaternion [w x y z] [derivative]
4775#
4776# TODO: frame menu
4777# TODO: write VMRL
4778
4779# preliminary Maya export -- sets the stage for any number of export frameworks.
4780
4781# -----------------------------------------------------------------------------
4782
4783#version=11.3.2
4784
4785# bug fix: set picking label
4786# bug fix: minus-sign "fix" in 11.3.1 broke all {x -y z} notation
4787# bug fix: state for phased atomic orbitals does not preserve red/blue color
4788# bug fix: mo opaque causing "invalid argument" when no MOs
4789# bug fix: isosurface cavity molecular caused exception
4790# feature: adds isosurface capability to map MO and MEP data onto planes
4791
4792# -----------------------------------------------------------------------------
4793
4794#version=11.3.1
4795
4796# bug fix: debugscript on;center 3-5; "-" missing
4797# bug fix: zoomTo (5-7) read as "5 to -7"
4798# bug fix: move with time < 0.03 seconds causes molecule to disappear
4799# bug fix: hover interruption
4800# bug fix: image offsets in creating JPG image if model has been moved by CTRL-ALT-LEFT drag
4801
4802# -----------------------------------------------------------------------------
4803
4804#version=11.3.0
4805
4806# perspectiveModel 11 default
4807# bug fix for 3D text echo staying in window
4808# bug fix for draw text+translucency
4809# bug fix for draw text not hovering for points
4810# bug fix for multiple draw objects in show state
4811# bug fix for spin save reversed direction
4812# bug fix for CdkAdapter not having auxiliaryInfo data
4813#
4814# adds the ability to find the coordinate of a specific
4815#   draw object vertex  using $objName[vertexId] as in
4816#   draw p perp plane (atomno=1) (atomno=2)
4817#   x = $p[3]
4818#   draw pt1 $p[1]
4819
4820
4821# -----------------------------------------------------------------------------
4822
4823#version=11.1.49
4824
4825# bug fix for Gaussian file reader fix for very large negative MO coefficients
4826# bug fix for move not releasing isInMotion
4827# bug fix for x = "testing"[0], x = "testing"[-1], "testing".split("t")[0], and "testing".split("t")[-1]
4828# bug fix for select {*}[0], {*}[-1], etc., which now counts from the end back
4829# adds proper indents on debugscript for if/else/endif
4830# allows "jmolscript:" for embedded scripts and callbacks
4831
4832# -----------------------------------------------------------------------------
4833
4834#version=11.1.48
4835
4836# bug fix for gamess reader MO fix
4837# bug fix for mopac GRAPHF file fix (resolver thought MOL)
4838# bug fix for lcaocartoon "lp" fix for AX3E and AX2E
4839
4840# -----------------------------------------------------------------------------
4841
4842#version=11.1.47
4843
4844# bug fix for compound document reader not reading enough short segment pointers
4845# bug fix for Spartan reader not recognizing 5D orbital problem
4846# bug fix for animation skipping frames
4847
4848# -----------------------------------------------------------------------------
4849
4850#version=11.1.46
4851
4852# bug fix for Jvxl.jar standalone application not having complete set of class files (jvxl)
4853# adds inline help support for Jmol application running under Java 6 (Java 1.6.xx)
4854# bug fix for inappropriate pre-JVM12 menu items not disabled
4855
4856# -----------------------------------------------------------------------------
4857
4858#version=11.1.45
4859
4860# bug fix for animFrameCallback not indicating animation direction
4861# bug fix for help not working and help URL not displaying (app)
4862# bug fix for app not writing state from File...Export menu (app)
4863# bug fix for retaining the last-saved file type selected for Image export (app)
4864# bug fix for "wait" not recognizing if it is just a syntax check (app)
4865
4866# -----------------------------------------------------------------------------
4867
4868#version=11.1.44
4869
4870# bug fix for inability to specify fractional coordinates: adds fx, fy, fz as
4871#   select fx < 0.5 and fy < 0.5 and fz < 0.5
4872#   aveFracX = {molecule=1}.fx
4873# bug fix for inability to use x,y,z,fx,fy,fz with cartesian points
4874# bug fix for select BONDS ({...}) not preserved in state
4875# bug fix for geosurface not always restored from saved state
4876# bug fix for strandcount saved explicitly forces bioshape load
4877
4878# -----------------------------------------------------------------------------
4879
4880#version=11.1.43
4881
4882# bug fix for labels mysteriously disappearing. Also probably taking up HUGE amounts of hashtable space.
4883# bug fix for hydrogen bond calculation with incomplete nucleic acid definitions.
4884# bug fix for "set picking draw" crashing Jmol
4885# bug fix for strandCount not carrying over to meshRibbon
4886# bug fix for geosurface/dots save/restore state exception
4887# bug fix for save state using "measurements off" instead of "set measurements off"
4888
4889# -----------------------------------------------------------------------------
4890
4891#version=11.1.42
4892
4893# bug fix for lack of updating of certain variable predefined expressions
4894# bug fix for smiles nonfunctional
4895
4896# bug fix for load append and structure commands
4897# bug fix for load files losing structure and cartoons
4898# bug fix for multiple frames displayed does not show Select...Elements menu
4899# bug fix for select @x not functioning where x = {atom expression} or x = "atom expression"
4900# bug fix for {atom expression}.ident nonfunctional
4901
4902# code refactoring Frame --> ModelSet and ModelLoader
4903# code refactoring modelframe --> modelset package
4904# code refactoring shapebio --> shapebio + molsetbio packages
4905# code refactoring dissociates Mps.MpsShape from Mps as BioShape
4906# code refactoring removes Mps.Mpsmodel
4907# code refactoring Mps --> BioShapeCollection
4908# code refactoring greatly simplifies BioShapeCollection subclasses
4909
4910# -----------------------------------------------------------------------------
4911
4912#version=11.1.41
4913
4914# bug fix for load with explicit spacegroup not respecting normalization choice
4915# bug fix for symop=nijk selecting base atoms when not appropriate
4916# bug fix for select specialposition non-functional
4917# bug fix for adding atoms but mads[] going stale
4918# slight redefinition of "special position"
4919# bug fix for structure loss on load append. (structure is supposed to be recalculated).
4920# adds language switching for Open / Save dialog boxes and full menuing system in Jmol application
4921# adds "structure" command -- structure [helix|sheet|turn|none] (atom expression)
4922# adds "save/restore structure" command
4923
4924# -----------------------------------------------------------------------------
4925
4926#version=11.1.40
4927
4928# bug fix for backgroundModel and save state
4929# bug fix for load append with spacegroups causing atoms to be repositioned
4930# bug fix for anim playrev in loop mode causing animation to stall
4931
4932# -----------------------------------------------------------------------------
4933
4934#version=11.1.39
4935
4936# several bug fixes:
4937#
4938#  bug fix for mo data misreading in smol files
4939#  bug fix for lcaoCartoon "s" giving incomplete spheres
4940#  bug fix for select symop=3555 not giving proper atoms when load "" {444 666 0}
4941#  bug fix for PDB files not supplying information about residues for the popup menu.
4942#  bug fix in frame range 1.0 when file 1 has only one model.
4943
4944# -----------------------------------------------------------------------------
4945
4946#version=11.1.38
4947
4948# bug fix for opaque triangles missing one pixel on right side when translucent objects are present.
4949# bug fix for label alignments sometimes not being saved properly in the state
4950# bug fix for animFrameCallback giving multiple callbacks -- still there, but identified now
4951#    in terms of whether animation is on or not in the 7th parameter being 1 or 0:
4952#
4953# function animFrameCallback(app,frame,fileno,modelno,firstno,lastno,isRunning){...}
4954
4955# -----------------------------------------------------------------------------
4956
4957#version=11.1.37
4958
4959# fixes bugs in draw and unicode label state definitions
4960# adds simplistic <sub></sub> <sup></sup> to text, including echo, label, hover, etc.
4961# fixes popup menu to better deal with multiple file context
4962# update of Turkish translation
4963
4964# -----------------------------------------------------------------------------
4965
4966#version=11.1.36
4967
4968# build: renames applet files JmolApplet0*.jar and JmolAppletSigned0*.jar
4969#
4970# bug fixes for isosurface in multi-file environment
4971#
4972# bug fix and additional work in relation to translations
4973#
4974# zoomTo (atom expression) 0
4975#
4976# with options
4977#
4978# zoomTo (atom expression) 0+n
4979# zoomTo (atom expression) 0-n
4980# zoomTo (atom expression) 0*n
4981# zoomTo (atom expression) 0/n
4982#
4983# also
4984#
4985# moveTo timeSec {x y z w} (atom expression) 0 [zoom factor]
4986# and
4987# moveTo timeSec {x y z w} 0 transX transY (atom expression) 0 [zoom factor]
4988#
4989# where [zoom factor] is x, where x > 0
4990# or
4991# [0] [[+ | - | * | /] x]
4992#
4993#
4994# app fix for Edit...preferences not properly refreshing for axes and boundbox
4995
4996# -----------------------------------------------------------------------------
4997
4998#version=11.1.35
4999
5000# fix for x = {...}.resno and {...}.groupID
5001# fix for select resno=-1
5002# first version of pt_BR translation
5003
5004# -----------------------------------------------------------------------------
5005
5006#version=11.1.34
5007
5008# language submenu
5009
5010# -----------------------------------------------------------------------------
5011
5012#version=11.1.33
5013
5014# bug fixes -- draw state, menu not updating, language submenu
5015
5016# -----------------------------------------------------------------------------
5017
5018#version=11.1.32
5019
5020# adds capability to define a property for selected atoms:
5021#
5022#  select xxx
5023#  property_x = n.m
5024
5025# -----------------------------------------------------------------------------
5026
5027#version=11.1.31
5028
5029# adds capability to read data from selected fields (white-space delimited columns) in a file
5030#
5031# propertyDataField = 0  # no fields -- just read tokens
5032# propertyDataField = 2  # data are in field 2 (second from the left)
5033# propertyAtomNumberField = 1 # data must match atomNo in field 1 and will be in
5034#                           the field specified by propertyDataField
5035
5036# -----------------------------------------------------------------------------
5037
5038#version=11.1.30
5039
5040# full support for switching languages, including a new "language" menu item
5041#
5042# Jmol.js:
5043#
5044# jmolSetCallback("language", "de")
5045#
5046# Jmol scripting:
5047#
5048# language = "de"
5049#
5050# Menu:
5051#
5052# new language submenu with checkboxes.
5053#
5054# allows for efficient specific file reader options for the applet (particularly)
5055#
5056# adds _spinning variable
5057#
5058# adds LOAD xxx::myfile   xxx indicating file type xyz, mol, etc.
5059#
5060# not important generally.
5061#
5062# adds PQR reader option, at least for PDB2PQR generated output
5063#
5064# better spin control during zoomTo and moveTo
5065# spinning now detects that a zoomTo or moveTo operation is occurring
5066# or the user is manipulating the model with the mouse, and pauses 1 second
5067# for that operation to complete before resuming spinning
5068#
5069# hover now is turned off during spinning or user manipulation of the model
5070#
5071# zoomTo and moveTo the same location changed to no time delay
5072
5073# -----------------------------------------------------------------------------
5074
5075#version=11.1.29
5076
5077# code: totally reorganized isosurface code; new org/jmol/jvxl packages
5078#
5079# adds  (1) isosurface functionxy "file:data.dat" ...
5080# adds  (2) isosurface functionxy "functionName" {x0 y0 z0} {-ni ...} ...
5081# adds  (3) isosurface functionxy "functionName" {x0 y0 z0} {-ni ...}{-nj ...} ...
5082#
5083# (1) "file:" allows reading of xy data from files for graphing f(x,y)
5084# (2) ni<0 indicates JavaScript functionName will return a single string that
5085#     should be parsed for numeric data.
5086# (3) ni<0, nj<0 indicates that JavaScript will fill the fourth parameter
5087#     of the function with an array of f[nX][nY] data values:
5088#
5089# Jmol:
5090#
5091#   isosurface s1 functionXY "xyData" {-2 -2 -2} {21 0.1 0 0} {21 0 0.1 0} {21 0 0 0.1}
5092#
5093# JavaScript: (slow)
5094#
5095# function xyData(app, x, y) {
5096#   return func(x, y)
5097# }
5098#
5099# Jmol:
5100#
5101#   isosurface s2 functionXY "xyDataAsString" {-2 -2 -2} {-21 0.1 0 0} {21 0 0.1 0} {21 0 0 0.1}
5102#
5103# JavaScript: (much faster)
5104#
5105# function xyDataAsString(app, nX, nY) {
5106#   var s
5107#   for (var i = 0; i < nX; i++)
5108#     for (var j = 0; j < nY; j++)
5109#       s += "x_"+i+"\ty_"+j+"\t"+func(i,j)+"\n"
5110#
5111#  //non-numeric formatting allowed but not necessary
5112#
5113#   return s
5114# }
5115#
5116# Jmol:
5117#
5118#   isosurface s3 functionXY "xyDataAsArray" {-2 -2 -2} {-21 0.1 0 0} {-21 0 0.1 0} {21 0 0 0.1}
5119#
5120# JavaScript: (very fast)
5121#
5122# function xyDataAsArray(app, nX, nY, fxy) {
5123#   for (var i = 0; i < nX; i++)
5124#     for (var j = 0; j < nY; j++)
5125#       fxy[i][j] = func(i,j)
5126# }
5127#
5128# (2) and (3) are very fast; (1) is the original method, but it is slow.
5129#
5130# MAYSCRIPT expanded
5131#
5132# for the Wiki or any application where absolutely no JavaScript
5133# is to be allowed, simply remove the MAYSCRIPT parameter, which
5134# now covers all aspects of JavaScript interaction from within Jmol
5135#
5136#
5137# adds   applySymmetryToBonds  (default: FALSE)
5138#
5139# applySymmetryToBonds
5140#
5141# When set TRUE, this flag instructs Jmol when applying symmetry
5142# to atoms, as in "load xxx.cif {1 1 1}", to also apply symmetry
5143# to the bonds indicated in the file. The flag is useful when
5144# normal Jmol autobonding would not properly connect atoms, but
5145# the model is "molecular" -- the base atom coordinates are correct
5146# for whole molecules. The flag should NOT be used in cases where
5147# the application of symmetry operations creates new bonds that
5148# were not present in the original set, as for quartz.cif, where
5149# there is only one bond initially, and after applying symmetry
5150# new bonds are created that are between atoms that were created
5151# using two different symmetry operations.
5152#
5153# adds isosurface HOMO/LUMO [+/- n]
5154#
5155# better isosurface plane rendering, especially in regard to meshes
5156# bug fix in isosurface contour -n going WAY back to before 10.9.60
5157# refactoring of all isosurface-related classes
5158# support for Spartan MO HOMO
5159#
5160# adds isosurface POCKET [cavity] sasurface
5161# adds isosurface INTERIOR [cavity] sasurface
5162#
5163# adds load TRAJECTORY -- for a single file with multiple models all with
5164# the same number of atoms. Atom locations can also be updated on the
5165# fly using the data statement.
5166#
5167# adds TRAJECTORY n command -- like FRAME or MODEL, but never more
5168# than one model at a time displayed, because there is only one set
5169# of atoms.
5170#
5171# adds script: option for callbacks set from within Jmol. That is, callbacks
5172# can either be to host page JavaScript functions or to Jmol scripts. This
5173# will allow interactive sessions without external JavaScript.
5174#
5175# set pickcallback "script: script doCallback.spt"
5176#
5177# adds resizeCallback because certain positioning of echos and sizing of the
5178# structure may require method intervention after the resizing
5179#
5180# adds translucency for echo and hover, both text and backgrounds
5181#
5182# adds echo script to defined state
5183#
5184# adds hourglass cursor during MO/Isosurface operations
5185#
5186# fixes inoperative "set pickingstyle measures on"
5187
5188# -----------------------------------------------------------------------------
5189
5190#version=11.1.28
5191
5192# adds
5193#
5194# a = script("some script command")
5195# a = javascript("some javascript")
5196#
5197# putting output into a from commands such as "show" or "getProperty", for instance.
5198#
5199# reinstates tempManager properly.
5200#
5201# adds support for CAChe CSF files with MOPAC (AM1, PM3, etc.),
5202# Density Functional, and Extended Huckel Gaussian/Slater-based molecular orbitals.
5203#
5204# CHANGES DEFAULT RENDERING FOR MOLECULAR ORBITALS TO: MESH NOFILL FRONTONLY
5205#
5206# adds MOPAC 2007 graphf output reader (gpt2 files, MOPAC molecular orbitals)
5207# based on the VERY latest version (not released yet), which includes
5208# "MOPAC-Graphical data" on the first line, character index 6.
5209#
5210# adds
5211#
5212#  mo HOMO [+/- n]
5213#  mo LUMO [+/- n]
5214#
5215# fixes bugs found by FindBugs:
5216#
5217# labels:  default z setting for labels (set labelFront, set labelGroup, set labelAtom)
5218#          was not being recorded properly
5219# move:    with slab or zoom was doing integer math
5220# GhemicalMMReader -- was incorrectly assigning aromatic to bond type 4 via fall-through of switch
5221#
5222# adds xodydata reading of "boundary" as unitcell
5223# enhances default axis rendering for axes unitcell
5224#
5225# adds expanded isosurface-related commands:
5226#
5227#  draw list
5228#  isosurface list
5229#  lcaocartoon list
5230#  (mo list) -- not particularly useful
5231#  pmesh list
5232#
5233# Listing gives id, number of vertices, number of polygons, visibility,
5234# and title (usually the command that was given that created this isosurface)
5235#
5236# CHANGED BEHAVIOR FOR ISOSURFACE COMMAND WITHOUT ID INDICATED:
5237#
5238# Now if no ID is indicated, the previous ID is used for all commands
5239# EXCEPT "isosurface delete", which deletes all isosurfaces.
5240#
5241# This is a change from Jmol 10.2 and 11.0, where if you leave
5242# off the ID, a new isosurface is created.
5243#
5244# This was a needed change to prevent unwanted multiple isosurfaces.
5245#
5246# CHANGED BEHAVIOR FOR ISOSURFACE DEFAULT COLOR
5247#
5248# The default isosurface color no longer changes shade among 5 possible shades.
5249# That was necessary only because it was easy to mistakenly make multiple
5250# isosurfaces that otherwise would look the same.
5251
5252# -----------------------------------------------------------------------------
5253
5254#version=11.1.27
5255
5256# fixes two state bugs:
5257# 1) dots/geosurface not being saved properly in state
5258# 2) animation parameters not being saved properly in state
5259
5260# -----------------------------------------------------------------------------
5261
5262#version=11.1.26
5263
5264# fixes two nasty bugs relating to isosurfaces and JVXL files.
5265#  -- JVXL files created from molecular orbitals will show up with no color
5266#     in 11.1.0 - 11.1.25 because of a missing number in the definition line :(
5267#  -- JVXL files created from molecular orbitals will show unwanted cross-over
5268#     surfaces from + to -.
5269
5270# -----------------------------------------------------------------------------
5271
5272#version=11.1.25
5273
5274# --fully dissociates geosurface from dots;
5275# --allows coloring and transparency of geosurface
5276#   similarly to the way stars are colored
5277
5278# -----------------------------------------------------------------------------
5279
5280#version=11.1.24
5281
5282# refactored Geodesic3D, Dots, DotsRenderer
5283# independent dots/geosurface
5284#
5285# isosurface CAVITY
5286
5287# -----------------------------------------------------------------------------
5288
5289#version=11.1.23
5290
5291# fixes a number of bugs, some critical
5292#
5293# adds isosurface CAVITY x.xx -- a new way to depict the cavities of
5294# a molecule in terms of color.
5295
5296# -----------------------------------------------------------------------------
5297
5298#version=11.1.21/22
5299
5300# adds
5301#
5302# load file "=xxxx" and set loadFormat "http://....../%FILE.....
5303# load files .....  # just a cleaner version of loading multiple files.
5304# load append ..... # APPENDS the file(s) or model(s) as new frames onto the current set.
5305# data append ..... # same thing, but inline
5306#
5307# isosurface MODEL n
5308# pmesh MODEL n
5309# isosurface within x.x (what)
5310#
5311# Introduces "real" color translucency
5312#
5313# color xxxx translucent N
5314#
5315# where N is -1 to 9.
5316#
5317#                 OR     OR
5318# translucent -1               same as Jmol 10.2
5319# translucent 0.0                opaque
5320#   through
5321# translucent 1.0                transparent (invisible)
5322#
5323# translucent 2   0.125  32    1/8 translucency (slightly translucent)
5324# translucent 3   0.25   64    2/8 translucency
5325# translucent 4   0.375  96    3/8 translucency
5326# translucent 5   0.5   128    4/8 translucency (default)
5327# translucent 6   0.625 160    5/8 translucency
5328# translucent 7   0.75  192    6/8 translucency
5329# translucent 8   0.825 224    7/8 translucency (very sheer)
5330# translucent 9   1.00  255    8/8 transparent (invisible)
5331
5332# -----------------------------------------------------------------------------
5333
5334#version=11.1.20
5335
5336# cleans up axes/boundbox/unitcell business
5337#
5338# allows for individually colored axes:
5339#
5340# color axis1 ...
5341# color axis2 ...
5342# color axis3 ...
5343# color axes ... (of course)
5344#
5345# and these objects are considered more like background --
5346# colors and sizes persist past file load
5347#
5348# to turn on and off without messing with size, just use
5349#
5350# showAxes = true
5351# showBoundBox = true
5352#
5353# etc.
5354
5355# -----------------------------------------------------------------------------
5356
5357#version=11.1.19
5358
5359# allows comparison of user-defined atom properties in SELECT:
5360#
5361# select property_myprop < 1e-5;
5362#
5363# and
5364#
5365# x = {carbon}[5].property_test
5366# x = {carbon}.property_test.min
5367# x = {carbon}.property_test.max
5368#
5369# etc.
5370#
5371# This is it! :)
5372
5373# -----------------------------------------------------------------------------
5374
5375#version=11.1.18
5376
5377# introduces user-definable atom properties that can be used
5378# to color isosurfaces:
5379#
5380# x = load("file.dat");
5381# isosurface variable x   # simple 100% vdw radius mapping
5382#
5383# select 1.3
5384# data "property_myprop @x"
5385# isosurface property_myprop
5386#
5387# allows isosurface mapping of general atom properties:
5388#
5389# isosurface sasurface colorscheme bwr map property temperature
5390#
5391# adds "bwr" colorscheme as opposed to "rwb", which I think is backward.
5392#
5393# isosurface -- now supports APBS (  )
5394#               molecular electrostatic potential output files
5395#
5396# write -- modified to allow unquoted filename in
5397#   write isosurface file.name
5398#
5399# jvxl 1.0 -- adds ANGSTROMS flag on line with # of atoms (line 3)
5400
5401# -----------------------------------------------------------------------------
5402
5403#version=11.1.17
5404
5405# deprecation of SET
5406# ------------------
5407#
5408# The "SET" command is no longer necessary. Anything that could have
5409# been set using "SET x .... " can now be set using
5410#
5411#  x = ....
5412#
5413# This allows for a much cleaner interface because we simply make
5414# settings in a normal sort of way:
5415#
5416# axes on
5417# axes = molecular
5418#
5419# measures = angstroms
5420#
5421# It will take a bit more to make it all consistent, but the idea
5422# is that there are then some special reserved variables that
5423# mean something special when set, like "bondmode"
5424#
5425# This build allows for the applet to be "bare-bones" -- only the
5426# essential classes included in the Jar file; others never included
5427# or possibly in accompanying jar files, such as, perhaps, JmolPopupMenu.jar,
5428# JmolNavigation.jar, JmolBio.jar, Jm  olSurface.jar, JmolXtal.jar, etc.
5429#
5430# Then a developer can slim down the download. The minimum is 697K,
5431# about 58% of the full package. All that gets you is atoms, bonds,
5432# and measures.
5433
5434# -----------------------------------------------------------------------------
5435
5436#version=11.1.16:
5437
5438# First incompatibility found:
5439#
5440# set echo myecho (atomno=3) or (atomno=5)
5441# 1) adds two new modifiers:
5442#  .min
5443#  .max
5444#
5445# as in:
5446#
5447#  x = {*}.bonds.length.max  #the longest bond length
5448#  x = {*}.atoms.max         #the last atom
5449#
5450# 2) extends find() to sets of lines. For example:
5451#
5452#  longLine={*}.bonds.label("%=, %LENGTH").lines.find({*}.bonds.length.max)
5453#  message @longLine
5454#  longest = longLine%(longLine.find(",")-1)
5455#  b = {*}.bonds[longest]
5456#  select b_set;color bonds yellow
5457#
5458# NOTE: _set removed in 11.3.41:
5459#  select @b;color bonds yellow
5460#
5461# -----------------------------------------------------------------------------
5462
5463#version=11.1.15:
5464
5465# APPLICATION: adds undo/redo to a fixed depth of 50 commands
5466#
5467# TYPE CONVERSION
5468#
5469# We have eight different variable types now:
5470#    boolean    True/False
5471#    integer    0, 1, 2, ....
5472#    decimal    3.5, 3.25E-3
5473#    string     "test" "3.5"
5474#    point      {2.3 3.4 5.6} {0 1/2 1}
5475#    plane      {0 1 1 0}
5476#    atomset    {oxygen}
5477#    bondset    {oxygen}.bonds
5478
5479# plane and bondset are new; arithmetic operations are not fully developed.
5480
5481# These can be mixed and matched to good effect. Certain relatively
5482# intuitive rules apply. Usually the operand on the left sets
5483# the overall type, allowing for easy type conversion depending upon
5484# operand order:
5485#   int + float:
5486#     0 + 3.6 ==> 3    (int on left rounds float on right)
5487#     3.6 + 0 ==> 3.6  (float on left sets result)
5488#
5489#   int/float + string:
5490#     0.0 + "3.5" ==> 3.5 (string converted to float)
5491#     0 + "3.5"   ==> 3 (string converted to float, then int)
5492#     "3.5" + 0   ==> "3.50" (integer converted to string)
5493#     "3.5" + 0.0 ==> "3.50.0" (float converted to string)
5494#
5495#     1.0 + {carbon}.xyz     ==> 1 + distance from {0 0 0} to {carbon} center
5496#     {carbon}.xyz + 1       ==> {carbon} center point offset by {1 1 1}
5497#
5498#     x = {carbon}.xyz * {1 0 0} ==> (dot product)
5499#
5500#     Now x is the average x coordinate of carbon
5501#
5502#  Boolean expressions are a bit different in that the operators
5503#  AND, OR, XOR, and NOT all require conversion to boolean UNLESS both
5504#  operands are atom expressions, in which case these operate directly on the
5505#  atom sets and return a new atom set, just like in SELECT.
5506#
5507#     3 and 0.5  ==> TRUE (both are nonzero)
5508#     false OR 2.0 ==> true (2.0 is not 0, so it is TRUE)
5509#     {oxygen} and {molecule=1} ==> all oxygen atoms in the first molecule
5510#
5511#     x = ({oxygen} and {molecule=1}).xyz
5512#
5513#     x is now the center point of all oxygen atoms in the first molecule
5514#
5515#  In standard math, boolean TRUE evaluates to 1.0; FALSE evaluates to 0.0
5516#
5517#     true + 2.0 ==> 3.0 ("TRUE" evaluates to 1.0 in math operations)
5518#     2 + true ==> 3 ("TRUE" evaluates to 1.0 and is then turned into an integer)
5519#
5520#
5521# ATOM EXPRESSION AUTOMATIC DEFINE
5522#
5523# When you set a variable to a value, and that value is a point, plane, or atom expression,
5524# then Jmol automatically registers the result as follows:
5525#
5526#  points:
5527#    x = "{x y z}"
5528#
5529#  planes:
5530#    x = "{x y z w}"
5531#
5532#  atom expressions:
5533#    x = n
5534#    x_set = "({i j k ...})"
5535#
5536# NOTE: "set x" removed in 11.3.40:
5537# NOTE: _set removed in 11.3.41:
5538#
5539#    x = {oxygen}.xyz
5540#    y = {carbon}.xyz
5541#    draw @x
5542#    draw @y
5543#    draw line1 @x @y
5544#
5545#   and
5546#
5547#    x = {carbon}[3][5]
5548#    select @x
5549#    color green
5550
5551#    x = {carbon}[3][5]
5552#    select @x
5553#    color green
5554
5555#
5556#    x = {carbon or oxygen}.bonds
5557#    select BONDS @x
5558#    color bonds green
5559
5560#
5561# DATA() function and variable option for DATA command
5562#
5563# x = data({atomno < 10},"xyz")
5564# x = data({atomno < 10},"mol")
5565# x = data({atomno < 10},"pdb")
5566#
5567# data "model @x"
5568#
5569# write data t.xyz
5570# write data t.mol
5571# write data t.pdb
5572#
5573#
5574# Better BITSET implementation
5575#
5576# CHANGE: default string value for a bitset is now the ({n:m})
5577# string format, which can be used in numerous commands.
5578#
5579# To get the count within a string context, just use .size:
5580#
5581# x = "number selected is " + {selected}.size
5582#
5583# or force integer math:
5584#
5585# x = "number selected is " + (0 + {selected})
5586#
5587# merges math functions within(), connected(), substructure() into molecular math
5588#
5589# adds connected() both for finding atoms and for identifying bonds:
5590#  xAtoms = connected(3, {carbon})
5591#  xBonds = connected(1.3,2.5,"single", {carbon} {oxygen})
5592#
5593# adds
5594#  x.atoms
5595#  to go along with x.bonds
5596#
5597# adds distance({carbon},{oxygen})
5598# adds angle({carbon}[4],{oxygen}[3], {nitrogen}[2])
5599#
5600# angle function accepts from three or four
5601# atom expressions or XYZ coordinates and returns a decimal number for
5602# the distance, angle, or dihedral relating these points.
5603# When more than one atom is involved, average positions are used.
5604#
5605# Note that when more than one atom is involved in a set,
5606# the following are different:
5607#
5608#  x1 = {molecule=1}.distance{molecule=2}
5609#  x2 = {molecule=1}.xyz - {molecule=2}.xyz
5610#
5611#  x1 is a NUMBER that is the "average distance measured
5612#     from each molecule 1 atom to the average molecule 2 position"
5613#  x2 is a point representing the VECTOR from the "average position of molecule 2"
5614#     to the "average position of molecule 1"
5615#
5616# The following are all equivalent:
5617#
5618#  x3 = {molecule=1}.xyz.distance{molecule=2}
5619#  x4 = 0.0 + ({molecule=1}.xyz - {molecule=2}.xyz)
5620#  x5 = ({molecule=1}.xyz - {molecule=2}.xyz).distance{0 0 0}
5621#  x6 = distance({molecule=1} {molecule=2})
5622#
5623#  They are all the distance from the center of molecule 1
5624#  to the center of molecule 2
5625#
5626#
5627# x = load("filename")
5628#
5629# The string data in the file are loaded into the string.
5630# If the file does not exist, then the string contains the error message.
5631#
5632#
5633# Implements ({i j:k m n}) bitset option across all commands
5634#
5635# RESET varName
5636#
5637# reset varName  # clears that variable definition
5638#
5639#
5640# "UNSPECIFIED" and "QUADRUPLE" BOND TYPES
5641#
5642# An additional bond type is now avaiable: "UNSPECIFIED".
5643# This shows up in the MOL2 reader and may be selected for and modified using, for example:
5644#
5645#  select connected(unspecified)
5646#  color bonds red
5647#
5648# or
5649#
5650#  select connected(unspecified)
5651#  connect (selected) single modify
5652#
5653# In addition, we now can depict quadruple bonds.
5654
5655# -----------------------------------------------------------------------------
5656
5657#version=11.1.14:
5658
5659# DYNAMIC MEASUREMENTS
5660#
5661# Now that we can move atoms so easily, we don't want those measurements getting stale.
5662#
5663# set dynamicMeasurements
5664#
5665# allows measurements to be recalculated on the fly.
5666#
5667#
5668# MEASUREMENT FORMAT STRINGS
5669#
5670# Measurement format strings can be set using
5671#
5672# measure "format string..."
5673#
5674# where the format string may have the following keys:
5675#
5676#  %=      1-based index
5677#  %VALUE  the value of the measurement
5678#  %UNITS  the units for the measurement
5679#  %x1     atom property "x" for atom 1
5680#  %x2     atom property "x" for atom 2
5681#  %x3     atom property "x" for atom 3
5682#  %x4     atom property "x" for atom 4
5683#
5684# for example:
5685#
5686#  measure "%a1 -- %VALUE %UNITS --- %a2"
5687#
5688#
5689# MATH OPERATOR PRECEDENCE AND PARENTHESES
5690#
5691# Jmol 11.1.14 supports full standard operator precedence and parentheses
5692# in IF, SET, and %{} expressions
5693#
5694# degUnsat = ({carbon} * 2 + {nitrogen} + 2 - {hydrogen}) / 2
5695#
5696#
5697# BRACES INDICATE ATOM EXPRESSIONS
5698#
5699# Use {} in IF, SET and %{} for designating atom expressions.
5700# We are still using () for "embedded expressions" in all other commands.
5701#
5702#   nOxygen = {oxygen}
5703#   xOxygen = {oxygen}.x
5704#   ptOxygen = {oxygen.xyz}
5705#
5706#   a = {oxygen}.temperature
5707#   message %{{carbon}.x}
5708#   if {O22}.bondCount > 2;goto ...
5709#
5710# but
5711#
5712#   draw line1 (atomno=2) (atomno=3)
5713#
5714#
5715# ATOM EXPRESSION ITEM SELECTOR [n]
5716#
5717# In SET, IF, and %{ } in MESSAGE and ECHO you can now specify a subset of the
5718# atom expression.
5719#
5720#  x = {carbon}[3]  # the third carbon atom
5721#  x = {carbon}[3][5]  # the third through fifth carbon atoms
5722#  x = {carbon}[3][0]  # the third through last carbon atoms
5723#
5724# This also works in standard select expressions, but using () instead:
5725#
5726#  select (carbon)[3]  # the third carbon atom
5727#
5728# and anywhere an embedded expression might be found:
5729#
5730#  measure ((_C)[1]) ((_C)[2])
5731#
5732#
5733# POINTS IN IF, SET, and %{}
5734#
5735# Points in IF, SET, and %{} can be designated using the standard {x y z}
5736# notation WITHOUT commas. This is because we have to distinguish between
5737# atom expressions {1,2,3} and coordinates {x y z}, and this seems to me the
5738# simplest way to do it. (Comma means "or" in atom expressions.) In all other
5739# instances, the commas are fine, including "SET UNITCELL" and "SET DEFAULTLATTICE".
5740#
5741#  x = {1 1 0} + {oxygen}.xyz
5742#
5743# {  }.distance ATOM PROPERTY FOR SET, IF, and %{}
5744#
5745# d = {oxygen and * /1}.distance{oxygen and * /2}
5746# set echo top left
5747# echo the O-O distance is %{{oxygen and * /1}.distance{oxygen and * /2}}
5748#
5749# message %{{atomno=3}.distance{atomno=4}}
5750# message %{{atomno=3}.distance{1/2 1/2 1/2}}
5751#
5752#
5753# {  }.label "xxxx" ATOM PROPERTY FOR IF, SET, and %{}
5754#
5755# The .label format provides a convenient means of delivering a wide range of
5756# atom-based data back to the user with whatever formatting is desired.
5757#
5758# x2 = {atomno=3).label("atom %a\t" + (atomno=3).xyz)
5759# xyzFile = "" + {selected}.size + "\n\n" + {selected}.label("%a %x %y %z")
5760#
5761#
5762# "....".lines
5763#
5764# The .lines operator splits a string into an array based on line termination.
5765#
5766# WRITE VAR "filename" (application only)
5767#
5768# pdbAtomData = {selected and not hetero}.label("ATOM  %5i %-4a%1A%3n %1c%4R%1E   %8.3x%8.3y%8.3z%6.2Q%6.2b          %2e%2C")
5769# pdbHeteroData =   {selected and hetero}.label("HETATM%5i %-4a%1A%3n %1c%4R%1E   %8.3x%8.3y%8.3z%6.2Q%6.2b          %2e%2C")
5770# pdbFile = pdbAtomData + pdbHeteroData
5771# write VAR pdbFile "test.pdb"
5772#
5773# molFileData = "line1\nline2\nline3\n"+(""+{selected}.size)%-3+(""+{selected}.bonds.size)%-3+"  0  0  0\n"+{selected}.labels("%-10.4x%-10.4y%-10.4z %2e  0  0  0  0  0")+{selected}.bonds.labels("%3D1%3D2%3ORDER  0  0  0")
5774#
5775#
5776# GETPROPERTY "evaluate"
5777#
5778# You can now use getProperty to get expression information directly:
5779#
5780#  getproperty "evaluate" "{*}.xyz"
5781#
5782# or on a web page the following returns a valid XYZ file for molecule 1:
5783#
5784#  var info = jmolGetPropertyAsJavaObject("evaluate", '"" + {molecule=1} + "\n\n" + {molecule=1}.label("%a %x %y %z")')
5785#
5786#
5787# SELECTED ATOMS FROM ATOM EXPRESSIONS
5788#
5789# You can select atoms from an atom expression using [n].
5790# "[0]" means "and everything after".
5791#
5792#  x = {atom expression}[3].ident
5793#  x = {atom expression}[3][0].xyz   # 3 and after (average position)
5794#  x = {atom expression}[3][5].x     # 3-5 (average x)
5795#
5796#
5797# SELECTED BONDS FROM EXPRESSIONS
5798#
5799# You can select bonds from an atom expression
5800#
5801#  x = {atom expression}.bonds.ident
5802#  x = {atom expression}.bonds[3].ident
5803#
5804#
5805# BOND INFORMATION
5806#
5807# You can specify how to label a set of bonds using format strings.
5808# Numbers are currently in Angstroms. Keys are
5809#
5810#  %#      sequential number
5811#  %=      file 1-based index
5812#  %ORDER  the bond order
5813#  %TYPE   the bond type
5814#  %LENGTH the bond length
5815#  %x1     atom property "x" for atom 1
5816#  %x2     atom property "x" for atom 2
5817#
5818# The special atom properties %D1 and %D2 give sequential numbers for the
5819# atoms FOR THIS SET OF BONDS. This is so that a proper subfile of type MOL
5820# could be generated.
5821#
5822# x = {atom expression}.bonds[3].label("%# %3ORDER %TYPE %a1 %a2 %6.3LENGTH")
5823#
5824#
5825# EXPANDED MODULUS % OPERATOR IN IF, SET, AND %{}
5826#
5827# Usually modulus is reserved for integer math, so we
5828# extend that here to add some useful "modulus-like" capability:
5829#
5830#  string modulus for trimming and padding
5831#    "test" %3  ==> left trim:  "tes"
5832#    "test" %6  ==> right pad:  "test  "
5833#    "test" %-3 ==> right trim: "est"
5834#    "test" %-6 ==> left pad:   "  test"
5835#
5836#  float modulus for rounding and scientific notation
5837#    3.5456 %3 ==> "3.546"  (STRING!)
5838#    3545.6 %-3 ==> "3.55E+3" (STRING!)
5839#
5840#    0.0 + 3.5456 %3  ==> 3.546 (float)
5841#    0.0 + 3545.6 %-3 ==> 3550.0
5842#
5843#  point modulus for getting base unit cell equivalent position
5844#    {3/2 1/2 1/1} % 0 ==> {1/2 1/2 0}
5845
5846# -----------------------------------------------------------------------------
5847
5848#version=11.1.13:
5849
5850# DATA "coord set"
5851# invertSelected POINT ....
5852# invertSelected PLANE ....
5853# invertSelected HKL ......
5854# rotateSelected ....
5855# rotateSelected spin ....
5856# full state support for "tainting" atom positions using translateSelected or invertSelected
5857#
5858# set allowRotateSelected # then use ALT-LEFT for rotating just the selected molecule
5859#
5860# this all definitely needs some work and discussion in terms of user interface via mouse
5861#
5862#
5863# write coords xxxx.spt
5864# load xxxx.spt # minimal -- just coord.
5865# script xxxx.spt # this is the full state load
5866#
5867# x = (some atom expression).atomProperty  -- takes an average if more than one atom
5868# for example:
5869#
5870#  x = (* /1).temperature
5871#  x = (C5).bondcount
5872#
5873# note that you can even say:
5874#  set echo top left
5875#  echo average position= {%{(selected).x},%{(selected).y},%{(selected).z}}
5876#
5877# and it will AUTOMATICALLY update with new values as you select different atoms.
5878
5879# -----------------------------------------------------------------------------
5880
5881#version=11.1.12:
5882
5883# app fix for console entry messing up cursor position;
5884# allows for scripting during pause or interrupt of running script using ! as first character of script
5885# new: within(x.x,plane,$plane1)
5886# fix for "draw off" not recorded in save state
5887# fix for within(integer,...) bug using RasMol units
5888# fix for _modelnumber showing up as 2001
5889# reconfigures _modelNumber as x.y for single models; x.x - y.y for range
5890# adds _currentFileNumber
5891# adds _currentModelNumberInFile
5892# disallows user setting of variables with _ as first character
5893# adds @variableName in any command
5894# adds frame x.x - y.y
5895# adds frame 0.0
5896# adds frame range x.x - y.y
5897# adds file command
5898# adds select file=
5899# tunes select model=
5900