Home / Jmol-beta / Jmol 12.3 / Prerelease 12.3.26
Name Modified Size InfoDownloads / Week
Parent folder
Jmol-12.3.26-full.tar.gz 2012-05-22 38.7 MB
README-12.3.26.properties 2012-05-22 46.4 kB
Jmol-12.3.26-binary.zip 2012-05-22 20.2 MB
Jmol-12.3.26-binary.tar.gz 2012-05-22 20.1 MB
Totals: 4 Items   79.0 MB 0
# Developers: to add a description of changes you have made,
# add it on a line starting with #	 below the "version=..." line

date=$Date: 2012-05-21 15:20:56 +0200 (lun., 21 mai 2012) $

version=12.3.26

# bug fix: select 1.0 fails
# bug fix: COMPARE broken
# bug fix: Writing file into .jmol file after reading it from another results in the whole
#          zip file being copied into the new .jmol file. 
# new feature: Jmol SMARTS searching can include full Jmol selection syntax within
#     an atom primitive using the "atomType" option and "select:":
#     
#     load caffeine.xyz
#     print {*}.find('{c}$(select _N and connected(2, _C))')
#
# new feature: model ID "xxx" (or frame ID....)
#  -- sets the model's ID to "xxx"
#  -- can be used to switch to that model using  model "xxx"
#  -- can be targeted file-specifically using "filename#xxx"
#  -- if two models have the same ID and no filename is given, 
#     then the first model found becomes the current model
#  -- used for correlating non-Jmol synced applets
# new feature: script "t.spt"(...variables...)
#  -- quotes are optional if file name does not include " " or "("
#  -- "script" is optional if file name is quoted or ends with ".spt"
#  -- allows passing variables to a script much like a function call
#  -- variables will be in VAR named "_arguments" within that script (like JavaScript)
#  -- _arguments, like all arrays in Jmol, is 1-based, 0-terminated (unlike JavaScript)
#  -- _arguments is unsettable by the user
#  -- for standard script functions, _arguments will be []
#
#  -- for example, if test.spt is simply "show _arguments", then
#       load $caffeine
#	    test.spt({*}, {*}.xyz ,35, [1,2,3,4])
#
# will output:
#
#      _arguments = [({0:23}),{-0.086670786 -0.02787502 5.6667876E-4},35,[1,2,3,4]]
# 
# new feature: set forcefield "UFF" or "MMFF" 
#  -- default is MMFF
#  -- automatically switches to UFF if atom types cannot be set
#  -- minimizationCallback reports actual force field used
# 
# new feature: set energyUnits kJ|kcal
# new feature: set DOTSCALE (default 1) also allows isosurface/mo mesh scaling
# new feature: antialiased display and image creation uses larger mesh scaling for cleaner look
#
# code: adding empirical rules to MMFF94 calculation
#
# checkmm.spt;checkAllEnergies
#
# checking calculated energies for 761 models
# 1 COMKAQ     E=   -7.3250003   Eref=  -7.6177    diff=  0.2926998
# 2 DUVHUX10   E=   64.759995    Eref=  64.082855  diff=  0.6771393
# 3 FORJIF     E=   35.978       Eref=  35.833878  diff=  0.14412308
# 4 JADLIJ     E=   25.104       Eref=  24.7038    diff=  0.4001999
# 5 PHOSLA10   E=   111.232994   Eref=  112.07078  diff=  0.8377838
# 6 PHOSLB10   E=   -93.479004   Eref=  -92.64081  diff=  0.8381958
#
# for 761 atoms, 6 have energy differences outside the range -0.1 to 0.1 
# with a standard deviation of 0.05309403
#
# bug fix: nested SMARTS strings can give incorrect response
# load data "mol"
# C:/jmol-dev/bobtest/t6.mol
# __Jmol-12_05191218593D 1   1.00000     0.00000     0
# Jmol version 12.3.26  2012-05-19 18:34 EXTRACT: ({0 3 4})
#   3  2  0  0  0  0              1 V2000
#    2.89480   4.81990   0.01710 N   0  0  0  0  0  0
#    3.52580   2.75730  -0.17290 N   0  0  0  0  0  0
#    3.94370   4.03730  -0.25710 C   0  0  0  0  0  0
#   1  3  2  0  0  0
#   2  3  1  0  0  0
# M  END
# end "mol"
# select search("$([#7][#6]([#7&!$([#7][O])])=[#7])")
# show selected
#  was returning 1 atom, but should be 0 (because there are only two N atoms!)
# bug fix: measurementUnits = "au"   does not work

# =============================================================================

#version=12.3.25

# new feature: MMFF94 single point energy calculation and minimization
#   set forcefield "MMFF"
#   checkmm.spt
#   checkmm "AMHTAR01";minimize energy
#   AMHTAR01 Initial E =     66.180 kcal/mol  # should be 66.18011
#   checkmm "ARGIND11";minimize energy
#   ARGIND11 Initial E =   -207.436 kcal/mol  # should be -207.43598
#
# validation complete. The following 13 structures (of 761) do not validate to within 0.1 kcal/mol
# 
# 1 COMKAQ   E=   -7.3250003   Eref=  -7.6177  diff=  0.2926998
#  -- MMFF94 ignores 1 of 5-membered ring torsions for a 1-oxo-2-oxa-bicyclo[3.2.0]heptane
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
# 
# 2 DUVHUX10   E=   64.759995  Eref=  64.082855  diff=  0.6771393
#  -- MMFF94 ignores 5-membered ring issue for S-S-containing ring
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
#  
# 3 FORJIF   E=   35.978   Eref=  35.833878  diff=  0.14412308
#  -- MMFF94 uses some sort of undocumented empirical rule used for 1 torsion not found in tables
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
# 
# 4 JADLIJ   E=   25.104   Eref=  24.7038  diff=  0.4001999
#  -- ignores 5-membered ring for S (note, however, this is not the case in BODKOU)
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
# 
# 5 KEPKIZ   E=   61.127   Eref=  61.816277  diff=  0.68927765
#  -- MMFF94 requires empirical rule parameters
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
# 
# 6 PHOSLA10   E=   111.232994   Eref=  112.07078  diff=  0.8377838
#  -- MMFF94 ignores all 5-membered ring torsions in ring with P
#  -- (note, however, this is not the case in CUVGAB)
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
# 
# 7 PHOSLB10   E=   -93.479004   Eref=  -92.64081  diff=  0.8381958
#  -- MMFF94 ignores all 5-membered ring torsions in ring with P
#  -- (note, however, this is not the case in CUVGAB)
#  -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate
# 
# empirical-rule-requiring models: (all are nonaromatic heterocycles)
# 
# 8   ERULE_01   E=   -22.582  Eref=  -21.515108   diff=  1.0668926
# 9   ERULE_02   E=   29.407999  Eref=  29.799572  diff=  0.39157295
# 10  ERULE_03   E=   -3.326   Eref=  -2.9351802   diff=  0.3908198
# 11  ERULE_04   E=   -2.572   Eref=  -2.31007   diff=  0.26193
# 12  ERULE_07   E=   2.873  Eref=  3.16775  diff=  0.29474998  (fixed in 123.3.26 by correcting angle calc)
# 13  ERULE_08   E=   33.734   Eref=  34.41382   diff=  0.6798172 
 

# bug fix: compare {22-31} {7-16} subset {*.ca} should work without ATOMSET next 
# bug fix: compare {22-31} {7-16} should work, using {spine} as default
# bug fix: isosurface molecular for certain flat models will fail to cap H atoms
# bug fix: calculate partial charge fails after model kit changes
#            (because Bond[] bonds field not cleaned
# bug fix: dipole command fails after model kit changes 

# code: refactoring of minimize for generalization

# =============================================================================

#version=12.3.24

# new feature: SMARTS search for atom type using quotes: ["37"]-["58"]
# new feature: SMARTS option /aromaticdouble/  allows distinguishing between aromatic single and double bonds
# new feature; SMARTS option /aromaticstrict/  checks 6-electron rule for aromatics
# new feature: CALCULATE partialCharge   does MMFF94 charge calculation
#   -- all atom types validated
#   -- charge values validated to +- 0.001001 over the 761-atom dative validation set
# new feature: isosurface CACHE
#   -- creates a JVXL version of the surface (possibly outside of Jmol, but that's not implemented yet)
#   -- saved by   write JMOL   as a JVXL file "isosurface_ID" 
#      (where ID is the original isosurface ID) within the JMOL zip collection
#   -- Warning! not saved using   write SPT  
#      ***ALWAYS*** use write JMOL or write PNGJ after using the CACHE option, not write SPT
#   -- invoked by   isosurface file "cache://isosurface_ID"  
#   -- cleared by   reset CACHE
#   -- allows rapid recreation of an isosurface across file loads
#   -- possibly limited to a subset of surface types
#   -- not fully tested
#
# new feature: write ... "http://....."
#   -- POSTs JMOL or IMAGE or structure or whatever to a server as application/octet-stream
#   -- to be used in Proteopedia for saving a fully self-contained state
#
# new feature: load filter "CENTER" -- centers models on the first model as they are loaded
# new feature: load filter "NAME=..."  -- loads only those models with a name that contains ...  
# new feature:   calculate partialcharge  
#	-- works on currently selected set of atoms
#	-- uses MMFF94 charge calculation (unverified; most certainly not quite correct)
#   -- preliminary only; working on validation

# bug fix: x = {"c1": 3}; if(x["c1"]) should return TRUE
# code: Simple way to assign MMFF94 atom types and partial charges
# -- N,S-containing compounds not validated; CHO-containing compounds partially validated
# bug fix: MOL2 reader assuming PDB for non-PDB format files (such as MMFF94-dative.mol2)
# bug fix: label %W not working properly for non-PDB files
# bug fix: write MOL does not save partial-single bond as type 8 ("ANY")
# bug fix: set echo IMAGE fails (since 12.3.20)

# code: (applet) JmolCore.js free of need for JSON

# =============================================================================

#version=12.3.23

# new feature: (applet) new interface for Jmol as an HTML object as well as full support on all platforms
#              using a ChemDoodle fall-back option for Java/Applet-challenged platforms (iPad,iPhone,Android)
#
#  Note that Jmol.js is no longer required, but not all of the features of Jmol.js are in place yet
#
#  allows Jmol applets to be created on a page with more flexibility and extendability
#  possibly using infrastructure of ChemDoodle for multiplatform doodlable structures
#
#  required/optional libraries (preferably in the following order):
#
# 		jQuery.min.js    -- required for ChemDoodle or any server-based options
# 		gl-matrix-min.js -- required for ChemDoodle option
# 		mousewheel.js    -- required for ChemDoodle option
# 		ChemDoodleWeb.js -- required for ChemDoodle option
# 		JmolCore.js      -- required
# 		JmolApplet.js    -- required
# 		JmolCD.js        -- required for ChemDoodle option
# 		JmolApi.js       -- required
#
#  Allows Jmol-like objects to be displayed on Java-challenged (iPad/iPhone)
#  or applet-challenged (Android/iPhone) platforms, with automatic switching to 
#  whatever is appropriate. You can specify "ChemDoodle-only", "Jmol-only", "Image-only"
#  or some combination of those -- and of course, you are free to rewrite the logic below! 
#
#  Allows ChemDoodle-like 3D and 3D-faked 2D canvases that can load files via a privately hosted 
#  server that delivers raw data files rather than specialized JSON mol data.
#  Access to iChemLabs server is not required for simple file-reading operations and 
#  database access. PubChem and image services are provided by a server-side PHP program
#  running JmolData.jar with flags -iR (at St. Olaf College). 
#  For your installation, you should consider putting JmolData.jar and jmolcd.php 
#  on your own server. Nothing more than these two files is needed on the server.
#
#  The NCI and RCSB databases are accessed via direct AJAX if available (xhr2).

# new feature: PubChem search for name (which can be a CAS number), cid, or SMILES using ":"
#   from pubChemFormat = "http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/%FILE/SDF?record_type=3d";
#   (many thanks to Evan Bolton and Paul Thiessen (NIH) for their assistance on this. 
#   load :name:tylenol   #  or  load :tylenol
#   load :cas:103-90-2   #  or  load :103-90-2
#   load :cid:1983       #  or  load :1983
#   load :smiles:C/C=C/C

# bug fix: callback functions for modular calls: applet0.readCallback(....)
# bug fix: Molden reader problems reading frequencies
# bug fix: VASP reader with {n n n} and vibration vectors problem
# bug fix: in 2bat, SIA was considered part of the carbohydrate chain because we were not checking bonding

# =============================================================================

#version=12.3.22

# new feature: Jmol extensions to ChemDoodle allow display of Jmol, ChemDoodle-equivalent (simple model only), 
#              or just an image with server-side JmolData.jar support. 
#
#     JmolCD.js -- Jmol ChemDoodle extension   author: Bob Hanson, hansonr@stolaf.edu  4/16/2012
#
#     requires ChemDoodleWeb.js and ChemDoodleWeb-libs.js
#     prior to JmolCD.js
#
#     allows Jmol applets to be created on a page with more flexibility and extendability
#     using much of the infrastructure of ChemDoodle.
#
#     allows Jmol-like objects to be displayed on Java-challenged (iPad/iPhone)
#     or applet-challenged (Android/iPhone) platforms, with automatic switching to 
#     whatever is appropriate. You can specify "ChemDoodle-only", "Jmol-only", "Image-only"
#     or some combination of those -- and of course, you are free to rewrite the logic below! 
#
#     allows ChemDoodle-like 2D and 3D canvases that can load files via a privately hosted 
#     server that delivers raw data files rather than specialized JSON mol data.
#     access to iChemLabs server is not required for simple file-reading operations and 
#     database access. Database and image services are provided by a server-side PHP program
#     running JmolData.jar with flags -iR. 
#
#     In this case, the NCI and RCSB databases are accessed via a St. Olaf College server, 
#     but for your installation, you should consider putting JmolData.jar and jmolcd.php 
#     on your own server. Nothing more than these two files is needed on the server.
#
# new feature: write CD  (simple ChemDoodle JSON format -- atoms and bonds only)
#              For example: java -jar JmolData.jar -iRJ "load $tylenol;print write('cd')"
#              generates:  {"mol":{"a":[{"x":0.20549999,"y":0.8303,"z":0.3823},{"x":0.6906,"y":-1.4656999,"z":-0.14220001},{"x":1.5485,"y":1.1359,"z":0.2829},{"x":2.0332,"y":-1.1585,"z":-0.24180001},{"x":-3.9799001,"y":-0.1617,"z":0.1295},{"l":"H","x":4.2731,"y":0.35680005,"z":0.7047},{"l":"H","x":-1.8655999,"y":-1.6522,"z":0.6012},{"x":-0.2273,"y":-0.4718,"z":0.17},{"x":2.4650002,"y":0.1425,"z":-0.029099999},{"l":"O","x":-2.1741998,"y":1.1759001,"z":-0.59169996},{"l":"O","x":3.7872,"y":0.4441,"z":-0.1268},{"x":-2.5170999,"y":0.1262,"z":-0.089999996},{"l":"N","x":-1.5898,"y":-0.78279996,"z":0.2712},{"l":"H","x":-0.50740004,"y":1.6029,"z":0.6296},{"l":"H","x":0.35450003,"y":-2.4786,"z":-0.3079},{"l":"H","x":1.8853,"y":2.1487997,"z":0.4477},{"l":"H","x":2.7472,"y":-1.9314001,"z":-0.485},{"l":"H","x":-4.3884,"y":-0.65880007,"z":-0.7504},{"l":"H","x":-4.0964003,"y":-0.8086,"z":0.9991},{"l":"H","x":-4.513,"y":0.7739,"z":0.2986}],"b":[{"b":8,"e":10},{"b":9,"e":11,"o":2},{"b":7,"e":12},{"b":11,"e":12},{"b":0,"e":7,"o":2},{"b":1,"e":7},{"b":0,"e":2},{"b":2,"e":8,"o":2},{"b":3,"e":8},{"b":1,"e":3,"o":2},{"b":4,"e":11},{"b":5,"e":10},{"b":6,"e":12},{"b":0,"e":13},{"b":1,"e":14},{"b":2,"e":15},{"b":3,"e":16},{"b":4,"e":17},{"b":4,"e":18},{"b":4,"e":19}]}}
#              (this ended up NOT being used in the Jmol extension to ChemDoodle)
# new feature: (JmolData) -iR (silent, restricted) mode sends output from PRINT and ECHO commands to SYSOUT
#              and also restricts the application to no local file read/writing
#
# bug fix: "connect;" command in states saved prior to 11.9.24 and then read by versions after that
#          The order in which Jmol created bonds changed in 11.9.24. Due to this, Jmol must check for the
#          version number of Jmol used to create a state, and if it was before this point, it must
#          apply "legacy" autobonding methods. Unfortunately, if that state from pre-11.9.24 versions
#          contains the "connect;" command, which it would if someone used the CONNECT command by itself
#          to regenerate all bonds in a model PRIOR to saving the state (Proteopedia does this), then
#          those scripts will be misread in versions 11.9.24-12.2.21/12.3.21.
# bug fix: antialiasDisplay does not show drag-box properly
# bug fix: SMARTS syntax [${xxx}n] and [${xxx}m-n] changed to [$n{xxx}] and [$m-n{xxx}] 
#          to avoid conflict with specifying isotope 

# =============================================================================

#version=12.3.21

# new feature: app flag -R restricts file access -- no local file reading; no writing, no logging
#    // disables WRITE, LOAD file:/, set logFile 
#    // command line -g and -w options ARE available for final writing of image
#    // for use with headless operation
# new feature: app flag -T <seconds> headless timeout delay for "exitJmol"
# note: Headless operation with image creation works perfectly using JmolData.jar
#     java -Djava.awt.headless=true -Xmx512m -jar "JmolData.jar" -RJ "load $tylenol;" -g1000x1000 -wJPG:t.jpg
#     see also: http://leshazlewood.com/2009/08/26/linux-javaawtheadless-and-the-display-environment-variable/
#    // determined by GraphicsEnvironment.isHeadless()
#    //   from java -Djava.awt.headless=true
#    // disables command threading
#    // disables DELAY, TIMEOUT, PAUSE, LOOP, GOTO, SPIN <rate>, ANIMATION ON
#    // turns SPIN <rate> <end> into just ROTATE <end>
# new feature: JSpecView JCamp-MOL files can reference model="$xxxx" -- model retrieved from NCI
# bug fix: PDB reader 
#     and state scripts created with 12.1.51-12.2.20 and 12.3.0-12.3.20
#     state scripts prior to those versions with multiple models
#     and also select BOND commands will read the bond indexes incorrectly
#     and, in addition, will assign proper CONECT links only to the last model 
# bug fix:   if (....) # comment   fails
# bug fix: Molden reader hack for bad Molden files with ** instead of atom number in [GTO] 
# bug fix: headless creation of JPG fails
# bug fix: spin .... 30    takes 30 to be number of degrees, not rate

# version=12.3.20 -- skipped

# =============================================================================

#version=12.3.19

# new feature: select baseModel for JSpecView
# new feature; model {atomset} -- model of first atom in this set
# bug fix: set dragSelected disallows popup menu
# bug fix: MOPAC (PUBLIC DOMAIN) output reader can fail on reading vibrations
# bug fix: Spartan 10 archives have .gz and .carc files. This fix adds .gz reading;
#          work-around is that Spartan 10 allows saving of Archive without carc compression,
#          which is a proprietary format. From Wavefunction:
#          "If you want all files to use the "text" version, you can go to the
#           Options->Preferences->X-Platform pane and make sure "Use Binary Archive" is unchecked."  
# bug fix: rotateSelected of models that have had dots at one point retrieved from a state file fails
# code: refactored org.jmol.g3d.[Normix3d,Shade3D] --> org.jmol.util.[Normix, Shader]
# code: refactored org.jmol.geodesic.Geodesic --> org.jmol.util.Geodesic

# bug fix: Jmol defaults not being loaded with startup option -n (no display)
# bug fix: UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()
#            failed for non-graphics system, and even though it is an exception, it
#            isn't trapped by try/catch. 
# bug fix: point() function does not accept 3x1 array
# bug fix: show x where x is a matrix does not have ',' before tabs, so it can't be clipped directly
#            back into Jmol
# code: better coding for quaternions

# =============================================================================

#version=12.3.18

# new feature: JSpecView reads and displays 2D spectra very quickly -- all
#              tested JCamp-DX 6.0 files readable.  -- JSpecView 2.0.10176

# bug fix: allow for alternating list/hash entry:
#   for example: print getproperty("jspecview","##TITLE")["items"][1]["spectra"][1]["id"]
#   instead of:  print ((getproperty("jspecview","##TITLE")["items"][1])["spectra"][1])["id"]
# bug fix: GaussianReader not reading "Natural Orbitals" section from  
#          B3LYP 6-31g sp gfprint pop(full,NO)
# bug fix: Jmol support for ZIP collection of JDX files read properly
# bug fix: support for file reading with BOM UTF-8, UTF-16, or UTF-32
# bug fix: script processor not recognizing UTF-8 Binary Order Mark at start of script
# bug fix: (undocumented) POLYHEDRA {...} to {...} with COLOR or TRANSLUCENT fails
# bug fix: POLYHEDRA command or COLOR POLYHEDRA can change selection
# bug fix: PDB reader doesn't recognize 16 LINK records at start of file
# bug fix: script xxxx(xxx)xxx/xx.xxx fails at "(" due to revision 16201 2011-10-02

# =============================================================================

#version=12.3.17

# new feature: (JspecView 2.0.10033) new script commands (indicated with *)
#  UNKNOWN("?"),
#  APPLETID("APPLETID"),
#  APPLETREADYCALLBACKFUNCTIONNAME("APPLETREADYCALLBACKFUNCTIONNAME"),
#  AUTOINTEGRATE("AUTOINTEGRATE", "TF"),
#  BACKGROUNDCOLOR("BACKGROUNDCOLOR", "C"),
# *CLOSE("CLOSE", "spectrumId or fileName or ALL"),
#  COMPOUNDMENUON("COMPOUNDMENUON", "TF"),
#  COORDCALLBACKFUNCTIONNAME("COORDCALLBACKFUNCTIONNAME"),
#  COORDINATESCOLOR("COORDINATESCOLOR", "C"),
#  COORDINATESON("COORDINATESON", "TF"),
# *DEBUG("DEBUG", "TF"),
#  DISPLAYFONTNAME("DISPLAYFONTNAME", "fontName"),
#  ENABLEZOOM("ENABLEZOOM", "TF"),
#  ENDINDEX("ENDINDEX"),
# *EXPORT("EXPORT", "[JPG,PNG,XY,...] \"filename\""), 
#  GETSOLUTIONCOLOR("GETSOLUTIONCOLOR", ""),
#  GRIDCOLOR("GRIDCOLOR", "C"),
#  GRIDON("GRIDON", "TF"),
# *INTEGRATE("INTEGRATE", ""),
#  INTEGRALPLOTCOLOR("INTEGRALPLOTCOLOR"),
#  INTEGRATIONRATIOS("INTEGRATIONRATIOS"),
#  INTERFACE("INTERFACE"),
# *IRMODE("IRMODE", "A or T or ?"),
# *LABEL("LABEL", "x y [color and/or \"text\"]"),
# *LOAD("LOAD", "[APPEND] \"fileName\""),
#  MENUON("MENUON"),
#  OBSCURE("OBSCURE"),
# *OVERLAY("OVERLAY", "spectrumID, spectrumID, ..."),
#  PEAKCALLBACKFUNCTIONNAME("PEAKCALLBACKFUNCTIONNAME"),
#  PLOTAREACOLOR("PLOTAREACOLOR", "C"),
#  PLOTCOLOR("PLOTCOLOR", "C"),
#  PLOTCOLORS("PLOTCOLORS"),
#  REVERSEPLOT("REVERSEPLOT", "TF"),
#  SCALECOLOR("SCALECOLOR", "C"),
#  SPECTRUM("SPECTRUM", "spectrumID"),
#  SPECTRUMNUMBER("SPECTRUMNUMBER"),
#  STARTINDEX("STARTINDEX"),
#  SYNCCALLBACKFUNCTIONNAME("SYNCCALLBACKFUNCTIONNAME"),
#  SYNCID("SYNCID"),
#  TITLEBOLDON("TITLEBOLDON", "TF"),
#  TITLECOLOR("TITLECOLOR", "C"),
#  TITLEFONTNAME("TITLEFONTNAME", "fontName"),
#  UNITSCOLOR("UNITSCOLOR", "C"),
#  VERSION("VERSION"),
#  XSCALEON("XSCALEON", "TF"),
#  XUNITSON("XUNITSON", "TF"),
#  YSCALEON("YSCALEON", "TF"),
#  YUNITSON("YUNITSON", "TF"),
# *ZOOM("ZOOM", "OUT or x1,x2");

# new feature: allows simpler color scheme definition
#    color property occupancy "myscheme=red green blue"
#    Var x = ["red","green","blue"]; color property occupancy @{"myscheme=" + x}

# bug fix: JCampDX reader resolving should allow spaces before "##TITLE" 
# bug fix: jvxl issue when color PHASE and translucent
#   -- upon reading JVXL doesn't handle translucency right
#   -- upon writing SPT doesn't preserve colors
# bug fix: user variable lower case "x" not cleared by "X = none"
# bug fix: draw HELIX fails for residue numbers < 0
# code: better Enum structure using name()

# =============================================================================

#version=12.3.16

# new feature: (application) SYNC ON; sync * "JSpecView:..." sends commands to JSpecView
# new feature: (JSpecView) accepts commands using public syncScript(script)
 
# bug fix: GAMESS-US reader error reading NBOs
# bug fix: print [2, 3, 4].mul([3,4,5]) fails
# bug fix: missing ANISOU records cause file-read error in PDB files
# bug fix: JCAMP-DX reading by JSpecView for tiered BLOCK files 

# =============================================================================

#version=12.3.15

# new feature: JCAMP-DX file reading
#  -- reading of ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/docs/examples-12/jspecview)
# new feature: context menu Spectra submenu
# new feature: JSpecView integration into Jmol application 
#  -- if model/peak-enhanced JDX file is read, clicking on an atom or switching
#     to an IR vibration or MS fragment displays the appropriately highlighted spectrum/fragment
# new feature: sync ~ 'Select: xxx'
#  -- xxx can include file="xxx" model="xxx" atoms="xxx" select="xxx" script="xxx"
#  -- file and model combined as model ID "file#model"
#  -- will automatically load the file if the given file#model ID is not found
#  -- atoms = list of atom numbers separated by commas: 1,2,3 --> @1 or @2 or @3
#  -- select is any valid selection such as THR or 1-30 
#  -- automatically adds "visible &" to atoms or select 
#  -- requires sync ON
# new feature: NFF neutral file format reader (http://paulbourke.net/dataformats/nff/nff1.html)
#              for electron microscopy data exported from IMOD
# new feature: preliminary JCAMP-DX file reader, where <models></models> is present
# new feature: when picking struts or delete bond or measure, distance shows as per usual measurement

# bug fix: SLAB unit cell not showing all lines
# bug fix: CRYSTAL reader needs to change to MOLECULAR when X(ANGSTROMS) found (fullerene slab)
# bug fix: Popup Menu item hbond calculate should not require PDB

# =============================================================================

#version=12.3.14

# bug fix: state after frame RANGE or frame 0 not saved properly (state saves "frame all" instead of "frame 0")
# bug fix: frame n  does not work properly after load APPEND
# bug fix: measurement units may appear as full word "nanometers" instead of "nm"
# bug fix: user bindings do not access _atomPicked
#  -- solution is to add _ATOM _BOND _POINT _OBJECT to user binding actions

# =============================================================================

#version=12.3.13

# new feature: isosurface SCALE extends to volume file readers
# new feature: zoom $isosurface1 0  -- scales to match isosurface boundbox

# bug fix: getProperty("bondinfo",[{13}]) gets info for atom 13 instead of bond 13 
# bug fix: isosurface offset does not change boundbox or zoom/center points
# note to Bob: jpe needs update of img/blank.js  js/top_buttons.js htm1/quickvs.js,qv_msgs.js molview/JmolAppletSigned.jar

# =============================================================================

#version=12.3.12

# bug fix: symmetry popup submenu not enabled
# bug fix: show spacegroup not working
# bug fix: lcaocartoon for allene central carbon py incorrect
# bug fix: antialiasdisplay (and image writing) not compatible with scaleAngstromsPerInch
# bug fix: last group of protein cartoon will not display if it is not helix and not sheet
# bug fix: getproperty MENU does not work
# bug fix: PDB reader of multiple-bond files with duplicated bonds does not ignore duplicate

# =============================================================================

#version=12.3.11

# new feature: plot ramachandran -- now those points .phi and psi return values
# -- load 1crn.pdb;plot ramachandran;print {2.1}.psi
# new feature: LOAD .... filter "reverseModels"
#  -- does just that
#  -- for IRC calculation transition state -> minimum reversal
# new feature: measures "2:%VALUE %UNITS//xx" 
#  -- where xx is a specified unit such as nm or Angstroms
#  -- overrides set measurementUnits
#  -- fixes state problem when units or labels are changed after measurements are made
#  -- operates on selected measurements only (or all, if no measurements are selected) 

# bug fix: frame 0 during animation can cause exception
# bug fix: changes in defaultDistanceLabel not always preserved in state correctly
# bug fix: parameters can be set to invalid values using xxx = ... instead of set xxx ...
# bug fix: (Application) proper Edit...Preferences dialog action

# =============================================================================

#version=12.3.10

# new feature: _animTimeSec
# new feature: Application -- press and hold animation next/prev button to continuously run animation
# new feature: write PDB adds CONECT records 
#  -- for all multiple bonding and all HETATM bonds
#  -- uses CONECT i j j  to indicate multiple bonding
# new feature: compare {from} {to} FRAME
#  -- aligns frames automatically
#  -- particularly nice for IRC calculation animations
#  -- for example: compare {file=2} {1.1} FRAME
#  -- can be followed by quaternion, atom, or SMILES options
#  -- for example: compare {file=2} {1.1} FRAME ATOMS @1 @5  @2 @8  @3 @9
#     (all of file 2 atoms moved) file 2 atoms 1,2,3 aligned 
#      with file 1.1 atoms 5,8,9)
#  -- if {to} is a subset of {from}, then FRAME is unnecessary,
#     and if ATOMS is included, then just the list of alignment
#     atoms is necessary. For example:
#        compare {*} {1.1}
#        compare {*} {1.1} atoms @1 @2 @3
#  -- see http://chemapps.stolaf.edu/jmol/docs/examples-12/mp for more examples

# bug fix: script @{x} fails
# bug fix: Molecular Playground should allow for set allowGestures OFF to disallow swipe
# bug fix: lcaoCartoon dual color p orbitals giving white for one lobe
# new feature: set echo myecho SCALE 0.3 -- for image scaling
# bug fix: after "ZAP; LOAD append"  show orientation will have incorrect zyz script  
# bug fix: function call with @x or @1 in parameters fails
# bug fix: PNGJ reading remote fails
# bug fix: H5T should not be used as a lead atom ever, because of set showHydrogens FALSE
# bug fix: adding H atoms to mol2 file faulty
# bug fix: load xxx.png;write PNGJ xxx.png (to same file as loaded) fails 

# =============================================================================

#version=12.3.9

# new feature: FRAME DELAY x.y 
#  -- specific delay (in seconds) in animation at a given frame
#  -- applies to all currently in-frame models
# bug fix: set isKiosk should:
#      (a) not be reversible
#      (b) not allow file saves other than logging
#      (c) not allow prompt dialogs
#      (d) not allow console or popup menu or ScriptEditor 
# bug fix: background colors saved to state can be off very slightly
# bug fix: draw PLANE with three vertices problems after save -- four-atom planes, not three
# bug fix: x = file("?") fails on Cancel
# bug fix: delay not allowed within try{...}

# =============================================================================

#version=12.3.8

# new feature: MolecularPlayground -- remote status and remote control
#  -- see for example http://chemapps.stolaf.edu/jmol/mpstatus.php
#  -- set topic, subtopic, delay from a web page
#  -- set banner and image for website from Jmol
# new feature: load("http://.....?POST?_PNG_") or load("http://....?POST?_PNGJ_")
#  -- sends PNG or PNGJ image to server
#  -- return value is whatever server is set up to send
#  -- used by MolecularPlayground at St. Olaf to send current state to web server
# new feature: polyhedra FULLYLIT  -- useful for zeolites along with COLLAPSED
# new feature: ZMATRIX upgraded to allow all forms of Gaussian input
#  http://www.gaussian.com/g_tech/g_ur/c_zmat.htm

# bug fix: set picking DRAW does not work on polygon sets
# bug fix: set picking DRAW does not report position change
# bug fix: MPJmolApp (Molecular Playground) problems when navigation is on
# bug fix: CifReader (molecular type, with GEOM_BOND records) adds 
#          extra atoms when embedded in JMOL or PNGJ file or part load FILES command
# bug fix: PdbReader -- crystallographic non-PDB files not checking special positions

# =============================================================================

#version=12.3.7

# bug fix: show orientation shows incorrect zyz format if reset uses file-based orientation matrix (smol, Sygress)
# bug fix: isosurface plane xy map mep
# code: MPJmolApp work
# bug fix: user variables should not be rest by INITIALIZE in an spt file
# new feature: "Write PNG+JMOL" added to application and signed applet menu
# code: dispensing with InputStream in favor of BufferedInputStream
# new feature: write PNGJ
#  -- creates a PNG file with appended JMOL (zip) data containing
#     all necessary files, MANIFEST, and script file.
#  -- viewable in directories as an "icon" and readable by image readers
#  -- draggable back into Jmol and readable using LOAD 
#  -- PNG file includes:
#     -- iTXt field "Jmol Type\0PNGJxxxxxxxxx+yyyyyyyyy"
#        where xxxxxxxxx is a pointer to the ZIP data
#              yyyyyyyyy is the number of ZIP data bytes
#     -- iTXt field "Software\0Jmol 12.3.7  2011-10-11 15:30"
#     -- iTXt field "Creation Time\0Tue, 24 Nov 2011 19:56:10 -0600"
#     -- yyyyyyyyy bytes of .JMOL zip data 
#  -- show FILE "xxx.PNG" will show list of contained files.
#  -- show state FILE "xxx.PNG" will extract state
#  -- show FILE "xxx.PNG|1crn.pdb" for example will extract file
 
# bug fix: x3d/vrml outputting unnecessary spheres
#  -- bond caps within opaque atoms removed (not precisely correct to do that)
# bug fix: minimization broken
# bug fix: contact still not quite right -- setting default to +0.0 instead of +0.25

# new feature: simple Z-Matrix reader 
#  -- invoked by ZMATRIX:: or file starting with #ZMATRIX
#  -- lines starting with # are comments, which can contain jmolscript:
#  -- blank lines are ignored
#
#  #ZMATRIX -- methane
#  C
#  H   1 1.089000     
#  H   1 1.089000  2  109.4710      
#  H   1 1.089000  2  109.4710  3  120.0000   
#  H   1 1.089000  2  109.4710  3 -120.0000
#  
#  -- allows bond order specification
#  
#  #ZMATRIX -- CO2 
#  C
#  O   1 1.3000                 2     
#  O   1 1.3000    2  180       2      
#  
#  -- any position number may be replaced by a unique atom name, with number:
#  
#  #ZMATRIX -- CO2
#  C1
#  O1   C1 1.3000                2     
#  O2   C1 1.3000    O1  180     2      
#  
#  -- allows for dummy atoms Xn, allowing for positioning:
#  
#  #ZMATRIX -- CO2
#  X1
#  X2   X1 1.0
#  C1   X1 1.0       X2 90
#  O1   C1 1.3000    X2 90   X1 0  2     
#  O2   C1 1.3000    O1 180  X2 0  2      
#  
#  -- negative distance indicates that the second angle is a normal angle, not a dihedral
#  
#  #ZMATRIX -- NH3 (using simple angles only)
#  N1 
#  H1 N1 1.0
#  H2 N1 1.0 H1 107  
#  H3 N1 -1.0 H1 107 H2 107
#  
#  -- negative distance and one negative angle reverses the chirality
#  
#  #ZMATRIX -- NH3 (using simple angles only; reversed chirality)
#  N1 
#  H1 N1 1.0
#  H2 N1 1.0 H1 107  
#  H3 N1 -1.0 H1 -107 H2 107
#  
#  
#  -- symbolics may be used -- they may be listed first or last
#  
#  #ZMATRIX
#  
#  dist 1.0
#  angle 107
#  
#  N1 
#  H1 N1 dist
#  H2 N1 dist H1 angle 
#  H3 N1 -dist H1 angle H2 angle
#  
#  -- If #ZMATRIX is not the start of the file, MOPAC style is assumed.
#     The first two lines will be considered to be comments and ignored:
#  
#   AM1
#  Ethane
#   
#  C
#  C     1     r21
#  H     2     r32       1     a321
#  H     2     r32       1     a321      3  d4213
#  H     2     r32       1     a321      3 -d4213
#  H     1     r32       2     a321      3   60.
#  H     1     r32       2     a321      3  180.
#  H     1     r32       2     a321      3  d300
#  
#  r21        1.5
#  r32        1.1
#  a321     109.5
#  d4213    120.0
#  d300     300.0


# =============================================================================

#version=12.3.6

# new feature: load files "xxx.tlsout" "xxxx.pdb"
#  -- loads REFMAC-style TLS data into xxxx.pdb 

# new feature: contact SASURFACE <radius>
#  -- ignores solvent (as does CAP)

# bug fix: contact command hbond/clash cutoff not sensitive to H-O/N vs O/N-O/N
#   -- set to -1.2 for H-N/O, -1.0 for N/O-N/O
# bug fix: contact command default probe radius should be 0.0 except for VDW (0.25) 

# bug fix: minimize constraint CLEAR  broken
# bug fix: constraints not reported in show minimization
# bug fix: set measures off broken
# bug fix: contact color density broken
# bug fix: contact volume report not correct for color density
# bug fix: MO HOMO not set properly when using LUMO = "lowest E > 0" (GAMESS-US reader)
# bug fix: zSlab settings not stored properly in parameters; should have default zSlab = 50

# =============================================================================

#version=12.3.5

# new feature: color isosurface PHASE color1 color2
#  -- allows post-isosurface creation coloring by phase (atomicOrbitals)
# bug fix: isosurface scale 0.5 plane... broken if no atoms present
# bug fix: isosurface color density broken
# bug fix: set PdbAddHydrogens does not transfer C atomSymmetry to H atoms
# bug fix: contact() function not working when typed from console
# bug fix: set axesOrientationRasmol not working properly (since 11.5.51)

# code: org.jmol.modelsetbio.BioModel localizes more bio-only code into modelsetbio package
# code: removal of org.jmol.modelset.Polymer
# code: refactoring and organizing RepaintManager and ShapeManager

# =============================================================================

#version=12.3.4

# bug fix: frame x.y - y.z not working 
# bug fix: with antialiasDisplay, dragMolecule goes 1/2 speed of cursor
# bug fix: nucleic acid residues with HO5' may render last group strangely (since 12.0.RC16, 6/6/2010)
# bug fix: workaround for weird Mac Point3i(Point3i pt) class initializer bug
# bug fix: array.bin(low,high,binSize) not documented and can cause exception
# bug fix: MO readers can fail if inappropriate filter "TLS" is given
# bug fix: PDB TLS error reading TLS data missing "NUMBER OF COMPONENTS" line

# =============================================================================

#version=12.3.3

# new feature: ellipsoid SET 1; ellipsoid SET 2;
#   -- TLS ellipsoids are dual 
#   -- TLS-S is SET 1; TLS-T is SET 2
#   -- after issuing this command, further size or color commands affect only that set
#   -- needs verification by Ethan Merrit
# new feature: load xxx.pdb filter "TLS" -- loads TLS data
# new feature: atom property property_tlsGroup
# new feature: MolecularPlayground now accepts messages to the banner:
#   message banner: xxxxxxx
# new feature: MolecularPlayground fully functional. 
#              This application (MPJmolApp) is part of a three-part suite 
#              that runs on a Mac mini involving:
#                 "Hub" [name]   for overall control (Mac app; not open source yet)
#                 MPKinectDriver for obtaining motion events (Mac app; not open source yet)
#                 MPJmolApp      for displaying the results (source here)
#              The Hub and MPJmolApp communicate over local port 31416, sending 
#              JSON messages back and forth. (See note in org.jmol.app.jsonkiosk.JsonNioService.java)
#              For demonstrations of the installation at St. Olaf College,
#              see the following YouTube videos:
#                 http://www.youtube.com/watch?v=iQRkuku8ry0
#                 http://www.youtube.com/watch?v=XCRrRZe1j6g
#                 http://www.youtube.com/watch?v=FTTIVWGtFD0
#              For details relating to the original Molecular Playground
#              installation at U. Mass.-Amherst, see
#                 http://molecularPlayground.org
#              Note that all of the functionality of the original MP are
#              present in MPJmolApp 
# new feature: MolecularPLayground can now ignore all Hub requests for
#              commands and content changes, thus allowing its own configuration
#              script to drive the presentation instead of the Hub's. So the Hub
#              can be used simply as an interface to the Kinect driver. This just
#              allows a simpler development interface -- a simple three-column Excel file can
#              be used to drive a presentation. (see org.jmol.molecularplayground.biophysics.xlsx)
#   -- MPJmolApp looks for the file MpJmolAppConfig.spt
#   -- This file can override MPJmolApp's default parameters:
#          NIOContentPath 
#             -- default: System.getProperty("user.dir").replace('\\', '/') 
#                            + "/Content-Cache/%ID%/%ID%.json"
#             -- ignored if NIOcontentDisabled ends up true (see below)
#          NIOterminatorMessage
#             -- default: "MP_DONE"
#          NIObannerEnabled
#             -- default: true
#          NIOcontentScript
#             -- default: (not present, setting NIOcontentDisabled=false)
#          NIOcontentDisabled
#             -- default: true if NIOcontentScript is present; false if not
#          NIOmotionDisabled
#             -- default: false
#   -- The script in MpJmolAppConfig.spt is run, along with whatever
#      default settings are generated by the above checks.
#   -- Parameters are set by querying the Viewer for those Jmol variables. 
#   -- If NIOcontentDisabled is true, then all JSON messages from the Hub
#      of types "content", "command", and "banner" are ignored. It is still
#      important that the running script send "MP_DONE" messages periodically
#      (within every 6 minutes) so that the Hub knows that MPJmolApp is still
#      alive and does not try to restart it.
#   -- If NIOmotionDisabled is true, then all JSON messages from the Hub
#      of types "move", "sync", and "touch" are ignored. 
#   -- These are checked every time a JSON command is received, so the
#      running script can specifically turn off motion detection if that
#      or content detection if that is desired.
#   -- Note that MPJmolApp has a full console and menu that are available
#      on the operator's screen, (which is just mirrored to the projector).
#      This allows for parameter setting and adjustments on the fly.
#
# new feature: show NMR
#  -- predicted NMR spectrum
#  -- uses http://www.nmrdb.org/predictor?smiles=xxxx
#  -- requires NCI SMILES due to bug at nmrdb not allowing "." 

# bug fix: CRYSTAL reader not properly setting model properties
# bug fix: userFunction(x,@y) should operate as per all math 
#  -- parens - value of variable pointed to by y
#  -- x = myfunc(x, @y) same action as just myfunc(x, @y)
# bug fix: userFunction x @y  
#  -- no parens - should operate as value of x and value of y
#  -- @ is unnecessary but allowed
# bug fix: set echo "myecho" [10 10%] not working
# bug fix: apiPlatform not correctly accessed in JpegEncoder
# bug fix: reading of JVXL files for color density fails to color properly
# bug fix: .... vdw 100.0%  --- should be OK with float there, even if it rounds.

# code: refactored for Molecular Playground and Jmol Android 
#  -- several System.out. messages present.
# code: refactoring adapter XML readers

# =============================================================================

#version=12.3.2

# bug fix: array.bin(low,high,binSize) not documented and can cause exception
# new feature: PQR write option
# bug fix: load append twice can cause zap to be in wrong place in state file
# bug fix: for (x IN {*}) ... makes x a bitset and leads to array[1] for x.atomName
# bug fix: for (x IN {*}.bonds) does not work
# new feature: show chemical XXXXX  where XXXXX is any NCI Cactus information token:
#   stdinchikey			Standard InChIKey	
#   stdinchi				Standard InChI	
#   smiles					SMILES	
#   ficts						FICTS Identifier	
#   ficus						FICuS Identifier	
#   uuuuu						uuuuu Identifier	
#   hashisy					Cactvs HASHISY	
#   sdf							SD File	
#   names						Names	
#   iupac_name			IUPAC Name	
#   cas							CAS Registry Number(s)	
#   chemspider_id		ChemSpider ID	
#   mw							Molecular Weight	
#   formula					Chemical Formula	
#   h_bond_donor_count	      Number of Hydrogen Bond Donors	
#   h_bond_acceptor_count	    Number of Hydrogen Bond Acceptors	
#   h_bond_center_count	      Number of Hydrogen Bond Acceptors and Donors	
#   rule_of_5_violation_count	Number of Rule of 5 Violations	
#   rotor_count	              Number of Freely Rotatable Bonds	
#   effective_rotor_count	    Number of Effectively Rotatable Bonds	
#   ring_count	              Number of Rings	
#   ringsys_count	            Number of Ring Systems	

# bug fix: POV-Ray export of cartoons broken
# bug fix: script javascript:xxxx()  broken
# new feature: set vectorSymmetry -- displays vibration vectors as double-ended arrows.
# bug fix: SMILES comparison when the number of stereocenters is not the same is wrong
# new feature: compare("XXX","XXXX","ISOMER") comparison now includes "AMBIGUOUS STEREOCHEMISTRY!"
# code: popup/modelkit refactoring to isolate awt/Swing references
# bug fix: connection deletion removes all measurements -- can't imagine why...
# code: JmolModelKitInterface part of apiPlatform call
# code: JmolPromptInterface replaced with apiPlatform call

# =============================================================================

#version=12.3.1

# bug fix: H2,H3 connected to terminal N of protein not backbone
# bug fix: select PROTEIN selects non-PDB atoms
# new feature: CASTEP reader (take 2)
#  -- reads Mulliken files by default, Hirshfield with filter "CHARGE=HIRSH"
#  -- reads spins into {*}.property_spin. label is %[property_spin]
#  -- reads Born charge tensors as atom ellipsoids
# bug fix: Molden reader does not read "Sym=X" (missing space after '=')
# bug fix: Molden reader does not read angstrom units
# bug fix: color isosurface {atomset} <color>  does not work if isosurface has not already been mapped.
# bug fix: PDB reader not reading Rasmol-style files with multiple bonding
#  CONECT   1  2  2
#    or
#  CONECT   1  2      
#  CONECT   1  2 
#     means for Rasmol double bond between atoms 1 and 2

# code: experimenting with fragmentation of applet core classes into _1b, _1c, _1d, _1e, _1f

# version=12.3.0

# October 4, 2011

Source: README-12.3.26.properties, updated 2012-05-22