CHANGES


# NOTE: This is not the development trunk. It is the release branch.
# NOTE: Generally only bug fixes should be entered here.
# NOTE: New features should be introduced in the trunk version 11.9.x

version=11.8.24

# bug fix: load FILTER not saved in state when not involving a lattice
# bug fix: "axesScale" saved in state as "axisScale"
# bug fix: atom.bonds may be null
# bug fix: minimizer may not recognize bonds for "new" atoms
# code: SMILES minor changes
# note: SMILES in 11.8 does not support aromatic lower case "x"
# bug fix: SMILES parser not properly checking explicit double bond check
# bug fix: Spartan reader (compound document) misread
# bug fix: fix for write POVRAY "xxx" not writing file for signed applet
# bug fix: CSF reader upgrade
# bug fix: writing MOL files with aromatic bonds fails
# bug fix: It is possible for PDB files (1tmv) to include non-crystallographic
# symmetry operations. These operations do not fit the standard model of
# Jones-Faithful operator syntax. (The symmetry in this case is a spiral)
# In that case, the list of symmetry operations may be truncated, and though
# all the atoms are in the correct positions, "select symop=49" might not work.
# bug fix: PDB biomolecule reading misses a set if the first is not "x,y,z"
# bug fix: carbohydrate backbone atoms not clickable

# -----------------------------------------------------------------------------

#version=11.8.23

# bug fix: polyhedra collapsed incorrect shading calculation
# bug fix: unicode characters in filenames
# bug fix: UFF carbonyl out-of-plane calculation coding error does not minimize carbonyl groups correctly
# bug fix: resolver could consider some CUBE files to be MOL files
# bug fix: subtle cartoonRenderer error involving --i > 0;
# bug fix: rockets miscalculation of sheet parameters since forever (load 1ag6.pdb;rockets on)
# bug fix: atomSite incorrectly assigned in AtomSetCollection
# bug fix: color hbonds ENERGY causes NPE when non-calculated HBonds are created
# bug fix: simple model appended to model having unit cell does not show axes
# bug fix: load "@x" does not preserve load options
# bug fix: load "@x" loads model twice when the saved state is restored
# bug fix: UnitCell in appended model but not first model does not display

# -----------------------------------------------------------------------------

#version=11.8.22

# bug fix: Spartan and WebMO orbitals are already normalized!
# bug fix: MOReader (NBO section) errors reading certain NBO files.
# bug fix: spacegroup creation bug with LOAD command SPACEGROUP option

# -----------------------------------------------------------------------------

#version=11.8.21

# bug fix: black shades lost in writing (antialiased) images
# bug fix: using --i instead of i-- with for causes infinite loop
# bug fix: draw FIXED arc, curve, arrow -- no reason not to do this, I think.
# bug fix: spacegroup 177 must not have Hall symbol P 63 same as H-M symbol P 63

# -----------------------------------------------------------------------------

#version=11.8.20

# bug fix: hbonds after wireframe will be thin
# bug fix: lcaocartoon "s" is not being saved in state
# bug fix: All water should be included in the 'solvent' set

# -----------------------------------------------------------------------------

#version=11.8.19

# bug fix: GROMACS reader should not require forces
# bug fix: select IONS broken (left broken in 11.6)
# bug fix: load models {(.....)} not preserved in state
# bug fix: structure HELIX {3-4} will cause 5-... to lose structure type
# bug fix: select 1:3.*
# bug fix: [state] button in app console not showing state
# bug fix: load sometimes not properly accounting for unique axis information
# bug fix: write frame typed in application can hang Jmol.
# bug fix: refresh after echo @{...} causes Jmol to hang.

# -----------------------------------------------------------------------------

#version=11.8.18

# bug fix: (not really) -- " " character in VRML export added to accomodate AutoDesk 3D MAX import read bug
# bug fix: drawHover status not reported properly after zap/new model loaded
# code: model properties atomCount, bondCount should be private
# bug fix: bitsets not properly handled in model deletion
# bug fix: bfactor min/max was ignoring first atom
# bug fix: within molecule was using undocumented "visible"
# bug fix: frame *;draw {atomno=1} {atomno=5} not working properly
# bug fix: pdb reader as trajectory error
# bug fix: MO export to cartesian exporters (VRML/X3D/Maya) should not do front-only
# bug fix: APBS reader could hang on empty line
# bug fix: message this is a @{test} fails
# bug fix: CCP4/MRC and XPLOR map file reader fix/upgrade

# -----------------------------------------------------------------------------

#version=11.8.17

# bug fix: revertings changes to cancelRendering
# bug fix: applet cannot load inline

# -----------------------------------------------------------------------------

#version=11.8.16

# bug fix: connected(0, {carbon}) not working
# bug fix: obscure compiler PDB bug for polyhedra, structure, frame commmands
# utilizing user-defined functions of the form @{xxx({n})}
# bug fix: polyhedra colors not deleted when polyhedra deleted
# bug fix: polyhedra can be lost if only a subset are colored
# bug fix: write to clipboard not working
# bug fix: label %i not working
# bug fix: select within(0.3, hkl, {1 2 3}) requires quotes: "hkl"

# -----------------------------------------------------------------------------

#version=11.8.15

# bug fix: PDB cryst1 record for NMR files not ignored
# bug fix: symop in biomolecule context not recsognized by label "%[symmetry]"
# bug fix: "label %" can cause Java exception
# bug fix: older format %{...} not recognized by script compiler
# bug fix: long scripts in setEcho being chopped when saved in state
# bug fix: "color background xxxx" clears background image as well
# bug fix: labels given text after containing an image have incorrect y-displacement
# bug fix: transparent pixels in images not respected

# -----------------------------------------------------------------------------

#version=11.8.14

# bug fix: _width and _height lost after initialize
# bug fix: Jmol 11.8.10-11.8.13 will not read state orientation correctly

# -----------------------------------------------------------------------------

#version=11.8.13

# bug fix: font axes not functional
# bug fix: FILTER "biomolecule ..." option broken in LOAD command.
# bug fix: {xxx}.xxx = syntax immediately following "for ( ) {...}" causes compilation error
# bug fix: draw: when only some models are visible, does not properly assign models to drawn object
# code: draw: dmesh.modelFlags not properly implemented (reset in setModelVisibility)
# bug fix: zoomTo out not functioning

# -----------------------------------------------------------------------------

#version=11.8.12

# bug fix: zoom/zoomTo does not refresh transform parameters
# bug fix: dot product miscalculation
# bug fix: NWChem reader not reading files with lower-case-only atom names
# bug fix: code - viewer.getDisplayModelIndex() not used properly when background model is present
# bug fix: rear mesh lines not visible on isosurface when surface also drawn
# bug fix: Export uses incorrect width/height parameters when size is not window size

# -----------------------------------------------------------------------------

#version=11.8.11

# bug fix: select *.CD not accepted.
# bug fix: navigation key release causing unnecessary refresh
# bug fix: console command recall (up arrow) does not always return full command line
# bug fix: zShade/navigation mode incompatibility
# bug fix: navigate TRACE broken in 11.7.47
# bug fix: zshade not resetting properly; now reset off with reset() or load of model
# bug fix: occasional null pointer error during ZAP due to continued rendering by
# previous graphic painting thread
# code: JmolFrameExportJmolAdapter abandoned -- hasn't been implemented since 11.0

# -----------------------------------------------------------------------------

#version=11.8.10

# bug fix: MSIE mouse-wheel malfunction due to Jmol not consuming the wheel motion
# bug fix: isosurface xxx lcaocartoon ... does not always honor xxx as isosurface name
# bug fix: Hall name translator can incorrectly assign matrix for F m -3 m group
# bug fix: Gaussian '09 reader not reading " Atom AN" properly in frequency lists
# bug fix: zoom/rotateXY modes not properly isolated
# bug fix: moveto with {0 0 0 0} uses instead {0 0 1 0}
# bug fix: zoomto fights with user over orientation
# bug fix: AIMS files with empty lines preceding keyword lines are now recognized
# bug fix: AIMS reader not reading multipole lines describing monopoles
# bug fix: CASTEP and AIMS readers now properly load unit cells using cell vectors
# which are not suitably aligned with the coordinate axes of the reference coordinate system
# bug fix: CASTEP reader not understanding unit specifier in .cell files

# -----------------------------------------------------------------------------

#version=11.8.9

# bug fix: strand count assignment error in cif/pdb readers causes failure to load 3ovo.cif
# bug fix: labels offset using set picking select label not saved in state properly;
# added "set labelOffsetExact"
# bug fix: set picking select label shifting label causes jump and not saved in state reproducibly
# bug fix: set toggleLabel inappropriately resets label to default setting
# bug fix: moveto QUATERNION (undocumented for 11.8) not distinguishing between
# orientation quaternions and molecular quaternions
# -- MOLECULAR keyword added
# bug fix: setting perspective model stops animation in state script
# bug fix: GAMESS reader not reading all vibrational frequencies

# -----------------------------------------------------------------------------

#version=11.8.8

# bug fix: GAMESS reader not reading BETA MOs.
# bug fix: A function starting with "_" originally was considered
# local to the applet, with all other functions being static.
# Then, in 11.7.45, this was switched. Unfortunately,
# that meant state functions _set... were static
# causing applet-applet interference.
# So for this fix I've changed that to be "static_..." for
# expressly static functions, and then also designated
# "_...." functions as not generally declared when writing
# a state or in "show functions" so that a state does not
# duplicate itself, and "show functions" works as before.
# bug fix: jmol -ionxs with a script that includes measurement tries to update a nonexistant measurementTable
# bug fix: select xxx when xxx is an array fails to do lookup of defined values
# bug fix: legacy code: Bond.getBondModelIndex returning atomIndex instead
# 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)))",
# bug fix: data3d_ not working for saving state after functionXYZ
# bug fix: isosurface does not clear data after functionXY or functionXYZ
# bug fix: label %vx giving x coord, not vibration x component
# bug fix: write VAR for string array does not work.
# bug fix: GAMESS reader vibrations use wrong atom coordinates
# bug fix: PQR reader not adaptive
# bug fix: zshade now working correctly (almost -- see 11.8.11)
# bug fix: setting spacefill to a large user-defined VDW radius incorrect
# bug fix: Gaussian 09 LOG file reader upgrade for MOs
# bug fix: unitcell offset {1 1 1}; select UNITCELL

# -----------------------------------------------------------------------------

#version=11.8.7

# bug fix: incorrect reference to jmolStatusListener for sync callback in StateManager
# bug fix: file drop needs zap prior to load for cleaner operation
# bug fix: Hall symbol translation generates incorrect Jones-Faithful operation (missing translation)
# (broken by 11.8.4 9/5/2009) -- Thank you, Sarah Mattler, WUSTL!

# -----------------------------------------------------------------------------

#version=11.8.6

# bug fix: context menu View... broken when boundbox or unitcell are on
# bug fix: syncScript broken
# bug fix: load trajectory not working properly
# bug fix: animation/spin incompatibility problem
# bug fix: initialize does not reset antialiasDisplay or set animation off
# bug fix: getProperty("menu") does not work until a menu has been called up by user
# bug fix: menu item for style does not respect bondMode
# bug fix: lcaocartoon not working

# -----------------------------------------------------------------------------

#version=11.8.5

# bug fix: select *.? not working properly
# bug fix: isosurface not retrieving exact reference for jvxl files in state
# bug fix: (potential) draw symop could have incorrect glide

# -----------------------------------------------------------------------------

#version=11.8.4

# bug fix: "zapped" file does not clear menu
# bug fix: x = {255,0,0}; select color=x; #did not work
# bug fix: symop() -- can now be used without "all."
# bug fix: isosurface reading of contoured JVXL files defaults to "nomesh nofill"

# -----------------------------------------------------------------------------

#version=11.8.3

# bug fix: file save from menu does not pull up dialog
# bug fix: aims/castep readers
# bug fix: "initialize" should not reset defaultDiretory
# bug fix: compiler error for {xxx}.yy = n \n {xxx}.yy = n
# bug fix: compiler error for literal -0 or -0.0
# bug fix: show pointgroup can give wrong format after getproperty PointGroupInfo
# bug fix: mmCIF misreads bfactor data
# bug fix: load append of file with ellipsoids causes array out of bounds exception
# bug fix: show spacegroup can cause null exception
# bug fix: animation direction -1 not functional
# bug fix: script lines 1-3 not functional

# -----------------------------------------------------------------------------

#version=11.8.2

# bug fix: 2D mesh property not cleared
# bug fix: popupMenu disabling nonfunctional
# bug fix: acos, to be consistent, needs to deliver degrees, not radians
# bug fix for MOReaders * NBO: --- note, "-" can be in column with " " causing tokenization failure

# -----------------------------------------------------------------------------

#version=11.8.1

# bug fix: grp.property_x = n can change definition of grp
# code: refactoring of Measure/Graphics3D
# bug fix: q1.dot(q2)
# new feature: CASTEP (http://www.castep.org/) and AIMS readers
# new feature: popup menu gives Symmetry operation display option
# new features for the 238th American Chemical Society National Meeting, Washington, D.C., Aug. 19, 2009
# new feature: draw ID xxx SYMOP [n or "-x,y,z"] [optional {atom or position}]
# draws symmetry operation for spacegroup
# see http://chemapps.stolaf.edu/jmol/docs/examples-11/showsym.htm
# new feature: pt = all.symop(3, {atomno=3})
# new feature: sdrawCommands = all.symop(3, {atomno=3},"draw_id")
#
# new feature: ho, ho, this is fun. Wouldn't it be nice to just drag a JPG into
# Jmol and have it come alive?
# write IMAGE t.jpg
# load t.jpg (Or just drag it into the Jmol window from a file directory.
# The IMAGE option instructs Jmol to add its state to the JPG image, so when it is
# dragged in, Jmol recognizes that and loads the state. Very cool.
#
# also with PNG images; to not do this, use
#
# set imagestate false
#

# bug fix: polyhedra saving in state
# bug fix: function call as statement with expression argument fails:
#
# testing({atomno=3})
#
# bug fix: isosurface map property can create holes in isosurface
# code: dissociation of applet console from jvm12

# bug fix: Various Examples fixes
# bug fix: defaultDirectory should not be part of the state
# new feature: select structureID="xxx" selects structures by alphanumeric id such as "S1" or "H3"
# bug fix: show structure not properly showing structure indices, IDs, or strand counts for PDB or CIF files
# code: Jmol embedded in applications can use Jmol menu and Jmol console directly (needs testing)
# code: PdfCreator incorporated into ImageCreator and outputs antialiased image

# -----------------------------------------------------------------------------

#version=11.8.RC5

# new feature: Jmol embedded in applications can use WRITE command to create all types of images and exports
# new feature: VERY COMPACT IDTF export (for U3D conversion; all except background color)
# * after
# *
# * write t.idtf
# *
# * using IDTFConverter.exe, on Windows one can turn these files into VERY COMPACT U3D files.
# *
# * IDTFConverter.exe -input t.idtf -output t.u3d
# *
# * see http://sourceforge.net/projects/u3d/
# * see http://en.wikipedia.org/wiki/Universal_3D
# * see http://www.ecma-international.org/publications/standards/Ecma-363.htm
# * in the downloadable zip file, see docs/IntermediateFormat/IDTF Format Description.pdf
#
# bug fix: (application) delaying saveChooser load makes startup MUCH faster when loading a file
# bug fix: gaussian reader may fail to read MOs from Gaussian 03: AM64L-G03RevC.01 3-Apr-2004

# -----------------------------------------------------------------------------

#version=11.8.RC4

# from the 2009 GORDON RESEARCH CONFERENCE ON EDUCATION:
# bug fix: DRAW point size 6 pixels (an even number) sets it just one pixel off center -- 7 is better.
# new feature (TODO): 4D extension (that's right -- FOUR dimensions)
# new feature: set picking Label now allows label offset by holding SHIFT down while dragging atom
# new feature: lone pairs and radicals -- extension of lcaoCartoon:
#
# select oxygen; lcaocartoon lonePair "sp2a"
# select oxygen; lcaocartoon radical "sp3"
#
# new feature: print getProperty("FileInfo","REMARK300") //was PdbInfo
# new feature: print getProperty("FileInfo","models",1,"_citation_year");

# TODO: load 1crn.pdb;quaternion;quaternion diff;zap 2.1 -- leaves blank model 2.1 and destroys state
# TODO: what to do about deleting models prior to current -- why statescript removed?
# bug fix: zap x.y when have measures to draw objects causes exception
# bug fix: isosurface mapping with property where property can be NaN does not render some regions
# bug fix: lcaoCartoon wildcard problems
# bug fix: undocumented rotate[selected] {pt1} {pt2} ... has pt1/pt2 backward. Should be such that:
#
# rotate x 10
#
# is the same as
#
# rotate {0 0 0} {1 0 0} 10
#
# new feature: set quaternionFrame "a" -- alpha-carbon-ONLY straightness. see 1JGQ
# bug fix: compiler error when integer typed instead of command
# bug fix: state for lcaocartoon broken
# bug fix: set picking spin for draw objects broken in 11.8.RC1
# new feature: set helixStep 0 -- relates a quaternion to the standard reference frame
# bug fix: DRAW CIRCLE size may not be correct when restored from state
# new feature: write "xxx.X3D"
# new feature: [x,y,z].sum2 or {xx}.someProperty.sum2 -- sum of squares
# new feature: VRML export nearly full support
# -- includes draw, ellipsoids, dots, isosurface, cartoons, stars, halos,
# polyhedra, vectors, dipoles, etc.
# -- no background labels
# -- labels are not exactly the right size
# -- no background image
# -- no ellipsoid quadrant cutouts
# -- slightly irregular trace when very small diameter

# code: simplified export interfaces

# -----------------------------------------------------------------------------

# version=11.8.RC3

# code: more efficient VRML export
# new feature: set helixStep 1,2,3,... sets step for quaternion-based analysis of structure -- see 1C4D
# bug fix: 1C4D has [FOR] -- not accepted
# bug fix: color isosurface red translucent prior to isosurface command causes null pointer exception
# new feature: isosurface select(....) SET n
# where n is an integer 1,2,3... that selects which set is to be displayed and
# counted for area or volume
# bug fix: spacegroup reading when center of molecule is not in unit cell can cause bonding errors
# new feature: isosurface area for subsets -- use
# isosurface area select(oxygen) sasurface colorscheme sets
# bug fix: draw OFF in state script is not selective

# -----------------------------------------------------------------------------

# version=11.8.RC2

# bug fix: mouse-picked measurements broken in 11.8.RC1

# -----------------------------------------------------------------------------

# version=11.8.RC1

# bug fix: measurements defined using points not restricting to models
# -- note, bug fixes in .RCx versions will not be fixed in 11.6

# -----------------------------------------------------------------------------

# version=11.7.47

# new feature: set quaternionFrame "RC" or "RP" -- ramachandran-derived straightness
# new feature: array1.add("sep", array2) adds a new column of values separated by sep, for example:
# set quaternionFrame "P";ap = {*.ca}.straightness;
# set quaternionFrame "C";ac = {*.ca}.straightness;
# print {*.ca}.label("%n\t%R").add("\t",ap).add("\t",ac);
#
# bug fix: VRML balls missing; VRML/POVRAY error on partial surfaces
# new feature: NAVIGATION STOP -- sets navX, navY, navZ to 0
# new feature: navX, navY, navZ, navFPS all settable
# new feature: NAVIGATION ON/OFF now does continuous motion with arrow keys
# SPACE to stop
# LEFT/RIGHT to pan left or right
# UP/DN to move forward/back
# ALT UP/DN to pitch up/down
# CNTL UP/DN to increase/decrease speed in larger amounts

# code: more efficient labelGroup calculatiion
# bug fix: navigationmode not properly adapting with window resize or antialiasdisplay
# new feature: draw HELIX AXIS or quaternion HELIX AXIS, also for DNA/RNA
# code: cleaned up navigation business; an attempt at navigating a surface...Maybe not...
# new feature: GROMACS reader
# bug fix: arrays passed to functions by reference do not update if size is increased
# new feature: by passing an array to a function, you can make that variable
# return a value -- any value, not just an array:
# function test(a) {
# a = "new value"
# }
# b = []
# test(b)
# print b ==> "new value"
#
# bug fix: spacegroup "-- [--]" displayed when load command option SPACEGROUP is used
# bug fix: mol2 reader not properly allowing override of CRYSIN unit cell record
# bug fix: %r not correct label
# bug fix: quaternionFrame default now "p"
# bug fix: quaternion difference off by one group
# bug fix: show FUNCTIONS not working
# bug fix: draw picking in multimodel context causes null pointer exception
# new feature: within("HELIX"), within("SHEET") -- helix and sheet, but not ends
# new feature: all.bin(f0, f1, df) -- binning of data to give an integer array of counts
# for example: print {*}.straightness.all.bin(0, 1, 0.05)
# bug fix: WRITE MO does not work when no current MO is present
# new feature: draw ARC {center} {plane}
# new feature: draw ARC {center} {axisPoint}
# new feature: draw CIRCLE {center} {plane}
# new feature: draw CIRCLE {center} {axisPoint}
# new feature: draw SCALE works with CIRCLE
# bug fix: draw ARC was using radius, not diameter, for scale
# bug fix: draw RAMACHANDRAN angle arrow radii too small

# bug fix: quaternion difference draw not quite correct on axis position
# bug fix: 11.7.43 broke restoration of state having multimodel draw

# -----------------------------------------------------------------------------

#version=11.7.46

# bug fix: select model=1 does not work (since 11.6.RC17!)
# new application: JmolData.jar
# This application completely disallows any display -- it is totally formless
# There are no Java Swing JFrames involved, no dialogs, no popup menus,
# no display, no shapes, no labels, no echos -- just the model data.
#
# bug fix: command-line jmol scripts not exiting jmol upon an error condition
# argh. FOR broken in 11.7.45
# new feature: helix(resno or {atomExpression},type)
# given x = C-alpha, C-carbonyl, or N (depending upon set quaternionFrame)
# where type =
# "point" -- nearest point to x on local helix axis
# "axis" -- quaternion derivative vector normal indicating local helix axis
# "angle" -- rotation around local heix axis for resno i --> i+1
# "radius" -- vector normal from local helix point to x
# "draw" -- draw command for the local helix vector
# note that the axis length is the rise, radius length is the radius,
# and 360 / angle is the pitch of the helix
#
# bugfix: gamess readers crashing if keywords missing from basis options or control options
# code: findNearestAtomPicked added to JmolViewer
# new feature: VRML exporter displays ribbons and cartoons by automatically setting
# hermiteLevel 1 if necessary.
# new feature: VRML exporter recognizes color and normals for isosurface

# -----------------------------------------------------------------------------

#version=11.7.45

# bug fix: load trajectory XXX.cif not applying fractional coordinates.
# bug fix: load trajectory {0 -1 1} not loading any models if first model has 0 atoms
# (as in certain cif files)
# bug fix: dipole offsetside not working for molecular dipole (EVER!)
#
# code: refactored scriptEvaluator and Jmol.java. Now it is much simpler
# to create a truly "headless" Jmol application, where Jmol is being
# used for the investigation of the structure instead of visualization.
#
# script editor behaving properly except for a nasty SWING bug that will
# require recasting this in AWT instead of SWING.
# See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4353673
#
# new feature: gamessUS reader now reads dipoles and partial charges.
#
# TODO script editor -- search? argh... I knew this would be a can of worms...
# script editor -- undo/redo works (CTRL-Z, then SHIFT-CTRL-Z or CTRL-Y)
#
# new feature: drag/drop and file menu-open scripts directly into editor, from where they can be checked or tested.
# code: refactored readers, allowing for more obvious initialization/finalization methods
# new feature: App and applet consoles now have "editor" buttons
# that load scripts into a "script editor" and allow stepping through
# scripts (and changing values during the pauses) - preliminary only
#
# opens a rough draft ScriptEditor
# new feature: Gamess file reader now translates internal basis set and calculation
# methods representations into roughly literature standard for Pople & Dunning basis
# sets as well as perturbation, CI and CC calculation methods. This is dumped to
# calculationType.
# new feature: application console buttons: PAUSE, ?, STEP
# new feature: SHOW TRACE -- reports stack trace
# bug fix: functions with names starting with _ were local instead of global
# bug fix: 2 pixels off in y for labels. Don't know why I thought that was necessary in Text.java::setBoxXY.
# new feature: SHOW VARIABLES now gives variable trace through function stack
# new feature: [Oh, VERY COOL!] You can now pause the app anywhere in a
# script, do anything you want -- even within functions -- change variables,
# set parameters, anything -- and then resume with RESUME. Some of us
# have dreamt of having this with JavaScript. Very very useful!
# so, for example:
#
# function testing(i,j) {
# n = 3
# show variables
# pause change any variable and then enter RESUME
# show variables
# }
# testing(3,5)
#
# bug fix: problems with PAUSE/RESUME within App
# bug fix: "set ?" nonfunctional
# bug fix: unmatched { in quotes in @{ } not properly treated: echo @{" testing}"}
# new feature: strings may start with ' or ", like JavaScript:
# x = 'testing'
# print 'there are ' + all.length + ' atoms'
# cd, echo, gotocmd, help, hover, javascript, label, message, and pause
# all are implicitly strings. You CAN use "..." but you don't have to,
# and you cannot use '...'. This way the introduction of single quotes
# as an equivalent of double quotes cannot break existing scripts. -- BH 06/2009
# new feature: print getProperty("PDBInfo","REMARK300")


# -----------------------------------------------------------------------------

#version=11.7.44

# bug fix: write FRAMES also for trajectories
# new feature: MO LIST or SHOW MO LIST display listing of orbitals for all files
# new feature: GAMESS reader now sets calculationType, orbital type, and auxiliaryInfo.calculationOptions
# bug fix: select(x;{xxx};...) or for(x;{xxx};...) when {xxx} is empty returns incorrect result
# bug fix: dipoles cannot be colored by name
# bug fix: dipole settings not accessible via wildcards
# new feature: merging of label() and format() functions -- same in all respects.
# bug fix: spartan'08 reader not reading vibrations

# -----------------------------------------------------------------------------

#version=11.7.43

# bug fix: /** comment ending line can cause odd error

# bug fix: set xxxx n where n is an integer fails.
# bug fix: GAMESS reader not properly assigning MOs
# code: better .stddev calculation
# new feature: a = [] note that a+=2 then produces [2] -- "a+=" similar to JavaScript a.push(2)
# bug fix: a="test";a[1] = "b" not working
# bug fix: {atomExpression}.min, .max

# -----------------------------------------------------------------------------

#version=11.7.42

# new feature: function parameter arrays passed by reference, so, for example:
#
# var a = [1,2,3,4]
# function incrementA(a, i) { a[i]++ }
# incrementA(a, 3)
# show a
#
# gives a = [1,2,4,4]
#
# new feature: general commands no longer restricted to single lines.
# any unpaired ( or [ or { triggers continuation
#
# new feature: set or x = command no longer restricted to single lines.
# any binary math operator at end of line or beginning of next line
# marks continuation, also any unpaired ( or [ or { triggers continuation
# (same as JavaScript)
#
# new feature: -p Jmol application command line option --printOnly silent operation with only print command output or warnings going to the console
# for example:
# java -Xmx512m -jar "Jmol.jar" -pions "myscript.spt"
# just outputs messages from the print commands in that script
#
# bug fix: pickMeasureScriptTip not found
#
# new feature: support for extended inline if: x = (a ? this : b ? that : theother)
# default change: load trajectory "myfile.top" COORD {first,last,stride} "mdcrd::myfile.trj" defaults to last = -1 ("load all trajectories") not "load one trajectory"
# bug fix: gzipped gzip file not read properly. (Jmol-FAH files)
# new feature: {*}.modelindex
#
# bug fix: y = q improperly defining q if q does not exist.
# "all" equivalent to {*}
# new feature: load ("filename", nBytesMax) --- and returns "java.io.FileNotFoundException" if file
# does not exist when nBytesMax == 0, so is a simple test for "Local File Exists"
# would be if (load("filename",0).length == 0)...
#
# new feature: print {xxx}.label.all("xxxx") -- forces array even if only one atom (like "{xxx}.label.all")
# bug fix: color.all not working properly
# bug fix: xxx.all was not forcing array when only one value
#
# code: refactored classes -- next best thing to a separate package (they aren't really public)
#
# CompilationTokenParser --> ScriptCompilationTokenParser
# Compiler --> ScriptCompiler
# Eval -> ScriptEvaluator
# FlowContext --> ScriptFlowContext
# Function -> ScriptFunction
# Variable -> ScriptVariable
#
# bug fix: load @filename
# new feature: format("sprintf format", a, b, c, ...)
# new feature: {xxxx}.label("") shows current label
# new feature: [array].sort
# new feature: [array].reverse
# new feature: [array].min
# new feature: [array].max
# new feature: [array].average
# new feature: [array].stddev
# new feature: (value).label("C++ printf format")

# bug fix: quarternion().q not working
# bug fix: Crystallographic Information File not recognized.

# -----------------------------------------------------------------------------

#version=11.7.41

# bug fix -- bitsets not copied: m1 = {m and selected} changes m to "m and selected"
#
# OK, this version basically turns Jmol scripting language into a subset of JavaScript.
# Or, maybe a superset of the basic JavaScript constructs. Anyway, they are related.
#
# Similarities to JavaScript:
#
# --Jmol scripting now supports ++, --, +=, -=, *=, /=, \=, |=, &=
# --The if, for, while, and function constructs are all about the same, using braces.
# for example:
#
# for (i = 1; i <= 10; i++) {print {*}[i].radius}
# for (i = 0; ++i <= 10;) {print {*}[i].temperature}
# if (var i < 10) {{*}[i].radius *= 2} else {spacefill off;wireframe}
# i = 0; while (++i < 10) {select {*}[i * 2]; color red }
#
# --A relatively free typing of variables. Jmol is going to save variables as strings
# in terms of the Jmol "state" but in this version I introduce the Variable class that
# subclasses Token and allows for a more organized approach to variables and sets the
# stage for future improvements.
# --Commands separated by semicolons or line breaks
# --Object-like methods and fields such as {*}.xyz.all.join(" ") and {atomno=3}.radius
# --On-the-fly compilation.
#
# Differences include:
#
# --A broarder range of variable types, including boolean, integer, decimal,
# string, point, axis-angle/plane/quaternion, atom bitset, bond bitset,
# and one-dimensional array.
# --No case-sensitivity for variable names.
# --1-based rather than 0-based arrays. (ONLY because that's the way models are numbered.)
# --Array indexing from the back to the front using n <= 0: A[0] A[-1] A[-2].
# --Array ranges [n][m], for example A[-3][0]
# --Core commands do not use commas or parentheses.
# --Visual-Basic-like IF / ELSEIF /END IF, FOR/END FOR, WHILE /END WHILE, and GOTO options.
# --A broad range of mathematical operations
# --Of course, a whole suite of methods that relate to molecular structure.
#
#
# nested ( ... ? ... : ... ) phrases ready for testing.
#
# print (1 < 30 ? 1 : 2)
# print (1 < 30 ? (5 < 1 ? "yes" : "no") : 0)
# print (1 < 30 ? (5 < 1 ? "yes" : (6 > 20 ? "yes2" : "hmm")) : (33))
# print (100 < 30 ? (5 < 10 ? "yes" : (6 > 20 ? "yes2" : "hmm")) : (33))
# print (1 < 30 ? (5 < 10 ? "yes" : (6 > 2 ? "yes2" : "hmm")) : (33))
# print (100 < 30 ? 33 : (5 < 1 ? "yes" : (6 > 2 ? "yes2" : "hmm")))
#
# bug fix: echo @{.... .... .... } not counting braces

# -----------------------------------------------------------------------------

#version=11.7.40

# bug fix: setting commandOptions "" in Viewer.setAppletContext()

# {atomno=3}.radius += 0.1
#
# bug fix: in certain APPEND cases, binary space partitioning forest initialization is not complete
# bug fix: minimization not trapping error on viewer going null
# new feature: set useMinimizationThread T/F nec. to be FALSE when running minimizations in scripts that require values
#
#
# code: compiler refactoring and efficiencies;
# code: compiler continued development of advanced scripting syntax.
#
# new feature:
#
# Jmol scripting now supports ++, --, +=, -=, *=, /=, \=, |=, &=
#
# i++
# ++i
# i += 3
#
# and basically all the standard flow syntax of Java and JavaScript:
#
#
# for (i = 1; i <= 10; i++) {print {*}[i].radius}
# for (i = 0; ++i <= 10;) {print {*}[i].temperature}
# if (i < 10) { {*}[i].radius *= 2}
# i = 0; while (++i < 10) {select {*}[i]; color red }
#
#
#
# plus some more -- no line breaks necessary for for/if/while:
# the braces really aren't necessary; there is no ambiguity here:
#
# for (i = 1; i <= 10; i++) print {*}[i].radius
#
# if (i < 10) { {*}[i].radius *= 2}
#
# for (i = 1; i < 10; i++) print i
# if (i < 10) print i
#
# bug fix: isosurface efvet reader not displaying data properties as colors
# bug fix: select {*.ca} (_x.atomno < 100) not working
#
# code: major refactoring of variables.
#
# new feature: complete freedom from lines and "end if, end for, end while" --
# just use standard { } notation. If no braces are used, then END must be used:
#
# for (var x = 1; x < {*}; x = x + 1)
# if ({*}[x].temperature < 10)
# ({*}[x]).radius = 1
# else
# ({*}[x]).radius = 0
# end if
# end for
#
# same as:
#
# for (var x = 1; x < {*}; x = x + 1){
# if ({*}[x].temperature < 10) {
# ({*}[x]).radius = 1
# } else {
# ({*}[x]).radius = 0
# }
# }
#
# same as:
#
# for (var x = 1; x < {*}; x = x + 1){
# {{*}[x]}.radius = ({*}[x].temperature < 10 ? 1 : 0)
# }
#
# same as:
#
# for (var x = 1; x < {*}; x = x + 1){{{*}[x]}.radius = ({*}[x].temperature < 10 ? 1 : 0)}
#
# new feature: standard { ... ? ... : ... ) notation in Jmol math:
#
# print ({*} < 100 ? "a small molecule" : "at least 100 atoms")
#
# new feature: load "@x" -- inline load of data contained in variable x.
#
# new feature: {*}.label = xxx and {*}.label("%[label]") and select label="xxx"
#
# new feature: An XML reader for Materials Studio .xsd files http://accelrys.com/products/materials-studio/
#
# new feature: greatly expanded item selecting:
#
# n = 2
# {{atomno > 10}[n+2][n+5]}.radius = 0.3
#
# note that an outer set of {} is required when setting a property
# You cannot just do {atomno>10}[5][6].radius
#
# new feature: .length alias for .size except for x.bonds - so it can be
# used where you would use that in Java, for instance:
#
# natoms = {*}.length
# for (i = 1; i <= natoms; i = i + 1)
# ...
# end for
#
# new feature: inline FOR(varName;{atom expression};math expression)
#
# ans = for(x;{*.ca};x.resno)
#
# produces a list of values
#
# new feature: .add() sums up values
#
# ans = for(x;{*.ca};x.bonds.length).all.add()
#
# new feature: inline IF(math expression;math if true; math if false)
#
# ans = if (x.resno < 5 ; "low resno"; "high resno")
#
# and combined:
#
# var ave = {*.ca}.boundcount.all.add()
# print for(x;{*.ca};if (x.bonds.length < )
#
# bug fix: MO reader can fail setting min/max bounds
# bug fix: various tweaks of atom properties business.
# bug fix: x = array();x[1] = "testing" not working
# -----------------------------------------------------------------------------

#version=11.7.39

# bug fix: biomolecules for new PDB format

# new feature: consistent set of atom properties now accessible via:
#
# select {xxxx = whatever}
#
# rather than the more cumbersome:
#
# select {*} (_x.xxxx = "whatever")
#
# for example:
#
# select insertion = "A" // see 1jgq.pdb
# display insertion = "?" // single-character wildcard here
# select altloc != "" // see 1vwh.cif
# select atomName = "O11" and cell = 555
# select atomType = "OXT"
# select atomName = "O*" // wildcards accepted
#
# This largely duplicates the current Rasmol notation but adds more of a
# natural language search language.
#
# The full set of atom properties can be checked this way:
#
# adpmax adpmin altloc atomID atomIndex atomName
# atomno atomType atomX atomY atomZ bondcount
# cell color covalent element elemno file
# formalCharge fracX fracY fracZ group group1
# groupID groupindex identify insertion ionic model
# molecule occupancy partialCharge phi polymerLength property_xx
# psi radius resno sequence site spacefill
# straightness strucno structure surfacedistance symop temperature
# unitX unitY unitZ valence vanderwaals vibX
# vibY vibZ
#
# full parameter list:
#
#{*}.xxx = y
# "select xxxx=yyyy"
# "label %x"
# "label %[xxxx]"
# property
# description
# yes yes adpmax the maximum anisotropic displacement parameter for the selected atom
# yes yes adpmin the minimum anisotropic displacement parameter for the selected atom
# yes A yes altloc PDB alternate location identifier
# yes yes yes atomID special atom IDs for PDB atoms assigned by Jmol
# yes D yes atomIndex atom 0-based index; a unique number for each atom regardless of the number of models loaded
# yes yes a yes atomName atom name
# yes i yes atomno sequential number
# yes yes B yes atomType atom type (mol2, AMBER files) or atom name (other file types) -- Jmol 11.7.1
# yes yes x yes atomX Cartesian X coordinate
# yes yes y yes atomY Cartesian Y coordinate
# yes yes z yes atomZ Cartesian Z coordinate
# yes yes bondcount covalent bond count
# yes cell crystallographic unit cell
# c/s yes chain protein chain
# yes yes color the atom color
# yes yes covalent covalent bonding radius
# yes yes e yes element element symbol
# yes yes l yes elemno atomic element number
# yes yes file file number containing this atom
# yes yes C yes formalCharge formal charge
# yes yes fracXyz fractional XYZ coordinates
# yes yes X yes fX fractional X coordinate
# yes yes Y yes fY fractional Y coordinate
# yes yes Z yes fZ fractional Z coordinate
# yes n yes group 3-letter residue code
# yes m yes group1 single-letter residue code (amino acids only)
# yes yes groupID group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file.

[|| 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||]

Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly.
# yes G yes groupindex overall group index (Jmol 11.5.35)
# 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]
# yes E yes insertion protein residue insertion code
# yes I yes ionic radius used for bonding (ionic radius when a formal charge is defined)
# yes M yes model model number
# yes N yes molecule molecule number
# yes yes Q yes occupancy occupancy 0.00 - 1.00
# yes yes P yes partialCharge partial charge
# yes f yes phi protein group PHI angle for atom\'s residue (Jmol 11.3.41)
# yes L yes polymerLength polymer length
# yes yes property_xx a property created using the DATA command
# yes p yes psi protein group PSI angle for the atom\'s residue (Jmol 11.3.41)
# yes yes I yes radius currently displayed radius -- in SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms
# yes R yes resno PDB residue number, not including insertion code
# yes r yes sequence PDB residue number, including insertion code
# yes S yes site crystallographic site number
# yes yes yes spacefill currently displayed radius
# 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 quaternionFrame 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: -psii-1 - phii + psii + phii+1.
# yes yes strucno a unique number for each helix, sheet, or turn in a model, starting with 1.
# yes yes structure "helix", "sheet", "turn", or "none"
# yes u yes surfacedistance shortest distance to a surface atom
# yes symop symmetry operation code
# o yes symmetry list of crystallographic symmetry operators generating this atom
# yes yes t yes temperature temperature factor (B-factor)
# yes unitXyz unit cell XYZ coordinates
# yes yes uX unit cell X coordinate normalized to [0,1)
# yes yes uY unit cell Y coordinate normalized to [0,1)
# yes yes uZ unit cell Z coordinate normalized to [0,1)
# yes yes yes valence the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3
# yes yes V yes vanderwaals van der Waal radius
# yes v yes vibXyz vibration vector, or individual components as %vx %vy %vz
# yes yes yes vibX vibration vector X coordinate
# yes yes yes vibY vibration vector Y coordinate
# yes yes yes vibZ vibration vector Z coordinate
# yes yes xyz Cartesian XYZ coordinates
# g yes group index in chain
# q yes occupancy (0-100%)
# W yes PDB residue designator with x, y, z included: [%n]%r %x %y %z (Jmol 11.3.41)


# bug fix: isosurface cavity colorscheme not applied
# bug fix: isosurface cavity colorscheme "sets" error
# code: extensive rewrite of Eval in terms of getting and setting atom properties
# code: Token.atomproperty broken down into intproperty, floatproperty, and stringproperty
# new feature: consistent set of atom properties now accessible via:
# select {xxxx = whatever}
# select {*} (_x.xxxx = "whatever")
#
# code: removed duplication in Eval for getBitSetProperty() and atomProperty()
# code: artificial size limitations in spacefill, halo, star, dots was not
# consistent with setting those values using {xx}.radius (for example)
# new feature: relaxed limitation on spacefill, halo, star, dots size to 16A.
# new feature: {xxx}.spacefill = n
# new feature: {xxx}.radius = n (same)
# new feature: print {xxx}.ionic ionic radius
# new feature: print {xxx}.covalent covalent radius
#
#
# code: ver efficient and flexible atom label compiler class modelset.LabelToken
# see Eval, Atom, Bond, and Measurement for implementation.
#
# new feature: label %[....] where .... is one of:
# %[altloc] %A
# %[atomIndex] %D
# %[atomName] %a
# %[atomno] %i
# %[atomType] %B
# %[atomX] %x
# %[atomY] %y
# %[atomZ] %z
# %[bondcount]
# %[chain] %c
# %[chain] %s
# %[element] %e
# %[elemno] %l
# %[formalCharge] %C
# %[fxyz]
# %[fx] %X
# %[fy] %Y
# %[fz] %Z
# %[group] %n
# %[group1] %m
# %[groupID]
# %[groupIndex] %G
# %[identify] %U
# %[insertion] %E
# %[ionic] %I
# %[model] %M
# %[molecule] %N
# %[occupancy] %
# %[partialCharge] %P
# %[phi] %f
# %[polymerlength] %L
# %[psi] %p
# %[radius]
# %[resno] %R
# %[sequence] %r
# %[site] %S
# %[spacefill]
# %[straightness] %T
# %[strucno] (1,2,3,...)
# %[structure] (helix,sheet,turn,none)
# %[surfaceDistance] %u
# %[symmetry] %o
# %[temperature] %b, %t
# %[uxyz]
# %[ux] %ux
# %[uy] %uy
# %[uz] %uz
# %[valence]
# %[vanderwaals] %V
# %[vxyz] %v
# %[vx] %vx
# %[vy] %vy
# %[vz] %vz
# %[xyz]
#
# this leaves only three label abbreviations without equivalents:
#
# %g // getSelectedGroupIndexWithinChain()
# %q // occupancy * 100
# %W // identifier and XYZ coord

# bug fix: selected connected(hbond) not working.
# bug fix: quaternion straightness not following quaternionFrame type (was using testflag3)
# bug fix: quaternion straightness not setting end points to Float.NaN
# new feature: color hbonds energy
# new feature: application flag -L --nosplash no splash screen (For Jmol in Sun Wonderland dev. 5)
# new feature: load XYZ ... loads just the XYZ coordinates, in sequence, based on selected atoms.
# lots of potential uses for this:
# --NMR files where you want just one model at a time and, once loaded, want to save the positions
# --basically anywhere you want a "trajectory" but don't want to save all that data
# bug fix: QchemReader reading second set of MOs with spherical basis problem (at end of optimization)

# -----------------------------------------------------------------------------

#version=11.7.38

# new feature: load OCCUPANCY ... int [0 to 255]
# new feature: load PARTIALCHARGE ... float ~[-3.4 x 10^38 to 3.4 x 10^38]
# new feature: load TEMPERATURE ... float [-327.68 to 327.67], with 0.01 precision (stored as short)
# new feature: loadAtomDataTolerance, with default 0.01 Angstroms

# spartan smol reader broken in 11.7.37

# -----------------------------------------------------------------------------

#version=11.7.37

# new feature: load VIBRATION "filename" n .......
# --all features of the load command, but only loads the vibrational information
# --applies {within(loadAtomDataTolerance,xyzcoord)}.vxyz = vibcoord, so to all unit cells
# --optional n is just as for any load -- optional nth model
# --operates on previously selected atoms only
# --allows embedded jmolscript, just as for any load
# --sets _vibrationName from file's atom set collection name
# new feature: loadAtomDataTolerance (see above)
# bug fix: load {n n n} not saved in state
# new feature: load {a b -c} packs a x b x c cells
# new feature: select within(-0.1, {1/2 1/2 1/2}) -- negative distance within selects atoms based on unitcell coordinates
# new feature: select within(-0.1, atomno=3) -- negative distance within selects atoms based on unitcell coordinates of all atoms involved
# new feature: select within(-0.1, true, atomno=3) -- negative distance within model selects atoms based on unitcell coordinates
# new feature: select ux|uy|uz < x.x -- selection based on unit coordinates
# new feature: {x y z}.fxyz -- returns fractional from cartesian
# new feature: {x y z}.uxyz -- returns unitcell from cartesian
# new feature: {x y z}.ux, .uy, .uz similar to .fx, .fy, .fz
# new feature: {x y z}.xyz -- returns cartesian from fractional
# note that .x .y .z does NOT do this conversion. If that is
# intended, you need to use {x y z}.xyz.x
# if multiple models are visible, then all these just return as through there were no unit cell.
#
# new feature: {atomExpression}.uxyz, .ux, .uy, .uz -- unit cell coordinate
# The value depends upon the setting of unitcell offset. For example, if we have
#
# unitcell 444
#
# then {x}.uxyz will be in the range {-1,-1,-1/1} (inclusive) to {0,0,0/1} (exclusive)
# Note that uxyz is not settable, but fxyz is, so one could, for example,
# pack a unit cell using:
#
# unitcell 555
# n = {*}.size
# for (var a = 1; a < n; a = a + 1)
# {atomno=a}.fxyz = {atomno=a}.uxyz
# end for

# bug fix: {atomExpression}.fxyz does not return factional value, just 0.0

# -----------------------------------------------------------------------------

#version=11.7.36

# code: better treatment of user-defined space group
# new feature: "xxxxx".find("pattern","flags") allows regular expression matching;
# flags include:
# "i" (case insensitive)
# "v" (reverse -- "true" if a string does NOT match; nonmatching elements for list)
# "m" (without "v", returns matching phrase in string or each list element or
# with "v", returns all but the matching phrase in string or on any matching list element)
# for example:
#
# print script("show spacegroup all").split().find("Hall symbol:").find("primitive","v")
#
# Hall symbol: P 1
# Hall symbol: -P 1
# Hall symbol: P 2y
# Hall symbol: P 2y
# Hall symbol: P 2
# ...
#
# print script("show spacegroup all").split().find("Hall symbol:")
# .find("primitive","v").find("Hall symbol: ","vm")
#
# P 1
# -P 1
# P 2y
# P 2y
# P 2
# ...
#
# bug fix: Hall lattice operation (SHELX only) could place atoms in unexpected unit cell
# bug fix: unitCell normalization error could miss some atoms in multi-unit cell visualizations
# new feature: Wien2k reader
# bug fix: possible exception when writing large image with translucency due to caught memory overflow leaving plotting buffer null

# -----------------------------------------------------------------------------

#version=11.7.35

# bug fix: calculate hbonds can fail when group does not have O or OXT atoms
# bug fix: (applet) jmolGetPropertyAsString("image") not functional
# new feature: label %G -- group index, like atom index, 0-based for entire collection
# new feature: ramachandran DRAW -- draws dihedral planes and angles
# bug fix: draw/isosurface *name*
# bug fix: data "append" does not set model the way load "append" does
# bug fix: application frame arrows do not work after loading multiple models

# -----------------------------------------------------------------------------

#version=11.7.34

# bug fix: isosurface incorrectly setting number of grid points for MEP surface map
# new feature: application -s - reads input from System.in (untested)
# new feature: \? in atom name escapes ? wildcard. Still no * in names,
# but you can use multiple ?s: select ?\? or ??\? or ???\? or ????\?

# new feature: isosurface FunctionXYZ -- same as FunctionXY, but must return float[][][]
# -- note, this involves an additional required function in interface JmolStatusListener
# public float[][][] functionXYZ(String functionName, int nx, int ny, int nz);

# -----------------------------------------------------------------------------

#version=11.7.33

# bug fix: minimization callback does not report dE
# bug fix: minimization does not interrupt or stop in applet
# bug fix: rotate quaternion with NaN values not ignored
# bug fix: applet console not closed when web page destroyed
# bug fix: load file:///xxx.xxx (file:/// with file in root path) causes unrecoverable exception
# bug fix: signed applet JmolAppletSigned0.jar does not include minimizer in internal jar index
# bug fix: rotate -x n rotates wrong direction
# new feature: load xxxx FILTER "NBOcharges" loads NBO charges instead of Mulliken
# note: for NBOs you still need FILTER "NBO" so with charges that would be FILTER "NBO;NBOcharges"
# bug fix: Jaguar reader vibrations not correct
# bug fix: autoBond option in Preference menu was not writing to properties file in $HOME/.jmol
# new feature: preliminary NBO support for Gaussian and QChem needs checking
# code: subclassing Gaussian, QChem, NWChem, Gamess, Jaguar, Psi readers all into MOReader class

# -----------------------------------------------------------------------------

#version=11.7.32

# bug fix: reading multiple files from a ZIP file collection, Jmol was forcing autobond
# even when bonds were defined
# bug fix: load MANIFEST not working properly
# bug fix: V3000 reader chokes on CHG=n and does not recognize MASS=n
# bug fix: Spartan SMOL file reader failure (coded & instead of && in if statement!)
# new feature: CML "isotope" and CML "partial12" bond order.
# new feature: GAMESS reader reads NBOs using
# load "xxx.gamess" filter "!EIGEN" # to only load NBOs; by default ALL MOs are loaded.
# new feature: QChem reader reads occupancy, frequencies and MOs

# -----------------------------------------------------------------------------

#version=11.7.31

# bug fix: automatic adjustment for 5D (spherical) orbitals, especially for Spartan Smol reader
# bug fix -- Spartan reader adding " in front of atom label
# new feature: frame ALIGN {atoms} -- aligns frames around designated atoms in each frame
# for example: frame ALIGN {C2} -- align each frame on C2/n where n is a frame number
# for example: frame ALIGN {*} -- align all frames on center for that frame
# new feature: Spartan MO-Animation files can be read
# bug fix -- animation/spin while script is rendering can cause Exception
# in general, one needs to use
# set refreshing FALSE
# ...
# set refreshing TRUE
# around code that might be running and deleting atoms or bonds while some other
# process is rendering

# bug fix -- trajectories with files having bonds can be a problem
# bug fix -- animation/spinning while connections are being made can cause exception
# code -- more documentation and somewhat reorganized adapter section.
# bug fix: antialiasdisplay with MO does not show correct font size.
# new feature: Spartan zip directories xxx.spardir.zip containing directory xxx.spardir can be read
# new feature: Spartan reader now reads all models in an energy profile
# new feature: MO no longer restricted to one per model set; rather, one per MODEL
# new feature: MO command operates on all models in current frame set:
# for instance:
# load t.spardir
# frame *; MO HOMO
# animation on
# will generate highest-occupied MO for all models and run through them quickly
# This allows for animation of molecular orbitals along a reaction pathway
# code: first attempt at Gaussian WFN file reading was unsuccessful.

# -----------------------------------------------------------------------------

#version=11.7.30

# bug fix: signed applet does not use CD to set dialog default directory
# bug fix: errorCallback not functional
# new feature: set autoLoadOrientation (default: FALSE) automatically sets "reset" orientation to that in file, if present
# new feature: restore orientation DEFAULT -- resets orientation to file's default orientation or stanadard "reset" if not present
# code: generalized setTransform() in JmolAdapter readers CSF and SpartanSmol (.spardir)
# bug fix: Spartan .spardir /input files not being read
# bug fix: draw arrow/vector slightly overshoots end point

# -----------------------------------------------------------------------------

#version=11.7.29

# bug fix: isosurface/mo FRONTONLY not operative
# new feature: draw ID xxx FRAME {center} {quaternion}
# draws x,y,z coordinates for the frame defined by the specified quaternion at the specified center.

# bug fix: MO calculations skips d2+ orbital due to integer division.

# -----------------------------------------------------------------------------

#version=11.7.28

# bug fix: 11.7.27 does not display color for MOs; "color MO" can crash Jmol

# -----------------------------------------------------------------------------

#version=11.7.27

# bug fix: line raster not completing lines
# code: JmolCallbackListener implemented, extended by JmolStatusListener
# code: JmolViewer now includes setJmolCallbackListener
# bug fix: measure n1 n2 n3 n4 with just numbers selecting atoms in frame 1 rather than current frame.
# bug fix: toolbar icon for pickMeasure tied to tools "measurements..." item
# bug fix: (Application) meaurement table not updating properly
# bug fix: (Application) measurements toolbar icon does not stay shaded
# bug fix: very subtle code error on lines and cylinders rasterization not completing line end pixel in most cases
# bug fix: (Application) measurement icon measures angles, not distances.
# new feature: JVXL format supports polygonColixes[]
# code: polygonColixes[] to define polygon colors rather than vertex-based colors (as in OBJ file)
# new feature: isosurface points can be retrieved using $id[n] where n=0,1,2,3... similar to $draw[n]
# debugging: setTestflag2() turns on vertex labeling in isosurfaces
# new feature: isosurface OBJ file reader using
# isosurface OBJ "myfilename" n
# where n is an optional pointer to a specific group (starting with 1)
#
# bug fix: subtle MarchingSquares calculation error produces incorrect contours for mapped plane
# new feature: hover displays isosurface values for contour plots and planar plots
# new feature: isosurface .... map contour [n] [mep|MO homo|etc]
# for example: isosurface molecular map contour 10 mep
# [n] is optional; defaults to 9
# new feature: isosurface CONTOURLINES|NOCONTOURLINES
# displays contour lines; for planes, same as MESH|NOMESH
# new feature: default rendering for isosurfaces involving the
# CONTOUR keyword is CONTOURLINES NOFILL
# new feature: hovering over isosurface contourlines displays value
# bug fix: isosurface TRIANGLES not turning off when isosurface cleared
# bug fix: remapping colors of translucent isosurface can have incorrect colors
# bug fix: isosurface sphere 1.0 map molecular not working
# bug fix: MO calculation with selected atoms can fail
# bug fix: picked atoms automatically selected -- bug in 11.7.24
# new feature: very preliminary isosurface ED (RHF only) //and isosurface ESD
# bug fix: JVXL writing after reading JVXL file may not write properly
# bug fix: Jmol in other applications not initialized the same way can cause null pointer exception loading file with symmetry

# -----------------------------------------------------------------------------

#version=11.7.26

# new feature: isosurface VOLUME reports the volume of an isosurface and stores the number in variable isosurfaceVolume
# new feature: ASimpleJvxlWriter can calculate the volume of the surface
# new feature: isosurface AREA reports the area of an isosurface and stores the number in variable isosurfaceArea
# new feature: ASimpleJvxlWriter can calculate the area of the surface
# bug fix: Spartan reader reads MOs improperly when only a partials set of MOs is included in the file
# bug fix: Some Spartan files not reading: Compound Document not properly finding root directory block
# code: rewritten code for Marching Cubes no longer requires 2D array of cube data

# -----------------------------------------------------------------------------

#version=11.7.25

# code: rewritten code for ASimpleJvxlWriter allows streaming data
# code: rewritten code for Marching Cubes no longer requires 3D array of data
# new feature: CTRL-K toggles keystrokes with display; ALT-K or CTRL_ALT_K same without display
# color of frank displays condition -- blue (unsigned) or orange (signed) indicates keystrokes enabled
# bug fix: PDB load filter broken for ANISOU
# bug fix: isosurface plane improperly coloring nonmapped planes
# code: rewritten code for JvxlReader saves nx*ny*nz*8 bytes of memory on loading JVXL files
# because there is no need for voxelData = float[nx][ny][nz].
# new application: org.openscience.app.jvxl.simplewriter.ASimpleJvxlWriter.java
# -- streamlined methods for converting CUBE data to JVXL files

# -----------------------------------------------------------------------------

#version=11.7.24

# bug fix: Mopac graphf UHF files not read properly for beta orbitals, or can't read file

# new feature: character \0 at the start of an echo does screen echo only, not to callback or console
# new feature: typing into applet executed as script commands
# new feature: set showKeyStrokes
# sets the echo to bottom left and shows the key strokes as they appear

# new feature: set dragSelected (was "set picking dragSelected")
#
# ALT_LEFT or CTRL_ALT_RIGHT highlights atoms and rotates them
# ALT_SHIFT_LEFT highlights atoms and translates them

# bug fix: set picking draw can lose focus during drag operation

# -----------------------------------------------------------------------------

#version=11.7.23

# new feature: load "myfile.cif" {ijk i'j'k' -1}
# loads crystal structure and packs unit cell
# new feature: load "myfile.cif" PACKED
# same as {555 555 -1}
#
# bug fix: {*}.formalCharge = 1 after {*}.formalCharge = -1 sets formal charge to -7 and exception
# bug fix: Menu File|Open does not honor "start in" directory

# -----------------------------------------------------------------------------

#version=11.7.22

# new feature: translate x|y|z x.x nm|angstroms|%

# bug fix: structure helix ({xx:yy}) compiler bug
# new feature: additional VRML support (Angel Herraez)
# new feature: u3d exporter template only -- no actual output

# -----------------------------------------------------------------------------

#version=11.7.21

# bug fix: user menu ...Text menus not translated
# bug fix: minimization broken
# bug fix: menu save ?.spt
# bug fix: write PovRay "?.pov"

# -----------------------------------------------------------------------------

#version=11.7.20

# bug fix: protein-protein hydrogen bonds not calculated across biopolymer boundaries

# -----------------------------------------------------------------------------

#version=11.7.19

# bug fix: vibrationperiod set to 0 if vibration off when state saved
# bug fix: Compilation problem with "new IOException(e)"
# bug fix: application -i option still gives message from "set xxxx"
# bug fix: recent application changes do not work with -w option

# -----------------------------------------------------------------------------

#version=11.7.18

# bug fix: 11.7.15 does not run script after loadInline applet parameter
# new feature: Alchemy/3DNA reader
#
# new feature: new command "exitJmol" does just that -- application only;
# can be overridden in a script by user defining the function "exitJmol"
#
# new feature: application -d --debug sets loglevel to 5
# new feature: application -J --jmolscript1 Jmol script BEFORE -s
# new feature: application -j --jmolscript2 Jmol script AFTER -s not accepting values
#
# new feature: (embedded application method of JmolViewer):
#
# public Object viewer.getImageAs(String type,
# int quality,
# int width,
# int height,
# String filename,
# OutputStream outputStream);
#
# allows creation of an image of a given type ("JPG", "JPEG", "JPG64", "PNG", "GIF", "PPM")
# of a specific quality (-1 indicates default)
# 0 to 100 for JPG (-1 = default of 75)
# 0-9 for PNG (-1 = default of 2)
# and specific width and height
# and returned as byte[] (when fileName = null, os = null)
# or sent to an output stream (os != null)
# or set to a file (os == null, fileName != null)
#
# return can be String if there is an error.
#
# command sequence, for example:
#
# jmol.viewer.scriptWait("load =1crn;cartoons on;set antialiasdisplay");
# Object nullOrErrorMsg = jmol.viewer.getImageAs("JPG", 75, 300, 300, "t75.jpg", null);
# Object nullOrErrorMsg = jmol.viewer.getImageAs("JPG", 75, 300, 300, null, os);
# Object bytesOrError = jmol.viewer.getImageAs("JPG", 75, 300, 300, null, null);
# Object stringOrError = jmol.viewer.getImageAs("JPG64", 75, 300, 300, null, null);
#
# this method, like WRITE IMAGE uses the antialiasImage settings
#
# primarily, this is for writing to an OutputStream directly, but
# the rest seemed simple to implement along with that.
#
# new feature: (embedded application method of JmolViewer):
#
# public String clipImage(String text);
#
# sends image (null parameter) or text to clipboard

# -----------------------------------------------------------------------------

#version=11.7.17

# new feature: q = quaternion(matrixColumn1, matrixColumn2)
# quaternion from first two columns of a 3x3 rotation matrix
# bug fix: some quaternions cannot be created from a 3x3, namely:
# q = quaternion({1 2 -2}, {2 1 2}) = {0.57735026 0.57735026 0.0 0.57735026} (xyzw format)

# bug fix: ignoreError -- need not get error string
# bug fix: write image does not set mustRender
# bug fix: set debugscript and set loglevel do not act in script immediately
#
# new feature: Jmol.js jmolScriptWaitOutput(script) returns all messages that would
# have been sent to the console.
# new feature: applet.getJmolStatus("AS_VECTOR") and applet.getJmolStatus("AS_HASHTABLE")
# allows slightly different format for JSON return
# new feature: measureCallback reports pending measurements as well as completed ones
#
# code: documentation for callbacks in Viewer; refactoring of StatusManager
#
# function myAnimFrameCallback(frameNo, fileNo, modelNo, firstNo, lastNo) {}
# function myEchoCallback(app, message, queueState) {}
# function myErrorCallback(app, errType, errMsg, objectInfo, errMsgUntranslated) {}
# function myHoverCallback(strInfo, iAtom) {}
# function myLoadStructCallback(fullPathName, fileName, modelName, errorMsg, ptLoad) {}
# function myMeasureCallback(strMeasure, intInfo, status) {}
# function myMinimizationCallback(app, minStatus, minSteps, minEnergy, minEnergyDiff) {}
# function myPickCallback(strInfo, iAtom) {}
# function myResizeCallback(width, height) {}
# function myScriptCallback(app, status, message, intStatus, errorMessageUntranslated) {}
# function mySyncCallback(app, script, appletName) {
# ...[modify script here]...
# return newScript
# }
#
# new feature: errorCallback and scriptCallback report untranslated errors
# new feature: when errorCallback or scriptCallback is enabled, messages are translated
# note: To get translation in message callbacks, use jmolSetTranslation(true)
# bug fix: translations of Console not implemented correctly
# bug fix: translation not disabled when messageCallback is present

# -----------------------------------------------------------------------------

#version=11.7.16

# new feature: set errorCallback -- cannot be a Jmol script!
# new feature: load xxx.gamess FILTER "natural,optimized"
# new feature: load xxx.gamess FILTER "!natural,!initial"

# bug fix: script error messages not updating when language changed (coding)
# bug fix: app -j "xxx" option not properly implemented
# bug fix: MO scale

# readers: MOLDEN reader update contributed by Albert DeFusco - adefusco
# readers: GAMESS reader update contributed by Albert DeFusco - adefusco

# -----------------------------------------------------------------------------

#version=11.7.15

# bug fix: measure allConnected broken
# bug fix: 11.7.14 has broken define ({...}) statement
# code: better handling of OutOfMemoryError conditions (2)
# code: refactoring of method names in FileManager and Viewer
# code: refactoring of method names to remove ambiguities between "openFile" and "createModelSet"
# code: fixing inappropriate calls to getOpenFileError(), which actually creates the model set.
# new feature: applet methods jmolLoadInline, jmolLoadInlineScript, jmolLoadInlineArray,
# jmolAppendInlineArray, jmolAppendInlineScript all return load error message

# -----------------------------------------------------------------------------

#version=11.7.14

# code: efficiencies

# new feature: jmolGetPropertyAsString("errorMessage")
# new feature: out-of-memory "Java heap error" trapping in scripts and image creation
# new feature: save [bonds|coordinates|orientation|selected|state|structure] DELETE

# bug fix: write .... @{...} can fail
# bug fix: write coords CLIPBOARD broken
# bug fix: select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi) fails when atomExpression is ({})
# bug fix: applet compilation error not sent in termination message
# bug fix: build javax package does not include AxisAngle4d.class, Matrix4d.class
# bug fix: compilation of myfunc({1 2 3}) fails
# bug fix: hover watcher occasional uncaught exception

# -----------------------------------------------------------------------------

#version=11.7.13

# new feature: sync * stereo
# bug fix: applet improperly reporting status of "quiet" commands
# bug fix: stereo not in state
# bug fix: stereoDegrees parameter not reported correctly
# bug fix: quaternion straightness update
# bug fix: translucency of mapped isosurfaces not saved in state
# bug fix: Dialog look and feel for Mac
# bug fix: negative number in range involving ^ fails: select 10^P -17^P
# code: better allocateViewer method

# -----------------------------------------------------------------------------

#version=11.7.12

# new feature: isosurface PMESH; pmesh command deprecated
# code: pmesh now a subclass of isosurface, with org.jmol.jvxl.PmeshReader doing the work.
# new feature: all options of isosurface now option for pmesh.
# all pmesh command does is guarantee that if the pmesh data is standard pmesh ASCII data,
# then it will be read correctly. Binary pmesh files may be read with isosurface command.
# new feature: pmesh files and inline scripts now can be colored and saved as JVXL files
# new feature: isosurface INLINE "--pmesh data--"
#
# bug fix: .xxx broken for Jmol 11.7.11
# JVXL 2.0 format enhancements
# new feature: #xxx comments act as targets for goto as well as MESSAGE commands
# bug fix: goto xxx with trailing white space fails to find xxx
# bug fix: goto with a # comment in the script prior to the target line fails
# bug fix: two //xxx comments in a row breaks script
# new feature: fully remappable JVXL files
# new feature: JVXL file format version 2.0 writing and reading for general vertex/triangle file source.
# code: superfast JVXL compression/decompression
# bug fix: straightness absolute value -- values 0 (not straight) to 1 (straight)
# load =1crn;calculate straightness;color "bwr" range 0 1;color straightness
# new feature: efvet file reader (http://ef-site.hgc.jp/eF-site)
# isosurface color "rwb" "myfile.efvet"
# bug fix: isosurface APBS dx file reader broken (since 4/2007)
# menu: "Minimize" GT

# -----------------------------------------------------------------------------

#version=11.7.11

# bug fix: UFF.txt not included in build
# new feature: user-definable atom selector for extended select:
#
# select {*.ca} (myfunc < 3.0)
#
# new feature: user-definable atom selector functions.
# _x is used for the selected atom (not _atom) as for
# select {atomExpression} (property expression)
#
# function myFunc()
# return _x.x + _x.y + _x.z
# end function
#
# print {*}.myFunc
# print {*}.myFunc.min
# print {*}.myFunc.max
# print {*}.myFunc.all
#
# parenthetical parameters are allowed provided .min, .max, .all are not used
#

# -----------------------------------------------------------------------------

#version=11.7.10

# bug fix: function definitions occurring before prior script commands are executed.
# bug fix: message @{xxxx} in function not picking up function context variables
# new feature: set fontCaching false -- for testing of font caching issues
# bug fix: CD command not working for writing
# bug fix: Some browsers do NOT strip \n from tags, necessitating changes in loadInLine()

# -----------------------------------------------------------------------------

#version=11.7.9

# bug fix: initializeBspf(); missing in setTrajectory()
# new feature: hbonds delete
# new feature: calculate hbonds {*} {*}
# between {O or N} and {O or N} only
# new feature: set hbondsAngleMinimum
# if hbondsAngleMinimum is set > 0 (default 90 ?), then that angle is checked
# for any atoms A--X- - -Y where A is attached to X,
# and X and Y are the two heteroatoms involved.
# new feature: set hbondsDistanceMaximum
# maximum distance for X---Y. (default 3.25 ?)
#
# bug fix: AMBER atom type IM and IP not recognized
# bug fix: AMBER topology file reading of IFBOX=2 files
# bug fix: antialiased fontscaling labels can appear incorrectly
# bug fix: font maximum reduced
# code: major scaled memory font savings
# bug fix: more lenient MopacGraphF format resolving
# bug fix: "valence" not "valency" in data property_valence

# -----------------------------------------------------------------------------

#version=11.7.8

# bug fix: set antialiastranslucent false not functional
# bug fix: text color near black with antialiasdisplay becomes white
# bug fix: text antialiasing of near-black text looks very bad when antialiased

# new feature: settable atom elements, atomType, and atomName
# {atomno=3}.element = 6 # set atom 3 to carbon
# {atomno=3}.element = "C"
# note -- this will reset the atom color to its standard CPK value.
# {atomno=3}.atomType = "xxx"
# {atomno=3}.atomName = "xxx"
# new feature: select within("atomName", "xxx,yyy")
# new feature: select within("atomType", "xxx,yyy")

# -----------------------------------------------------------------------------

#version=11.7.7

# bug fix: forcefield file UFF.prm --> UFF.txt
# bug fix: better Escape method for strings
# bug fix: connect auto not registered in state
#
# new feature: Jmol math simple array definitions using brackets: x = [3,4,5,6]
# new feature: set atomTypes "abcd=>C;efgh=>H" for reading mol2 and mdTop files
#
# code: better algorithm for atom types in Mol2Reader
# code: faster loading -- no "pre" definition of atom sets
# code: Eval load conversion of param[] values to htParams entries

# -----------------------------------------------------------------------------

#version=11.7.6

# bug fix: draw point translucent only draws ring
# new feature: mol2 format reads force field atom types for AMBER, CFF91, GAFF, ESFF, CHARMM, COMPASS, CVFF, CVFF_aug, PCFF force fields (rev2)
# bug fix: load string inline with multiple models fails
# code: FindBugs fixes for Eval, DrawRenderer, Isosurface, ForceFieldUFF,PdbReader
# code: ScriptWindow public: sendConsoleEcho,sendConsoleMessage,notifyScriptStart,notifyScriptTermination

# -----------------------------------------------------------------------------

#version=11.7.5

# code: ScriptWindow public: sendConsoleEcho,sendConsoleMessage,notifyScriptStart,notifyScriptTermination
# bug fix: set labelToggle malfunctioning
# bug fix: missing default background for toggled labels
# bug fix: color {oxygen} translucent blue
# bug fix: color translucent 1 blue 1-8 integer settings off by one
# bug fix: background color +/-1 adjustment removed

# -----------------------------------------------------------------------------

#version=11.7.4

# bug fix: spardir within /M... directory
# new feature: write MENU "filename.mnu"
# new feature: (Application) -c option checks without loading files; -C option checks with loading files
# code: LOAD command ignores all nonrecognized pre-filename keywords

# -----------------------------------------------------------------------------

#version=11.7.3

# new feature: x = file("some file name") or x = file("?") -- returns full path to file
# new feature: (Application) Files...Export...Gaussian... Build Gaussian Input File Dialog
# new feature: (Application) command line option -j --jmolscript "script commands"
# new feature: load MODELS ({bitset})|{first,last,stride}
# new feature: load TRAJECTORY ({bitset})|{first,last,stride}
# new feature: load APPEND MODELS ({bitset})|{first,last,stride}
# new feature: load APPEND TRAJECTORY ({bitset})|{first,last,stride}
# new feature: load APPEND "[topolopy file]" COORD ({bitset})|{first,last,stride} "mdcrd::md1.crd COORD ..."
# new feature: load FILES "[topology file]" COORD ({bitset})|{first,last,stride} "mdcrd::md1.crd COORD ..."

# -----------------------------------------------------------------------------

#version=11.7.2

# new feature: independent JAR files for language localizations
# bug fix: XML readers broken in 11.7.1
# bug fix: AMBER molecular dynamics topology file misreads P atoms
#
# new feature: select within(atomName,"ATOMNAME1,ATOMNAME2,...")
# new feature: select within(atomType,"ATOMTYPE1,ATOMTYPE2,...")
# NOTE: 11.7.8 changes just "type" to "atomType"
# selects within a set of atom types (defined currently only for mol2 and AMBER topology file types)
# matching is case-sensitive.
# defaults to atom name if no types are indicated
# for example: select not within(atomType,"HW,OW")
#
# new feature: cd command sets defaultDirectory
# cd # reports current directory and sets default directory to that
# cd ? # (signed applet and app only) opens a directory
# cd .. # moves up one directory
# cd temp # moves to subdirectory temp
# cd "" # resets the default directory

# -----------------------------------------------------------------------------

#version=11.7.1

# new feature: draw LINE {...} {...} {...} {...} draws line segments
# new feature: making Jmol movies using write frames {atomExpression} [width] [height] "movie.jpg"
# creates a set of files movie0001.jpg, movie0002.jpg, etc. for frames in atomExpression
# these fils can then be combined using an external program of user's choice to create
# a movie from a sequence of JPEG images
#
# write frames {*} "all.jpg"
# write frames {1.0} "firstFile.jpg"
# write frames {1.0} 200 200 "smallFile.jpg"
#
# new feature: load of molecular dynamics topology file and coordinates
#
# load files "u.mdtop" FILTER "![WAT],![URE]" COORD {0 -1 1} "mdcrd::u.mdcrd" ;
#
# -- mdtop file must have %FLAG and %FORMAT comments
# -- FILTER is optional
# -- COORD {first,last,step} is optional for each coordinate file loaded
# first,last,step same as in VMD -- 0 for very first trajectory, last -1 meaning "all"
# default {0 0 1} so that just one trajectory is loaded from each file
# -- explicit format "mdcrd::" is required, because these files have no identifying characteristics
# -- as many COORD keywords/coordinate files as desired can be included:
#
# load files "u.mdtop" FILTER "![WAT],![URE]" COORD {0 -1 1} "mdcrd::u1.mdcrd" "mdcrd::u2.mdcrd" COORD {0 300 10} "mdcrd::u3.mdcrd" ;
#
# new feature: x = quaternion({center_or_point}, {atomX_or_point}, {atomXY_or_point})
#
# -- quaternion is created based on three atoms or coordinates
# -- such that X = atomX - center, Z = cross(atomXY - center, atomX), Y = cross(Z, X)
#
# new feature: x = quaternion(q, "id", {center})
#
# -- creates DRAW sequence to draw quaternion q as three arrows red(x), green(y), blue(z)

# -----------------------------------------------------------------------------

#version=11.6.RC19_dev

# bug fix: GIF encoder color / class not found issues
# bug fix: very thin cylinder does not appear at all viewing angles
# bug fix: load "/xxx" with unsigned remote applet loads local file instead of remote root directory
# -- this change represents a difference in behavior between the unsigned applet and other code (signed applet or application)
# bug fix: sulfur/sulphur always spelt as in IUPAC Red Book
# bug fix: display of aromaticSingle bond for NEW bond results in dotted bond.
# translation: English language variants no longer ignored

# -----------------------------------------------------------------------------

#version=11.6.RC18

# bug fix: fileName not reset after ZAP
# bug fix: set echo none; color echo green null pointer exception
# bug fix: .x not recognized
# bug fix: set xxxCallback "" does not clear callback ("none" was required unnecessarily)
# bug fix: cartoons ending in helix or strand draw single dot for final amino acid
# -----------------------------------------------------------------------------

# version=11.6.RC17

# bug fix: draw scale not saved in state for arc or xy arrow
# bug fix: drag/drop not enabled on consoles
# bug fix: Jmol state command "calculate surfaceDistance WITHIN ({...})" not passing compiler
# bug fix: Swing antialiasDisplay broken due to setTransparentBackground debugging
# bug fix: trajectories not enabled
# code: if (true...)/ if (false...) code cleanup
# bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1
# bug fix: select model=0.0 caused infinite loop

# -----------------------------------------------------------------------------

#version=11.6.RC16

# bug fix: mol2 PDB format better handling of chains and derived element types
# bug fix: save image button/menu interface broken in 11.6.RC15

# -----------------------------------------------------------------------------

#version=11.6.RC15

# new feature: MOL2 reader is PDB-enabled.
# new feature: data() and DATA expanded to allow fixed-column entry
# bug fix: data property_partialcharge does not update atomic partialCharge data itself for MEP
# but instead just creates a data type "property_partialcharge"
# bug fix: CML reader failst to load primitive lattice parameters when no symmetry
# note: CML reader only reads the first structure of a file
# bug fix: CML reader not assigning atom labels
# bug fix: CML files not properly loading symmetry
# bug fix: O- formal charge radius MUCH too large; N+ MUCH too small. -- REMOVED
# code: thread control for Java Swing in applet context
# thread creating Swing objects MUST be event thread
# -- using SwingUtilities.invokeAndWait() from the commandWatcher thread
# new feature: load menu items for signed applet
# new feature: save menu items for signed applet
# bug fix: applet -- setting a jmolScript callback prevents menu updates
# new feature: minimize menu item
# new feature: signed applet allows "load ?" and includes previewer
# bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default

# new feature: signed applet/application load ?xxx uses load dialog
# webexport help updated to reflect ability to handle files opened with "load append"

# -----------------------------------------------------------------------------

#version=11.6.RC14

# new feature: signed applet may write file, images, scripts, variables to disk. User dialog is required.

# new feature: write GIF
# code: allows for getJpeg(quality,asString) option to return byte array instead of base64.
# bug fix: xxx.split()[3].replace does not do selection first
# bug fix: ramachandran and quaternion derivative not indicating structure due to dropping last atom

# -----------------------------------------------------------------------------

#version=11.6.RC13

# bug fix: set historyLevel recording full scripts, not individual commands
# bug fix: y-offset for echo text and images
# bug fix/new feature: HIDE/DiSPLAY/DELETE/COLOR $*xxx* extended to ECHO
# bug fix: findbugs input stream closure
# translation: add GT.escapeHTML and stricter checking for special characters in file names
# used by web export.

# -----------------------------------------------------------------------------

#version=11.6.RC12

# bug fix: getProperty("atominfo",{atom expression}) not working for "atominfo[0].xxx
# bug fix: getProperty("modelinfo",{atom expression}) not working
# new feature: set atomPicking TRUE/FALSE
# new feature: set bondPicking TRUE/FALSE
# bug fix: draw pointgroup when principalPlane == null
# bug fix: findbugs corrections in minimize.forcefield, modelset.AtomCollection, shapespecial.DrawRenderer
# new feature: applet parameter jmolSetCallback("maximumSize", nnn) -- sets maximum size of applet when resizing to this value
# cml reader fix for not applying symmetry to first model
# translation: added GT._ calls for HTML templates and JS in WebExport

# -----------------------------------------------------------------------------

#version=11.6.RC11

# bug fix: echo IMAGE and antialiasdisplay
# bug fix: super/subscripts with antialiasdisplay
# translation: menu items in console
# bug fix: web export / language
# bug fix: draw pointgroup C2 2 not distinguished from draw pointgroup C2 1
# bug fix: d2 point groups cause null pointer exception due to missing principal axis
# bug fix: {*}.x = .... broken

# -----------------------------------------------------------------------------

#version=11.6.RC10

# new feature: (just not documented) rotate {atom1} {atom2} 10
# new feature: moveto quaternion {resno=3} {3.ca}

# bug fix -- set picking spin, also compatibility of set picking spin and doing measurements
# bug fix -- draw pointgroup, write pointgroup draw

# -----------------------------------------------------------------------------

#version=11.6.RC9

# code: more efficient return of point group information and calculation
# new feature: getProperty PointGroupInfo
# bug fix: show pointgroup draw null pointer exception
# bug fix: print $planeA - capital letters in a draw name disallow finding it.

# -----------------------------------------------------------------------------

#version=11.6.RC8

# bug fix: ramachandran / ramachandran r navigation problem
# code: Minor refactoring and pruning.
# --- Core applet now 715K (JmolApplet0.jar + _Core, _Jars, _Main, _Popup, and _Viewer)
# code: Pre-Jmol.js button controls removed, saving about 10K
# new feature: script APPLET appletName "some script"
# --allows direct inter-applet communication independent of set SYNC
# --appletName can be * (all applets), > (other applets), . (this applet),
# or an applet name such as "jmolApplet0" or just the extension "0"
# or a quoted set of applet names separated by commas.
# --for *, the current applet always reports LAST
# new feature: x = script("some script", "appletName")
# --same as above
# --in addition, allows retrieval of information from another applet
# for example:
#
# x = script("print getProperty(\"modelInfo.modelCount\")","B")
#
# gets the number of models loaded in applet jmolAppletB.
#
# x = script("show orientation moveto","jmolApplet2")
#
# gets the current orientation of applet jmolApplet2.
#
# xList = script("print getProperty(\"appletInfo.fullName\").split(\"__\")[1] + \":\" + script(\"show rotation\").trim()","*")
#
# gets a new-line-separated list of rotational quaternions for all applets with applet names.
#
#
# new feature: print getProperty("modelInfo.models[3].file") syntax

# -----------------------------------------------------------------------------

#version=11.6.RC7

# new feature: draw ramachandran includes planes connecting atoms.
# bug fix: refresh for hover
# bug fix: state definition for lcaoCartoons, isosurface with IDs containing spaces
# new feature: $*xx* double wild cards
# new feature: generally for objects (draw,pmesh,isosurface,etc.) use DISPLAY/HIDE rather than ON/OFF
# so as to be consistent with other objects. (OFF was not deleting these)
# new feature: support for application transparent background -- "-b" command switch (testing only)
# and setAppletContext "-b" switch as well.
# bug fix: structure helix|sheet|turn|none {atomExpression} was undocumented and had state issues
# new feature: HIDE $xxx
# new feature: DISPLAY $xxx
# new feature: DELETE $xxx
# bug fix: adaptation for malformed PDB files (HEADER with nothing following it)
# bug fix: more language localization in webexport
# new feature: applet message regarding help and command entry

# -----------------------------------------------------------------------------

#version=11.6.RC6

# code: better navigation refreshing
# bug fix: oops, 11.6.RC5 is totally broken due to missing refreshes
# bug fix: language localization in webexport

# -----------------------------------------------------------------------------

#version=11.6.RC5

# bug fix: set fontscaling with multiple echo texts/images at the same xyz location only scaling the first item
# bug fix: set echo xxxx 30 40
# bug fix: WAY more streamlined refreshing
# bug fix: createImage(), not getImage() in order to allow dynamic file change
# bug fix: halo size for antialiased display
# Addition of translation tags to webexport
# bug fix: write IMAGE broken for 11.6.RC2+
# bug fix: unnecessary refreshes removed from moveto/zoom with time 0
# new feature: background IMAGE "filename"
# code: viewer refactoring to simplify/remove private methods and synchronization

# -----------------------------------------------------------------------------

#version=11.6.RC4

# bug fix: select @m throws an error
# code: refactoring shapespecial into shapespecial and shapesurface
# code: refactoring modelset.CellInfo into symmetry.SymmetryInfo
# code: realignment of applet JAR files
# -- new _ShapeSurface.jar, which now includes org.jmol.jvxl/**
# -- removal of _Jvxl.jar
# -- refactoring reduces preliminary applet Jar file loading to 720K (if English)
# -- should provide faster loading of simple models and more efficient loading of more complex ones
# -- basic minimum load involves just JmolApplet0.jar + _Core, _Jars, _Main, _Popup, and _Viewer

# -----------------------------------------------------------------------------

#version=11.6.RC3

# bug fix: minor error in pointgroup; dimension tied to radius
# new feature: set dotDensity [-3 to 3]
# new feature: draw pointGroup [type] [index] SCALE [x]
# where [type] is one of Cs, Ci, Cn, or Sn, where n is an integer or the character "n"

# -----------------------------------------------------------------------------

#version=11.6.RC2

# bug fix: image background transparency

# new feature: set pointGroupDistanceTolerance (default 0.2 angstroms)
# new feature: set pointGroupLinearTolerance (default 8 degrees)

# bug fix: Cs pointgroup not found
# bug fix: set echo DEPTH/IMAGE
# bug fix: workaround for Java 1.6.0_10 diallowing popup menu
# new feature: in Java 1.6.0_10, right-click activates the console, and the
# console has a menubar menu item "Jmol" that is the pop-up menu.
# new feature: applet console has "help" menu item, which includes several hundred items.

# -----------------------------------------------------------------------------

#version=11.6.RC1

# bug fix: D3h point group
# bug fix: LOAD "..." nn loading of model numbers for PDB files should read real model number, not sequentially.

# new feature: write/show pointgroup gives counts and tab-separated listing;
# new feature: write pointgroup draw delivers draw commands
# new feature: better draw pointgroup
# new feature: no saving of point group -- just recalculated each time
# bug fix: measures were messed up
# new feature: echo myecho IMAGE "filename"
# -- reads a JPG, GIF, or PNG image and displays it the
# same as text is displayed.
# new feature: echo myecho DEPTH xx
# -- sets the depth in percent (0% far back, 100% front) for the placement of the image
# -- note that images can be placed in 3D, just as for text.
# -- setting "background echo xxx" then specifies the color
# that is to be designated as the background color (the color that should be omitted).
# -- using "background echo none" specifies that the first pixel
# of the image specifies the color that should be omitted.

# bug fix: 11.5.52 may have lost "true" as a keyword
# new feature: pointgroups with vibration vectors
# bug fix: more testing with pointgroups
# new feature: spacefill/dots/geosurface/cartoon/trace/etc. ONLY
# -- show only this rendering type
# -- same as restrict not selected; spacefill ON
# bug fix: application rubberband selecting inappropriately selects atoms not visible
# new feature: wildcard at beginning for draw/pmesh/isosurface/etc. *xxx on/off/delete allowed
# bug fix: in draw pointGroup -- height of cylinder was too small
# bug fix: longstanding exception: isosurface fullylit --> isosurface backlit --> isosurface frontlit

# -----------------------------------------------------------------------------

#version=11.5.52

# new feature: calculate pointGroup
# new feature: draw pointGroup
# new feature: write pointGroup
# including x = script("write pointGroup")
# new feature: webexport now compresses data files over 512 MB
# new feature: calculate pointGroup -- preliminary only -- untested

# -----------------------------------------------------------------------------

#version=11.5.51

# bug fix: 11.5.49 and 11.5.50 broken for ".max"

# new feature: PRELIMINARY aniso_beta for cif files -- has not been checked for correct Ortep type -- set to 0 for now
# new feature: application select button reinstated
# new feature: application pick button reinstated
# new feature: application measure button tied to picking style
# new feature: application [>|] button
# bug fix: ramachandran/quaternion "reset" not decoupled from model decouple
# code: model orientation saved with model.
# bug fix: set axesOrientationRasmol finally correctly implemented
# new feature: axes labels change subtly for set axesMolecular and setAxesOrientationRasmol
# bug fix: JmolViewer interface deprecated "rotateTo..." methods changed to "rotate..."
# because that's what they really do.
# bug fix: set defaults jmol/rasmol must do reset().

# new feature: webexport now cleans up scratch files on deletion of instances and program exit.

# -----------------------------------------------------------------------------

#version=11.5.50

# bug fix: vibration thread not closing down for applet destroy when applet is off-screen
# bug fix: was reading server path for local path from history in Webexport
# bug fix: $ptx[2] notation broken in 11.5.49
# code: various cleaning/simplifying
# code: way cleaner quaternion derivative calculation code

# -----------------------------------------------------------------------------

#version=11.5.49

# bug fix: strange "scripted: ?" message with measurements removed
# bug fix: extra values in measure reporting, and wrong format
# bug fix: 11.5.48 is broken for scripts with array definitions such as
# p = array(); p[pt] = ....
# code: simplification/unification of statement length checking AFTER allowing for variable substitution
# code: removal of unnecessary/inflexible compilation step involving color parameters
# code: major refactoring/simplification of Token
# code: refactoring/simplification of Compiler
# code: compiler flags for allowed number of parameters removed (not consistent with Jmol math)
# (defaultON and noArgs remain)
# new feature: dipole/draw/ellipsoid/isosurface/pmesh/mo/lcaocartoon ID keyword optional
# but without ID, one is restricted to words that are simple text and not Jmol entities.
# with ID, the next quantity can be anything.
# new feature: $"xxx" quotations or $@{...} allows variable definition of object id reference
# new feature: draw {point} PLANE [plane def, including xy, yz, x, etc.]

# -----------------------------------------------------------------------------

#version=11.5.48

# new feature: mol file bond type 8 as partial
# code: compiler error reporting improved
# bug fix: PDB site definition does not ignore empty site definitions
# bug fix: DEFINE can cause compiling error, e.g. "[2MO]" in 1tmo
# bug fix: quaternion derivative DRAW arrows placed on residue i+1 instead of residue i
# bug fix: connect aromatic auto; select connected([bond type],...)
# bug fix: queue thread termination when applets are off screen
# bug fix : sheetsmoothing not consistent among structures in multi-chain systems
# bug fix: messages not sent to messageCallback
# code: simpler matrix-->quaternion code
# bug fix: 11.5.47 shows oddly sized arrow for very first rendering
# bug fix: quaternion frame "n" after rotationSelected does not reset NH hydrogen positions
# new feature: // at beginning of a line marks comments

# -----------------------------------------------------------------------------

#version=11.5.47

# bug fix: Removed stray semicolons from header script comments in webexport templates. They
# were causing WYSIWG web editors to corrupt the code scripts.
# bug fix: 11.5.46 broke standard "spin x 30" (b)
# new feature: draw ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset}
# new feature: draw ARROW ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset}
#
# draws a circular arc or arrow around an axis defined by {pt1} and {pt2}
# using {ptref} as a starting point (looking down the axis, angles
# are measured in a clockwise manner, starting with the projected position
# of {ptref} in a plane perpendicular to the axis. This is similar (but opposite)
# to the way dihedral angles are indicated.
# theta0 is the the offset angle from 0
# nDegrees is the number of degrees of arc to draw
# fractionalOffset is the fraction of the distance from {pt1} to {pt2} for the
# plane containing the arc.
#
# new feature: draw RAMACHANDRAN
# draws phi and psi angles in the form of draw ARROW ARC
# new feature: write RAMACHANDRAN draw

# -----------------------------------------------------------------------------

#version=11.5.46

# bug fix: remove the skipping of semicolons if parentheses or braces have been closed. (11.5.43 bug)
# bug fix: set picking on broken in 11.5.39
#
# new feature: measure {atomExpression or point} {atomExpression or point} ...
# measurements to POINTS, including using the mouse (set drawPicking on)
# will persist and can be saved in the state (11.5.38 did not allow this)
# for example:
# measure {0 0 0} {atomno=3} {atomno=5}
# measure $point2 {atomno=3} $line[1]
#
# new feature: rotate branch {atom1} {atom2} ...
# new feature: select within(branch, {atom1}, {atom2})
# new feature: Jmol math within("branch", {atom1}, {atom2})
# code: refactoring of getAtomsWithin() and getAtomBits()
#
# bug fix: array size limited
# new feature: quaternion({atom expression}) -- returns calculated
# frame based on quaternionFrame setting.
# bug fix: drawhover not in state
# bug fix: ramachandran for systems including nucleic acids when quaternionFrame = 'n'
# new feature: isosurface functionXY can be used for mapping.
# new feature: spacegroup/symmetry for CML files with tags
#
# bug fix: 11.5.39 could break isosurface/pmesh save/write state in certain cases.
# bug fix: Popin.png in WebExport replaced, was too large, causing dialog box to default to too big on small screens.
# bug fix: zap 2.1 for quaternion frame causes exception
# bug fix: quaternion r derivative2 nonfunctional in 11.5.45
# bug fix: isosurface functionXY not working
# bug fix for 11.5.45: application not returning echos and status messages to console

# -----------------------------------------------------------------------------

#version=11.5.45

# new feature: show rotation aka show orientation rotation
# new feature: show translation aka show orientation translation

# code: mouse manager refactoring

# bug fix: picking off structure did not clear picking for set picking spin
# bug fix: jmolScriptWait() improperly reporting to applet console
# bug fix: too many messages to applet console
#
# Note: planes, axisAngles, and quaternions are all saved as Token.point4f
# axisAngle() and quaternion() are both processed to quaternion format
# {x y z w} where w = cos(theta/2) and {x y z} = sin(theta/2)*unitNormal
# quaternions are always fixed so that cos(theta/2) > 0 -- that is, so that
# the reported theta (q %-2) is in the range [0, 180]
# This is important. One can also get a directed theta based on a
# specified axis using q % {x y z w}. w is ignored; x y z is the
# axis to dot with the quaternion normal in order to switch the
# sign of theta if that value is negative.
#
# new feature: show atom(s)
# new feature: show group(s)
# new feature: show selected
# new feature: draw {point} {plane}
# new feature: draw vector {point} {plane}
# new feature: draw arrow {point} {plane}
# new feature: q = axisAngle({x y z}, theta)
# new feature: q = axisAngle(x, y, z, theta)
# new feature: q = axisAngle("{x y x theta}")
# new feature: q = quaternion("{x y z w}")
# new feature: rotate @{quaternion(....)}
# new feature: rotate @{axisAngle(....)}
# new feature: rotate quaternion {x y z w}
# new feature: rotate axisAngle {x y z theta}

# new feature: {point1} == {point2} if distance < 0.000001
# new feature: {quaternion} == {quaternion2} if distance < 0.000001
# new feature: float1 == float2 if |float1 - float2| < 0.000001

# code: refactoring and simplification of rotate/spin
# code: threads named

# bug fix: hover will find atom in hidden frame.
# bug fix: ellipsoid translucency not saved in state.
# bug fix: local assignment var x = array() followed by x[n] = ... does not work
# bug fix: f(x[i],x[j]) selects only x[j], not both x[i] and x[j]
# bug fix: quaternion frame "n" recognizes file-based H atoms on N for frame definition

# -----------------------------------------------------------------------------

#version=11.5.44

# bug fix: Java exception with write(quaternion) instead of write("quaternion")
# bug fix: set picking spin did not enable draw spin/picking
# bug fix: _applet variable not initializing properly
# bug fix: math calculation .xyz, .color averages broken in 11.5.42
# bug fix: select @x broken in 11.5.43
# bug fix: integer addition not remaining integer

# -----------------------------------------------------------------------------

#version=11.5.43

# bug fix -- if last helix is last atom, SHOW STRUCTURE fails to identify it.
#
# new feature/feature change:
#
# selectX is no longer necessary. Simply use
#
# select {atomExpression} (property expression)
#
# with no "x." An implied variable "_x" can be used explicitly:
#
# select {*} (straightness < 0.995) # does not round
# select {*.ca} (atomY < atomX)
# select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi))
#
# new feature: quaterion % point4f --- "thetaDirected" --
# point4f is {x, y, z, w} (w ignored), where {x y z} is a
# preferred direction.
# Returns a point4f angle-Axis equivalent with x, y, z the normal for the quaternion
# rotation and w = theta for the rotation, where the normal and theta are chosen
# to be directed with a positive dot product between the input {x y z}
# vector and the output {x y z}.
#
# thus, because the negative angle switches the normal:
#
# print quaternion({1 0 0}, -20) % 1 ==> {-1 0 0}; %1 ==> 20
#
# but % {1 0 0 0} forces the angle associated with {1 0 0} to be reported
#
# print quaternion({1 0 0}, -20) % {1 0 0 0} ==> {1 0 0 20}
#
# bug fix: POV-RAY output of quadrilaterals.

# new feature: Ramachandran "r" --- includes third (Z) axis quaternion r difference2 X component equivalent

# bug fix: quaternion definition with dot-product check not effective -- removed
# bug fix: quaternion construction from matrix error
#
# new feature: _applet boolean
#
# new feature: extended quaternion math
#
# q = quaternion({x y z}, angleDegrees)
# q = quaternion(q0, q1, q2,q3)
# q = {qx, qy, qz, qw}
#
# returning component values:
#
# q.x, q.y, q.z, q.w
#
# note that the Point4f equivalent stores w LAST, even though it is "q0"
# because the Java Quat4f() and Point4f() both do that as well. We're just
# being consistent with other Java use.
#
# Modulus operator for extended information retrieval:
#
# (q%0) -- q0 (w)
# (q%1) -- q1 (x)
# (q%2) -- q2 (y)
# (q%3) -- q3 (z)
# (q%-1) -- the vector {q1, q2, q3}
# (q%-2) -- theta
# (q%-3) -- equivalent rotational frame X-axis
# (q%-4) -- equivalent rotational frame Y-axis
# (q%-5) -- equivalent rotational frame Z-axis
# (q%{x y z}) -- rotational transform of a point or vector based on a quaternion
#
# thus, for example, (q%{1 0 0}) is the same as (q%-3)
#
# (!q) -- quaternion inverse
#
#
# Quaternion right division (difference "dq"):
#
# q2 / q1 = q2 * (!q1)
#
# Quaternion left division (relative difference n):
#
# q2 \ q1 = (!q1) * q2
#
# Examples:
#
# q = quaternion({1 1 1},120)
# print "" + (q%{1 0 0}) + " " + (q%{0 1 0}) + " " + (q%{0 0 1})
#
# {0 1.0 0} {0 0 1.0} {1.0 0 0}
#
# new feature: Numerical left division (integer divide)
#
# 3.6 \ 2 = 1
# 3.6 \ 1.3 = 2
#
# new feature: sqrt(x)
#
# bug fix: load trajectory for cases with different atom counts.
#
# experimental: "straightness" defined as 1 - 2 * acos(normal(dq[i]%-1) dot normal(dq[i+1])) / PI
# giving a measure proportional to the difference in local helical axis angle
# and ranging from -1 (opposite direction) to 1 (same direction) for proteins
# -- a work in progress. See
#
# load =1d66
# calculate straightness;color straightness

# -----------------------------------------------------------------------------

#version=11.5.42

# code: modified Jmol encoded PDB data output

# bug fix: color of NaN float values changed from "center of color scheme" to GRAY
# bug fix: connect "_1" was inadvertently dropped in 11.5.26.
# bug fix: state script fails to save data for atoms created using the quaternion command
# bug fix: axes/boundbox/unitcell dotted not working since 11.5.6
# bug fix: spin thread not stopped for applet destroy()
# bug fix: quaternion derivative for i/i+1 assigned to i+1 instead of i; now assigned to i
# bug fix: quaternion calculation using published algorithms was giving inverted quaternions
#
# new feature: set PICKLABEL "xxx" -- allows customized pick reports
#
# for example: set pickLabel "%n x = %x, y = %y, z = %z"
#
# new feature: "quaternion derivative" --> "quaternion difference", which is more
# appropriate, we think, with "absolute" and "relative" qualifiers:
#
# quaternion absolute difference # in the molecular frame
# quaternion relative difference # in the (local) frame of first quaternion:
#
# dq_absolute = q2 * q1_inverse
# dq_relative = q1_inverse * q2
#
# absolute involves un-doing q1's rotation (making it the reference frame), then applying q2.
# relative involves applying q2 (maintaining the original reference frame), then undoing q1.
#
# new feature: quaternion [w|x|y|z|a|r] [difference][2] [draw]
# new feature: draw quaternion [w|x|y|z|a|r] [difference][2]
# new feature: write quaternion [w|x|y|z|a|r] [difference][2] [draw]
# and with that: write("quaternion" [,"w"|"x"|"y"|"z"|"a"|"r"][,"difference"|"difference2"][,"draw"])
#
# new feature: set quaternionFrame "N" -- for solid state NMR PISEMA 15N chemical shift frame
# using alpha = 0 and beta = 17 degrees.
#
# new feature: select whatever; quaternion draw
# draws x,y,z and n vectors for a quaternion center
#
# new feature: straightness, defined as:
#
# straightness = 2*|n(dq1).dot(n(dq2))| - 1
#
# where q1 and q2 are quaternions defined generally as:
#
# q = frame{ vA, (vC x vA), vC }
#
# using quaternionFrame "p", which I define as
#
# protein:
#
# vA = C--CA
# vB = C--N[i+1]
#
# purine:
#
# vA = N9--C4
# vB = N9--C8
#
# pyrimidine:
#
# vA = N1--C2
# vB = N1--C6
#
# Differences dq1 and dq2 are absolute quaternion differences
# on the two sides of a residue:
#
# dq1 === q[i] * q[i-1]_inverse
# dq2 === q[i+1] * q[i]_inverse
#
# and n(dq) = the normal vector associated with this quaternion.
# Range is from -1 to 1
#
# applications (note that CALCULATE must be invoked first):
#
# calculate straightness # must be invoked first;
# color straightness;
# select straightness < 0.70; # rounds to nearest hundredth
# selectX {*} x.straightness < 0.995 # does not round
#
# new feature: "%T" label format for straightness

# -----------------------------------------------------------------------------

#version=11.5.41

# new feature: xyz reader reads partial charge in 5th field
# bug fix: carbohydrate popup menu script incorrect
# new feature: "load" of Jmol state scripts works same as "script" command
# (file recognized as SPT type and read as a script instead)
# bug fix: Jmol Embedded scripts containing script comments /* */
# new feature: getproperty menu current
# bug fix: 11.5.40 cannot read most state scripts.

# -----------------------------------------------------------------------------

#version=11.5.40

# (with corrected 40_dev draw scale)
# new feature: new command:
#
# selectX {atomExpression} booleanEvaluation
#
# same as select() function, but simpler to implement
#
# new feature: full math on individual atom properties using
# a new function:
#
# select(x;{atomexpression};booleanEvaluation)
#
# for example:
#
# x = select(x;{*};x.distance({atomno=3}) / 3 > x.distance({atomno=2}))
# x = select(x;{*.ca};x.phi < select(y; {*.ca}; y.resno = x.resno + 1).phi)
#
# bug fix: H1 and H3 in DNA are NOT backbone
# new feature: quaternion derivative2 (2nd derivative) and quaternion e derivative [experimental]
# new feature: draw Vector [x y] or [x y %] {x' y' z'}
# new feature: draw [x y] or [x y %] can be incorporated into lines, curves, arrows
# bug fix: set picking center should not zoom -- just too annoying
# new feature: set echo myecho [x y] and set echo myecho [x y %]
# new feature: axes position [x y] and axes position [x y %]
# sets the axes to the x y screen position or percent indicated.
# bug fix: echos with active script and a model designation
# and multiple models select even if not displayed because it is not their model
# that is displayed.
# bug fix: missing echocallback, scriptcallback, measurecallback "set"able variables
# bug fix: "set picking identify" should be equivalent to "set picking ident"
# bug fix: popup menu had stereo reversed
#
# new feature: signed applet shows frank "Jmol-S" which is NOT removable.
# possibly to come: signed applet will send confirmation first time it reads a local file?
# bug fix: reading .mmol (biological unit) files such as
# http://pqs.ebi.ac.uk/pqs-doc/macmol/1j7n_1.mmol
# new feature: frank appears RED in signed applet, and popup about menu identifies the applet as signed.
# code: better handling of twin script manager threads
# new feature: /*SPLIT*/ in a command string allows it to be processed by
# the two independent processors. (just to isolate javascript from load commands
# for the signed applet

# -----------------------------------------------------------------------------

#version=11.5.39

# new feature: --threaded option for command processor uses
# a watcher thread to monitor a Vector, allowing the signed applet to open any file
# the signed applet uses this automatically unless there is a
# jmolSetCallback("useCommandThread", "false")
# which overrides the default behavior and disallows reading of files from
# JavaScript.
#
# NOTE a limitation: scripts intended for the signed applet that
# contain both load/script commands or the load() function
# CANNOT be combined with the JAVASCRIPT command. This is because
# in that environment, the JAVASCRIPT command must run on the browser's
# JavaScript thread, and the load command -- if crossing server boundaries --
# must NOT run on that thread. I have configured the ScriptManager to
# detect the presence of the word "javascript" followed by a space (exactly that case)
# and if found, use the JavaScript thread instead of the applet thread.
#
# Because it might be useful to combine LOAD and JAVASCRIPT (for the equivalent of a
# "file loaded" callback (but see set LoadStructCallback), if a script contains
# the phrase /*SPLIT*/ in upper case, exactly like that, it will be split and then run
# correctly as two independent scripts.
#
# new feature: _signedApplet boolean is available:
#
# print _signedApplet
# if(_signedApplet);
# javascript alert("you are using the signed applet");
# end if;
#
# bug fix: JmolSimpleViewer caused null pointer exception -- needed setAppletContext()
# bug fix: model-based drawing in multiple-model mode using an
# array of points to load causes null pointer exception:
# load cyclohexane_movie.xyz;pts = {C5}.split();print pts;draw @{pts.xyz.sub({1 0 0})} "X"
# bug fix: quaternion derivative multiplication order
# bug fix: 3D echo text not centering properly with set ECHO myEcho CENTER
# bug fix: select _Xx; select unknown
# bug fix: better reporting of script commands and comments
# new feature: reading COMPND and HEADER records of PDB file
# new features for Protein Explorer:
# new feature: set messageStyleChime
# -- No atoms selected!
# -- atoms selected!
# -- atom picking:
# Atom: xxx Group: xxx Chain: xxx Model: xxx Coordinates: x y z
# -- script
# -- Chime script completed.
# new features:
# show info
# show residue(s)
# show chain(s)
# show sequence
# show orientation moveto # just the moveTo; no comments
# set pdbGetHeader TRUE # to get the header when loading (for Protein Explorer)
# new feature: jmolSetCallback("evalCallback", "someFunction")
# -- overrides _jmol.noEval
# -- canNOT be set using "set evalCallback"
# -- was necessary for Protein Explorer javascript callbacks

# -----------------------------------------------------------------------------

#version=11.5.38

# bug fix: lcaoCartoon naming for multiple centers
# bug fix: pm rounding to integer value
# bug fix: scaling of draw object for multimodel environment can cause null pointer exception
# bug fix: scaling of VECTOR was from center, not origin
# bug fix: select n-m:c chain selection inappropriately case sensitive
# bug fix: draw ARROW {atom center} {xyz} draws arrow the wrong way
# bug fix: draw CIRCLE for multiple models
# bug fix: application -- "make crystal..." menu item does nothing -- removed
# bug fix: zap of quaternion also zaps model inappropriately
# bug fix: zap to one model assigns -1 to currentModelIndex instead of 0
# new feature: draw CIRCLE [FILL | MESH NOFILL] more intuitive open/filling syntax
# new feature: draw VECTOR {atom center} {dx dy dz}
# new feature: draw with mixed types processes them in order
# (11.4 does {x,y,z}, then $xxx, then {atomExpression}, then @{{atoms}.split()})
# new feature: draw .... ">xxx" first character of title ">" forces title to
# last point, not first
# new feature: set quaternionFrame "c" "p" "q"
# - "c" -- CA-C and CA-N, as per Andy Hanson
# - "q" -- peptide plane CA-C and N'-CA' as per J.R.Quine
# - "p" -- peptide plane CA-C and C-N'
# new feature: random(a), random(a,b) where a is lower bound and b is upper bound
# new feature: cross(a,b)
# new feature: sin(x), cos(x)
# new feature: set pdbSequential (default FALSE) for custom PDB files
# -- bypasses inter-group bonding check when creating polymers
# new feature: set drawPicking now enables measuring among atoms and DRAW points
# -- not saved -- just transient measurements (see 11.5.46)
# new feature: CIF reading of B factors for thermal ellipsoids
# new feature: [draw|pmesh|isosurface] xxx* [on|off|delete]
# -- turns on, turns off, or deletes all objects of the type starting with "xxx"


# code: refactoring of biopolyer resolver

# -----------------------------------------------------------------------------

#version=11.5.37

# code: faster ellipsoid rendering with precalc radius factors
# bug fix: spacefill ADPMIN/ADPMAX using probability ellipsoids
# and ellipsoid size setting (Note -- ellipsoid command
# must be run once prior to setting spacefill
# bug fix: reading output from "set showscript 1"
# bug fix: ellipsoids for Uiso atoms uses simple r = sqrt(value)
# bug fix: ellipsoids for applied symmetry causes odd shapes (s8.cif)
# bug fix: security for no mayscript may cause problem with measure callback
# bug fix: rocket positions after translateselected

# -----------------------------------------------------------------------------

#version=11.5.36

# bug fix: frame titles not positioning correctly for antialiased display
# bug fix: quaternions created with extraneous atom lines
# bug fix: select symop not behaving intuitively
# code: meshrenderer debug line not removed

# new feature: (popup menu) Biomolecules submenu added within title menu

# -----------------------------------------------------------------------------

#version=11.5.35

# bug fix: proper thermal ellipsoid probability measures
# code: better garbage collection in relation to JmolAdapter class
# bug fix: load FILTER not saved in state
# bug fix: application -- undo/redo buttons not disabling
# new feature: ZAP clears undo stack

# -----------------------------------------------------------------------------

#version=11.5.34

# bug fix: biomolecule really works this time!

# -----------------------------------------------------------------------------

#version=11.5.33

# bug fix: modelLoader was assigning too much array space for chains

# new feature: more load FILTER options:
#
# #i a specific BIOMT transformation
# !#i not a specific BIOMT transformation
# [XXX] a specific group ID
# ![XXX] not a specific group ID (e.g. ![HOH])
# *.XX an atom name, such as .CA
# !.XX not a specific atom name
# *:X a chain ID
# !:X not a specific chain ID
#
# Between types, or involving NOT, options are AND'd together
# Within a type not involving NOT, options are OR'd together
# Within a type, a single ! implies all are NOT
# Within a type, a single * implies all are ANY

# new feature: load [file info] FILTER "BIOMOLECULE n;NOSYMMETRY"
# FILTER "BIOMOLECULE 1" by default now reads the symmetry;
# use load FILTER "BIOMOLECULE 1;NOSYMMETRY" to not read symmetry
#
# bug fix: ellipsoids for navigation mode and perspective depth
# bug fix: PDB biomolecule for many-BIOMT system

# -----------------------------------------------------------------------------

#version=11.5.32

# bug fix: load FILTER "BIOMOLECULE 1;APPLY SYMMETRY" does not read second line of chain list
# bug fix: added connections do not save properly in state
#
# application only: command undo disabled automatically if saving takes more than one second
# flag is "set undo TRUE/FALSE"
#
# new feature: load [file info] FILTER "[filter string]"
# new feature: load [file info] FILTER "BIOMOLECULE n"
# new feature: load [file info] FILTER "[filter string];BIOMOLECULE n"
#
# The first format loads only those atoms matching a specific filter or set of
# filter terms -- only a crude filter here, only for PDB and mmCIF files:
#
# *.XX an atom name, such as .CA
# *:X a chain ID
#
# multiple matches are allowed -- implied AND:
#
# load "1sva.pdb" FILTER "*.CA"
#
# the match IS CASE SENSITIVE; * IS required
#
# also, "BIOMOLECULE 1" automatically selects for the chains listed for biomolecule 1
# in REMARK 350, and APPLY SYMMETRY applies the symmetry as described in those REMARKS
#
# new feature: isosurface ELLIPSOID id
# AXES {ix iy iz} {jx jy jz} {kx ky kz}
# CENTER {x y z}
# SCALE n.m
# COLOR [translucent [x.y] |opaque] [color]
# ON|OFF
#
# id is a REQUIRED field. AXES is required if a new ellipsoid is being defined
# these axes must be perpendicular
# all other parameters are optional
#
# bug fix: isosurface ELLIPSOID was disabled
# bug fix: Vector4f in Sphere3D causes applet failure, as it includes
# an implicit Vector4d call
# bug fix: stronger wireframe for antialiased display and generator (POV-ray)
# default change: ellipsoids ball only, no axes
# code: better ellipsoid fill method
# default change: ellipsoids ball only, no axes

# Hungarian translation

# -----------------------------------------------------------------------------

#version=11.5.31

# bug fix: set picking measure distance not doing callback (from 11.5.23)
# bug fix: picking echos not working with set antialiasdisplay
# default change: ellipsoids are so fast now, can use default "set ellipsoidBall true"
# bug fix: set ellipsoidAxisDiameter [int] sets the diameter in milliAngstroms
# bug fix: sequence range for missing sequence numbers returns 0
#
# code: fast ellipsoid ball+fill - axis idea; no luck with POV-ray fill
# code: ellipsoid equation/axes conversion in Sphere3D;
# code: POV-Ray ellipsoid generation
# code: better ellipsoid ball rendering using Shade3D.calcIntensity()
# code: 2-fold improvement in rendering ellipsoids by not using getNormix()
# code: 4-fold improvement in rendering ellipsoids by using Miguel's no-mesh idea
# code: 2-fold improvement in rendering ellipsoids by using 40x40x40 shade cache
# code: overall 20-fold improvement in rendering over mesh/normix;
# code: full POV-ray support for ellipsoids
# code: proper partial derivative normalization of ellipsoid shading
# code: refactoring of static quadric surface methods into their own class

# -----------------------------------------------------------------------------

#version=11.5.30

# bug fix: measurement labels for angles do not appear in slab mode (goes WAY back before 10.0)
# bug fix: U_iso_or_equiv fields not read in CIF
# bug fix: (application) writeTip GT string not defined.
# bug fix: (forwared compatibility) invalid state setting (due to later version) now ignored.
# bug fix: state for draw arrow in multimodel context delivers wrong coordinates
#
# new feature: ellipsoid ball rendering tied to "set wireframerotation" option
# new feature: set ellipsoidAxisDiameter x.y
#
# code: better ellipsoid arc rendering using Hermite fill
# code: CifReader cleanup

# -----------------------------------------------------------------------------

#version=11.5.29

# new features for ellipsoid rendering:
#
# set ellipsoidAxes [true]
# set ellipsoidArcs [true]
# set ellipsoidFill [false]
# set ellipsoidDots [false]
# set ellipsoidBall [false]
# set ellipsoidDotCount [200]
#
# [dots|stars|spacefill] ADPMIN [percent]
# [dots|stars|spacefill] ADPMAX [percent]
#
# /* general logic:
# *
# *
# * 1) octant and DOTS are incompatible; octant preferred over dots
# * 2) If not BALL, ARCS, or DOTS, the rendering defaults to AXES
# * 3) If DOTS, then turn off ARCS and FILL
# *
# * note that FILL serves to provide a cut-out for BALL and a
# * filling for ARCS
# */

# -----------------------------------------------------------------------------

#version=11.5.28

# bug fix: state "set measures angstroms" does not include "select *"
# bug fix: labels can change size in returning from antialiasdisplay=true to antialiasdisplay=false
# ELLIPSOID command -- with symmetry and crude footballs, including PDB files
# note that for now PDB file reading of ANISOU requires using {x y z} in load
# command, but you can use {1 1 0} to load ANISOU without applying symmetry
#
# Italian translation

# -----------------------------------------------------------------------------

#version=11.5.27

# bug fix: data CLEAR command nonfunctional
# bug fix: "....".trim("xyz") function not properly trimming ANY x,y,z
# bug fix: draw OFFSET not working properly
# bug fix: PovRAY output of draw objects -- cylinder end caps not considered
# bug fix: draw width 0.05 {...} {...} -- line does not properly render
# bug fix: data "model"...end "model" saves state without first line if first line is empty
# bug fix: "show data types" putting comma in wrong location
# new feature: DATA "data2d_xxxxx"..... end "data2d_xxxxx"
# new feature: isosurface FunctionXY "data2d_xxxxx" {origin} {ni x 0 0} {nj 0 y 0} {nk 0 0 z}
# allows setting isosurface Z values using a block of data (ni rows by nj columns)
# new feature: isosurface FunctionXY "data2d_xyz_xxxx" {origin} {ni x 0 0} {nj 0 y 0} {nk 0 0 z}
# allows setting isosurface values using a block of x y z data, all points for which should be
# on the surface.
# new feature: GamessUK reader
# new feature: reset VARIABLES (replaces "reset ALL")

# -----------------------------------------------------------------------------

#version=11.5.26

# bug fix: draw adds extra circle in 11.5.25
# bug fix: minimization out-of-plane energy calculation error
# bug fix: better initial minimization parameters
# bug fix: (applet) script termination callback should not be sent to message queue
# bug fix: hover appears when a load script leaves an atom very close to (0,0) in the window
# bug fix: draw width -1 or draw mesh nofill with very short cylinders creates odd jumpy effect
# bug fix: draw CIRCLE for multiple model sets
#
#
# new feature: draw CYLINDER
#
# Korean translation

# -----------------------------------------------------------------------------

#version=11.5.25

# new feature: draw CIRCLE
#
# A circle is a 2D object that behaves like a halo, always appearing circular
#
# draw circle {molecule=1} mesh nofill # around specified atoms
# draw diameter 2.0 circle {atomno=3} mesh nofill # 2.0 angstroms; scales
# draw diameter 100 circle {_O}[1] mesh nofill # 100 pixels (doesn't scale)
# draw circle {*} fill # a solid plane in the shape of a circle

# -----------------------------------------------------------------------------

#version=11.5.24

# new feature: minimization CONSTRAINTS {xx} {xx} [{xx} [{xx}]] x.y
# new feature: minimization FIX {atom expression}
#
# multiple constraints can be present; one per line input
# minimization CLEAR releases constraints and fixed atoms
# also, minimize ENERGY saves a detailed listing, which can be
# displayed using one of the two following commands:
#
# new feature: show minimization
# new feature: x = getProperty("minimizationInfo")
#
# to dump the info to a file:
# minimize
# var x = getProperty("minimizationInfo")
# write VAR x "myfile.out"
#
# new feature: isosurface MAXSET n # removes larger fragment sets
# new feature: isosurface DOWNSAMPLE n # down-factors the number of points in a CUBE file by a factor of n

# -----------------------------------------------------------------------------

#version=11.5.23

# new feature: minimize ENERGY # no stepping
# new feature: minimize STEPS n
# new feature: minimize CRITERION x.y
# new feature: minimize CLEAR # flushes logged info and saved atom info
#
# new feature: echoCallback
# new feature: measureCallback
# new feature: minimizationCallback
# new feature: scriptCallback
# new feature: save/restore coordinates
# new feature: getProperty minimizationInfo
#
# code: more efficient minimize calculation setup; better logging
# code: "notify" methods in JmolStatusListener consolidated
# code: Tokens organized
#

# -----------------------------------------------------------------------------

#version=11.5.22

# bug fix: UFF torsion calculation incorrect
# bug fix: UFF.prm not properly recognizing sp2 N in N-oxides
# bug fix: minimizer for compounds containing isotopes D and T
#
# code: eval/compiler error processing update

# -----------------------------------------------------------------------------

#version=11.5.21

# new feature: minimize command -- mostly untested
#
# set minimizationSteps 100
# set minimizationRefresh true
# set minimizationCriterion 0.001
# set loglevel 4 # for a very minimal report
# set loglevel 5 # for a summary report
# set loglevel 6 # for a detailed report
# minimize
# minimize stop
# minimize cancel
#
#
# for example:
#
# load caffeine.xyz
# minimizationSteps = 80
# minimizationRefresh = true
# set loglevel 4
# select connected(2) or connected(3) or oxygen and connected(1)
# connect aromatic modify
# calculate aromatic
# set measurementunits pm
# measure {_O}[1] {_O}[2]
# color measure red
# minimize
#
# new feature: set loglevel 6 allows a "debugHigh" setting
#
# bug fix: load unitcell {a b c alpha beta gamma} not working (since 11.5.8)

# -----------------------------------------------------------------------------

#version=11.5.20

# bug fix: zap file > 2 multiple models do not properly delete

# -----------------------------------------------------------------------------

#version=11.5.19

# bug fix: null surfaceGenerator causes MO exception
# bug fix: isosurface reading/writing JVXL files having insideout keyword

# -----------------------------------------------------------------------------

#version=11.5.18

# bug fix: zap x.y additional work -- connections, isosurfaces
# bug fix: zap x.y not correcting Eval variables
# bug fix: isosurface user VolumeData not properly loading

# -----------------------------------------------------------------------------

#version=11.5.17

# new feature: delete {atom expression} NEEDS TESTING

# bug fix: zap x.y for dots
# bug fix: zap {atom expression} for not including all atoms in a model in the selection

# -----------------------------------------------------------------------------

#version=11.5.16

# new feature: zap {atom expression} # zaps models associated with given atoms.
# use "show models" to see what models are present, then zap them with their
# file.model number:
#
# zap 1.1,2.1 # these two models deleted
# zap atomIndex=0 # ALL ATOMS IN FIRST MODEL deleted
#
# Note that file.model numbers do not change after this.
# So if initially there were two files loaded
#
# zap 1.1
#
# removes the first model and leaves the second as "2.1"
#
# NEEDS THOROUGH TESTING, particularly in regard to saving/restoring the state

# bug fix: atomChooser not updated for zap
# bug fix: isosurface model keyword does not carry on to saved state
# bug fix: lcaocartoons do not color properly or get restored from state properly
# bug fix: popup menu selection of groups and symmetry operations does not work

# menu: internationalization of "Monomer" and "Shapely"
# bug fix: mol2 reader cannot read files with single-line comments

# -----------------------------------------------------------------------------

#version=11.5.15

# bug fix: CAChe CSF reader not reading partial charges
# bug fix: WebExport with http:// files fails to save file
# bug fix: WebExport with local . directory fails to save JmolApplet.jar and Jmol.js
# code: refactoring of jmol.app.webexport: adding html subdirectory

# bug fix: state saving with rotateSelected spinning spins entire model
# bug fix: getproperty("chaininfo") for non-biological model causes null pointer exception

# -----------------------------------------------------------------------------

#version=11.5.14

# bug fix: rotateSelected INTERNAL not adjusting for internal rotation center
# bug fix: .max/.min not allowed in context: "select resno=@{{visible}.resno.max}"
# bug fix: Parser: "3xxx" read as 3 instead of 0; "3.5xxx" read as 3.5 instead of NaN
# application menu: Write state moved to main export menu; Export PDF to image writing
# new feature: MODEL/ENDMDL records in write PDB (still no TER records)
# bug fix: write PDB format incorrectly writes atoms with 4-length names
# bug fix: Spartan SMOL directory reader doesn't assign bonds
# new feature: Spartan archive reader now reads aromatic bonding

# -----------------------------------------------------------------------------

#version=11.5.13 BROKEN FOR XYZ READER

# bug fix: Parser: "3xxx" read as 3 instead of 0; "3.5xxx" read as 3.5 instead of NaN
# application menu: Write state moved to main export menu; Export PDF to image writing
# new feature: MODEL/ENDMDL records in write PDB (still no TER records)
# bug fix: write PDB format incorrectly writes atoms with 4-length names
# bug fix: Spartan SMOL directory reader doesn't assign bonds
# new feature: Spartan archive reader now reads aromatic bonding

# -----------------------------------------------------------------------------

#version=11.5.12

# new feature: four optional defaults for Van der Waals radii:
#
# set defaultVDW jmol
# set defaultVDW rasmol
# set defaultVDW babel
# set defaultVDW user
#
# To set the user variety, first set one of the other sets as a basis
# Then add a DATA statement to include the specific elements you want to give
# new radii to:
#
# set defaultVDW babel;
# DATA "element_vdw" 6 1.7 END "element_vdw";
# DATA "element_vdw" 6 1.7; 7 1.8 END "element_vdw"; # separate using semicolons or new lines
#
# For full state compatibility, these commands should be given prior to
# model loading, as they affect all calculations involving Van der Waals
# radii -- except default zoom.
#
# Now select the user set:
#
# set defaultVDW user
# spacefill on
#
# To delete all user entries:
#
# reset VDW
#
# If user vdw radii are currently set, then this resets the defaults to Jmol.
#
# new feature: show vdw shows a listing of the currently set VDW radii
#
# new feature: integration of star, halo, and spacefill code so all behave the same.
#
# stars 1.0 # set to a specific angstrom radius
# spacefill 100% # percent of CURRENT vdw set
# stars 100%Jmol # percent of Jmol standard
# stars 50%Babel # percent of Babel standard
# spacefill 5%Rasmol # percent of Rasmol standard
# spacefill 30%User # percent of User-defined values (or CURRENT if not defined)
# spacefill +1.2 # angstroms added to current vdw scheme
# halos 50%Jmol # -- halos also have an added bit to make sure they are visible
# spacefill 250 # RasMol 250 units/Angstrom units still
# spacefill -20 # neg numbers same as percentages: 20% here, using current vdw set
# stars @{x+0.1} # math OK
# spacefill @x% # make sure x comes out integer, otherwise % is ignored
#
# note that dots do not have a %Jmol option:
#
# dots 30 # syntax already assumes percent for dots using an integer
#
#
#
# see src/org/jmol/_documents/vdw_comparison.xls

# -----------------------------------------------------------------------------

#version=11.5.11

# bug fix: save/restore of atom data incorrect when user has set propertyAtomNumberField or propertyDataField
# bug fix: functions, save/restore state were disabled by bug in 1.5.8
# bug fix: command "test()" where test() is a user-defined function causes array-out-of-bounds error
# bug fix: undocumented .vdw atom property was equivalent to .valence
# bug fix: GAMESS reading of F orbital order incorrect

# new feature: settable Van der Waals radius using {carbon}.vanderwaals = 1.7
# or using DATA "property_vanderwaals"
# new feature: DATA "property_x i j" .... END "property_x i j"
# overrides default propertyAtomNumberField (i) and propertyDataField (j)
# new feature: State save of property_xxx now in easily readable Jmol Data Format

# -----------------------------------------------------------------------------

#version=11.5.10

# NOTE: REMOVED FROM SERVICE -- see 11.5.11
# bug fix: ISOSURFACE LIST command requires current isosurface
# bug fix: JVXL writing does not properly save pocket cavities or minsets
# bug fix: DATA command assigning property to last atom in structure fails

# -----------------------------------------------------------------------------

#version=11.5.9

# NOTE: REMOVED FROM SERVICE -- see 11.5.11
# bug fix: Gaussian reader not considering possibility of cartesian D and spherical F
# bug fix: ADF reader not reading coordinates for newer ADF output

# -----------------------------------------------------------------------------

#version=11.5.8

# NOTE: REMOVED FROM SERVICE -- see 11.5.11
# bug fix: lines starting with @{ redefine "{"
# bug fix: echo offsets do not correct for window position
# bug fix: menu reports too many chains
# new feature: menu includes all standard color scheme options
# new feature: inline math @{x+3} extended to all commands
# new feature: .sub(), .add(), .mul(), .div() extended to all operand types

# -----------------------------------------------------------------------------

#version=11.5.7

# bug fix: explicit "SELECT NONE" must be given for label defaults to be set

# bug fix: menu select element missing SELECT command
# bug fix: for delayed font scaling animation using the font command and antialias display

# -----------------------------------------------------------------------------

#version=11.5.6

# bug fix: HETATM atoms not automatically bonded to nearby ATOM atoms
# bug fix: setParameterValue("perspectiveDepth",perspectiveDepth);

# bug fix: sets offset based on imageFontScaling, not overall font scaling
# bug fix: multiline labels not positioned properly with offset 0 0
# bug fix: labels not scaling properly
# new feature: label "scaleReference" if > 5.0 is taken to be a reference zoom setting
# saying "make the font size X at a zoom of Y"
# bug fix: labels not scaling properly when in script with file load
# bug fix: labels not appearing in contrast when given same color as background
# bug fix: fixes applet memory leak in relation to consoles

# -----------------------------------------------------------------------------

#version=11.5.5

# bug fix: fixes applet memory leak due to
# platform objects/delay threads not being destroyed

# new feature -- syncCallback -- intercepts messages that would otherwise go to applets for syncing
# when syncCallback is set to a JavaScript function name, that function
# intercepts the sync message and can pass it on (by returning it),
# consume it (by returning an empty string ""), or modify it as desired.
# this allows, for example, monitoring of orientation information so that
# zoom sliders and such can accurately portray their values

# -----------------------------------------------------------------------------

#version=11.5.4

# bug fixes -- font scaling

# new feature: Spartan input files read as Odyssey format
#
# new feature: set delayMaximumMs sets the maximum delay that scripts will use, primarily for testing scripts
# new feature: set fontScaling TRUE/FALSE
# new feature: font [type] [size] [face] [weight] [scaleReference (Angstroms per pixel)]
# atom labels and 3D echos then scale properly.
# note that the current zoom affects the label size.
# bug fix: image writing does not scale fonts properly.
# bug fix: antialias of images not functionally independent of antialias for display
# bug fix: label offset doubled for multiline labels with left/right/center alignment not specified
# bug fix: default label offsets mangled by default Front/Group

# new feature: getProperty("appletInfo") includes a key "registry" for which
# the value is the static Hashtable htRegistry
# //note that the following JavaScript retrieves the registry:
# var registry = jmolGetPropertyAsJavaObject("appletInfo").get("registry")
# // and the following code then retrieves an array of applets:
# var AppletNames = registry.keySet().toArray()
# // and the following sends commands to an applet in the registry:
# registry.get(AppletNames[0]).script("background white")

# new feature: reading of Spartan spinput files (uses Odyssey reader)

# bug fix: PDB files with missing amino acid carbonyl O cause exception

# -----------------------------------------------------------------------------

#version=11.5.3

# bug fix: check if the file is CIF before PDB
# bug fix: color hbonds translucent
# bug fix: state: calculate hbonds not saved
# bug fix: state: calculate surfaceDistance WITHIN (({....}))
# missing outermost parentheses
# bug fix: state: selection state "end function" missing semicolon
# bug fix: isosurface lcaoCartoon "pz" translucent not setting both lobes translucent
# bug fix: color isosurface when isosurface is an lcaoCartoon only colors one lobe
# bug fix: save state for "color SelectionHalos"

# -----------------------------------------------------------------------------

#version=11.5.2

# Translation update: Estonian

# new feature: "getProperty FILECONTENTS ." in the context of
# a zip directory defaultDirectory
# new feature: zip file reading extended to write FILE
#
# bug fix: unclosed InputStream readers in zip file accessing
#
# new feature: allows zip files to be designated as default directoriesusing
# set defaultDirectory "myfile.zip"
# and then using a filename
# bug fix: unclosed readers in Pmesh, FileManager, Jvxl
# new feature: pmesh BINARY "filename"
# BINARY keyword is optional, but recommended for efficiency
#
# * 4 bytes: P M \1 \0
# * 1 byte: \0 for bigEndian
# * 3 bytes: reserved
# * 4 bytes: (int) vertexCount
# * 4 bytes: (int) polygonCount
# * 64 bytes: reserved
# * ------------------------------
# * float[vertexCount*3]vertices {x,y,z}
# * [polygonCount] polygons
# * --each polygon--
# * 4 bytes: (int)nVertices (1,2,3, or 4)
# * [4 bytes * nVertices] int[nVertices]
# *
# * note that there is NO redundant extra vertex in this format
#
# see little-endian example at http://chemapps.stolaf.edu/jmol/docs/misc/pmesh.bin
# and http://chemapps.stolaf.edu/jmol/docs/misc/pmesh.bin.txt

# -----------------------------------------------------------------------------

#version=11.5.1

# bug fix: quaternion for nucleic acids
# code: inefficiencies in Quaternion code
# new feature: within(structure,atom_expression)
# for proteins, just the helix or turn or sheet containing those atoms;
# for nucleic acids, just the chain

# bug fix: wing vectors for biopolymers
# not containing O improperly drawn for sheets
# and, in the case of set traceAlpha TRUE (the default), helixes
# bug fix: translateSelected/rotateSelected does not move cartoons
# bug fix: tainted occupancy not saved in state
# bug fix: biopolymers have wrong wing vectors (from 11.3.62)
# bug fix: restore of state does not reset user-defined atom properties
# code: refactoring Atom and AtomCollection

# -----------------------------------------------------------------------------

#version=11.3.66

# bug fix: CIF reader not skipping loops with load of a specific model of a model set
# bug fix: explicit format LOAD "XXX::whatever" extended to XML variants
# code: adapter/readers/more/JmolDataReader.java removed.
# code: adapter/smarter/Resolver.java cleaned up in relation to XML and DOM options

# -----------------------------------------------------------------------------

#version=11.3.65

# full run of monster_script.spt

# bug fix: pmesh test1 "inline" "1 {2. 0. 0.} 0" disallowed, but that should be OK
# bug fix: isosurface gridpoints "ch3cl_map.jvxl" -- gridpoints for jvxl files that are already mapped
# bug fix: isosurface lcaoCartoon "type" {atomExpression}

# files: JUnitTest for scripts --
# monster script in run directory tests scripts now uses
# files at http://chemapps.stolaf.edu
# all monster scripts made the same
# tests/scripts/check_performance removed.
#
# bug fix: better checking of scripts involving full run of all scripts
# bug fix: defaultDirectory for Jmol application not usable for http:// protocols
# bug fix: load "files" not properly loading zip files or files involving default directory

# -----------------------------------------------------------------------------

#version=11.3.64

# bug fix: version integer missing sometimes
# bug fix: isosurface with trajectories
# interesting that if 1.1 and 1.2 are trajectories you can do
# frame 1.2; isosurface select(*/1.1) sasurface
# this creates an isosurface for model 1.2 that uses the atomic coordinates of model 1.1!
#
# bug fix: isosurface MEP mapped to plane not exactly reproduced in JVXL
# bug fix: isosurface COLOR RANGE by itself does nothing -- changed to use full range
# new feature: isosurface COLOR RANGE ALL added as an equivalent to COLOR RANGE with no numbers

# -----------------------------------------------------------------------------

#version=11.3.63

# -- all functionality in new.htm, new2.htm, and new0.htm tested --

# bug fix: draw/isosurface/etc. on/off/delete should operate on all objects
# bug fix: display within(plane...)
# bug fix: select site=n broken
# bug fix: quaternion/ramachandran/model can show up together if user issues FRAME ALL
# bug fix: frame 1.2 when file 1 only has one model displaying all files
# bug fix: quaternion x reports wrong frame number
# bug fix: selectionHalo status and color not in state
# bug fix: color selectionHalos none
# bug fix: polyhedra .... translucent 0.3 green
# bug fix: moveto alternative format missing necessary 0 rotationRadius requirement
# moveTo ...... {atomExpression} 0 [zoomOrZoomFactor]
# where [zoomOrZoomFactor] is n, +n, -n, *n, /n, or 0 (to indicate fill screen)
# bug fix: subsets not properly handling restrict
# bug fix: models with turns crash jmol if not first model loaded
# bug fix: quaternion command by itself not switching to most recent quaternion
# bug fix: background color off when not white and ends in "FF"
# bug fix: print {atomSet}.color -- .color returning bounding box!
# bug fix: multiframe draw with labels different for each frame not properly saved in state
# bug fix: within upgrade for boundbox: within(boundbox), within(boundbox,atomExpression)

# -----------------------------------------------------------------------------

#version=11.3.62

# bug fix: calculate hbonds for trajectories
# code: distinction between file-derived or connected hbonds and calculated hydrogen bonds
# bug fix: calculate hbonds broken in 11.3.58 (missing model field in BioPolymer)
# bug fix: Jmol not putting structures in for all models in a PDB file
# bug fix: calculate polymers (never documented) not necessary -- calculate structure suffices
# bug fix: calculate structure updated for ignoring jmolDataFrames and using currently selected atoms
# webexport help instructions fix to be consistent for local testing.

# -----------------------------------------------------------------------------

#version=11.3.61

# bug fix: multifile cartoons improperly rendering in all frames
# bug fix: dipoleScale not saved in state
# bug fix: quaternions broken in 11.3.58
# code: Closest class deleted
# code: Quaternion class moved to modelsetbio
# code: dipoles moved to shapespecial
# bug fix: select 1.5 in trajectory context should switch to that set of coordinates
# bug fix: draw not colored
# bug fix: mousewheel too low power
# bug fix: select */4 when "4" is inappropriate returns all instead of none
# bug fix: memory leak in applet due to mouse/hoverwatcher listeners
# bug fix: applets not self-destroying when window containing them close
# bug fix: rotate commands not sent to other applets when set syncScript if OFF

# -----------------------------------------------------------------------------

#version=11.3.60

# bug fix: more work on trajectories in a multimodel context

# bug fix: quick fix for disabling popup menu under Java 7 where permissions are not granted

# bug fix: load trajectory extended to multifile context
# in which case "select 1.3", if file 1 is a trajectory, not only
# selects that file, but also sets the trajectory to 1.3.
# So a "select" of a trajectory also affects the display.
# This makes "select" in a trajectory context similar to "display"
# but doesn't require listing of all the models.

# -----------------------------------------------------------------------------

#version=11.3.59

# bug fix: load append not saved in state properly
# code: trajectory command (never documented) removed
# bug fix: draw ... nofill mesh properties not processed
# bug fix: draw DIAMETER N not properly functioning for curves or arrows
# new feature: draw DIAMETER X.Y allows setting diameter of points, lines, curves, and arrows to Angstroms

# bug fix: 11.3.58 can't set bond diameters
# bug fix: with set syncMouse, target applet sets syncMouse off inappropriately

# -----------------------------------------------------------------------------

#version=11.3.58

# bug fix: set mouseSync with sync * ON disabling sync but not reenabling it
# bug fix: spin on missing in final state function.
# bug fix: select within (3.3, {-1 1 1}) does not work with negative integer coordinate
# bug fix: trajectories were not fully implemented
# code: refactoring of ModelSet and related classes for trajectories
# code: trajectories implemented as independent models
# code: debug comments in AppletRegistry

# new feature: trajectory command no longer necessary -- deprecated (was in 11.2)

# -----------------------------------------------------------------------------

#version=11.3.57

# bug fix: revised sync commands
# new feature: set syncScript; set syncMouse
# sync ON; set syncMouse false; set syncScript false Tracks orientation only
# sync ON; set syncMouse true; set syncScript false Sends mouse events only
# sync ON; set syncMouse false; set syncScript true Sends script commands only
# sync ON; set syncMouse true; set syncScript true Sends both mouse events and script commands
#
# bug fix: "load trajectory" broken

# -----------------------------------------------------------------------------

#version=11.3.56

# bug fix: isosurface map of properties lost in 11.3.54
# new feature: set c? -- displays all Jmol parameters starting with "c" or "_c"
# set _? -- displays all read-only variables (starting with "_")
# new feature: formatted gOpenMol formatted plt volume data reader.
# new Jmol.js for 11.4

# -----------------------------------------------------------------------------

#version=11.3.55

# bug fix: axes/unitcell improperly slabbing on internal slab
# bug fix: XOR returning OR when not a bitset
# bug fix: unary minus for planes and points
# FEATURE CHANGE: slab REFERENCE removed -- no longer necessary
# new feature: set wireframeRotation
# code: simplified Logger.debugging flag
# bug fix: slab/depth planes not properly constructed
# new feature: _slabPlane, _depthPlane variables
# code: MUCH simpler slab plane code

# bug fix: applet.loadInline(String[] models) messes up
# this involves the fact that Safari will deliver null pointer when it
# mistakenly matches a String[] signature to a String, or vice-versa.
# The solution is to use
#
# applet.loadInlineString(String model, String script, boolean isAppend)
#
# and
#
# applet.loadInlineArray(String[] model_or_models, String script, boolean isAppend)
#
# explicitly
# code: refactoring loadInline and interfaces WrappedApplet and JmolAppletInterface
# bug fix: scroll wheel with synchronization does not track properly

# -----------------------------------------------------------------------------

#version=11.3.54

# bug fix: JVXL writing/reading of simple plane writes precision color flag

# new feature: (isosurface) reading of XPLOR ascii electron density map data

# bug fix: reinstating "insideout" isosurface option
# bug fix: JVXL writing of lobe, sphere, ellipsoid, hydrogenOrbital
# bug fix: loadInline not properly autobonding -- causes null pointer error
# bug fix: data ... end model instead of end "model" causes null pointer exception

# -----------------------------------------------------------------------------

#version=11.3.53

# bug fix: symop=0NNN not returning all atoms with translation NNN
# code: optimization of algorithm used for load RANGE
# modification for load RANGE -x.x (within x.x Angstroms of symop=1555) to be within x.x of the
# box containing symop=1555, not the atoms themselves.
# code: cleanup of readers.

# bug fix: no special atom checks for PDB symmetry files

# bug fix: HallInfo --- Hall term miscalculation OUCH! -- mistken commenting out of code in 11.1.28 March, 29, 2007. revision 7243
# bug fix: set measures 0.1 --- solid line does not move.

# bug fix: completion of set parameter clean up

# -----------------------------------------------------------------------------

#version=11.3.52

# bug fix: set of many more (but not all) parameters can accept mathematical expressions
# bug fix; set strandCount not properly handled
# new feature: set strandCountForStrands
# new feature: set strandCountForMeshRibbon
# note --- set strandCount sets BOTH, but now each is independent

# bug fix: quaternion not including chain designation
# bug fix: default connections include proper PDB CONECT records

# new feature: connect PDB # just does PDB CONECT connections
# new feature: connect PDB AUTO # PDB CONECT and autobonding

# -----------------------------------------------------------------------------

#version=11.3.51

# bug fix: write FILE not handling binary file formats properly

# bug fix: PDB CONECT records not creating bonds for ALL models
# bug fix: load =xxxx broken in 11.3.50
# bug fix: amino not a subset of protein
# bug fix: proteins with just C CA N not recognized as such

# code: minor refactoring in org/jmol/util
# code: minor refactoring in org/jmol/jvxl
# code: minor refactoring in org/jmol/adapter

# -----------------------------------------------------------------------------

#version=11.3.50

# new feature: MOL isotope column read; interpreted for D, T, 11C, 13C, 15N (for now)
# bug fix: WebExport not properly accessing files in more complicated situations (pmesh, isosurface, multiple files, etc.)
# bug fix: WebExport not allowing variety of local location options

# bug fix: return command not allowed in simple context
# bug fix: setting perspective model resets unit cell on
# bug fix: debug comment in TransformManager
# bug fix: hideNotSelected not in state.

# -----------------------------------------------------------------------------

#version=11.3.49

# bug fix: set perspectiveDepth off broken in 11.3.48
# bug fix: set scaleAngstromsPerInch not turning off perspectiveDepth
# bug fix: scaleAngstromsPerInch not in state
# bug fix: _firstFrame/_lastFrame variables mess up state
# bug fix: calculate surfaceDistance broken for 11.3.48

# new feature: direct reading of MAC Spartan06 directories.

# -----------------------------------------------------------------------------

#version=11.3.48

#
# new feature: script "myfile.zip|xxx.spt"
#
# bug fix: scale3D not working
#
# new feature: load "myfile.zip|CH3CL.MOL"
# loads a given named model from within a zip file.
#
# new feature: load "myfile.zip|myfile2.zip|CH3CL.MOL"
# loads a given named model from within a zip file within a zip file.
#
# these selections override any manifest that might be in a ZIP file.

# new feature: print getProperty("fileContents","zipFileName", "subfile", "subFile",...)
# getProperty now allows drilling down through a ZIP file. If no subfile is shown,
# then the directory listing is given:
#
# print getProperty("fileContents", "data/test.zip")
#
# CH3CL.MOL
# CH3CL~1.MOL
# CH3F~1.MOL
# CH3OH~1.MOL
# CH4~1.MOL
# BENZEN~1.ZIP
# ENALSP~1.ZIP
# WATERV~1.ZIP
# JmolManifest
#
# print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP")
#
# benzenevib.spardir/
# benzenevib.spardir/_locked
# benzenevib.spardir/_spartandir
# benzenevib.spardir/Document
# benzenevib.spardir/M0001/
# benzenevib.spardir/M0001/_spartan
# benzenevib.spardir/M0001/archive
# ...
# benzenevib.spardir/SpreadSheet/
# benzenevib.spardir/SpreadSheet/SheetData

# print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP","benzenevib.spardir/M0001/")
#
# benzenevib.spardir/M0001/
# benzenevib.spardir/M0001/_spartan
# benzenevib.spardir/M0001/archive
# benzenevib.spardir/M0001/Calculations
# benzenevib.spardir/M0001/Commands
# benzenevib.spardir/M0001/Geometry
# benzenevib.spardir/M0001/input
# benzenevib.spardir/M0001/log
# benzenevib.spardir/M0001/Molecule
# benzenevib.spardir/M0001/output
# benzenevib.spardir/M0001/parchive
# benzenevib.spardir/M0001/proparc
# benzenevib.spardir/M0001/ret_code
# benzenevib.spardir/M0001/voutput
#
# print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP","benzenevib.spardir/M0001/Commands")
#
# # Verbose Mode: 1
# # version: MacSPARTAN '06 129 129 x86/Darwin
# # rootKeys: 'OPT' 'HF' '3-21G(*)' '' ''
# # new Keys: 'OPT HF 3-21G(*) FREQ '
# # ...etc....

#
# new feature: load "myfile.zip" MANIFEST "...."
# new feature: JmolManifest in a zip file directs which files to load and in what order
# JmolManifest is simply a list of files, one per line.
#
# Rules include:
#
# 1) blank lines and lines beginning with # are ignored.
# 2) file names are case-sensitive and must be complete, with full path within the ZIP file
# 3) files must be on separate lines or separated by vertical bar | marks; no whitespace around names
# 4) files may be ZIP files themselves.
# 5) some comments are special:
# IGNORE_ERRORS --- process the file and do not stop if some files are not valid model files
# IGNORE_MANIFEST --- (on the load command line) indicates that the internal ZIP file manifest should be ignored
# EXCEPT_FILES --- process all files EXCEPT those given
#

# new feature: show spacegroup "X,Y,Z;-X,Y,Z;..." finds space group associated with specific operations

# bug fix: multimodel files could have connected atoms between different models.

# bug fix: application animation frame button reset always goes to frame 1

# new feature: load xxx.zip n # where n is the desired file, starting with 1
# new feature: Spartan06 file format reader
# new feature: ZIP file reading for multiple models

# bug fix: antialiasDisplay changes during spinning (or any rendering) causes null pointer error

# -----------------------------------------------------------------------------

#version=11.3.47

# coding efficiencies in atom iterators

# vast speed up of smoothed isosurface map properties

# deprecated: calculate surface (equates to surfaceDistance WITHIN)
# deprecated: calculate surface {...} (equates to surfaceDistance FROM)

# new feature: calculate surfaceDistance FROM {atomExpression}
# new feature: calculate surfaceDistance WITHIN {atomExpression}

# -----------------------------------------------------------------------------

#version=11.3.46

# new feature: calculate surface {atomExpression}

# new feature: set isosurfacePropertySmoothing # default TRUE
# smooths the coloring for isosurface ... map property ...

# bug fix: "isosurface select() map property xxxx" array out of bounds error
# bug fix: color bonds CPK not working
# new feature: calculate polymers
# allows recalculation of polymers after connections are made/broken

# bug fix: tRNA, rRNA with abnormal distances do not connect biopolymers
# bug fix: Jmol math getProperty() doesn't pass parameter in some cases
# code: refactoring,optimizing Escape.toJSON() and Escape.toReadable()
# bug fix: isosurface CAP not turned off prior to map sasurface
# bug fix: adjustable boundbox in multimodel context not specific to model of selected atoms
# bug fix: Jmol math (x[2])[3] indistinguishable from x[2][3]

# -----------------------------------------------------------------------------

#version=11.3.45

# bug fix: new boundbox command with small numbers of atoms
# bug fix: state not saved for coloring elements
# bug fix: state not properly representing deleted bonds
# bug fix: setColix not clearing shading in certain cases

# new feature: Jmol math {atomset}.boundbox returns list of center, vector, corner0, corner1 for this set of atoms
# code: ModelSet.BoxInfo abstraction/refactoring

# -----------------------------------------------------------------------------

#version=11.3.44

# new feature: Jmol math getProperty() function
# allows FULL math access to ALL getProperty types
#
# syntax: getProperty(propertyType, qualifier, item, item, item,...)
#
# examples:
#
# print getProperty("modelInfo")
# print getProperty("boundboxInfo")
# print getProperty("boundboxInfo", "center")
# print getProperty("boundboxInfo", "vector")
# print getProperty("atomInfo",{atomno=3})
# print getproperty("bondInfo",{*},2,"atom1")
# print getProperty() # displays list of possibilities
# print getproperty("polymerinfo",{*},"models",2,"polymers",1,"monomers",39,"atomIndex2")
#
# For many property types, the qualifier is an atom set
# If the atom set is not given, those properties default to {visible}
# For "stateInfo", the qualifier is string: "fileState", "modelState", etc.
# Items may be integers or string-based keys
# Integer items follow the rules of Jmol math selectors:
# 1 first item, 0 last item, -1 next to last item, etc.

# code: set instead of = in measures and labels state

# bug fix: POVRAY and other buttons aren't enabled when there are no atoms but instead draw objects and isosurfaces
# bug fix: new label fonts not loaded when labels resized

# bug fix: nuisance "render mesh error" console report

# new feature: boundbox {atomExpression} [on|off]
# sets the bound box around the specified atom expression
# default ON/OFF is to NOT change current setting

# new feature: boundbox {point or expression} {vector to corner} [on|off]
# sets the bound box to be centered with a given size based on a vector to a corner

# new feature: boundbox corners {point or expression} {point or expression} [on|off]
# sets the bound box to encompass the two corner points

# strangely enough this allows setting the boundbox to a 2D or 1D box

# new feature: show boundbox gives valid boundbox commands and volume

# bug fix for bioshapes visible outside of current visible frame set

# bug fix for selecting atoms of atomsets using [-n] or [0]

# isosurface POINTSPERANGSTROM synonym for RESOLUTION
# also reported in show isosurface

# bug fix: more natural mouse SHIFT-RIGHT behavior.

# new feature: isosurface CAP [plane definition]

# caps the isosurface at the designated plane.
# Specifically for molecular/solvent-type isosurface.
# [plane definition] can be {x y z w} or any combination of
# three {x y z} points, draw point references, or atom expressions

# -----------------------------------------------------------------------------

#version=11.3.43

# bug fix: select statement comparisons of negative decimal properties to "-1" (not "-1.0") causes none found


# new feature: Back to "SET" for state definitions of Jmol parameters.

# bug fix: Strings too long in state can cause Eclipse "infinite loop" bug
#
# solution is a new feature:

# new feature: "\" at the end of a line marks a continuation of that line

# bug fix: assigning a negative value to a dataAtomNumberField value caused BitSet.set() exception

# bug fix: Jmol parameter setting syntax too loose

# The following statement was allowed:

# pickCallback = myfunction

# OK, so that might look good, but it evaluates to
#
# pickCallback = ""
#
# since the VARIABLE myfunction has not been defined.
#
# Solution: Don't allow the syntax
#
# [jmolParameter] = [Token.identifier]
#
# the following is OK:
#
# [jmolParameter] = "some string"
#
# the following is preferred:
#
# SET [jmolParameter] [value]
#

# bug fix: antialias with translucent but antialiasTranslucent = false; labels, text, echos, hover, picking, out of alignment
# bug fix: negative formal charges

# new feature: set drawPicking TRUE
# then reports picking of draw objects as a JavaScript array:
# [ "draw","[drawID]",[modelIndex],[vertexIndex],[x],[y],[z] ]
# this goes to the pickCallback function as the second parameter,
# with the first parameter (normally the atomIndex) being -2.

# bug fix: write coord mol not working

# new feature: connect (...) (...) aromatic auto
# similar to calculate aromatic, except it's isolated to this set of connections; implicit modifyOnly
# can be used in place of
# select *; calculate aromatic
#
# code: refactoring of BondCollection.makeConnections
#
# bug fix: connect (..) (..) # with implicit "single" causes state to use "partial 0"

# new feature: shadows can be activated again via noShadows parameter in .pov file

# -----------------------------------------------------------------------------

#version=11.3.42

# bug fix: new frame title and state

# new feature: set echo [echoID] MODEL [model number]

# bug fix: select by itself not working; oy. Since at least 11.0

# bug fix: ramachandran/quaternion fix for assignment of structure
# bug fix: isosurfaces not taking their default name properly

# new feature: frame title "this a title for THIS frame only"

# bug fix: small fix for povray cap at back side
# bug fix: overly long titles now again substringed in the popup menu.

# bug fix: memory leak in merge -- models[i].modelSet causes modelSet to not finalize.
# bug fix: quaternion


# bug fix: set xxxCallback not allowed

# new feature: **** Jmol Embedded Script **** recognized in /* ... */ comments and /** ... **/ super-comment blocks
# if found, ONLY this text is processed and all other text in the file is ignored.

# -----------------------------------------------------------------------------

#version=11.3.41

# bug fix: math operations with bond bitsets; % and + operating on arrays
# bug fix: _set variable definition removed

# new feature: .type math function

# new feature: Jmol math allows direct string replacement in select atom expressions:
# x = "atomno=3"
# select @x # or select @{x}
# select @{x + 3} # selects atomno=33
# x = array("atomno<10","atomno>20")
# select @x # OR of the list elements
# select @{x[2]} # just element 2 of x (atomno>20)
# select @x[2] # same as {@x}[2]


# new feature: set atom properties using an array instead of a DATA statement:
# (was introduced in 11.3.29, but not fully articulated)
# {*}.x = array(2,3,4,5,6);
# {atomno<=3}.color = array("red","green","blue")
# {*}.property_mydata = array(1.0,5.5,4.4,3.3);
# {atomno < 4}.xyz = array({3 4 5},{4 5 6},{5 6 7})
# if the array is shorter than the number of atoms selected, then
# only that number of atoms are affected

# new feature: set atom properties from space-separated string:

# {atomno < 5}.property_mydata = "1.0 5.5 4.4 3.3";

# -----------------------------------------------------------------------------

#version=11.3.40

# new feature: Ramachandran/Model commands switch between plot and model
# -- one Ramachandran plot per model
# -- axes labels and special hover label for Ramachandran plots
# -- Ramachandran saved in state

# bug fix: Overlapping CPK at a slab now correct for up to 10.000 clipped atoms.

# bug fix: @{} for within(1.0,point,@{....})

# new feature: set xxxx where xxxx is not a Jmol variable causes ERROR

# code: privatized Token to avoid null value problem in Eval.statementAsString()

# POV-Ray clipping coding minor tweak
# POV-Ray fix for number formatting width > 999

# new feature: model-based parallel array calculations:
# x = {atomno=3}.split() # a list, one element for each model
# draw @{x.xyz.sub({1 0 0})} # a set of points, one per model

# new feature: point3f in array():
# xlist = array({1,2,3}, {1,1,0});print xlist[1]+{1 0 0};
# bug fix: draw @{x - {1 0 0}}
# bug fix: antialias with set picking draw
# bug fix: draw object text not selective for frame
# new feature: draw object title line number corresponds to model number for multi-model draw objects

# new feature: matte finish for isosurfaces
# remark: matte finish replaced by adaptable translucent finish (see below)

# bug fix: noninteger MO occupancies
# bug fix: antialias labels not fully bitmapped
# bug fix: RPN processor too limited in nesting level
# bug fix: MO processing for Gaussian and PSI3 errors

# new feature: MoldenReader (Matthew Zwier )
# new feature: MO calculations for spherical orbital basis (Matthew Zwier )

# bug fix: slabbed atoms are now capped in povray output.
# Note: In CPK mode atoms overlap, but are capped at the same height.
# there is a priority in Jmol, but not yet clear to me which. The current priority
# in povray is based on the signed distance from the slab to the atom center.
# bug fix: povray output of translucent objects now have reduced glare, for
# clarity of the representation and better compatibility with the Jmol viewer.

# -----------------------------------------------------------------------------

#version=11.3.39

# bug fix: antialias causing image to be partial size.
# bug fix: hover state not properly showing specific-atom hover labels.

# new feature: write FILE (text-files only)

#new feature webexport: automatic usage of a different path to the applet for local files to allow testing
# only works for Pop-In template at present. Required updates to JmolPopin.js and templates.
#webexport instruction updated to reflect new feature.


# bug fix: antialias adjustments for hover text and background box
# bug fix: antialias fix for text color same as background and in front of translucent surface appearing transparent
# bug fix: antialias fix for applet

# webexport instruction updates.
# bug fix: webexport scriptbutton template had erroneous script names.

# -----------------------------------------------------------------------------

#version=11.3.38

# bug fix: antialiasing with translucent/POV-ray
# new feature: set antialiasTranslucent TRUE/FALSE
# along with antialiasDisplay and antialiasImages
# determines the extent of antialiasing. Requires
# antialiasDisplay or antialiasimages TRUE.

# -----------------------------------------------------------------------------

#version=11.3.37

# new feature: @{mathExpression} for echos, select, etc. where @x can be used.
# select atomno=@{x*2};
# xlist = array("red", "green", "blue");
# n = 2;
# color atoms @{xlist[n]};

# new feature: {atomExpression}.color = "red" (or "[xff0000]" or {255,0,0}

# new feature: helixes as barrels in cartoons or rockets using
# rocketBarrels = true


# bug fix: -- adds antialiasing for translucent objects
# bug fix: error in state for connect DELETE
# bug fix: 0-diameter atoms displayed as single pixels when perspectiveDepth = false

# -----------------------------------------------------------------------------

#version=11.3.36

# antialias better dots

# bug fix: inline loading not working

# POV-Ray dialog update

# set antialiasDisplay T/F (false by default)
# set antialiasImages T/F (true by default)

# -----------------------------------------------------------------------------

#version=11.3.35

# POV-Ray slab/depth
# POV-Ray text -- ALL text (echos, labels, axes, etc.)

# POV-Ray cleaner for Molecular Orbitals
# bug fix: getproperty atominfo returning string to Integer()
# PDB remediated atom name upgrade -- NEEDS CAREFUL CHECKING

# -----------------------------------------------------------------------------

#version=11.3.34

# write povray [width] [height] filename

# POV-Ray for mapped isosurfaces
# POV-Ray embeds Jmol script
# POV-Ray .pov files created by Jmol can be loaded as scripts


# code: cleaning of JmolConstants specialAtomNames
# code: cleaning of TextFormat.simpleReplace
# bug fix: select [SET] or [2MO] or [DB']
# bug fix: app -c flag errors not going to Logger.Error
# bug fix: no partial charges!
# bug fix: 11.3.14+ does not write colormapped JVXL files
# bug fix: Using isosurface within 1.0 @pt1 where pt1 is a draw point save state cannot be restored

# -----------------------------------------------------------------------------

#version=11.3.33

# code: PovRay tweaks -- multiple bonds
# code: PovRay output uses BufferedWriter

# adds support for "xx'" atom designations in PDB and variable names

# bug fix: insertion codes stored incorrectly in 11.3.32

# new feature: inline scripting allows math
#
# script INLINE "select " + site_list[2]


# new feature: site_ support for PDB and CIF
#
# loading of PDB and CIF files containing site information
# automatically defines variables site_xxx and defines selections site_xxx and site_n
# where xxx is the site identifier and n is the site number.
# These settings are reset each time a file is loaded.
# They do not carry over from one file to the next.

# adds "OP1" and "OP2" as backbone designators (new PDB designation)


# _PovrayExporter adds draw, halos, stars, dipoles, vectors, polyhedra,
# backbone, cartoons, meshRibbon, ribbon, rockets, strands, trace,
# dots, geosurface, molecular orbitals, LCAO cartoons, pmesh,
# single-color isosurfaces

# Web Export Dialog changes: new intro tab, new minilog at bottom, instructions converted to
# buttons which open the info in the standard Jmol Help Dialog.


# bug fix: rockets color incorrect for head groups

# -----------------------------------------------------------------------------

#version=11.3.32

# bug fix: vibration disabled in 11.3.31
# bug fix: zoomto cancels slabbing
# bug fix: zoomto (atomExpression) 0 # zooms to 2x

# new feature: getproperty stateinfo TYPE
# where TYPE is one of:
#
# colorState
# dataState
# fileState
# frameState
# modelState
# perspectiveState
# selectionState
# variableState
# windowState
#
# bug fix: backbone not in state

# code(I): Mmset merged into ModelSet;
# Viewer accesses ModelSet methods directly
# ModelManager streamlined substantially
#
# This basically removes two full layers of abstraction.
# All the atoms, bonds, and models are now in ModelSet.
#
# code(II): ModelSet extends ModelCollection extends BondCollection extends AtomCollection
#
# bug fix: dipoles moved back into shape from shapespecial
# bug fix: semi missing in show orientation message, second part (zyz text)
# bug fix: select 0 selects all instead of PDB group 0
# bug fix: write t.xxx

# -----------------------------------------------------------------------------

#version=11.3.31

# bug fix: calculate aromatic for N and O refined

# new feature: valence -- sum of bond orders
# print {atomno=3}.valence
# {atomno=1}.valence = 3
# select (carbon and valence != 4)

# new feature: settable atom properties (preliminary):
# .x, .y. .z, .xyz,
# .fx, .fy, .fz, .fxyz,
# .vx, .vy, .vz, .vxyz,
# .formalcharge, .occupancy, .partialcharge
# .temperature, .valence
# for example:
# a = {atomno=30}
# a.xyz = {1.0, 2.0, 2.3}
# a.temperature = 3.0
# a.formalcharge = 2

# new feature: set atom properties using {xxxx}.x =
#
# {atomno=3}.x = 3
# {(*)[2]}.xyz = {1 2 3}
# for(var i = 1; i < 3; i = i + 1); {(*)[i]}.x = 5;end for;
# {atomno=3}.property_whatever = 2.0

# new feature: set atom properties using an array instead of a DATA statement:

# {*}.property_mydata = array(1.0,5.5,4.4,3.3);
# {*}.property_mydata = "3 4 5 6 7 8";
# {atomno < 4}.xyz = array({3 4 5},{4 5 6},{5 6 7})

# code optimization for within() and setAtomBits()

# more export generator classes

# bug fix: unitcell missing some lines when axes turned off

# -----------------------------------------------------------------------------

#version=11.3.30

# new feature: adds H/Br/Cl/I/C logic to aromatic bond assignments
# new feature: adds Oxygen/Sulfur logic to aromatic bond assignments
# new feature: adds Nitrogen logic to aromatic bond assignments
# bug fix: menu for UNITCELL

# new feature: PovrayExporter (pim schravendijk )

# -----------------------------------------------------------------------------

#version=11.3.29

# new feature: aromaticSingle and aromaticDouble bond order options
# new feature: "smartaromatic" bonds # turned off with "smartAromatic = false"
# new feature: calculate aromatic # calculates reasonable aromatic double/single alternation.
# new feature: reset aromatic # sets all aromaticDouble and aromaticSingle back to aromatic
# new feature: select ISAROMATIC # selects aromatic atoms
# new feature: MOL reader recognizes bond types 4,5,6,7

# new feature: isosurface/mo "squared"

# new feature: fully generalized bond order "partial n.m"
# n = number of lines, up to 5
# m = binary mask for dottedness, up to 31 (0x1F)
# 00001 first line of bond dotted
# 00010 second line of bond dotted
# 00011 first and second line of bond dotted, etc.

# new feature: connect may use numeric bond orders, including "partial n.m"

# new feature: preliminary work on functionalized state
# new feature: global/local functions (to applet, for instance
# in general, functions are global -- common to all applets.
# first-character "_" indicates this function is a LOCAL function, private to this applet.

# -----------------------------------------------------------------------------

#version=11.3.28

# critical bug fix for color command not coloring objects properly
# new feature: bondOrders 2.5 and -2.5 PartialTriple and partialTriple2

# -----------------------------------------------------------------------------

#version=11.3.27

# critical bug fix for functions not returning values
# bug fix for atomarray[i] not selecting properly
# bug fix for write not working with VAR
# bug fix for application not accepting pastes into the
# console consisting of multiple lines
# bug fix for bondOrder command not properly treating 4.0 or 0.5
# bug fix for decimals not represented properly in error messages

# -----------------------------------------------------------------------------

#version=11.3.26

# new feature: _1 parameter for "first atom" in second expression of connect:
# connect 3.0 (_H and connected(_N) (_O and not within(chain,_1)) hbond
# new feature: better reporting of PMESH file format errors

# code cleanup: pmesh moved to shapespecial; privatized

# bug fix within(chain,xxx) not working
# bug fix for() as first command in script or line
# bug fix we were not exporting error free xhtml 1.1.
# bug fix for WebPageMaker not writing files
# bug fix for PAUSE causes app to hang -- this is a reversion of use of SwingUtilities.invokeLater(),
# which actually will not work in ScriptWindow. We need the direct execution in
# order to avoid the event queue from stopping itself.

# -----------------------------------------------------------------------------

#version=11.3.25

# bug fix compiler not recognizing "axes =" or "measures = "
# bug fix for WebPageMaker creating uncompressed PNG
# bug fix for WebPageMaker not stripping \ in load file names

# -----------------------------------------------------------------------------

#version=11.3.24

# critical bug fix for 11.3.23 compiler not recognizing line endings
# bug fix for show state for draw in multi-model environment
# bug fix? for background model not available for multiple frame range (e.g. frame 2.0) or after invalid frame number
#
# new feature: within(distance,isWithinAllModels,atomExpression)
#
# allows finding atoms within a specified distance of other atoms in OTHER models:
#
# select within(5.0,true,model=2.1) # TRUE indicates we should check all models
# select within(5.0,false,model=2.1) # FALSE -- only model 2.1
# select within(5.0,model=2.1) # default is FALSE

# -----------------------------------------------------------------------------

#version=11.3.23

# VERSION full script flow control support:

# if / else if / else / end if
# for / end for
# while / end while
#
# var i = 4
# if (i = 3)
# print "i=3"
# else if (i = 4)
# print "i=4"
# else if (i = 5)
# print "i=5"
# end if
#
# var i = 5
# while ( i > 0)
# print "atom " + i + " " + {atomno=i}.ident + " is at " + {atomno=i}.xyz
# i = i - 1
# end while
#
# n = {*}.size
# for (i = 1; i <= n; i = i + 1)
# for (j = i + 1;j <= n; j = j + 1)
#
# var dist = {atomno=i}.distance({atomno=j})
#
# if (dist < 1.77)
# print "i-j: " + i + "," + j + " " + dist%2
# measure {atomno=i} {atomno=j}
# endif
#
# end for
# end for
#
# var i = 4
# while ( i > 0)
# print "in while: i="+i
# if (i = 2);print "i is 2";endif
# i = i - 1
# end while
#
#

# -----------------------------------------------------------------------------

#version=11.3.22

# Changes to webexport package only
# New Features: textboxes for entry of author name and title for browser window
# persistence across launches of authorname and applet size
# automatic gzip of large structure/quantum files.
# Bug? fix: update the page templates to XHTML 1.1
# Minor fixes to instruction .html files.

# tweak: using "var" keyword prevents display of global variable value

# -----------------------------------------------------------------------------

#version=11.3.21

#
# bug fix: isosurface of MOs not properly displaying color in saved state
# bug fix: state saving of @ definitions has extra = sign.
#
# new feature: fully functional user-defined functions:
#
# MACROS (no parameters)
#
# function mymacro
# background red
# color atoms blue
# end function
#
# function mymacro2
# background black
# color atoms cpk
# end function
#
# background white
# delay 2
#
# mymacro
#
# delay 2
#
# mymacro2
#
#
# SUBROUTINES (parameters, but no return)
#
# function drawline(id,a,b)
# var x = script("draw line"+ id + " {atomno=" + a + "} {atomno=" + b + "}")
# end function
#
# drawline(1,3,5)
# drawline(2,10,12)
#
#
# FUNCTIONS (parameters and returns)
#
# function d(a,b)
# return a.distance(b)
# end function
#
# x = d({atomno=3},{atomno=4})
# print x
#
# SHOW AND WRITE:
#
# show functions
#
# write functions macros.spt
#

# -----------------------------------------------------------------------------

#version=11.3.20

# bug fix for arrows way too fat (introduced in 11.3.19) :(

# -----------------------------------------------------------------------------

#version=11.3.19

# bug fix: critical arrow fix of 11.3.17 for 2-point arrows
# bug fix: write PNG default was 0 compression. -q flag was OK for setting 0-9
# bug fix: ragged arrow tip

# -----------------------------------------------------------------------------

#version=11.3.18

# critical bug fix for 11.3.17 in regard to serialization of arrays
# also introduces
#
# reset ALL # resets all user-created variables
#
# also "exitJmol" typed into the script window for the application does that.
#

# -----------------------------------------------------------------------------

#version=11.3.17

# bug fix: problem with unescaping comma-separated point strings "{1,2,3}" as a point.
# bug fix: drawn arrows scale improperly when zooming; arrow heads off-kilter

# new feature: set defaultDrawArrowScale # 0.5 initially
# Drawn arrows now have a head size that can be set and a dimension that
# scales with the model, so arrow head:atom size ratio remains constant

#
# new feature: setting Jmol,Rasmol,Shapely,Amino,Roygb,Rwb
# color schemes makes those colors the default colors for these schemes.

# rename byResidue_jmol --> byResidue_shapely
# rename byResidue_rasmol --> byResidue_amino

# new feature: array variables saved as arrays
# prior to 11.3.17, you could not do:
#
# x = "this is a test".split(" ")
# y = x[3]
#
# because x was only saved as a string, not an array
# now x is saved as an array, so this is no problem.
#
# new feature Jmol math point(x,y,z) function
#
# point(a,b,c) or point("{x,y,z}")
#
# x = point(y[3], y[6], y[2])
# x = point("{2,3,5}")
#
# needed because, with simple numbers, just
#
# x = {3.0,4.0,5.0}
#
# works, but
#
# x = {r,g,b}
#
# does(did) not.
#
# new feature: Jmol math array element assignment:
#
# a = "2,3,4,5".split(",")
#
# a[3] = "now the 4 becomes this phrase"
# a[a[2]] = "not any more; now it's this"
# a[0] = "setting the final element"
# a[6] = "expanding the array"
# print a
#
# 2
# 3
# not any more; now it's this
# setting the final element
#
# expanding the array
#
# works with strings as well:
#
# a = "this is a test"
# a[8] = " not"
# print a
# >> a = "this is not a test"
#
# new feature: Jmol math x = array(a,b,,,,)
#
# x = array(3,4,5,6)
# print x[3]
# >> 5
#

# new feature: Jmol math plane(x,y,z,w) function
#
# plane(a,b,c,d) or plane("{x,y,z,w}")
# or through three points:
# plane({atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint})
# or through three points with a reference point
# plane({atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint})
#
# x = plane(y[3], y[6], y[2], 3.0)
# x = plane("{2,3,5,4}")
# x = plane({_H}[1],{_H}[2],{_H}[3],{_C}[1])
# new feature: print command prints a variable expression
#
# print x
# print x * 3
# print x[4] + x[3]
# print x.split(" ")[2][0]

# new feature: aPlane.distance({some atoms})

# new feature: someArray.add("string") adds string to right of each item
# new feature: someArray.sub("string") adds string to left of each item

# colorManager clean-up

# -----------------------------------------------------------------------------

#version=11.3.16

# bug fix: Eval RPN processor for list[n] addition operator not doing selection

# new feature: MOPAC mgf file UHF orbital reading -- preliminary only

# new feature: byElement and byResidue color schemes allow
# customized element and residue coloring schemes.
# built-in include: byElement_Jmol, byElement_Rasmol,
# byResidue_Jmol (shapely) and byResidue_Rasmol (amino)
# with abbreviations byElement == byElementJmol; byResidue == byResidue_Jmol
# color atoms "byresidue_Jmol"
#
# Users can set up their own byElement and byResidue color schemes
# simply by preficing a name with "byElement" or "byResidue":
#
# color "byElement_Mine=[x......] [x......] [x......] ..."
# 0(unknown) 1(H) 2(He) ...
#
# then:
#
# color atoms "byElement_Mine"
#
# RANGE min and max are ignored for byElement and byResidue schemes,
# and there is no scaling done ever, so effectively these prefixes
# make the correlated value a simple index into the array.
# This is what one would want for something that should be a given
# for a specific element or residue
#
# Residue indexes in order correspond to the groupID of an atom:
#
# 0 noGroup,
# 1 ALA, ARG, ASN, ASP, CYS,
# 6 GLN, GLU, GLY, HIS, ILE,
# 11 LEU, LYS, MET, PHE, PRO,
# 16 SER, THR, TRP, TYR, VAL,
# 21 ASX, GLX, UNK,
# 24 A, +A, G, +G, I, +I,
# 30 C, +C, T, +T, U, +U
#
# so this opens the door to user-created residue coloring schemes.
#
# color "byResidue_Mine=[x......] [x......]..."
# nogroup ALA ...
#
# then
#
# color cartoons "byResidue_Mine"

# -----------------------------------------------------------------------------

#version=11.3.15

# new feature: fully customizable popup menu -- see file jmol.mnu
#
# load menu jmol.mnu
#
# applet parameter param=menuFile value="jmol.mnu"
#
# application parameter -m filename
#
# mostly untested
#
# new feature: show menu
# new feature: getProperty menu
#
# These deliver the current menu (as translated) in jmol.mnu format

# -----------------------------------------------------------------------------

#version=11.3.14

# new feature: fully customizable popup menu -- see file jmol.mnu
#
# load menu jmol.mnu
#
# applet parameter param=menuFile value="jmol.mnu"
#
# largely untested


# bug fix: HDO not recognized as "water"
# bug fix: rotateSelected MOLECULAR not around {0 0 0}
# bug fix: -g ignored on -n option, even if -w is present
# bug fix: unknown color palette could cause error

# new feature: %l atomic element number

# new feature: APPLICATION -q (quality) option
# new feature: lcaoCartoon, mo, isosurface, pmesh: color [translucent [n]|opaque] [colors...]

# adjustment: setting JPG default quality to 75, not 100

# new feature: {r,g,b} can be used in place of [r,g,b] for indicating color,
# allowing programmatic color definition:
#
# r = 255; g = 255; b = 0;
# background {@r,@g,@b}

# new feature: expanded color command for properties
#
# color atoms property partialcharge "rwb" range -1.0 1.0
#
# and reverse with range inverted:
#
# color atoms property partialcharge "rwb" range 1.0 -1.0

# new feature: unlimited user-defined color schemes:
#
# select none;
# color "myname=[xff00ff] [xffff00] [xff00ff]"
#
# colors must be [xRRGGBB] format for this one

# new feature: fully remappable isosurface using COLOR command:
#
# isosurface s1 molecular map mep
# color $s1 "bwr"
# color $s1 "rwb" range -0.2 0.2


# APPLICATION adjustment to console window scaling/size

# -----------------------------------------------------------------------------

#version=11.3.13

# this version introduces fully customizable color schemes
#
# new feature: .color for numbers and points delivers the
# color associated with a given value in the current
# coloring or propertyColorScheme.
# (some number).color gives a color triple as a point {x y z}
# {x y z}.color gives a hexadecimal string [xRRGGBB]
#
#
# select atomno=3;color yellow
# x = {atomno=3}.color # gives {255.0, 255.0, 0.0}
# x = {atomno=3}.color.color # gives "[xFFFF00]"
#
# set propertyColorScheme "bwr"
# x = {atomno=3}.partialcharge.color
#

# new feature: color ["schemeName"] RANGE [min] [max]
# allows setting of color range and scheme so that color
# values can be determined. This would be used for making
# a color key using positionable ECHO text boxes:
#
# color "bwr" absolute -0.1 0.1
# x = (0.01).color # gives the point-color associated with that number
# set echo myecho 100 100 # position
# echo " " # just some space
# color echo @x; background echo @x # color this bar the color of 0.01
#
# new feature: show colorscheme "schemeName"
# delivers "colorscheme = " followed by a string of color values.
# without the scheme name, returns the current colorscheme listing
# For example: show colorscheme "low" delivers:
#
# colorscheme = [xff0000] [xff2000] [xff4000] [xff6000] [xff8000] [xffa000] [xffc000] [xffe000] [xfff000] [xffff00] [xf0f000]
#
# setting an array variable to the color values:
#
# list = script("show colorscheme \"low\"")[15][0].split(" ")
#
# new feature: set userColorScheme [list of color names]
# creates a colorscheme referred to as "user" and its reverse, "resu"
# based on a list of color values:
#
# set userColorScheme red green [x00FFFF] blue
# color atoms property partialcharge "user" range -1.0 1.0

# -----------------------------------------------------------------------------

#version=11.3.12

# bug fix: zoomTo 100%
# bug fix: set language fr needs quotes but should not
# bug fix: load multiple files inline causes null pointer exception
#
# new feature: APPLICATION: File|Export...|Export to Web Page

# -----------------------------------------------------------------------------

#version=11.3.11

# bug fix: lcaoCartoon for sp center requires "sp2" not "sp"
# bug fix: mo not showing titles
#
# new feature: lcaoCartoon rotate [x|y|z] degrees create "px"
# new feature: adds Jaguar PLT plot file reader for isosurface
# isosurface sign red blue "myfile.plt"

# -----------------------------------------------------------------------------

#version=11.3.10

# bug fix: script window using swing thread start not from event queue
# bug fix: state of multi-polymer protein cannot be restored
# bug fix: dots nn% not operational
# bug fix: molecular dipole and multiple frames
#
# new feature: molecular dipole for Gaussian files
#
# new feature: simple calculation of approximate dipole moment from charge distributions.
# dipole molecular # from file value if provided
# dipole calculate molecular # from "center of gravity" of charges calculation
#
# new feature: show frame # based on models in the current frame set, displays information about frames
#
# new feature: application option for web page export
#
# new feature: write JPG n "filename" # where n is the quality (<=100)

# -----------------------------------------------------------------------------

#version=11.3.9

# bug fix for isosurface mapping of planes by MEP (see 11.3.2)

# 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
# new feature: synchronization of applets using JavaScript
# new feature: synchronization of applets using Jmol scripts:
#
# synchronize .|>|*|appletId[syncId] ON|OFF|SLAVE|command
#
# The synchronize (sync) command allows two or more applets to be synchronized in
# terms of orientation. Move one with the mouse, and the other moves as well.
# In addition, the sync command allows ANY command to be sent to one or more
# other applets directly, without the intervention of JavaScript.
#
# Applets are identified by appletId (jmolApplet0, for instance)
# along with an optional bracketed sync group identifier -- generally a random
# number that identifies the page containing the controlling applet. If the
# syncId is not given, then the ID for the page containing the controlling applet
# is used. This feature is important for cross-frame synchronization only.
#
#
# . this applet only
# > all applets except this one
# * all applets
# appletId id of a specific applet
# [syncId] (optional) a unique string of digits -- brackets included
#
# ON sync as driver (default)
# OFF turn sync off
# SLAVE turn sync on, but not as driver
# command command to send
#
# for example:
#
# sync * # synchronize all applets as drivers
# sync jmolApplet1 #syncs this applet with jmolApplet1 both as drivers
# sync > "set echo top left;echo OK" # sends OK to top left of all OTHER applets
# sync jmolApplet2[254678942] OFF # turns sync off for an applet ON A DIFFERENT PAGE
# # or in a different FRAME
# sync . OFF # turns sync off for this applet
#
# new Jmol.js feature: jmolGetSyncId(); jmolSetSyncId(id);
# allows control over the sync ID via javascript. jmolSetSyncId(id)
# should be called prior to jmolApplet() and should incorporate some sort of
# random digits and no space characters. (A number is good.)
# This should only be necessary for multi-frame pages.

# -----------------------------------------------------------------------------

#version=11.3.8

# bug fix: isosurface color -- not operating for some isosurface types
# bug fix: isosurface "xxxx.cube" -- not assigning proper default colors
# bug fix: gamess reader MO fix
# bug fix: state save of STRUCTURE misplaced

# feature: adds adjustable scale for unitcell axes

# -----------------------------------------------------------------------------

#version=11.3.7

# bug fix: reading of JVXL files for orbitals loses phase information
# bug fix: ACD/Labs nonstandard cml "builtin" property reader
# bug fix: isosurface interior cavity was not setting meshdata surfaceSet null
# bug fix: select dna can select rna if chain is mixed hybrid dna+rna

# -----------------------------------------------------------------------------

#version=11.3.6

# bug fix: inappropriate draw pick spinning for single point
# bug fix: dots not available in multimodel mode
# bug fix: multiple isosurface cavities incorrect in a multimodel environment
# bug fix: isosurface cavity not filled completely
# bug fix: nested ifs can cause last endif to throw error
# bug fix: compiler bug working with very small real numbers
# bug fix: Support for mol2 files with blank line after comments.

# -----------------------------------------------------------------------------

#version=11.3.5

# bug fix: ACD/Labs nonstandard cml "builtin" property reader
# note that xmlReader (SAX reader) is now set to ignore all DOCTYPE declarations
# bug fix: odydata fix for files with \r\n for line ending
# bug fix for PDB remediated T/DT difference of C5M/C7
# bug fix: set spin X was case-selective
# bug fix: echo text not re-orienting on resize of applet or application
# bug fix: multiple isosurface cavities in a multimodel environment
# bug fix: missing set picking ident in popup window
# bug fix: popup menu set picking label not working

# -----------------------------------------------------------------------------

#version=11.3.4

# rough export of VRML using
#
# write VRML "myfile.wrl"
#
# includes colored balls and sticks; uncolored isosurfaces

# -----------------------------------------------------------------------------

#version=11.3.3

# bug fix pmesh not working
# bug fix for state after calculate surface, calculate hbonds, configuration, dynamic variable definition in multimodel environment (ModelSet::addStateScript)

# NEW FEATURES from the 2007 Gordon Research Conference on Visualization in Science and Education:
#
# internal dataFrame concept
#
# new command: ramachandran
#
# new command: quaternion [w x y z] [derivative]
#
# TODO: frame menu
# TODO: write VMRL

# preliminary Maya export -- sets the stage for any number of export frameworks.

# -----------------------------------------------------------------------------

#version=11.3.2

# bug fix: set picking label
# bug fix: minus-sign "fix" in 11.3.1 broke all {x -y z} notation
# bug fix: state for phased atomic orbitals does not preserve red/blue color
# bug fix: mo opaque causing "invalid argument" when no MOs
# bug fix: isosurface cavity molecular caused exception
# feature: adds isosurface capability to map MO and MEP data onto planes

# -----------------------------------------------------------------------------

#version=11.3.1

# bug fix: debugscript on;center 3-5; "-" missing
# bug fix: zoomTo (5-7) read as "5 to -7"
# bug fix: move with time < 0.03 seconds causes molecule to disappear
# bug fix: hover interruption
# bug fix: image offsets in creating JPG image if model has been moved by CTRL-ALT-LEFT drag

# -----------------------------------------------------------------------------

#version=11.3.0

# perspectiveModel 11 default
# bug fix for 3D text echo staying in window
# bug fix for draw text+translucency
# bug fix for draw text not hovering for points
# bug fix for multiple draw objects in show state
# bug fix for spin save reversed direction
# bug fix for CdkAdapter not having auxiliaryInfo data
#
# adds the ability to find the coordinate of a specific
# draw object vertex using $objName[vertexId] as in
# draw p perp plane (atomno=1) (atomno=2)
# x = $p[3]
# draw pt1 $p[1]


# -----------------------------------------------------------------------------

#version=11.1.49

# bug fix for Gaussian file reader fix for very large negative MO coefficients
# bug fix for move not releasing isInMotion
# bug fix for x = "testing"[0], x = "testing"[-1], "testing".split("t")[0], and "testing".split("t")[-1]
# bug fix for select {*}[0], {*}[-1], etc., which now counts from the end back
# adds proper indents on debugscript for if/else/endif
# allows "jmolscript:" for embedded scripts and callbacks

# -----------------------------------------------------------------------------

#version=11.1.48

# bug fix for gamess reader MO fix
# bug fix for mopac GRAPHF file fix (resolver thought MOL)
# bug fix for lcaocartoon "lp" fix for AX3E and AX2E

# -----------------------------------------------------------------------------

#version=11.1.47

# bug fix for compound document reader not reading enough short segment pointers
# bug fix for Spartan reader not recognizing 5D orbital problem
# bug fix for animation skipping frames

# -----------------------------------------------------------------------------

#version=11.1.46

# bug fix for Jvxl.jar standalone application not having complete set of class files (jvxl)
# adds inline help support for Jmol application running under Java 6 (Java 1.6.xx)
# bug fix for inappropriate pre-JVM12 menu items not disabled

# -----------------------------------------------------------------------------

#version=11.1.45

# bug fix for animFrameCallback not indicating animation direction
# bug fix for help not working and help URL not displaying (app)
# bug fix for app not writing state from File...Export menu (app)
# bug fix for retaining the last-saved file type selected for Image export (app)
# bug fix for "wait" not recognizing if it is just a syntax check (app)

# -----------------------------------------------------------------------------

#version=11.1.44

# bug fix for inability to specify fractional coordinates: adds fx, fy, fz as
# select fx < 0.5 and fy < 0.5 and fz < 0.5
# aveFracX = {molecule=1}.fx
# bug fix for inability to use x,y,z,fx,fy,fz with cartesian points
# bug fix for select BONDS ({...}) not preserved in state
# bug fix for geosurface not always restored from saved state
# bug fix for strandcount saved explicitly forces bioshape load

# -----------------------------------------------------------------------------

#version=11.1.43

# bug fix for labels mysteriously disappearing. Also probably taking up HUGE amounts of hashtable space.
# bug fix for hydrogen bond calculation with incomplete nucleic acid definitions.
# bug fix for "set picking draw" crashing Jmol
# bug fix for strandCount not carrying over to meshRibbon
# bug fix for geosurface/dots save/restore state exception
# bug fix for save state using "measurements off" instead of "set measurements off"

# -----------------------------------------------------------------------------

#version=11.1.42

# bug fix for lack of updating of certain variable predefined expressions
# bug fix for smiles nonfunctional

# bug fix for load append and structure commands
# bug fix for load files losing structure and cartoons
# bug fix for multiple frames displayed does not show Select...Elements menu
# bug fix for select @x not functioning where x = {atom expression} or x = "atom expression"
# bug fix for {atom expression}.ident nonfunctional

# code refactoring Frame --> ModelSet and ModelLoader
# code refactoring modelframe --> modelset package
# code refactoring shapebio --> shapebio + molsetbio packages
# code refactoring dissociates Mps.MpsShape from Mps as BioShape
# code refactoring removes Mps.Mpsmodel
# code refactoring Mps --> BioShapeCollection
# code refactoring greatly simplifies BioShapeCollection subclasses

# -----------------------------------------------------------------------------

#version=11.1.41

# bug fix for load with explicit spacegroup not respecting normalization choice
# bug fix for symop=nijk selecting base atoms when not appropriate
# bug fix for select specialposition non-functional
# bug fix for adding atoms but mads[] going stale
# slight redefinition of "special position"
# bug fix for structure loss on load append. (structure is supposed to be recalculated).
# adds language switching for Open / Save dialog boxes and full menuing system in Jmol application
# adds "structure" command -- structure [helix|sheet|turn|none] (atom expression)
# adds "save/restore structure" command

# -----------------------------------------------------------------------------

#version=11.1.40

# bug fix for backgroundModel and save state
# bug fix for load append with spacegroups causing atoms to be repositioned
# bug fix for anim playrev in loop mode causing animation to stall

# -----------------------------------------------------------------------------

#version=11.1.39

# several bug fixes:
#
# bug fix for mo data misreading in smol files
# bug fix for lcaoCartoon "s" giving incomplete spheres
# bug fix for select symop=3555 not giving proper atoms when load "" {444 666 0}
# bug fix for PDB files not supplying information about residues for the popup menu.
# bug fix in frame range 1.0 when file 1 has only one model.

# -----------------------------------------------------------------------------

#version=11.1.38

# bug fix for opaque triangles missing one pixel on right side when translucent objects are present.
# bug fix for label alignments sometimes not being saved properly in the state
# bug fix for animFrameCallback giving multiple callbacks -- still there, but identified now
# in terms of whether animation is on or not in the 7th parameter being 1 or 0:
#
# function animFrameCallback(app,frame,fileno,modelno,firstno,lastno,isRunning){...}

# -----------------------------------------------------------------------------

#version=11.1.37

# fixes bugs in draw and unicode label state definitions
# adds simplistic to text, including echo, label, hover, etc.
# fixes popup menu to better deal with multiple file context
# update of Turkish translation

# -----------------------------------------------------------------------------

#version=11.1.36

# build: renames applet files JmolApplet0*.jar and JmolAppletSigned0*.jar
#
# bug fixes for isosurface in multi-file environment
#
# bug fix and additional work in relation to translations
#
# zoomTo (atom expression) 0
#
# with options
#
# zoomTo (atom expression) 0+n
# zoomTo (atom expression) 0-n
# zoomTo (atom expression) 0*n
# zoomTo (atom expression) 0/n
#
# also
#
# moveTo timeSec {x y z w} (atom expression) 0 [zoom factor]
# and
# moveTo timeSec {x y z w} 0 transX transY (atom expression) 0 [zoom factor]
#
# where [zoom factor] is x, where x > 0
# or
# [0] [[+ | - | * | /] x]
#
#
# app fix for Edit...preferences not properly refreshing for axes and boundbox

# -----------------------------------------------------------------------------

#version=11.1.35

# fix for x = {...}.resno and {...}.groupID
# fix for select resno=-1
# first version of pt_BR translation

# -----------------------------------------------------------------------------

#version=11.1.34

# language submenu

# -----------------------------------------------------------------------------

#version=11.1.33

# bug fixes -- draw state, menu not updating, language submenu

# -----------------------------------------------------------------------------

#version=11.1.32

# adds capability to define a property for selected atoms:
#
# select xxx
# property_x = n.m

# -----------------------------------------------------------------------------

#version=11.1.31

# adds capability to read data from selected fields (white-space delimited columns) in a file
#
# propertyDataField = 0 # no fields -- just read tokens
# propertyDataField = 2 # data are in field 2 (second from the left)
# propertyAtomNumberField = 1 # data must match atomNo in field 1 and will be in
# the field specified by propertyDataField

# -----------------------------------------------------------------------------

#version=11.1.30

# full support for switching languages, including a new "language" menu item
#
# Jmol.js:
#
# jmolSetCallback("language", "de")
#
# Jmol scripting:
#
# language = "de"
#
# Menu:
#
# new language submenu with checkboxes.
#
# allows for efficient specific file reader options for the applet (particularly)
#
# adds _spinning variable
#
# adds LOAD xxx::myfile xxx indicating file type xyz, mol, etc.
#
# not important generally.
#
# adds PQR reader option, at least for PDB2PQR generated output
#
# better spin control during zoomTo and moveTo
# spinning now detects that a zoomTo or moveTo operation is occurring
# or the user is manipulating the model with the mouse, and pauses 1 second
# for that operation to complete before resuming spinning
#
# hover now is turned off during spinning or user manipulation of the model
#
# zoomTo and moveTo the same location changed to no time delay

# -----------------------------------------------------------------------------

#version=11.1.29

# code: totally reorganized isosurface code; new org/jmol/jvxl packages
#
# adds (1) isosurface functionxy "file:data.dat" ...
# adds (2) isosurface functionxy "functionName" {x0 y0 z0} {-ni ...} ...
# adds (3) isosurface functionxy "functionName" {x0 y0 z0} {-ni ...}{-nj ...} ...
#
# (1) "file:" allows reading of xy data from files for graphing f(x,y)
# (2) ni<0 indicates JavaScript functionName will return a single string that
# should be parsed for numeric data.
# (3) ni<0, nj<0 indicates that JavaScript will fill the fourth parameter
# of the function with an array of f[nX][nY] data values:
#
# Jmol:
#
# isosurface s1 functionXY "xyData" {-2 -2 -2} {21 0.1 0 0} {21 0 0.1 0} {21 0 0 0.1}
#
# JavaScript: (slow)
#
# function xyData(app, x, y) {
# return func(x, y)
# }
#
# Jmol:
#
# isosurface s2 functionXY "xyDataAsString" {-2 -2 -2} {-21 0.1 0 0} {21 0 0.1 0} {21 0 0 0.1}
#
# JavaScript: (much faster)
#
# function xyDataAsString(app, nX, nY) {
# var s
# for (var i = 0; i < nX; i++)
# for (var j = 0; j < nY; j++)
# s += "x_"+i+"\ty_"+j+"\t"+func(i,j)+"\n"
#
# //non-numeric formatting allowed but not necessary
#
# return s
# }
#
# Jmol:
#
# isosurface s3 functionXY "xyDataAsArray" {-2 -2 -2} {-21 0.1 0 0} {-21 0 0.1 0} {21 0 0 0.1}
#
# JavaScript: (very fast)
#
# function xyDataAsArray(app, nX, nY, fxy) {
# for (var i = 0; i < nX; i++)
# for (var j = 0; j < nY; j++)
# fxy[i][j] = func(i,j)
# }
#
# (2) and (3) are very fast; (1) is the original method, but it is slow.
#
# MAYSCRIPT expanded
#
# for the Wiki or any application where absolutely no JavaScript
# is to be allowed, simply remove the MAYSCRIPT parameter, which
# now covers all aspects of JavaScript interaction from within Jmol
#
#
# adds applySymmetryToBonds (default: FALSE)
#
# applySymmetryToBonds
#
# When set TRUE, this flag instructs Jmol when applying symmetry
# to atoms, as in "load xxx.cif {1 1 1}", to also apply symmetry
# to the bonds indicated in the file. The flag is useful when
# normal Jmol autobonding would not properly connect atoms, but
# the model is "molecular" -- the base atom coordinates are correct
# for whole molecules. The flag should NOT be used in cases where
# the application of symmetry operations creates new bonds that
# were not present in the original set, as for quartz.cif, where
# there is only one bond initially, and after applying symmetry
# new bonds are created that are between atoms that were created
# using two different symmetry operations.
#
# adds isosurface HOMO/LUMO [+/- n]
#
# better isosurface plane rendering, especially in regard to meshes
# bug fix in isosurface contour -n going WAY back to before 10.9.60
# refactoring of all isosurface-related classes
# support for Spartan MO HOMO
#
# adds isosurface POCKET [cavity] sasurface
# adds isosurface INTERIOR [cavity] sasurface
#
# adds load TRAJECTORY -- for a single file with multiple models all with
# the same number of atoms. Atom locations can also be updated on the
# fly using the data statement.
#
# adds TRAJECTORY n command -- like FRAME or MODEL, but never more
# than one model at a time displayed, because there is only one set
# of atoms.
#
# adds script: option for callbacks set from within Jmol. That is, callbacks
# can either be to host page JavaScript functions or to Jmol scripts. This
# will allow interactive sessions without external JavaScript.
#
# set pickcallback "script: script doCallback.spt"
#
# adds resizeCallback because certain positioning of echos and sizing of the
# structure may require method intervention after the resizing
#
# adds translucency for echo and hover, both text and backgrounds
#
# adds echo script to defined state
#
# adds hourglass cursor during MO/Isosurface operations
#
# fixes inoperative "set pickingstyle measures on"

# -----------------------------------------------------------------------------

#version=11.1.28

# adds
#
# a = script("some script command")
# a = javascript("some javascript")
#
# putting output into a from commands such as "show" or "getProperty", for instance.
#
# reinstates tempManager properly.
#
# adds support for CAChe CSF files with MOPAC (AM1, PM3, etc.),
# Density Functional, and Extended Huckel Gaussian/Slater-based molecular orbitals.
#
# CHANGES DEFAULT RENDERING FOR MOLECULAR ORBITALS TO: MESH NOFILL FRONTONLY
#
# adds MOPAC 2007 graphf output reader (gpt2 files, MOPAC molecular orbitals)
# based on the VERY latest version (not released yet), which includes
# "MOPAC-Graphical data" on the first line, character index 6.
#
# adds
#
# mo HOMO [+/- n]
# mo LUMO [+/- n]
#
# fixes bugs found by FindBugs:
#
# labels: default z setting for labels (set labelFront, set labelGroup, set labelAtom)
# was not being recorded properly
# move: with slab or zoom was doing integer math
# GhemicalMMReader -- was incorrectly assigning aromatic to bond type 4 via fall-through of switch
#
# adds xodydata reading of "boundary" as unitcell
# enhances default axis rendering for axes unitcell
#
# adds expanded isosurface-related commands:
#
# draw list
# isosurface list
# lcaocartoon list
# (mo list) -- not particularly useful
# pmesh list
#
# Listing gives id, number of vertices, number of polygons, visibility,
# and title (usually the command that was given that created this isosurface)
#
# CHANGED BEHAVIOR FOR ISOSURFACE COMMAND WITHOUT ID INDICATED:
#
# Now if no ID is indicated, the previous ID is used for all commands
# EXCEPT "isosurface delete", which deletes all isosurfaces.
#
# This is a change from Jmol 10.2 and 11.0, where if you leave
# off the ID, a new isosurface is created.
#
# This was a needed change to prevent unwanted multiple isosurfaces.
#
# CHANGED BEHAVIOR FOR ISOSURFACE DEFAULT COLOR
#
# The default isosurface color no longer changes shade among 5 possible shades.
# That was necessary only because it was easy to mistakenly make multiple
# isosurfaces that otherwise would look the same.

# -----------------------------------------------------------------------------

#version=11.1.27

# fixes two state bugs:
# 1) dots/geosurface not being saved properly in state
# 2) animation parameters not being saved properly in state

# -----------------------------------------------------------------------------

#version=11.1.26

# fixes two nasty bugs relating to isosurfaces and JVXL files.
# -- JVXL files created from molecular orbitals will show up with no color
# in 11.1.0 - 11.1.25 because of a missing number in the definition line :(
# -- JVXL files created from molecular orbitals will show unwanted cross-over
# surfaces from + to -.

# -----------------------------------------------------------------------------

#version=11.1.25

# --fully dissociates geosurface from dots;
# --allows coloring and transparency of geosurface
# similarly to the way stars are colored

# -----------------------------------------------------------------------------

#version=11.1.24

# refactored Geodesic3D, Dots, DotsRenderer
# independent dots/geosurface
#
# isosurface CAVITY

# -----------------------------------------------------------------------------

#version=11.1.23

# fixes a number of bugs, some critical
#
# adds isosurface CAVITY x.xx -- a new way to depict the cavities of
# a molecule in terms of color.

# -----------------------------------------------------------------------------

#version=11.1.21/22

# adds
#
# load file "=xxxx" and set loadFormat "http://....../%FILE.....
# load files ..... # just a cleaner version of loading multiple files.
# load append ..... # APPENDS the file(s) or model(s) as new frames onto the current set.
# data append ..... # same thing, but inline
#
# isosurface MODEL n
# pmesh MODEL n
# isosurface within x.x (what)
#
# Introduces "real" color translucency
#
# color xxxx translucent N
#
# where N is -1 to 9.
#
# OR OR
# translucent -1 same as Jmol 10.2
# translucent 0.0 opaque
# through
# translucent 1.0 transparent (invisible)
#
# translucent 2 0.125 32 1/8 translucency (slightly translucent)
# translucent 3 0.25 64 2/8 translucency
# translucent 4 0.375 96 3/8 translucency
# translucent 5 0.5 128 4/8 translucency (default)
# translucent 6 0.625 160 5/8 translucency
# translucent 7 0.75 192 6/8 translucency
# translucent 8 0.825 224 7/8 translucency (very sheer)
# translucent 9 1.00 255 8/8 transparent (invisible)

# -----------------------------------------------------------------------------

#version=11.1.20

# cleans up axes/boundbox/unitcell business
#
# allows for individually colored axes:
#
# color axis1 ...
# color axis2 ...
# color axis3 ...
# color axes ... (of course)
#
# and these objects are considered more like background --
# colors and sizes persist past file load
#
# to turn on and off without messing with size, just use
#
# showAxes = true
# showBoundBox = true
#
# etc.

# -----------------------------------------------------------------------------

#version=11.1.19

# allows comparison of user-defined atom properties in SELECT:
#
# select property_myprop < 1e-5;
#
# and
#
# x = {carbon}[5].property_test
# x = {carbon}.property_test.min
# x = {carbon}.property_test.max
#
# etc.
#
# This is it! :)

# -----------------------------------------------------------------------------

#version=11.1.18

# introduces user-definable atom properties that can be used
# to color isosurfaces:
#
# x = load("file.dat");
# isosurface variable x # simple 100% vdw radius mapping
#
# select 1.3
# data "property_myprop @x"
# isosurface property_myprop
#
# allows isosurface mapping of general atom properties:
#
# isosurface sasurface colorscheme bwr map property temperature
#
# adds "bwr" colorscheme as opposed to "rwb", which I think is backward.
#
# isosurface -- now supports APBS ( )
# molecular electrostatic potential output files
#
# write -- modified to allow unquoted filename in
# write isosurface file.name
#
# jvxl 1.0 -- adds ANGSTROMS flag on line with # of atoms (line 3)

# -----------------------------------------------------------------------------

#version=11.1.17

# deprecation of SET
# ------------------
#
# The "SET" command is no longer necessary. Anything that could have
# been set using "SET x .... " can now be set using
#
# x = ....
#
# This allows for a much cleaner interface because we simply make
# settings in a normal sort of way:
#
# axes on
# axes = molecular
#
# measures = angstroms
#
# It will take a bit more to make it all consistent, but the idea
# is that there are then some special reserved variables that
# mean something special when set, like "bondmode"
#
# This build allows for the applet to be "bare-bones" -- only the
# essential classes included in the Jar file; others never included
# or possibly in accompanying jar files, such as, perhaps, JmolPopupMenu.jar,
# JmolNavigation.jar, JmolBio.jar, Jm olSurface.jar, JmolXtal.jar, etc.
#
# Then a developer can slim down the download. The minimum is 697K,
# about 58% of the full package. All that gets you is atoms, bonds,
# and measures.

# -----------------------------------------------------------------------------

#version=11.1.16:

# First incompatibility found:
#
# set echo myecho (atomno=3) or (atomno=5)
# 1) adds two new modifiers:
# .min
# .max
#
# as in:
#
# x = {*}.bonds.length.max #the longest bond length
# x = {*}.atoms.max #the last atom
#
# 2) extends find() to sets of lines. For example:
#
# longLine={*}.bonds.label("%=, %LENGTH").lines.find({*}.bonds.length.max)
# message @longLine
# longest = longLine%(longLine.find(",")-1)
# b = {*}.bonds[longest]
# select b_set;color bonds yellow
#
# NOTE: _set removed in 11.3.41:
# select @b;color bonds yellow
#
# -----------------------------------------------------------------------------

#version=11.1.15:

# APPLICATION: adds undo/redo to a fixed depth of 50 commands
#
# TYPE CONVERSION
#
# We have eight different variable types now:
# boolean True/False
# integer 0, 1, 2, ....
# decimal 3.5, 3.25E-3
# string "test" "3.5"
# point {2.3 3.4 5.6} {0 1/2 1}
# plane {0 1 1 0}
# atomset {oxygen}
# bondset {oxygen}.bonds

# plane and bondset are new; arithmetic operations are not fully developed.

# These can be mixed and matched to good effect. Certain relatively
# intuitive rules apply. Usually the operand on the left sets
# the overall type, allowing for easy type conversion depending upon
# operand order:
# int + float:
# 0 + 3.6 ==> 3 (int on left rounds float on right)
# 3.6 + 0 ==> 3.6 (float on left sets result)
#
# int/float + string:
# 0.0 + "3.5" ==> 3.5 (string converted to float)
# 0 + "3.5" ==> 3 (string converted to float, then int)
# "3.5" + 0 ==> "3.50" (integer converted to string)
# "3.5" + 0.0 ==> "3.50.0" (float converted to string)
#
# 1.0 + {carbon}.xyz ==> 1 + distance from {0 0 0} to {carbon} center
# {carbon}.xyz + 1 ==> {carbon} center point offset by {1 1 1}
#
# x = {carbon}.xyz * {1 0 0} ==> (dot product)
#
# Now x is the average x coordinate of carbon
#
# Boolean expressions are a bit different in that the operators
# AND, OR, XOR, and NOT all require conversion to boolean UNLESS both
# operands are atom expressions, in which case these operate directly on the
# atom sets and return a new atom set, just like in SELECT.
#
# 3 and 0.5 ==> TRUE (both are nonzero)
# false OR 2.0 ==> true (2.0 is not 0, so it is TRUE)
# {oxygen} and {molecule=1} ==> all oxygen atoms in the first molecule
#
# x = ({oxygen} and {molecule=1}).xyz
#
# x is now the center point of all oxygen atoms in the first molecule
#
# In standard math, boolean TRUE evaluates to 1.0; FALSE evaluates to 0.0
#
# true + 2.0 ==> 3.0 ("TRUE" evaluates to 1.0 in math operations)
# 2 + true ==> 3 ("TRUE" evaluates to 1.0 and is then turned into an integer)
#
#
# ATOM EXPRESSION AUTOMATIC DEFINE
#
# When you set a variable to a value, and that value is a point, plane, or atom expression,
# then Jmol automatically registers the result as follows:
#
# points:
# x = "{x y z}"
#
# planes:
# x = "{x y z w}"
#
# atom expressions:
# x = n
# x_set = "({i j k ...})"
#
# NOTE: "set x" removed in 11.3.40:
# NOTE: _set removed in 11.3.41:
#
# x = {oxygen}.xyz
# y = {carbon}.xyz
# draw @x
# draw @y
# draw line1 @x @y
#
# and
#
# x = {carbon}[3][5]
# select @x
# color green

# x = {carbon}[3][5]
# select @x
# color green

#
# x = {carbon or oxygen}.bonds
# select BONDS @x
# color bonds green

#
# DATA() function and variable option for DATA command
#
# x = data({atomno < 10},"xyz")
# x = data({atomno < 10},"mol")
# x = data({atomno < 10},"pdb")
#
# data "model @x"
#
# write data t.xyz
# write data t.mol
# write data t.pdb
#
#
# Better BITSET implementation
#
# CHANGE: default string value for a bitset is now the ({n:m})
# string format, which can be used in numerous commands.
#
# To get the count within a string context, just use .size:
#
# x = "number selected is " + {selected}.size
#
# or force integer math:
#
# x = "number selected is " + (0 + {selected})
#
# merges math functions within(), connected(), substructure() into molecular math
#
# adds connected() both for finding atoms and for identifying bonds:
# xAtoms = connected(3, {carbon})
# xBonds = connected(1.3,2.5,"single", {carbon} {oxygen})
#
# adds
# x.atoms
# to go along with x.bonds
#
# adds distance({carbon},{oxygen})
# adds angle({carbon}[4],{oxygen}[3], {nitrogen}[2])
#
# angle function accepts from three or four
# atom expressions or XYZ coordinates and returns a decimal number for
# the distance, angle, or dihedral relating these points.
# When more than one atom is involved, average positions are used.
#
# Note that when more than one atom is involved in a set,
# the following are different:
#
# x1 = {molecule=1}.distance{molecule=2}
# x2 = {molecule=1}.xyz - {molecule=2}.xyz
#
# x1 is a NUMBER that is the "average distance measured
# from each molecule 1 atom to the average molecule 2 position"
# x2 is a point representing the VECTOR from the "average position of molecule 2"
# to the "average position of molecule 1"
#
# The following are all equivalent:
#
# x3 = {molecule=1}.xyz.distance{molecule=2}
# x4 = 0.0 + ({molecule=1}.xyz - {molecule=2}.xyz)
# x5 = ({molecule=1}.xyz - {molecule=2}.xyz).distance{0 0 0}
# x6 = distance({molecule=1} {molecule=2})
#
# They are all the distance from the center of molecule 1
# to the center of molecule 2
#
#
# x = load("filename")
#
# The string data in the file are loaded into the string.
# If the file does not exist, then the string contains the error message.
#
#
# Implements ({i j:k m n}) bitset option across all commands
#
# RESET varName
#
# reset varName # clears that variable definition
#
#
# "UNSPECIFIED" and "QUADRUPLE" BOND TYPES
#
# An additional bond type is now avaiable: "UNSPECIFIED".
# This shows up in the MOL2 reader and may be selected for and modified using, for example:
#
# select connected(unspecified)
# color bonds red
#
# or
#
# select connected(unspecified)
# connect (selected) single modify
#
# In addition, we now can depict quadruple bonds.

# -----------------------------------------------------------------------------

#version=11.1.14:

# DYNAMIC MEASUREMENTS
#
# Now that we can move atoms so easily, we don't want those measurements getting stale.
#
# set dynamicMeasurements
#
# allows measurements to be recalculated on the fly.
#
#
# MEASUREMENT FORMAT STRINGS
#
# Measurement format strings can be set using
#
# measure "format string..."
#
# where the format string may have the following keys:
#
# %= 1-based index
# %VALUE the value of the measurement
# %UNITS the units for the measurement
# %x1 atom property "x" for atom 1
# %x2 atom property "x" for atom 2
# %x3 atom property "x" for atom 3
# %x4 atom property "x" for atom 4
#
# for example:
#
# measure "%a1 -- %VALUE %UNITS --- %a2"
#
#
# MATH OPERATOR PRECEDENCE AND PARENTHESES
#
# Jmol 11.1.14 supports full standard operator precedence and parentheses
# in IF, SET, and %{} expressions
#
# degUnsat = ({carbon} * 2 + {nitrogen} + 2 - {hydrogen}) / 2
#
#
# BRACES INDICATE ATOM EXPRESSIONS
#
# Use {} in IF, SET and %{} for designating atom expressions.
# We are still using () for "embedded expressions" in all other commands.
#
# nOxygen = {oxygen}
# xOxygen = {oxygen}.x
# ptOxygen = {oxygen.xyz}
#
# a = {oxygen}.temperature
# message %{{carbon}.x}
# if {O22}.bondCount > 2;goto ...
#
# but
#
# draw line1 (atomno=2) (atomno=3)
#
#
# ATOM EXPRESSION ITEM SELECTOR [n]
#
# In SET, IF, and %{ } in MESSAGE and ECHO you can now specify a subset of the
# atom expression.
#
# x = {carbon}[3] # the third carbon atom
# x = {carbon}[3][5] # the third through fifth carbon atoms
# x = {carbon}[3][0] # the third through last carbon atoms
#
# This also works in standard select expressions, but using () instead:
#
# select (carbon)[3] # the third carbon atom
#
# and anywhere an embedded expression might be found:
#
# measure ((_C)[1]) ((_C)[2])
#
#
# POINTS IN IF, SET, and %{}
#
# Points in IF, SET, and %{} can be designated using the standard {x y z}
# notation WITHOUT commas. This is because we have to distinguish between
# atom expressions {1,2,3} and coordinates {x y z}, and this seems to me the
# simplest way to do it. (Comma means "or" in atom expressions.) In all other
# instances, the commas are fine, including "SET UNITCELL" and "SET DEFAULTLATTICE".
#
# x = {1 1 0} + {oxygen}.xyz
#
# { }.distance ATOM PROPERTY FOR SET, IF, and %{}
#
# d = {oxygen and * /1}.distance{oxygen and * /2}
# set echo top left
# echo the O-O distance is %{{oxygen and * /1}.distance{oxygen and * /2}}
#
# message %{{atomno=3}.distance{atomno=4}}
# message %{{atomno=3}.distance{1/2 1/2 1/2}}
#
#
# { }.label "xxxx" ATOM PROPERTY FOR IF, SET, and %{}
#
# The .label format provides a convenient means of delivering a wide range of
# atom-based data back to the user with whatever formatting is desired.
#
# x2 = {atomno=3).label("atom %a\t" + (atomno=3).xyz)
# xyzFile = "" + {selected}.size + "\n\n" + {selected}.label("%a %x %y %z")
#
#
# "....".lines
#
# The .lines operator splits a string into an array based on line termination.
#
# WRITE VAR "filename" (application only)
#
# 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")
# 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")
# pdbFile = pdbAtomData + pdbHeteroData
# write VAR pdbFile "test.pdb"
#
# 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")
#
#
# GETPROPERTY "evaluate"
#
# You can now use getProperty to get expression information directly:
#
# getproperty "evaluate" "{*}.xyz"
#
# or on a web page the following returns a valid XYZ file for molecule 1:
#
# var info = jmolGetPropertyAsJavaObject("evaluate", '"" + {molecule=1} + "\n\n" + {molecule=1}.label("%a %x %y %z")')
#
#
# SELECTED ATOMS FROM ATOM EXPRESSIONS
#
# You can select atoms from an atom expression using [n].
# "[0]" means "and everything after".
#
# x = {atom expression}[3].ident
# x = {atom expression}[3][0].xyz # 3 and after (average position)
# x = {atom expression}[3][5].x # 3-5 (average x)
#
#
# SELECTED BONDS FROM EXPRESSIONS
#
# You can select bonds from an atom expression
#
# x = {atom expression}.bonds.ident
# x = {atom expression}.bonds[3].ident
#
#
# BOND INFORMATION
#
# You can specify how to label a set of bonds using format strings.
# Numbers are currently in Angstroms. Keys are
#
# %# sequential number
# %= file 1-based index
# %ORDER the bond order
# %TYPE the bond type
# %LENGTH the bond length
# %x1 atom property "x" for atom 1
# %x2 atom property "x" for atom 2
#
# The special atom properties %D1 and %D2 give sequential numbers for the
# atoms FOR THIS SET OF BONDS. This is so that a proper subfile of type MOL
# could be generated.
#
# x = {atom expression}.bonds[3].label("%# %3ORDER %TYPE %a1 %a2 %6.3LENGTH")
#
#
# EXPANDED MODULUS % OPERATOR IN IF, SET, AND %{}
#
# Usually modulus is reserved for integer math, so we
# extend that here to add some useful "modulus-like" capability:
#
# string modulus for trimming and padding
# "test" %3 ==> left trim: "tes"
# "test" %6 ==> right pad: "test "
# "test" %-3 ==> right trim: "est"
# "test" %-6 ==> left pad: " test"
#
# float modulus for rounding and scientific notation
# 3.5456 %3 ==> "3.546" (STRING!)
# 3545.6 %-3 ==> "3.55E+3" (STRING!)
#
# 0.0 + 3.5456 %3 ==> 3.546 (float)
# 0.0 + 3545.6 %-3 ==> 3550.0
#
# point modulus for getting base unit cell equivalent position
# {3/2 1/2 1/1} % 0 ==> {1/2 1/2 0}

# -----------------------------------------------------------------------------

#version=11.1.13:

# DATA "coord set"
# invertSelected POINT ....
# invertSelected PLANE ....
# invertSelected HKL ......
# rotateSelected ....
# rotateSelected spin ....
# full state support for "tainting" atom positions using translateSelected or invertSelected
#
# set allowRotateSelected # then use ALT-LEFT for rotating just the selected molecule
#
# this all definitely needs some work and discussion in terms of user interface via mouse
#
#
# write coords xxxx.spt
# load xxxx.spt # minimal -- just coord.
# script xxxx.spt # this is the full state load
#
# x = (some atom expression).atomProperty -- takes an average if more than one atom
# for example:
#
# x = (* /1).temperature
# x = (C5).bondcount
#
# note that you can even say:
# set echo top left
# echo average position= {%{(selected).x},%{(selected).y},%{(selected).z}}
#
# and it will AUTOMATICALLY update with new values as you select different atoms.

# -----------------------------------------------------------------------------

#version=11.1.12:

# app fix for console entry messing up cursor position;
# allows for scripting during pause or interrupt of running script using ! as first character of script
# new: within(x.x,plane,$plane1)
# fix for "draw off" not recorded in save state
# fix for within(integer,...) bug using RasMol units
# fix for _modelnumber showing up as 2001
# reconfigures _modelNumber as x.y for single models; x.x - y.y for range
# adds _currentFileNumber
# adds _currentModelNumberInFile
# disallows user setting of variables with _ as first character
# adds @variableName in any command
# adds frame x.x - y.y
# adds frame 0.0
# adds frame range x.x - y.y
# adds file command
# adds select file=
# tunes select model=


Wyszukiwarka

Podobne podstrony:
function ncurses can change color
!changelog
configuration change management81A290
IceBreaker ChangeLog
Tool changer service functions (SK40 Chain)
changes 98 99
ChangeLog
ChangeLog
Changelog Postal r67604
Dust free filter change
Change A Door Handle
change alignement
ChangeLog
CHANGELOG
changelog
Changelog
Windows 7 Logon Background Changer Readme
changelog
changeform

więcej podobnych podstron