# 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 12.3.x version=12.2.11 # 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.2.10 # bug fix: script @{x} fails # bug fix: lcaoCartoon dual color p orbitals giving white for one lobe # 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: H5T should not be used as a lead atom ever, because of set showHydrogens FALSE # bug fix: adding H atoms to mol2 file faulty # ------------------------------------------------------------------------------ #version=12.2.9 # 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.2.8 # bug fix: set picking DRAW does not work on polygon sets # bug fix: set picking DRAW does not report position change # 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.2.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 # bug fix: user variables should not be rest by INITIALIZE in an spt 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 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) # ------------------------------------------------------------------------------ #version=12.2.6 # 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.2.5 # 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) # bug fix: frame x.y - y.z not working # ------------------------------------------------------------------------------ #version=12.2.4 # 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: MO readers can fail if inappropriate filter "TLS" is given # bug fix: array.bin(low,high,binSize) not documented and can cause exception # ------------------------------------------------------------------------------ #version=12.2.3 # 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: 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. # 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 # ------------------------------------------------------------------------------ #version=12.2.2 # bug fix: POV-Ray export of cartoons broken # bug fix: script javascript:xxxx() broken # ------------------------------------------------------------------------------ #version=12.2.1 # 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... # bug fix: H2,H3 connected to terminal N of protein not backbone # bug fix: select PROTEIN selects non-PDB atoms # 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} 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 # bug fix: Molden file reader error with [5D] flag before [GTO] # ------------------------------------------------------------------------------ # version=12.2.0 # October 3, 2011 # ------------------------------------------------------------------------------ # bug fix: MO overlaying orbitals # bug fix: PDB reader not reading Rasmol-style files with multiple bonding # -- CONECT 1 2 2 means for Rasmol double bond between atoms 1 and 2 # 224 new features # summary of feature changes between Jmol 12.0 and 12.2: # FEATURE CHANGE: "ligand" definition changed to # !(protein,nucleic,water,UREA)" # instead of "hetero and not solvent" # FEATURE CHANGE: default zShadePower set to 3 # FEATURE CHANGE: undocumented a[13] = 3 (where a is a matrix, for a[1][3]) removed # FEATURE CHANGE: DSSP default for "calculate structure" # -- old way is now "calculate structure RAMACHANDRAN" # FEATURE CHANGE: DSSP default for LOAD of PDB file with no header. # in previous versions, Jmol used a ramachandran-angle-based calculation # for secondary structure determination when a PDB file had no HELIX or SHEET records. # It just seems reasonable to use the industry-standard DSSP method instead. # new feature: JmolSmilesApplet method (smiles1) # new feature: JmolSmilesApplet method getRelationship(smiles1, smiles2) # new feature: The Jmol application can now communicate via sockets # with other Jmol applications or specialized servers. # The SYNC command has been expanded to make this very easy: # # sync -nnnn starts a server on local port nnnn accepting only local connections # sync nnnn "background white" (from another app, generally) would execute that # command on the app acting as a server # # You can also do this from one app frame to another, because they are independent # instances of Jmol. # # Jmol can provide server service to other apps using: # # sync -3000 # [start other app, connecting on 3000] # sync 3000 ..... # # Because once the server is started and another app has connected, # Jmol will send messages to that other app, not itself. # # To test the service within one application, just create the server and send # commands to itself using a negative port number: # # sync -3000;sync -3000 'Mouse: rotateZBy 30' # # Note that in this context the "server" is the one getting commands from the "client" # But the server can also send commands to the client provided the client has given the # appropriate handshake: {"magic":"JmolApp","event":"out"} # # Sent from Jmol (via outSocket): # # {"magic" : "JmolApp", "role" : "out"} (socket initialization for messages TO jmol) # {"magic" : "JmolApp", "role" : "in"} (socket initialization for messages FROM jmol) # {"type" : "script", "event" : "done"} (script completed) # # Sent to Jmol (via inSocket): # # {"type" : "banner", "visibility" : "ON" or "OFF" } (set banner for kiosk) # {"type" : "banner", "text" : bannerText } (set banner for kiosk) # {"type" : "command", "command" : command } (script command request) # {"type" : "content", "id" : id } (load content request) # {"type" : "move", "style" : (see below) } (mouse command request) # {"type" : "quit" } (shut down request) # {"type" : "sync", "sync" : (see below) } (sync command request) # {"type" : "touch", (a raw touch event) # "eventType" : eventType, # "touchID" : touchID, # "iData" : idata, # "time" : time, # "x" : x, "y" : y, "z" : z } # # For details on the "touch" type, see org.jmol.viewer.ActionManagerMT::processEvent # Content is assumed to be in a location determined by the Jmol variable # nioContentPath, with %ID% being replaced by some sort of ID number of tag provided by # the other half of the system. That file contains more JSON code: # # {"startup_script" : scriptFileName, "banner_text" : text } # # An additional option "banner" : "off" turns off the title banner. # The startup script must be in the same directory as the .json file, typically as a .spt file # # Move/sync commands include: # # {"type" : "move", "style" : "rotate", "x" : deltaX, "y", deltaY } # {"type" : "move", "style" : "translate", "x" : deltaX, "y", deltaY } # {"type" : "move", "style" : "zoom", "scale" : scale } (1.0 = 100%) # {"type" : "sync", "sync" : syncText } # # Note that all these moves utilize the Jmol sync functionality originally intended for # applets. So any valid sync command may be used with the "sync" style. These include # essentially all the actions that a user can make with a mouse, including the # following, where the notation <....> represents a number of a given type. These # events interrupt any currently running script, just as with typical mouse actions. # # "centerAt " # -- set {ptx,pty,ptz} at screen (x,y) # "rotateMolecule " # "rotateXYBy " # "rotateZBy " # "rotateZBy " (with center reset) # "rotateArcBall " # "spinXYBy " # -- a "flick" gesture # "translateXYBy " # "zoomBy " # "zoomByFactor " # "zoomByFactor " (with center reset) # # new feature: preliminary QuantumEspresso XML reader # new feature: Jmol Application flags -k and -P # -- -k kiosk mode: like applet, but with a banner across the top # -- -P JSON NIO client mode over port # -- for JSON NIO, use -J or -j to set nioContentPath and nioTerminatorMessage # to the desired values. For example: # Jmol -k -P 31461 -j "nioContentPath='./%ID%/%ID%.json';nioTerminatorMessage='SCRIPT_DONE'" # # new feature: Jmol.js adds jmolSwitchToSignedApplet(). # This needed a new tag that is now inserted around the applet. # new feature: filter "_Xx" for filtering element Xx # bug fix: MO SLAB n never implemented # bug fix: MOLDEN reader not reading spherical basis functions # bug fix: contact command not symmetric # Set A should generally be the ligand. However, consider note: # // check for O--H...N or O...H--N and not considering # // hydrogens and still have a filter # // a bit of asymmetry here: set A may or may not have H atoms added. # // This is particularly important for amines # The issue here is that we do not assume that hydrogens have been # added to ligands. So we make some allowances there. # # bug fix: SMILES [#6]-[#6] should not match bonds in benzene, only biphenyl # bug fix: in SMARTS matching of SMILES string, aromatic ring conditions were not matched # bug fix: null pointer exceptions when model with unit cell is appended to model without unit cell # bug fix: CIF reader not implemented with filter "CONF n" # bug fix: unit cell not turned off in state for PDB files loaded with biomolecule # bug fix: mo points 1000 broken # bug fix: xxx = {*}; xxx.property_x = 3 improperly parsed as a script command # bug fix: getproperty minimizationInfo returns JSON instead of readable string # bug fix: JaguarReader not reading D6 MOs properly # # code: all references to java.awt and javax.swing isolated to # org.jmol.awt, rg.jmol.export, and org.jmol.multitouch # code: refactored Jmol core Swing classes restricted to # applet, console, export, modelkit, multitouch, popup # TODO: Question about what c=c should do. For now, changing that to NOT match C=C of benzene # -------------------------------------------------------------- #version=12.2.RC7 # new feature: load TRAJECTORY now loads vibrations as trajectories # bug fix: SMILES [#6A] and [#6a] should be distinct # bug fix: load SMILES should not allow 2D return # bug fix: load SMILES not saved properly in state # bug fix: set isosurfaceKey not displaying key for planar contour plot # bug fix: GAUSSIAN reader cannot read MOs when more than 1000 orbitals # new feature: CASTEP reader for .md and .geom trajectories # bug fix: atomic orbitals should be assigned 0 if |psi| < 1e-7 # bug fix: load TRAJECTORY does not assign model names # -------------------------------------------------------------- #version=12.2.RC6 # new feature: transparent background PNG images with WRITE PNGT xxxx.png # -- set ANTIALIASEIMAGES false to avoid slight trim issue # -- use an unusual color, such as [x010101] for the background # new feature: preliminary CASTEP .phonon frequency file reader # -- preliminary only # -- reads q=0 and q#0 points # -- use load ... SUPERCELL to select out a specific q-point # -- for example: # load c60.phonon {1 1 1} SUPERCELL {2 1 2} # will select for q = (0.5 0 0.5) # load c60.phonon -5 {1 1 1} SUPERCELL {2 1 2} # and only mode 5 for q = (0.5 0 0.5) # load c60.phonon -5 {2 2 2} SUPERCELL {-4 1 2} # eight supercells; mode 5 only for q=(-0.25 0 0.5) # new feature: unitcell {xxx yyy z} where z is negative fills entire (standard) xxx yyy space with unit cells of size z # new feature: forgotten feature: load "xxxx.xxx" [ list of models to load ] # -- for example: load "cyclohexane_movie.xyz" [ 1 6 11 26 ] # new feature: set minPixelSelRadius # new feature: CRYSTAL reader reads property files for tensor quantities # -- displayed as ELLIPSOID # -- note that scale is set using ELLIPSOID N where N is a percent; default 50; max 100 # new feature: unitcell {xxx yyy scale} # -- allows for display of a block of unit cells in 444 555 notation # -- cleared by unitcell {0 0 0} # feature change: contact full/trim returned to simpler original non-paired idea # new feature: UNDO/REDO # -- console-only commands same as buttons # -- full file reload (saving of full state) # new feature: undoMove/redoMove # -- script commands # -- act like CTRL-Z/(CTRL-SHIFT-Z or CTRL-Y) # -- just move atoms; no file loading (just atom positions saved) # UNDOMOVE/UNDOMOVE 1 # undo last movement # UNDOMOVE n # undo last n movements # UNDOMOVE 0/UNDOMOVE ALL # undo all movements # REDOMOVE/REDOMOVE 1 # redo last movement # REDOMOVE n # redo last n movements # REDOMOVE 0/REDOMOVE ALL # redo all movements # UNDOMOVE -1 # clear UNDO history # REDOMOVE -1 # clear REDO history # REDOMOVE -2/UNDOMOVE -2 # clear both histories # # bug fix: load PACKED SUPERCELL produces red0undant atoms # bug fix: AtomSetChooser set up too late -- can override embedded jmolScript vibration/vector scale commands # bug fix: set naviationPeriodic while navigating should disallow unit cell and standard axes # bug fix: MO LIST broken # bug fix: linear combination of MOs broken in 12.1.49 # bug fix: Crystal reader not handling CONV option properly # bug fix: CIF reader not reading isotopes such as D and T # bug fix: load slab/polymer with PACKED does not work # bug fix: imines SMILES may cause null pointer exception # bug fix: SOE added to carbohydrate list (L-sorbose in pyranose form; SOL is the open form, 3AI3.pdb) # bug fix: setting DOTS off can cause null pointer exception # bug fix: saving state of contact broken # bug fix: contact SLAB n not working # bug fix: deleting of the first model in a set that has load APPEND will not produce the correct state # bug fix: deletion of models having a toms with dots can generate null pointer exception # bug fix: QuantumEspresso reader not reading ALAT/A_0 files correctly # bug fix: measurements, picking not allowed to FIXED atoms # bug fix: (contact) ligand nitrogens not protonated and become hbond acceptors # -- solution for now is to consider all N/O HETATM atoms "ambiguous" # bug fix: undocumented "redo" "undo" application-only commands changed to "redocmd" "undocmd" # -------------------------------------------------------------- #version=12.2.RC5 # new feature: set isosurfaceKey ON|OFF # -- creates a vertical hoverable key on the left # -- only the most recent and visible isosurface # -- is not exported # bug fix: "$phosphorus pentoxide" label %[shape] indicates AX4E not AX4 hybridization on phosphorus # bug fix: show colorscheme "high" causes exception # -------------------------------------------------------------- #version=12.2.RC4 # new feature: selection of surfaces in SurfaceTool # # bug fix: setting a timeout should reset the timer of a running timeout with the same ID # bug fix: contact translucent carries over to next contact command # bug fix: modelKit increase/decrease charge not working # bug fix: show SMILES|CHEMICAL NAME broken # bug fix: for(x in...) where x is not defined causes exception # bug fix: CONTINUE in switch within for or while loops infinitely # bug fix: zap; load append ... ignores the zap! # -------------------------------------------------------------- #version=12.2.RC3 # bug fix: color broken in 12.2.RC2 # bug fix: isosurface pmesh INLINE broken # bug fix: 1jgq phosphorus-only default rendering disabled # -------------------------------------------------------------- #version=12.2.RC2 # FEATURE CHANGE: "ligand" definition changed to # !(protein,nucleic,water,UREA)" # instead of "hetero and not solvent" # new feature: contact VDW shows clash-contacts with equal-volume # -- combination with CLASH gives bulls-eyes -- plane only # new feature: real-time docking with visual scoring test: # set pdbAddHydrogens # load caffeine.xyz;load append 1crn.pdb # frame * # select protein;wireframe only # select none # set picking dragMolecule # timeout "t1" -1000 "contact {selected} {!selected} color type" # new feature x = compare({1.1}, {2.1}, "MAP", {1.1}.find("smiles")) # -- MAP returns a set of correlations between set 1.1 and set 2.1 based on the given smiles string # -- format is an array of arrays of [i,j] # # bug fix: select deuterium, HOH, _1H, _H1 isotope business messed up # bug fix: timeouts not waiting for their own completion # bug fix: !quit not interrupting timeouts # bug fix: command line -M sparshui not working # bug fix: isosurface color density not picking up last yz points # bug fix: 12.2.RC1 doesn't allow for isosurface color XXX t.jvxl # bug fix: Old legacy Chime *.C for _C in non PDB files -- only when one model, and it is not a PDB file # bug fix: setting VDW radius after creating isosurfaces or contacts should delete that # surface if set of atoms involved in surface intersects set of changed vdw radii # bug fix: H-bond contact to water O categorized as clash # bug fix: MO for multi-model file does not save state properly # bug fix: GROMACS reader should not use sorbital group 3 name SOL for water -- changed to WAT # bug fix: SOL considered solvent, but is sorbitol; SOL added to carbohydrate list instead # # code: better-protected Binary Sorted Tree Forest invalidation # code: enum class for Structure # code: enum class for Vdw and RadiusData # code: enum class for file load state # code: enum class for color palettes # code: enum class for stereoMode # code: enum class for animationMode # code: enum class for quantum shells -- less than ideal! # code: enum class for draw # code: enum class for Callbacks # -- NOTE: THIS AFFECTS ALL EMBEDDED APPLICATIONS # -- WITH CALLBACKS (in a good and simple way!) # code: enum class for axes modes # -------------------------------------------------------------- #version=12.2.RC1 # new feature: Surface Tool now does capping. Surface Tool layout rearrangement. # new feature; CONTACT command -- generates contact surfaces # CONTACT {setA} {setB} [contact options] [contact type] [display option] [display type] [color options] # # where we have: # # {setA} the only required parameter, the set of atoms around which to show contacts # {setB} the surrounding set (default: "all other atoms in this model") # [contact options] # within # resolution # +/-x.x # intermolecular # intramolecular # parameters [cutoff,....] # [contact type] # hbond # clash # vdw # nci # [display options] # slab .... # minset # [display type] # full # trim # plane # connect # cap # surface # [color options] # color # (color) DENSITY # color TYPE # # --examples # contact {ligand} # contact {ligand} color type # contact {:A} {:B} # contact {2001:A} NCI # # new feature: set VDW JMOL --- resets any user-set vdw radii # new feature: set VDW PROBE --- sets VDW radii as follows # as per Word, et al, J. Mol. Biol. (1999) 285, 1711-1733 # {_H}.vdw = 1.0; # {_H and connected(_C) and not connected(within(smiles,'[r6]'))}.vdw = 1.17; # {_C}.vdw = 1.75; # {_C and connected(3) and connected(_O)}.vdw = 1.65; # {_N}.vdw = 1.55; # {_O}.vdw = 1.4; # {_P}.vdw = 1.8; # {_S}.vdw = 1.8; # # new feature: zoom 0 default zoom for visible atoms # bug fix: H atom attachment fixed at 1.1 Angstroms, which is fine for C, but # a bit high for O,N (1.0) and low for third row (1.3) # bug fix: isosurface parameters @x does not work even when x is an array # new feature: ISOSURFACE Kinemage file reader (for contact/clash dots) # -- colors are set from the kin file # -- parameters [cutoff, valueMin, valueMax, pointType] # -- valueMin -- minimum value to display # -- valueMax -- maxiumum value to display # color.equals("greentint") ? 4f H-bond # : color.equals("blue") ? 0.35f wide contact # : color.equals("sky") ? 0.25f almost wide contact # : color.equals("sea") ? 0.15f close contact # : color.equals("green") ? 0.0f contact # : color.equals("yellowtint") ? -0.1f small overlap # : color.equals("yellow") ? -0.2f small overlap # : color.equals("orange") ? -0.3f small overlap # : color.equals("red") ? -0.4f almost bad overlap # : -0.5f); bad overlap # -- pointType: # 0 all points # 1 'M' {McMc contacts} # 2 'S' {ScSc contacts} # 3 'P' {McSc contacts} # 4 'O' {Hets contacts} # # -- dot size controllable via "set dotscale" # -- example: # # isosurface 2bxaH-multi.kin # all overlaps # isosurface parameters [0 -1 -0.1] 2bxaH-multi.kin # just non-H-bond overlaps # isosurface slab within 3.0 {2001:A}; display group contact(2001:A); zoom {displayed} 0 # # new feature: slab/cap for MO # new feature: contact() function # -- selects atoms with VDW overlap # -- examples: # display group contact(2001:A) # groups involving contacts at vdw 100% # select contact(110, 2001:A) # just the atoms in contact at vdw 110% # print contact(0.4, {2001:A}) # vdw + 0.4 # print contact(0.4, {2001:A and _O}, {_N}) # specific cross-interactions # new feature: Surface Tool GUI -- just slicing so far and does all surfaces rather # then selected. (Jonathan Gutow) # -- Many angle units (degree, radians, gradians, fraction of circle, factors of pi # -- pmesh and isosurface slicing # -- adjustments to generalize what can be sliced. # new feature: select within(x.x, VDW, aaaa) # -- selects atoms that have overlapping VDW surfaces with set aaaa # -- if x.x is present, BOTH interacting atom radii are adjusted: # -- if x.x > 10, then this is assumed to be a percent, such as 110%, 100%, 90% # -- if x.x <= 10, then this is assumed to be a distance to be added to the VDW radii # -- so, for example, select within(1.4, VDW, aaaa) selects groups with overlapping solvent-accessible surfaces # new feature: getProperty isosurfaceInfo # -- includes vertexCount, polygonCount, vertices, vertexValues, and polygons # new feature: isosurface atomicOrbital POINTS # -- new default cutoff of 0.04 corresponds to factoring in 1/2sqrtPI # -- is new # -- must be a decimal number to distinguish it from the seed. # -- specifies a given radius # new feature: getProperty ligandInfo # -- treatment of ligands as individually covalently bonded units # INDEPENDENTLY of how they are bonded to other atoms such as proteins # -- delivers a Hashtable # "ligands" ArrayList # "reslist" "2001-2003:A/1.1" # "atoms" ({....}) # "groupNames" "NAG-NAM-NAG" # # bug fix: for(y in x) when x is an array can give odd results when y[i] is then used # bug fix: ++ipt not working # bug fix: zap of model with measurements causes exception # bug fix: DATA "append @xxx" fails # bug fix: MOL-2D files loaded then saved to PNG do not reload hydrogen atoms # bug fix: MOPAC (LINUX) not recognized # bug fix: NWCHEM reader problems when multiple models # bug fix: isosurface slab of isosurface MO causes null pointer exception # bug fix: isosurface slab translucent of translucent isosurfaces causes problems # -- isosurface slab translucent ---> will now turn isosurface opaque first # -- isosurface slab translucent without a color ---> will now take on current color of isosurface rather than white # -- color isosurface translucent of translucent-slabbed isosurface will remove ALL slabbing # bug fix: WebExport not getting Jmol Icon for title bar. # bug fix: PDB reader may read bfactors off by 0.01 # bug fix: NWChem reader without input deck but with frequencies fails to load # bug fix: 12.1.51 breaks isosurface... colorscheme... # bug fix: 12.1.51 breaks mo reading from Chem3D XML, which was not working anyway, but now is. # bug fix: isosurface slab -@xxxx... will negate variable xxxx if it is a plane # bug fix: contact {setA} {setB} should not allow overall of setA and setB unless NCI. # bug fix: contact FULL set to minimum resolution 10 (pairwise) # bug fix: isosurface intersection .... function "..." ignores function and just does "a-b" # bug fix: SUBSET command not resetting properly # code: super-fast "micro-isosurface" merging for CONTACT. Wow! # -- set pdbAddHydrogens; load =2bxa; contact {:A} {:A} # -- merges 2341 microisosurfaces in 325 ms on BH laptop! # code: fast pointilist atomic orbitals. THANK YOU, Pshemak Maslak, Brian Hardock, Rob Caldwell, and Tom Stitt! # code: new iterator for multimodel sets # -------------------------------------------------------------- #version=12.1.51 # new feature: contact CAP (for Art Olson) # new feature: isosurface ... COLORSCHEME (or just COLOR) TO n # new feature: color isosurface TO n # -- for example, isosurface molecular map property atomno colorScheme red to white # -- optional n defaults to 35 distinct colors # new feature: drag/drop into application offers resize option (# preferredWidthHeight in state script) # new feature: plane({three-atom atomset}) # new feature: "@" for "atomno=" # -- both in Jmol math and atom expressions # -- select @42 or @52 # -- print @42.xyz # -- @42.xyz = {1,2,3} # new feature: {atomset}.x? # -- creates an associative array of atom properties with names starting with "x" # -- print @1.? lists ALL atom properties # -- print {atomno < 3}.? creates an associative array of arrays # -- for example: # $ load caffeine.xyz;print @1.atom? # atomID : 0 # atomIndex : 0 # atomName : H1 # atomType : H1 # atomX : -3.380413 # atomY : -1.1272367 # atomZ : 0.5733036 # atomno : 1 # # $ show @{{atomno < 3}.atomn?} # { "atomName":["H1","N2"], "atomno":[1,2] } # # new feature: set measurementUnits VDW # -- percent VDW (in relation to sum of two VDW radii) # new feature: select/display/hide [ADD|REMOVE] ... # -- must be first parameter # -- applies appropriate logic: # -- "select ADD" means "select selected or" # -- "display REMOVE" means "display displayed and not" # new feature: select/display/hide GROUP # -- applies within(group,...) to the expression # -- similar to the PyMOL "byres" option # -- must be first parameter, unless ADD|REMOVE present, then must be second parameter # -- examples: # display add group @22 # select remove group picked # new feature PICKED variable # -- accumulates recently picked atoms into a set # -- cleared using "SET PICKING" # -- may be set/cleared by user # new feature: select within(VDW, aaaa) # -- selects atoms that have overlapping VDW surfaces with set aaaa # new feature: measure {aaaa} {bbbb} vdw nnn% # -- intermolecular by default # -- adjustable size # new feature: measure INTRAMOLECULAR .... # -- only measure intramolecular distances # new feature: measure INTERMOLECULAR .... # -- only measure intermolecular distances # new feature: set ligandLoadFormat # new feature: set pdbAddHydrogens # -- for file loading # -- adds 3 H to terminal N of chains. # -- adds hydrogens to ALL groups, including HET groups # -- unlike PDB2PQR, then, ligands are properly shown # -- also adds all multiple bonds to PDB files # -- for altlocs you should use load option FILTER "CONF 1" (or some other specific configuration) # -- atom numbers are appended to maximum number in file # new feature: CIF reader for Ligand CIF files (e.g. http://www.rcsb.org/pdb/files/ligand/AMU.cif) # new feature: calculate HYDROGEN now works for standard amino acids and nucleic acids # -- adds "GROUP" option to connect -- puts new atoms in group of previous # -- saves connection in state with negative first atom -- indicating that we need to assign the group # new feature: LOAD command reports header/title for PDB files # -- specifically when scriptLevel = 0 (typed entry) # new feature: isosurface SLAB OFF -- for SLAB n, this turns that slabbing off. # new feature: isosurface FUNCTIONXY = "x * y" and isosurface FUNCTIONXYZ = "x * x + y + z" # -- default is from -10 to 10 every 0.25 Angstroms # new feature: CONTACT {xxx} TRIM # new feature: CONTACT {xxx} MISC, and redefinition of HYDROPHOBIC # new feature: CONTACT {xxx} VDW # -- just maps a VDW isosurface with distances to another VDW isosurface # new feature: CONTACT command (Erik Wyatt/Bob Hanson 6/22/2011) # -- creates an object of a variety of forms that # indicates nonbonding interactions # -- can be a planar disk perpendicular to the interaction, # or a cigar-shaped connector # -- HBOND (just between O and/or N) # -- HYDROPHOBIC (not between O and/or N) # -- percent of van der Waals distance # # -- works by doing a sum or difference of two complementary # van der Waals surfaces (PLANAR) or by showing the # intersection of the two surfaces (FULL) or by doing an NCI # (noncovalent interaction) PROMOLECULAR calculation. # # -- DENSITY x.x (spot size) option does rough volume rendering. # # # contact # # -- parameters # # required: # {setA} # optional: # ID aaaa (if present, must be the very FIRST parameter # ON/OFF/DELETE/LIST (if present must be the only parameter other than ID # {setB} # DENSITY x.x # COLOR DENSITY # IGNORE {ignoreSet} # DISTANCE x.x # PARAMETERS [....] # FULL|PLANAR|CONNECT|NCI|ISOSURFACE # HYDROPHOBIC|HBOND # INTRAMOLECULAR|INTERMOLECULAR # nnn% # COLOR ... # TRANSLUCENT/OPAQUE/MESH/NOMESH, etc... (must be last parameters) # # new feature: show LIGHTING # bug fix: try {} does not pass VAR variables into its context. # bug fix: PovRAY starting with antialiasDisplay does not work properly. # bug fix: isosurface ORBITAL slightly off in probability -- at the cost of speed # -- uses abs(PSI) not PSI^2 for probability -- this is not quite right # -- adding option SQUARED to use PSI^2 instead -- but this may take a LONG time to process # bug fix: catch(err) not setting variable "err" # bug fix: select within(@n,...) does not work (distance implied) # bug fix: probability "pointilist" atomic orbitals (isosurface ORBITAL 3 2 1 points 10000) does not predict max value close enough # bug fix: important to temporarily set pdbAddHydrogens OFF for state being read without "set pdbAddHydrogens" command ("pdbNoHydrogens in htParams) # bug fix: isosurface mapping of properties will not be smoothed well due to "fix" in 12.1.50 # bug fix: writing state for isosurfaces that span multiple frames will fail to display isosurface when reloaded # bug fix: no slabbing for atomic orbitals; not saving phase color for atomic orbitals # new feature: isosurface slab TRANLSUCENT 0.6 red x=3 # -- translucent slabbing # -- JVXL, PovRay, state -- done # TODO: isosurface vdw map mep; isosurface slab none slab translucent 0.6 within range 0 -0.05 # TODO: load =1hiv #select protein #color yellow #wireframe only #contact resolution 8 {[1zk]} {![1zk]} cap #contact slab translucent 0.1 red within range -100 0 # bug fix: CIF file reading may miss molecules in highly angled triclinic systems. # bug fix: over 2047 colors can overrun colix storage # new feature: with slab ON, the right-side zooming runs the slabbing plane, same as (ALT_CTRL_SHIFT_LEFT) # bug fix: CML files with atoms starting with both aNN and aNN_ will not bond correctly # bug fix: polyhedra on/off does not work. # bug fix: set defaultVDW user not working # bug fix: _smilesString variable not being cleared when a PDB file is loaded # bug fix: isosurface VDW mapping onto plane now has somewhat different coloration, # and properly slabs to the VDW radius. This is just a SLAB option that can # be removed like all others using isosurface SLAB NONE # TODO: contours from saved JVXL planar isosurfaces does not seem to be correct. # bug fix: WebMO reader fails to read HOMO/LUMO business. # bug fix: AMU added (NAM-NAG sequences) # bug fix: NDG added (epimer of NAG) # bug fix: definition of CARBOHYDRATE was updated: # -- [A2G],[NGA],[SIA],[SLB],[LBT] added (GalNAc, NeuNAc, lactose) # -- [ASF],[NAM] removed, they are not carbohydrates # -- a few existing ones are deprecated by PDB; they are left for compatibility # but are now listed as such (maybe remove them in future). # bug fix: This obscure fix: http://jmol.svn.sourceforge.net/viewvc/jmol/trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java?r1=13502&r2=13525 # broke Jmol reading of the Epcot hemoglobin file. Only relevant to sequential or trajectory PDB files that do not have MODEL statements. # So then any version starting with 12.0.RC_24 (7/8/2010) through now (7/2/2011) will read the files # correctly -- not missing the first atom -- but that messes up earlier scripts. Unfortunately the Epcot business # (Touch-A-Molecule) was written using 12.9.23 (1/24/2010), so that is affected. # This fix only affects states written prior to 12.0.RC_1 and just makes it so that they display correctly (though missing that one atom) # when they involve PDB trajectories of file without MODEL records separating models. Pretty sure this is just that one file. # bug fix: contact fULL followed by contact HBOND can cause exception # bug fix: set fontScaling does not scale offset with font # bug fix: application Help menu item no long pushed right. # bug fix: @{} (empty Jmol math braces) can call exception # bug fix: pdbAddHydrogens should not add H of CO2H, SO4H, PO3H2 # bug fix: PDB reader may misread X in GLX/ASX as xenon # bug fix: error message clarifications: web export not clear about not finding Jmol.js # jmolApplet.jar. # bug fix: export to web was looking for JmolApplet0.jar when jmoljarpath = "." # bug fix: plane(r, theta, phi) script function was measuring phi from -Y not +X. # bug fix: Bad Jmol.js # bug fix: draw pointgroup fixed to first model # code: better CONTACT MISC algorithm # code: refactored ModelLoader and org.jmol.modelsetbio.Resolver # -- moves all PDBaddHydrogen business to modelsetbio # -- makes class ModelLoader only temporarily instantiated # code: much more efficient plane creation and mapping # code: work on isosurface, JVXL, plane mapping # code: Viewer passes stateScriptVersionInt on to file readers # -------------------------------------------------------------- #version=12.1.50 # new feature: .count and .count(x) # -- .count equivalent to .size -- length of array, string, or atom/bond set # -- .count() operating on an array gives an array of [value, count] pairs # -- .count(x) gives the number of "x" in the array or string # -- examples: # # print {*}.radius.all.count() # print {*.ca}.label("%m").count("Q") # print {*}.find("SMILES").count("(") # # new feature: tab completion on $... or first word after DRAW or ISOSURFACE # # new feature: JVXL files now save and return color and colorscheme information # as well as rending (mesh, fill, front/back/fullylit) # # new feature: isosurface origin {...} steps {...} points {...} # -- allows specific origin, steps, and counts (x, y, z axes assumed) # for an isosurface that is not from a CUBE file. # -- allows matching other data or fine-tuning a calculation # # new feature: isosurface origin {...} steps {...} points {...} FUNCTIONXY = "function of x, y" # new feature: isosurface origin {...} steps {...} points {...} FUNCTIONXYX = "function of x, y, z" # -- simple rendering of functions based on an origin, steps, and counts # -- origin, steps, counts are all required. # -- examples (note that all angles in Jmol are in degrees): # # isosurface origin {-5 -5 -5} steps {0.2 0.2 0.2} points {50 50 50} functionxy "x * y * cos(x * 100)" # isosurface origin {-5 -5 -5} steps {0.2 0.2 0.2} points {50 50 50} functionxyz "x * y * cos(z * 100)" # isosurface cutoff 2.0 origin {-5 -5 -5} steps {0.2 0.2 0.2} points {50 50 50} functionxyz "x * y * cos(z*100)" map functionxy "x * y" # # new feature: isosurface INTERSECTION {atomset1} (Bob Hanson and Erik Wyatt, 6/17/2011) # # -- produces a nice plot of noncovalent interaction regions between atomset1 # and nearby atoms. # -- generates an isosurface that is the result of applying a function, to # two VDW data sets. # -- full command: isosurface INTERSECTION {atomset1} {atomset2} function "XXX" VDW 100% # -- The Jmol function will be of the form: function fname(a, b) { return XXX } # # isosurface INTERSECTION {ligand} {protein} function "a-b" VDW 100% # isosurface slab within range -100 0 # # -- default: # -- "within(5.0, atomset1) and not within(molecule,atomset1)" # -- function a-b # -- "VDW 100%" # -- "slab within range -100 0" # # new feature: color isosurface {atom expression} # -- specific to surface types (vdw, molecular, sasurface) # -- similar to PyMOL command "set surface_color, (color), (selection)" # -- allows painting of specific atom-related isosurface areas specific colors # -- example: isosurface molecular; color isosurface {hydrophobic} white # # new feature: super-fast isosurface MAP PROPERTY when isosurfacePropertySmoothing = false # # new feature: within(distance, $surfaceID) # new feature: isosurface slab [point array] # -- for example: isosurface slab within 5.0 {3} # # new feature: set defaultLabelPDB "%m%r" -- for set picking LABEL (typically labeling groups) # new feature: set defaultLabelXYZ "%a" -- for set picking LABEL (typically labeling atoms) # # new feature: reversible isosurface SLAB (Bob Hanson and Erik Wyatt, 6/13/2011) # isosurface slab x=2 slab -x=2 sphere 5.0 # isosurface slab y=2 # -- any number of slabs either in the instruction or after it # -- isosurface slab NONE removes slabs # -- any number of CAP as well, but those must be in the statement # that creates the isosurface, not in a later statement, # and they may not work as expected, as they are quite minimal # # new feature: isosurface parameters [0 1] NCI "density.cube" (discrete SCF NCI with intramolecular option) # new feature: isosurface parameters [0 2] NCI "density.cube" (discrete SCF NCI with intermolecular option) # new feature: isosurface parameters [0 -1] NCI "grad.cube" MAP "dens.cube" (intramolecular filtering of NCIPLOT cubes) # new feature: isosurface parameters [0 -2] NCI "grad.cube" MAP "dens.cube" (intermolecular filtering of NCIPLOT cubes) # # new feature: plane(r, theta, phi) # - spherical coordinates # - plane through a point distance r from the origin perpendicular to the vector: # R[z,theta]R[x,phi]{0 0 1} # - angles in degrees # # bug fix: for (Var x in y){ {x}.xxxx = ...} does not work properly # bug fix: for (Var x in y){...} did not work unless y is enclosed in { } # bug fix: (application) Jmol console not receiving echo messages # bug fix: UFF full listing (set loglevel 6;minimize steps 0;show minimization) missing n and cosNphi0 in torsions # bug fix: isosurface SLAB not saved in JVXL; (now as vertex data only) # note: {*}.find("MF") was not documented (Jmol 12.0) # bug fix: isosurface slab within 5.0 {3} -- should be ALL those atoms, not just center # -- as opposed to the CENTER using isosurface slab within 5.0 @{{3}.xyz} # bug fix: PQR reader allowing < 0.9 radius for H # bug fix: PQR reader mistaking " HD3" as deuterium # bug fix: pointilist isosurfaces do not respond to "color isosurface red" # bug fix: isosurface select {x} only VDW MAP select {!x} VDW # -- now allows mapping of a VDW (or SA, not molecular) surface # with values that are the exact minimum distance of that point # to atoms of another set. This can directly pinpoint contact regions # bug fix: throwing script parsing error on correct "isosurface slab within [4 elements # representing the slab box]" (was losing last "]"). # bug fix: on Mac systems, not finding local files to include in .jmol file (was losing first "/"). # # code: Renderers made entirely independent # # unimplemented: slice command provides for simple two sided slicing of isosurfaces # syntax: slice angleXY anglefromZ position thickness # all numerical parameters must be decimals. # angleXY-angle in XY plane (decimal in radians) # anglefromZ- angle from Z axis (decimal in radians) # these angles specify the direction vector perpendicular # to the slice. # position - 0-100 (% in decimal) specifies the position along the # vector as a percent of the boundbox diagonal. 50% is origin. # thickness - slice thickness as a percentage of the boundbox # diagonal (0-100 in decimal format). # slice left on - creates a transparent plane at the left of the slice. # slice right on - creates the right plane # slice right|left off - turns them off. # implemented: isosurface slab [several options, see above] does all of the above # except left/right transparent planes, which I think could be implemented # differently. # -------------------------------------------------------------- #version=12.1.49 # new feature: set zSlab {atom expression or point}; set zShade ON # -- sets the front of the shading to be at a position in space # -- very nice for ligands! # FEATURE CHANGE: default zShadePower set to 3 # bug fix: MarchingCubes not reading last plane of data # code: isosurface NCI (promolecular) reads progressively # new feature: isosurface NCI (noncovalent interactions) -- Henry Rzepa suggested incorporating this # # -- NCIPLOT promolecule calculation for reduced density. # Plots reduced density mapped with ABS(rho)*SIGN(lambda2) # where lambda2 is the middle eigenvalue of the Hessian matrix of # promolecular electron density. Innovates a discrete SCF option not # available in NCIPLOT itself. # # default is "promolecular" approximation # # isosurface NCI # # DISCRETE SCF -- starting with standard CUBEGEN file # # isosurface NCI "dens.cube" # # DISCRETE SCF -- starting with NCIPLOT's xx-nci-dens.cube file # # isosurface parameters [0 0 0 0 0 0.01] NCI "dens.cube" # # Extended to all volume file formats, including # ABPS, CUBE, Jaguar, MRC, OMAP, CCP4, XPLOR # # Isosurface parameters [cutoff, p1, p2, p3, p4] NCI ... # # -- p1 = 0(all, default), 1(intramolecular), 2(intermolecular) # -- p2 = rhoMin (min rho cutoff to remove very low density points) # -- p3 = rhoPlot (cutoff used to remove covalent density, default 0.07 for promolecular, 0.05 for SCF) # -- p4 = rhoParam (fraction of total rho that defines intramolecular, default 0.95) # -- p5 = dataScaling (default 1, but set to 0.01 to read back in NCIPLOT -dens.cube file) # # references: # # "Revealing Noncovalent Interactions", # Erin R. Johnson, Shahar Keinan, Paula Mori-Sanchez, Julia Contreras-Garcia, Aron J. Cohen, and Weitao Yang, # J. Am. Chem. Soc., 2010, 132, 6498-6506. email to julia.contreras@duke.edu # # "NCIPLOT: A Program for Plotting Noncovalent Interaction Regions" # Julia Contreras-García, Erin R. Johnson, Shahar Keinan, Robin Chaudret, Jean-Philip Piquemal, David N. Beratan, and Weitao Yang, # J. of Chemical Theory and Computation, 2011, 7, 625-632 # new feature: quaternion() with no parameters gives "current molecular quaternion" -- same as quaternion(script("show rotation")) # bug fix: POVRAY export of mapped surfaces fails # new feature: isosurface PARAMETERS [cutoff, p1, p2, p3...] # -- allows passing parameters to an isosurface generator # -- if parameters are 0, then some default value is used instead # bug fix: isosurface cavity algorithm error makes cavity too large # bug fix: 12.1.48 feature MO/ORBITAL POINTS delivers twice the number of desired points # bug fix: (not fixed in 12.0) set picking label requires picking of ATOM, not its label. # bug fix: load "xxxx" filter "biomolecule 1" broken # bug fix: font labels 16 bold does not work (i.e. missing face) # new feature: color atoms property VECTORSCALE # new feature: isosurface slab n -- Erik Wyatt idea # -------------------------------------------------------------- #version=12.1.48 # new feature: atomMovedCallback parameter: BitSet of atoms moved # new feature: appletReadyCallback parameters: htmlName, TRUE/FALSE # -- fired ONCE upon applet ready, once upon applet destroyed # new feature: load spacegroup "" loads data with current file's space group # new feature: load unitcell "" loads data with current file's unit cell and offset # set appendNew false # LOAD DATA "append" # 1 # testing # Na 0.5 0 0.5 # end "append" {1 1 1} spacegroup "P4/mmm" unitcell "" # new feature: draw ARROW [ATOM {aa} | BOND {bb} {cc}] [ATOM {aa} | BOND {bb} {cc}] # -- allows easy creation of curved mechanistic arrows from atoms to bonds, # bonds to atoms, atoms to atoms, or bonds to bonds. # -- when atoms are moved, these arrows follow the atoms. # new feature: isosurface CONNECT {xxx} # -- connects an isosurface to an atom (only the first in the set) so that # If that atom is moved, then entire isosurface is moved. # -- STATE ISSUE: From the state, all isosurfaces are created AFTER atoms are moved, # so an isosurface such as a molecular surface will not be recreated properly from the state # new feature: show state FILE "filename" --- show embedded state from file (for example, an image) # new feature: MO POINTS / AO POINTS mapping onto a plane # for (var i = -5;i < 5;i += 0.2) {isosurface color range -1.0 1.0 plane x= @i map atomicorbital 4 3 1 points 1000;refresh} # bug fix: set appendNew false; load =1q0y; load APPEND =1crn causes exception # bug fix: lcaoCartoon does not get hidden when atom deleted # bug fix: isosurface mesh incompatible with fullylit and frontonly # bug fix: isosurface SELECT should also set model index # bug fix: navigate broken # bug fix: modelKit dragMinimizeAtom broken in 12.0.43 # bug fix: dragMinimize should select all non-fixed atoms if there are fixed atoms # bug fix: write @{"xxxx"} fails # bug fix: xmlns designations for jvxl and cml added to JVXL file creation # bug fix: isosurface ... map VDW -- mapping not saved in state # bug fix: CRYSTAL reader does not read vibrations for atoms with two-character symbols # bug fix: cartoons with hermite level do not reposition for atom position changes or trajectories # bug fix: isosurface plane x=-1 (with no spaces) not accepted # bug fix: x = write("VRML") should give VRML contents and not write to disk # bug fix: third oxygen atom in 5'-terminal phosphate was not assigned to backbone (e.g. 4tna.pdb) # bug fix: update in Jmol.js: Java version detection got broken in Mac Firefox 4.0.1 (part of browser compatibility test) # -------------------------------------------------------------- #version=12.1.47 # new feature: MO POINTS npts seed -- displays MOs as pointilist objects # load c6h6.smol # mo points 5000 # mo homo # mo points 3000 13 # optional random number seed reproduces previous results # # new feature: isosurface atomicOrbital n l m [zeff] [ POINTS npts seed] # allows Monte Carlo type orbital display, as for http://stolaf.edu/people/hansonr/origami/WIN/orbital1.zip # (see http://stolaf.edu/people/hansonr/orbital), e.g.: # # isosurface phase atomicOrbital 3 2 1 POINTS 5000 # # optional random number seed reproduces previous results # # new feature: contoured planes and 3D objects can be remapped and recontoured using ISOSURFACE MAP # # new feature: set dotScale applies to isosurface points in pointilist objects # # new feature: SCALE parameter implemented for atomic orbitals. # # bug fix: remapping of a contoured isosurface fails # bug fix: user-defined @ atom sets should be saved in state # bug fix: defined @ atom sets not indicating changes when models are deleted # bug fix: parameter setting of Jmol integer parameters with float values may not set variables # example: set dotScale 3.0 does set that variable, but there is no effect. (not fixed in 12.0) # -------------------------------------------------------------- #version=12.1.46 # new feature: set partialDots -- partial bonds rendered with dots rather than dashes # new feature: set PICKING dragSelected # -- like dragMolecule; must be over an atom (any atom) # -- use ALT to rotate selected atoms # # note: For dragging and rotating atoms, chains, and molecules # there are several parameters that govern the process # because there are several different ways of going about it. # # -- You can specify a set of atoms to FIX in place and not allow movement: FIX # -- You can specify whether or not to allow rotation of atoms when dragging: set allowRotateSelected # -- You can specify to move preselected atoms only, and you can specify the atoms # either with SELECT commands using set picking dragSelected # or by clicking on them (using set picking SELECT...) # # set dragSelected (12.0) # Allows dragging of selected atoms but, by itself, no rotation. # pressing ALT shows selected atoms that will be moved # ALT-SHIFT-LEFT moves, CTRL-Z undos, CTRL-SHIFT-Z or CTRL-Y redos # along with set picking SELECT x # where x is one of: atom, group, chain, molecule, polymer, structure, model # You can also use set picking extendedSelect for Rasmol-style picking, where # you get one group at a time only; the default is to toggle selections on and off # # set dragSelected; set allowRotateSelected (12.0) # AllowRotateSelected by itself does nothing, but with set dragSelected # also allows rotation. # Rotations, though allowed, are carried out on FULL MOLECULES ONLY. # pressing ALT shows selected atoms that will be moved # ALT-LEFT rotates, ALT-SHIFT-LEFT moves, CTRL-Z undos, CTRL-SHIFT-Z or CTRL-Y redos # # set allowMoveAtoms TRUE (12.2) # A setting that enables/disables dragSelected and allowRotateSelected # and also allows rotation of atoms within molecules. # pressing ALT shows selected atoms that will be moved # ALT-LEFT rotates, ALT-SHIFT-LEFT moves, CTRL-Z undos, CTRL-SHIFT-Z or CTRL-Y redos # # set allowMoveAtoms FALSE (12.2) # turns off dragSelected, allowRotateSelected, and itself, forcing selected rotations # to act on complete molecules # # set picking dragSelected (12.2, new) # (requires set allowMoveAtoms;set allowRotateSelected) # Based on those currently selected atoms, simple access to drag/rotate: # LEFT (on those atoms) moves, ALT-LEFT (on those atoms) rotates, # CTRL-Z undos, CTRL-SHIFT-Z or CTRL-Y redos # # bug fix: no ALT-x menu action in application # bug fix: FIX command not working properly # bug fix: CTRL-SHIFT-Z not working for "redo" # bug fix: select within(chain, atomno=xxx) will not select all desired atoms # if the chain is spread out over multiple regions of the file (1gzx) # bug fix: undo (CTRL-Z) and redo (CTRL-Y) not implemented for dragSelected # bug fix: set dragselected may not turn off transient selection halos # bug fix: molecules incorrectly assigned for covalently attached cofactors, such as HEM (1gzx) # What about hydrogen bonding? # bug fix: set picking dragMolecule then use of SHIFT after rotate COMPARE will result in unwanted translation # -------------------------------------------------------------- #version=12.1.45 # new feature: NBO second-order data saved in modata: # Var x = getProperty("auxiliaryInfo.models[2].moData.secondOrderData") # show x # >> x = [[69.0,115.0,1.2800001,0.044],[69.0,134.0,0.67,0.026],...[mo1, mo2, E(2), f(i,j),...] # where mo1 and mo2 are indexes into the MO list (Note that they are floats, not integers.) # and E(2) and f(i,j) are the E(2) value calculated by genNBO. # bug fix: quaternion N frame off slightly due to bisection error. # -- also affects Rasmol hydrogen bond calculation # bug fix: select a will not select P-only DNA adenosines (1jgq) # bug fix: select A and select a may be different for P-only DNA strands (1jgq) # bug fix: help needs to add version to http call # bug fix: properties of type float[][] not saved as ScriptVariable lists # bug fix: AIMS reader upgrade to include atom/atom_frac line mix # bug fix: PSI3 reader for WebMO # bug fix: NWChem reader skips vibration info; set to skip only translation/rotation models # bug fix: data connect can cause null pointer exception if data statement has white-space-only lines # -------------------------------------------------------------- #version=12.1.44 # bug fix: MOs broken in 12.1.43 # bug fix: drawpicking fails for drawn polyhedra. (turned off for now) # -------------------------------------------------------------- #version=12.1.43 # new feature: show chemical name # new feature: show chemical InChI # new feature: show chemical InChIKey # new feature: set echo ID "xxxx" # new feature: show drawing (2D line drawing, from NIH) # new feature: isosurfaces can be remapped. # isosurface molecular map property temperature # isosurface map property partialcharge # isosurface vdw # isosurface map mep # bug fix: { echo testing } causes compiler error # bug fix: { echo "testing" } causes compiler error # bug fix: cannot access site_xxx definitions created by PDB file read # bug fix: echo myecho ... after echo ALL still does ALL # bug fix: cube file reader (load command) does not convert z coordinates to Angstroms. # bug fix: isosurface CAVITY cannot be mapped # bug fix: isosurface CAVITY broken # bug fix: application load menu unnecessarily creates new frame and loses current script processing # code: setEcho rewrite # -------------------------------------------------------------- #version=12.1.42 # new feature: for (var x in [....]) {...} # -- array option # code: Swing class instantiation failure caught # bug fix: set picking identifyBond not implemented # bug fix: leaving modelKitMode does not leave bondPickingMode "ident" # -------------------------------------------------------------- #version=12.1.41 # new feature: for (var x in {...}) {...} # -- for example: # for (x in {selected}) { print x } # new feature: x = {*}.mass.sum (and .max, .min, etc.) # -- note, like other atom properties, {*}.mass by itself is an AVERAGE of masses of all atoms # -- accounts for isotopes, but otherwise just uses average masses. Source: John Moore/Jon Holmes, J. Chem. Educ. # new feature: x = plane(, , true) # bug fix: for(_x...) not disallowed # bug fix: Spartan .smol files: default for charges is now ESPCHARGES (what SpartanStudent reports), not MULLIKEN # -- filter "MULLIKEN" now reads those charges # bug fix: {*}.resno, .atomno, etc. where the property is an integer returns sum, not average # bug fix: closing a prompt dialog with ESCAPE can cause crash; should return "null" # bug fix: conflicting (Edit) selectMenu removed # -- can't have two menus with exactly the same name, or language will only update one # bug fix: miscalculating distances for atom exclusion in CifReader molecular option # bug fix: image creation does not lock out mouse or system refreshes # bug fix: select {*} (color=...) fails (specifically math functions doubling as atom properties) # bug fix: cross-applet script output from print script("show ...", "B") not working # bug fix: synchronize command broken # bug fix: "string"%-n right-side truncation one character short # code: MouseManager14, ActionManager simplifications # -------------------------------------------------------------- #version=12.1.40 # new feature: frame title @someArray # -- for example: # x = getproperty("modelinfo.models.energy") # y = x.sub(x.min).mul(2625.5) # relative energies, in kJ # frame *;frame title @y # new feature: write butane.xyzvib # write simple multimodel xyz file # bug fix: within(xxx, ) will fail # bug fix: Crystal09 reader upgrade # bug fix: VASP outcar atom naming error # bug fix: adaptation for improperly CONECTed PDB files such as 1W7R # bug fix: select *y defaults to select {*}(y) instead of select {:y} # bug fix: cml bug fix for bonds not applied to symmetry # bug fix: newer cml format for crystal information # bug fix: vibration ON not saved in state # bug fix: not reading MOPAC 6, 7, or 2009 files # -------------------------------------------------------------- #version=12.1.39 # new feature: load MENU -- if user-defined menu label is "null" then that menu item is removed # -- for example: labelName | null or labelMenu | null # new feature: write COORD XYZVIB filename # -- writes multimodel xyz file, with vibrational frequencies if present # new feature draw ARROW..... BARB # -- fish-hook "radical" arrows # -- included in POVRAY exporter only # # bug fix: write of stereo image only shows one half of dual display # bug fix: application does not update menus properly # bug fix: Jaguar reader not reading vibrations correctly # bug fix: write JMOL (instead of write xxx.jmol) not implemented # bug fix: Jaguar reader not reading vibrations correctly # -------------------------------------------------------------- #version=12.1.38 # new feature: isosurface... map property x WITHIN x.y # -- allows a maximum distance to be defined; speeds up calculation # -- defaults to 5.0 when set isosurfacePropertySmoothing FALSE # # bug fix: load of model when animation is on may cause animation NEXT to fail # bug fix: isosurface VDW can ignore H2O # bug fix: load FILES incorrectly autobonds CONECTed atoms # bug fix: (signed applet only) write FRAMES multiple calls to file dialog # bug fix: draw/show pointGroup not correct when {0 0 0} is not center of model # bug fix: draw pointGroup deletes all draw objects, not just of this model's point group # bug fix: multimodel show pointGroup does not reset when frame is changed # -------------------------------------------------------------- #version=12.1.37 # new feature: (relevant to Macintosh only) COMMAND-SHIFT-LEFT-DRAG same as CTRL-SHIFT-LEFT-DRAG # new feature: you can put element numbers in place of element symbols in XYZ files, # and you can have a sixth column that is radius e.g. # elemno x y z charge radius # or (for just the radius with no charge) # elemno x y z - radius # note that charge can be formal (integer) or partial (decimal) # # bug fix: set PICKING OFF nonfunctional # bug fix: unnecessary moveto commands in state # bug fix: CTRL-SHIFT-LEFT on Macintosh must be pressed with LEFT first. go figure... (Old, old problem fixed) # -- problem was that CTRL-SHIFT-LEFT-DRAG specifically was delivered as CTRL-SHIFT-MOVE # -- specifically relates to changing the slab after slab ON # bug fix: isosurface for trajectory not working # bug fix: Var x in function x() not recognized # bug fix: Var data followed by data++ causes syntax error # bug fix: isosurface .... map select {...} not saved properly in state # bug fix: MO HOMO should select highest non-negative value if no occupancy info # bug fix: Spartan reader not reporting HOMO # bug fix: load xxxx.top should default to xxxx.trj for coord files # -------------------------------------------------------------- #version=12.1.36 # new feature: preliminary DCD file format reader # -- load trajectory "c:/temp/t.pdb" coord "c:/temp/t.dcd" # new feature: mo -n -- switches phase of orbital # # bug fix: set bondPicking deletes bond # new feature: Molden reader filter options VIBONLY, OPTONLY, NOOPT, NOVIB # bug fix: Molden reader does not read optimizations # bug fix: Molden reader nonfunctional # bug fix: Spartan reader fails when no MO calculation # bug fix: Spartan MO d6/f10 reader problems # bug fix: QuantumEspresso reader first-model not read as Cartesian coordinates # bug fix: load ? broken in 12.1.34 # bug fix: getProperty by itself does not return SORTED list of properties # # code: binary model file reading capability added # code: JPEG encoder stores state in APP1 (FFE1) tag set instead of comment field # code: MOCalculation streamlined # -------------------------------------------------------------- #version=12.1.35 # new feature: linear combinations of molecular orbitals # -- any number of orbitals may be combined: mo [c1, mo1, c2, mo2, c3, mo3...], for example: # mo [0.5, 20, 0.5, 21] # -- coefficients will automatically be normalized such that SUM_i(c_i*c_i) = 1.00 # -- if variables are involved, one needs @{...}: # load c6h6.smol; for (f = 0; f <= 10; f++) { mo @{[f/10.0, 20, (10-f)/10.0, 21]}; refresh } # bug fix: SMILES generator error for cationic aromatic nitrogen # bug fix: application with file name does not run jmolscript: embedded scripts # bug fix: isosurface x.xx should default to "isosurface CUTOFF x.xx" for legacy compatibility # bug fix: {xxx}.label = "xxx" does not allow saving state # bug fix: {xxx}.element = "B" only assigns "B" to first atom in set # -------------------------------------------------------------- #version=12.1.34 # new feature: CTRL-V "dropping" of a url into Jmol loads the model found at that URL. # bug fix: {xxx}.element = "B" does not work # bug fix: JavaScript getPropertyAsArray("auxiliaryInfo.models") will fail for crystal structures # bug fix: undocumented select within(hkl,...) and select within(plane,...) missing # bug fix: message @x should replace x with a variable; "message @x is the value of x" should not # bug fix: older syntax MESSAGE %{x} for variable value missing # bug fix: variable pointers such as @x = 3 and y = 3 + @x not working # bug fix: subtle label off bug leaves atom "clickable" # bug fix: subtle bond deletion bug leaves atoms with bonds unclickable # bug fix: AMBER CYX not recognized in @cystine definition # bug fix: MD topology/coord file loading problems; general trajectory problems # bug fix: write xxx.obj upgrade # bug fix: drag/drop CUBE files should use isosurface sign red blue $FILENAME$ # -------------------------------------------------------------- #version=12.1.33 # new feature: write xxx.OBJ -- WaveFront OBJ file writing # new feature: isosurface MRC keyword indicates file is MRC type (for nonstandard MRC files) # bug fix: CIF reader not reading files with multiple models involving GEOM_BOND # bug fix: scriptLevelMax 20 too small -- changed to 100 # bug fix: for/while local variables improperly localized in iterative functions # bug fix: 12.1.32 should not have changed + to be # -------------------------------------------------------------- #version=12.1.32 # new feature: simple embedded application version of evalStringWaitStatus # that returns output from print/message/echo commands # -- see TestScriptOutput: # http://jmol.svn.sourceforge.net/viewvc/jmol/trunk/Jmol/examples/basic/org/jmol/TestScriptOutput.java?content-type=text%2Fplain # new feature: preliminary NWChem orbital reading # -- still not normalized correctly # -- d and f orbitals not checked # -- UHF alpha/beta not checked # new feature: | x # -- IN PLACE concatenation # -- array1 will be appended to # -- if x is an array of length n, then n elements will be added # -- works as a |= b # -- to append a full array as one element, use a |= [x] # -- to append with creating a NEW array, use a + x or a + [x] instead # new feature: "unset" command same as "reset" # -- for example: # a = array([1,2,3],[4,5,6],[7,8,9]) # y = a[3] # unset a # show variables # y = [7,8,9]; # -- just looks better for variables # -- good to use this if just a small part of a large array # or hashtable is wanted and the rest can be discarded # new feature: sort/reverse does array sorting IN PLACE, not by copying # -- for example: # y = x.sort # x is sorted, and y is a copy of that # -- still need x = x.sort in general, because "x.sort" is not a command # new feature: array assignment is always by reference, as for JavaScript and Java # -- y = x[3], if x[3] = [3, 4, 5], assigns y to [3, 4, 5], so if later # one uses y[4] = "new", then at that point x[3] = [3, 4, 5, "new"] # -- y == x[3] distinction removed # new feature: x = intersection(plane, plane) # new feature: x = intersection(pt, plane) (i.e. line perp to plane through pt) # new feature: x = intersection(ptLine, vLine, plane) # new feature: x = intersection(ptLine, vLine, point) (i.e. plane perp to line through point -- projection of point onto line) # new feature: draw polygon @x @y where @x and @y are arrays of points and faces, respectively # bug fix: a = {} initialized as bitset, not associative array # bug fix: | should set bit # bug fix: | should set bits indicated in # bug fix: & should return true if bit is set # bug fix: % n when n < 0 should do "last n + 1" # bug fix: | [a,b,c] should append elements to array -- IN PLACE # bug fix: animation incompatible with spin for largish structures # bug fix: _modelFile variable incorrect for file read from zip file # bug fix: If a script such as "test.spt" creates a function # test(), then the next implicit script command "test.spt" will fail # bug fix: implicit script command XXXX.xxx loses case of filename # bug fix: array appending appends string values # bug fix: frame 0.0 does NOT enable all frames; breaks "quaternion" command # bug fix: isosurface fragment fix # bug fix: cartesian exporter capping cylinders flat and spherical both # bug fix: Jmol logo was missing from the Help>What's New window. # bug fix (improvement): the Help>User Guide window was too narrow. # bug fix: echo @x when x is an associative array # bug fix: write t.jvxl does not work for new solvent/molecular surfaces business # code: ArrayList X ... --> List X # code: ScriptVariable simplified # -- ScriptVariable[]objects --> (ArrayList)value # -------------------------------------------------------------- #version=12.1.31 # feature change: undocumented a[13] = 3 (where a is a matrix, for a[1][3]) removed # new feature: MOL reader reads > # new feature: load FILTER "*.CA,/=5" # -- every 5th alpha carbon # -- note comma before /= # new feature: write xxxx.OBJ # -- Wavefront OBJ files # -- export/_ObjExporter written by Ken Evans # new feature: write xxxx.XYZRN # -- input for MSMS # -- suggest first using set DEFAULTVDW BABEL # new feature: multidimensional array assignment: a[1][2] = 10 # -- allows setting of a specific element of a multidimensional array # -- value can be anything -- a number, an array, an hashtable, a bitset, etc. # -- allowed also for matrices, but if the value is not a number, or # the row/column pointers are outside the range 1-3 or 1-4, then # the matrix is turned into an array automatically # -- for an array, when not a direct assignment, you need parentheses: # x = (a[1])[2]; if ((a[1])[2] == 3).... # because in general a[1][2] means "array a, elements 1 through 2" # -- for a matrix, you can use a[1][2] anywhere -- this is a difference between matrices and arrays # new feature: y == x[3] (double "=" in context of assignment) (removed in 12.1.32) # -- y is now an alias for x[3], not a copy # -- allows, for example: # y = x[3]; y[2] = 6; # equivalent to (x[3])[2] = 6 (which is not a valid syntax) # new feature: x.sort(n) # -- array sorting by nth object 1 - arrayLength; 0 == last, -1 = next to last, etc. # new feature: load 1blu.pdb filter "*.CA | HETATM,![HOH]" # - "|" means "OR", so this reads: # load only alpha carbons OR (HETATM and not HOH) # bug fix: Jmol 11.9.24+ will read states created by prior versions incorrectly # -- fixed by adding "legacyAutoBonding" setting # bug fix: loading a file on command line does not allow # for write xxxx.jmol to include model file in zip file # bug fix: fails: load 1mbo.cif; isosurface select(not solvent) ignore(none) sasurface; # bug fix: passing an array to a function does not correctly pass by reference # bug fix: dot function included in array x = [(whatever).something...] fails # bug fix: array sorting for objects # bug fix: creating arrays from variables does not copy variable value # bug fix: draw .... @s does not work for title, but @{s} does # bug fix: ZAP should not set appendNew TRUE # bug fix: load APPEND after ZAP inserts ZAP into state after load command # bug fix: write MOL writes incorrect charge # code: overhaul of ScriptVariable # -- "list" type renamed "varray" # -- value = null now for varray # -- way more efficient use of arrays # -- may have introduced problems, but they should all be catastrophic. # -------------------------------------------------------------- #version=12.1.30 # new feature: Finnish translation # bug fix: isosurface POCKET broken # bug fix: isosurface MOLECULAR or SETS with DOTS gives too many dots # bug fix: draw TRIANGLES not working # bug fix: annoying tic label side-switching removed # bug fix: set measurementLabels off not working for ticks # bug fix: isosurface color mesh blue not working # bug fix: (modelkit) load $PCl5; assign atom ({2}) "C" fails to place H atoms correctly # bug fix: not all translated html text was escaped in web export widgets # code: Commentized WebMaker.java in prep for complete removal. Fixes to Widgets javadocs. # code: isosurface MOLECULAR efficiencies # -------------------------------------------------------------- #version=12.1.29 # new feature: isosurface SLAB within x.y {point} # -- smooth circular slabbing # -- negative x.y --> "not within" (creates a circular hole at this position) # bug fix: isosurface molecular/solvent improvements # bug fix: logFile/logCommands/logGestures should not be saved in state # bug fix: log file cannot be turned off by setting value to "" # bug fix: user-defined function calls should be able to look like Jmol commands, without () # code: isosurface MOLECULAR/SOLVENT x.y completed; "FULL" option removed # code: (new concept) nonlinear Marching Cubes for IsoSolventReader # -------------------------------------------------------------- #version=12.1.28 # bug fix: 12.1.27 writing of script lists # /*file*/ inappropriately. # bug fix: 12.1.27 isosurface area is 1/3 actual. # bug fix: isosurface molecular/solvent better version, adds tripod-test logging # bug fix: write xxx.jmol can fail if the same file is used twice in two different contexts # -------------------------------------------------------------- #version=12.1.27 # new feature: isosurface molecular FULL # new feature: isosurface solvent [optionalRadius default:1.2] FULL # -- very fast solvent excluded surface # -- FULL option does reduced-surface analysis, # -- uses Marching Cubes to create the surface # -- very close fit to MSMS; slightly smaller area and volume # -- replaces work from 12.1.24 # -- use isosurface SET 1 generally # -- irrelevant inner surface removed due to negative volume. # TODO: test for this with cavities # new feature: isosurface MSMS xxxx.vert -- creates isosurface from MSMS output files # -- implies xxxx.face is also present in the same directory as xxxx.vert. # -- if only .vert are present, only dots will be generated # new feature: QuantumEspresso reader # new feature: GULP reader # new feature: isosurface/draw .length (also added to 12.0.26) # bug fix: isosurface sets not sorted by number of vertices # bug fix: failure to create atomicOrbital does not clear that isosurface # bug fix: popup menu does not show load {1 1 1} options correctly # bug fix: draw intersection/polygon without vertices does not clear existing object # bug fix: isosurface slab for plane not working # bug fix: space before [ not recognized as significant when following $xxx or {...} # bug fix: undocumented $isosurface1[3] fixed # bug fix: isosurface set 0 does not display all sets # -------------------------------------------------------------- #version=12.1.26 # new feature: write SDF creates multi-model SDfile based on models of selected atoms # new feature: write V3000 creates V3000 file; see http://www.symyx.com/downloads/public/ctfile/ctfile.pdf # new feature: the list of languages in the popup menu # -- is ordered by language code # -- displays each language name both in the current language and in the native language # -- is updated adding a new language if this is chosen via script (or maybe by the OS default) # new feature: plane(pt1, pt2) -- returns bisecting plane # new feature: draw SLAB $draw1 PLANE @{plane({...} {....})} # -- clips a drawn polygon based on a plane # -- $draw1 must be a draw POLYGON definition # -- draw draw1 SLAB $draw1... is allowed # -- for example: # draw p4 polygon 4 {1 2 3} {2 3 4} {4 5 6} {7 8 9} 2 [0 1 2 0] [2 3 0 0] # draw p4 slab $p4 PLANE @{plane({0 0 0}, {10 0 0})} # new feature: measure list -- same as show measurements # bug fix: GenNBO reader does not read MOs properly # bug fix: GenNBO reader does not read UHF data # bug fix: GenNBO reader does not read xxx.31 file P orbitals not in X Y Z order # bug fix: applying unit cell in LOAD command to XYZ file containing multiple models # does not convert later model coordinates to fractional ones. # bug fix: Web Export and write xx.jmol fail for load XXX:: forcing file type # bug fix: write MOL creates V2000 file # bug fix: over-run of SDF, MOL/V2000 reports error # bug fix: assigning array elements using x[i] = pt, where pt is a # variable that is a cartsian point or a plane does not copy variable # bug fix: SMILES generator in certain cases may not return stereochem (c-C(OH)(H)-c) # bug fix: mistyped command such as measure LIST (with LIST present) crashes Jmol # bug fix: pop-up menu after zap 1.1 in set of two models crashes Jmol # code: V3000Reader integrated into MolReader # code: JUnit test for file reading GenNBO and CIF files lacks viewer object # -------------------------------------------------------------- #version=12.1.25 # new feature: default for loading of CIF files with GEOM_BOND records is to load them # -- as full molecules (symop=1 or connected to such (or within autobonding range of such) # -- without unit cell # -- Cartesian coordinates # -- similar to the way CCDC Mercury loads these files # -- attaches H atoms and otherwise respects GEOM_BOND designations explicitly # new feature: CIF load FILTER "MOLECULAR" # -- does molecular load even when no GEOM_BOND records # -- defaults to {1 1 1} # new feature: pop-up menu includes load "" FILTER "MOLECULAR" option (under SYMMETRY...) # bug fix: failure to read properly data "connect_atoms" from state # when struts or hbonds turned OFF # bug fix: 12.1.16-24 fail to write state properly -- saved settings not saved # bug fix: CIF reader does not recognize -1 for _atom_site_disorder_group # bug fix: VaspOutcarReader misreads file with line containing "Therefore set LREAL=.FALSE. in the INCAR file" # code: rename VaspReader VaspOutcarReader # -------------------------------------------------------------- #version=12.1.24 # new feature: streamlined STATE for appended files # new feature: Jmol SMILES generation includes stereochemistry # for octahedr al and trigonal bipyramidal # bug fix: isosurface t.obj should be discernable as OBJ if created by PyMOL # bug fix: set drawPicking does not pick visible isosurfaces # bug fix: draw * translucent does nothing # bug fix: isosurface on frame other than first will be incorrect # bug fix: draw with multiple models can fail to save state # bug fix: SMILES check for c=c can fail. # bug fix: Mopac MGF reader upgrade allows orbital subset # bug fix: Mopac MGF reader upgrade allows filter "alpha", filter "beta" # bug fix: isosurface OBJ pymol.obj not reading Pymol output # bug fix: appending data to models with unit cells can cause odd results # bug fix: JME load append does not get saved properly in state # bug fix: bond set variables [{1 2 3}] incorrectly shown as atom bitsets ({1 2 3}) # bug fix: xxx.yyy when "yyy" has been defined as a local variable using VAR fails # bug fix: find("SMILES", smilesString) does not find Jmol atomIndex == 0 # bug fix: find("SMILES", smilesString) does not find [2H] # bug fix: slightly better response to command line input errors (complete command in history) # new feature: print point(3.5) -- rounds down (toward 0) to nearest integer # bug fix: IDTF exporter inverts rotation matrix from pt1, pt2, for dx = dy = 0 # bug fix: Linux file completion from LOAD " improperly lowers the case of file names # -------------------------------------------------------------- #version=12.1.23 # bug fix: labels OFF broken in 12.1.22 # -------------------------------------------------------------- #version=12.1.22 # new feature: P2N reader -- see http://q4md-forcefieldtools.org/ # -- adds "altName" auxiliary data # -- allows FILTER "altName" # -- allows label %{altName} # new feature: label %{dataName} -- UNDOCUMENTED # -- allows reading values from a DATA array. # -- case-sensitive # -- data are read sequencially as string data, one per data line. # -- if data of that name are not found, looks for data in auxiliaryInfo of that name. # and bases the index as atom index relative to the model. # new feature: Edit...Preferences...Clear History # -- resets window positions and clear all history. # -- thank you, Tami Caraballo! # bug fix: zap 1.1 when models have cartoons or other bioshapes crashes Jmol # bug fix: Ramachandran approximation of P straightness off by a few percent # bug fix: SMILES matching string with ".[C@H]" reads stereochemistry incorrectly # bug fix: load SMILES with %nn fails # bug fix: Jmol creating possibly ambiguous aromatic amine SMILES # 1-H-4-methylimidazole was: n1cnc(C)c1; now: [nH]1c[n]c(C)c1 # bug fix: {*}.find("SMILES",smilesString) does not include aromatic H # bug fix: Smiles MF calculation for aromatic atoms N and C in error. # NOTE: Jmol may undercount the number of hydrogen atoms # for aromatic amines where the ring bonding to N is # not explicit. Each "n" will be assigned a bonding count # of two unless explicitly indicated as -n-. # Thus, we take the position that "n" is the # N of pyridine unless otherwise indicated. # # For example: # $ print "c1ncccc1C".find("SMILES","MF") # H 7 C 5 N 1 (correct) # $ print "c1nc-n-c1C".find("SMILES","MF") # H 6 C 4 N 2 (correct) # but # $ print "c1ncnc1C".find("SMILES","MF") # H 5 C 4 N 2 (incorrect) # code: efficiencies in LabelToken # -------------------------------------------------------------- #version=12.1.21 # new feature: set allowMoveAtoms # -- automatically sets/unsets allowRotateSelected and dragSelected # -- ALT-left --> rotates selected set # -- ALT-SHIFT-left --> drags selected set # bug fix: popup submenu "file" only enabled for application or signed applet # bug fix: load xxx.jmol broken in 12.1.17 # bug fix: write JMOL missing from popup menu # -------------------------------------------------------------- #version=12.1.20 # bug fix: WRITE PDB not padding to 80 char # TODO: WRITE PDB not adding TER records # bug fix: PDB reader not flagging models as PDB properly when all groups are same amino acid # -------------------------------------------------------------- # version=12.1.19 # new feature: (Application) toolbar "set picking center" # bug fix: bad build of 12.1.18 for distribution # -------------------------------------------------------------- # version=12.1.18 # bug fix: 12.1.17 breaks popup menu # bug fix: relaxing single-model requirement for isosurface # as long as only a single model's atoms are selected # -------------------------------------------------------------- # version=12.1.17 # new feature: "getPopupMenu" added to JmolViewer.getProperty("DATA_API","getPopupMenu","current"|null) # -- null --> java.awt.Container # -- "current" --> current menu # new feature: isosurface ROTATE # -- rotates an isosurface based on a quaternion # -- a display property, like OFFSET or SCALE3D # -- useful if model coordinates are changed and an isosurface is present # -- rotations are cumulative. # -- rotations are about {0 0 0}, not the centroid of the isosurface # -- ROTATE NONE removes the rotation # -- for example: # # isosurface sasurface ROTATE @{quaternion({1 0 0}, 90)} # isosurface ROTATE @{quaternion({1 0 0}, 90)} ROTATE @{quaternion({0 0 1}, 90)} # new feature: reset STRUCTURE -- resets structure to author's after calculate STRUCTURE # new feature: load OFFSET {x y z} # --follows UNITCELL parameter, if present # --offsets the atoms in the file by a given amount # --may be fractional # --added to allow for shifts in origin for nonstandard CIF files # --applicable to ALL readers # --for example: # load quartz.cif {1 1 1} spacegroup "ignoreoperators" offset{0 0 2/3} # load caffeine.xyz offset {8.0 0 0} # # bug fix: no callback for ZAP model=1 # bug fix: compare(...) with @SP, @OH, @TB gives null pointer exception # bug fix: set picking invert stereo/delete atom not sending pick callback # bug fix: Argus .agl reader not setting viewpoint transform # bug fix: load xxx where x is a flawed data file can try to load file as a script or isosurface # new feature: VASP OUTCAR reader (xtal/VaspReader) # bug fix: compiler function(){{ double brace error # bug fix: compiler context { var chain=3;print chain } not recognizing context variable for "chain" # bug fix: PDB reader not reading files with empty group name field # bug fix: popup menu does not include measure SEQUENCE # new feature: auxiliaryInfo.models[1].infoUnitCell # -- 17-element array # -- a, b, c, alpha, beta, gamma # -- Va, Vb, Vc # -- dimension = 1 (polymer), 2 (slab), 3 (standard) # -- volume (Angstrom^3) # # bug fix: set picking measure SEQUENCE not reporting to application console # bug fix: (application only) distance picking not being reported in console # bug fix: set picking chain, then mouse click does not report number of atoms selected # bug fix: LINUX file dropper returning \r\n with name # bug fix: DRAW $xxx reverses order of points # bug fix: load PACKED for slab/polymer does not work # bug fix: load "" does not work after loading a SET of models using load DATA # bug fix: CIF reader cannot read files with _space_group_symop_operation_xyz field # -------------------------------------------------------------- #version=12.1.16 # new feature: function calls can look like Jmol commands (also added to 12.0): # function myfunc(a, b, c, d){....} # myfunc a b c d # -- these are MATHEMATICAL commands # -- use just a b, not @a @b # # new feature: custom overloading of Jmol commands (also added to 12.0) # function measure(a, b) { print "measuring " + a + " " + b; measure @a @b } # measure {atomno=2} {atomno=3} # -- within function X, command X is standard Jmol; # -- outside the function, it is a reference to that function # -- overloaded functions are not saved in the state # # new feature: load xxx.pdb filter "CONF 1" does a front-end filter of just # the first alt-loc atoms within a given residue. This leads to proper # formation of polymers in certain cases (2BLN, 2CI1). # bug fix: naming functions or variables after Jmol token names fails or acts unexpectedly # (fixing this bug required script compiler changes, and that lead to the # two new features below) # bug fix: User variables and functions removed from state because they are # no longer necessary and also indeterminant in terms of the "state". # Originally these were needed because ECHO and DEFINE can be dynamic # -- which is still true -- and because certain commands such as ISOSURFACE # were being saved in the state just as their strings instead of their # intepreted code. But that was changed for 12.0, and this fix also changes # ECHO to be saved in its current state, not its dynamic state. While # dynamic DEFINE types may include variables, they aren't really # part of the "state" per se and aren't needed to recreate the state. So # they are dropped from the state with this fix as well. # bug fix: array variable elements cannot be changed # bug fix: "var chains" does not work -- i.e. a name of a "within" option. # solution was to allow var ANYTHING, understanding that if you # use "var CARTOONS" for instance, then CARTOONS ON is no longer # a command within the scope of that assignment. # bug fix: cartoon helix in 1TF6 broken by DSSP HHHGGG run # bug fix: not loading MOL files having no bonds # bug fix: load append INLINE ... not working # bug fix: max for Rasmol/chime units 499 -- should be 1000 # bug fix: show state/xxxx incorrectly case-sensitive # code: undocumented load RANGE [i, j, k,...] removed (see load MODELS) # code: load FILTER clean-up, standardization # -------------------------------------------------------------- #version=12.1.15 # feature change: DSSP default for "calculate structure" # -- old way is now "calculate structure RAMACHANDRAN" # feature change: DSSP default for LOAD of PDB file with no header. # in previous versions, Jmol used a ramachandran-angle-based calculation # for secondary structure determination when a PDB file had no HELIX or SHEET records. # It just seems reasonable to use the industry-standard DSSP method instead. # new feature: PDB and CIF readers read helix subtypes alpha, 3/10, and pi # new feature: atom property substructure includes helixalpha(8), helix310(7) and helixpi(9) # new feature: defaultStructureDSSP (default TRUE) # --setting this FALSE gives previous behavior (see above) # --for the CALCULATE STRUCTURE and LOAD commands # --in the case of LOAD, only relevant when PDB header is missing HELIX/SHEET records # # bug fix: QCHEM reader fails # bug fix: CRYSTAL reader fails to read formico_opt.out # bug fix: CIF reader not reading insertion codes (since forever!) # bug fix: set appendNew FALSE fails # bug fix: getproperty IMAGE (returning JPG64) doubles font size with set antialiasDisplay true # bug fix: "configuration 1" should select all if no alternative locations # bug fix: load FILTER does not include %x for PDB files # bug fix: conformation n definition changed for PDB files to be consistent with DSSP # bug fix: isosurface "xxxx.jvxl" colorscheme "rwb" does not work (jvxl files specifically) # code: http://jmol.svn.sourceforge.net/viewvc/jmol/trunk/Jmol-datafiles/dssp/cullpdb_pc20_res1.6_R0.25_d101001_chains1769 # was used for DSSP validation along with checkdssp.spt in that same directory # # -------------------------------------------------------------- #version=12.1.14 # new feature: "xxxx"%9999 == "to upper case"; "xXxX"%-9999 == "to lower case" # new feature: Accurate DSSP structure determination should be identical to DSSP # using CALCULATE STRUCTURE DSSP # # Also available is a version that takes into account already-determined # amide hydrogen positions using SET dsspCalculateHydrogenAlways FALSE # # DSSP details available using SHOW DSSP # DSSP debugging available with SET DEBUG # DSSP structure-determining hydrogen bonds available with CALCULATE HBONDS STRUCTURE # DSSP substructure (helix310 and helixPI) available with SELECT HELIX310 and SELECT HELIXPI # -- for an example of helixPI (>>555<<), see 2JC9 # # new feature: show state/xxxxx where xxxxx is any phrase. Does a line-by-line filter of the # state script for xxxxx. So, for example: # # show state/load # show state/isosurface # show state/hbond # show state/draw # show state/measure # show state/connect # # new feature: STRUCTURE HELIX310 .... # new feature: STRUCTURE HELIXPI .... # # new feature: calculate hbonds STRUCTURE (only those that define the DSSP "HGITEB" markings) # new feature: set dsspCalculateHydrogenAlways (default TRUE -- standard DSSP; set to FALSE # to ensure that file-based NH atoms are used instead of rough approximations) # new feature: show DSSP (just produces a report) # new feature: calculate structure DSSP # new feature: load reports model count and overall number and model number for MOs # new feature: helix310 and helixPI structures may be set using the STRUCTURE command # new feature: select helix310 and select helixPI -- provided those have been set. # Note that select HELIX only selects "4-turn" aka "alpha" helices, as previously. # # new feature: load SUPERCELL "2x, x+y, 2z" # load SUPERCELL {2 2 2} # load {20 20 2} SUPERCELL {2 2 2} # new feature: new 5th parameter for measureCallback is actual, unrounded value # # bug fix: conformation n definition changed for PDB files to be consistent with DSSP # bug fix: hetero group protein check should not care about C CA N O file order (1YC5) # bug fix: conformation not working when an alternate location is for key atoms such as N, C, O, CA # bug fix: loading a multi-structure PDB file with CONECT bonding may not autobond (2q3t) # bug fix: undocumented save STRUCTURE not working for initial structure state # bug fix: calculate structure only works with last model loaded # bug fix: calculate structure after zap x.y fails # bug fix: GAMESS reader (US) not reading full atom name such as "MOLYBDENUM" # bug fix: load append after calculating structure recalculates structure for other models # bug fix: calculate structure does not target selected model # bug fix: bioshapes not clearing automatically after calculate STRUCTURE # bug fix: switch DEFAULT not working # bug fix: label %1 will cause exception # bug fix: load '@x' not saved properly in state # bug fix: arrays of hashtables and other more complex variables not being saved or created in usable form # bug fix: isosurface MEP with multiple frames fails on second isosurface # bug fix: //comments not searched properly for GOTO operation # bug fix: data "connect_atoms" does not update bond diameter, order, or energy # bug fix: %8.4VALUE still truncating in set defaultdistancelabel # code: removal of unnecessary structure class in ModelCollection # code: Efficient Java bitset-based DSSP calculation based solely on a careful reading of # W. Kabsch and C. Sander, Biopolymers, vol 22, 1983, pp 2577-2637 # with detailed quote-based comments from the article explaining the process. # Includes options to create the structures, just make a report, or just deliver a set of # hydrogen bonds. (MUCH appreciated permission by Gert Vriend to implement DSSP as open- # source Java code in Jmol.) # # -------------------------------------------------------------- #version=12.1.13 # new feature: hide/display bonds # new feature: hide/display [{bond set}] # new feature: set STRUCTURE HELIX|SHEET|TURN [a, b, c, d, a1, b1, c1, d1,...] # allows customization of Jmol's phi/psi-based structure calculation # phi >= a && phi <= b && psi >= c && psi <= d # || phi >= a1 && phi <= b1 && psi >= c1 && psi <= d1 # etc. # bug fix: unbind unknownName unbinds LEFT mouse! # bug fix: Safari slideZoom issue upon leaving and returning to applet (mouse MOVE not issued by OS) # bug fix: naming a variable after a function name such as "color" should be allowed # bug fix: "smilesString" changed to "_smilesString" and properly set # bug fix: Application filename for $xxxx not properly set # bug fix: language changing doesn't set tool tips # bug fix: MEP menu item is using MOLECULAR with default range; should be using VDW with range ALL # bug fix: unescaped spaces in load "$ethyl ether" cause fault at NIH. # bug fix: error writing isosurface color density JVXL file # bug fix: catch without catch(e) causes exception # bug fix: isolated H atoms when calculating hydrogen bonds causes exception # bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT" # bug fix: calculate structure requiring {xxx} # code: deprecated "commandOption" shape property removed # -------------------------------------------------------------- #version=12.1.12 # bug fix: reading unmapped isosurface from JVXL files broken in 12.0.13 # code: JmolViewer interface Component display --> Container display (JPanel, JFrame, JDialog) # code: consoles work # code: examples get proper termination upon window closing # -------------------------------------------------------------- #version=12.1.11 # new feature: set multipleBondRadiusFactor 0.75 # new feature: multipleBondSpacing # set multipleBondSpacing = -1 (default, varies with viewing angle) # set multipleBondSpacing = -0.5 (half that distance; varies with viewing angle) # set multipleBondSpacing = 0.35 (positive ==> fixed multiple bond spacing) # new feature: set isosurfacePropertySmoothingPower # 0 (no property smoothing) # 10 (very strong smoothing) # 7 (default, same as Jmol 11.8) # new feature: AppletConsole allows embedding in larger applications # new feature: smooth on-the-fly language changes in applet and application # new feature: integrated AppConsole for embedded Jmol -- see Integration.java # bug fix: MO NOPLANE not working # bug fix: SmarterJmolAdapter should not read zip bytes it doesn't have to # bug fix: spacefill JMOL does not work # bug fix: Jmol 12 does not read old 11.1 isosurface commands from states # bug fix: load {i j k} RANGE x.x not expanding load box by 1 in each direction # bug fix: applet console does not display startup message # bug fix: console buttons do not change with new language # bug fix: undo/redo problems in AppConsole # bug fix: crystal reader can't read selected model # bug fix: 3.5E+0.0 read as "3.5 0.0" # bug fix: navY/navy color issue # bug fix: write PDB for nonPDB files incorrect # code: streamlined AppConsole and AppletConsole # code: GuiMap/JmolConsole AbstractButton methods merged # code: AppConsole now implements JmolCallbackListener, called by JmolPanel.notifyCallback # -------------------------------------------------------------- #version=12.1.10 # new feature: Spartan reader filter "ESPCHARGES" for ESP charges, if available, instead of Mulliken charges # new feature: reset SPIN # new feature: set slabRange 5.0 -- a zoom-independent slabbing plane # bug fix: JavaScript jmolScriptWait() can fail # bug fix: mep color range error (12.1.9, 12.0.11) # bug fix: color structure for carbohydrate fails # bug fix: reset should not reset spin (introduced in 11.7.47); new RESET SPIN includes reset spinning # bug fix: SMILES generator allowing sp3 center in aromatic # bug fix: storing atom properties from CrystalReader messes up model atom bitset # bug fix: non PDB large molecule should not change default rendering # bug fix: PDB large molecule default rendering flaws # -------------------------------------------------------------- #version=12.1.9 # new feature: label %[shape] # new feature: lcaoCartoons sp3d (a,b,c,d,e), sp3d2 (a,b,c,d,e,f) # bug fix: set usercolorscheme not working. # bug fix: color label none when already none and after rendering for multi-line labels or with antialiasdisplay crashes Jmol # bug fix: lcaoCartoon p orbitals for CO2 # bug fix: isosurface ISSQUARED # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) # bug fix: color PROPERTY x with set rangeSelected does not work # bug fix: isosurface contour colors # bug fix: #....... #.... two # in one line with first in first character fails # bug fix: isosurface plane problems # bug fix: set drawHover isosurface hover error kills hover watcher # bug fix: isosurface "t.jvxl" map property temperature nonfunctional # bug fix: isosurface PROPERTY ("VDW 100%" implied) not working # bug fix: WRITE xxx should do SHOW not clipboard for application # bug fix: % at end of line acts as a line continuation # bug fix: "sp3a" not "first bonded atom" # bug fix: failure to read old-style JVXL files. # bug fix: reading nth model from a file within a ZIP collection not possible # code: AtomPropertyMapper isolated from IsoSolventReader # code: rewrite of calculateHydrogen/hybridization code # -------------------------------------------------------------- #version=12.1.8 # bug fix: LcaoCartoon capping/slabbing not saved in state # bug fix: isosurface planar mapping, contours, atomic orbital speed and scaling problems # bug fix: oops; isosurface atomicOrbital REALLY not scaling well # -------------------------------------------------------------- #version=12.1.7 # new feature: load SMILES to use http://cactus.nci.nih.gov/chemical/structure/..../file?format=sdf&get3d=True # new feature: zSlab, zDepth -- default 0,0 meaning "use slab and depth" settings # new feature: slab and depth are variables and can be read and set as for any other # new feature: Vasp reader shows enthalpy and Gibbs energy in model name # new feature: getProperty can drill down a list for a hashtable entry: # print getProperty("shapeInfo.isosurface.id") # s2 # isosurface1 # bug fix: isosurface atomicOrbital not scaling well # bug fix: undo and smilesurlformat tokens missing # bug fix: isosurface ... map SQUARED ... nonfunctional # bug fix: exit, quit are stopping spinning -- should just be stopping moveTo # unless !exit or !quit. # bug fix: associative array problems with some auxiliaryInfo data saving to state # bug fix: binary map files within zip directories cannot be read # bug fix: mouse-based slab does not refresh # bug fix: JME reader misreading "Br+" # bug fix: Writing PDB file with residue number > 9999 trashes file. Now writes "0000" "0001" etc. # -------------------------------------------------------------- #version=12.1.6 # bug fix: very first start of Jmol, with no history, fails. # bug fix: QChem reader not indicating symmetry A B properly # bug fix: QChem reader filter "BETA" fails # bug fix: obscure error when array variable is in place of required expression # bug fix: ColorEncoder not allowing for override of BW and WB palette # bug fix: GAMESS reader UHF caught on reading orbitals with LZ VALUE line # code: ColorEncoder cleaner, no inappropriately static classes # -------------------------------------------------------------- #version=12.1.5 # new feature: color() function: # color("") -- full details on current propertyColorScheme # color("$someID") -- full details on isosurface ID "someID" color scheme # color("xxx") -- full details for a named scheme where "xxx" is "rwb", for instance # color("myscale = [xFF0000] [ x00FF00] [x0000FF]") creation of a scheme and return of details # color("roygb", n) -- nth color of a standard color scheme # color("", x.y) -- color for a property value x.y # color("$someID", x.y) -- color for isosurface ID "someID" value x.y # color("roygb", min, max) -- color/value pairs (two arrays) # color("roygb", min, max, value) -- color for specific value # print color("myscale = [xFF0000] [x00FF00] [x0000FF]") # colors : # {255.0 0.0 0.0} # {0.0 255.0 0.0} # {0.0 0.0 255.0} # # max : 4.0 # min : 1.0 # name : myscale # reversed : false # values : # 1.0 # 2.0 # 3.0 # 4.0 # # print color("myscale = [xFF0000] [x00FF00] [x0000FF]", 0, 10, 0) # {255.0 0.0 0.0} # # The scheme is constructed, so it can be used later: # # print color("myscale", 0, 10, 5) # {0.0 255.0 0.0} # # new feature: getProperty shapeInfo reports colorKey for isosurfaces: # getproperty shapeInfo.isosurface[1].colorKey # # shapeinfo.isosurface[1].colorkey.colors *List[31] # shapeinfo.isosurface[1].colorkey.colors[1] {255.0 0.0 0.0} # shapeinfo.isosurface[1].colorkey.colors[2] {255.0 0.0 0.0} # ... # shapeinfo.isosurface[1].colorkey.colors[31] {16.0 16.0 255.0} # shapeinfo.isosurface[1].colorkey.color {255.0 165.0 0.0} # shapeinfo.isosurface[1].colorkey.values *float[32] [50.0,48.387096,46.774193,...,0.0] # shapeinfo.isosurface[1].colorkey.name "roygb" # shapeinfo.isosurface[1].colorkey.max 31 # shapeinfo.isosurface[1].colorkey.min 1 # bug fix: set defaults RASMOL broken # bug fix: CRYSTAL reader FREQUENCY needs fragment numbers sorted # bug fix: rotation QUATERNION broken by 11.9.36, Mar 25, 2009 - Does not rotation about {0 0 0} # bug fix: CURSOR_WAIT hourglass not turning off automatically after set picking JmolScript operation # bug fix: associative array function .keys should report sorted key list # bug fix: associative arrays as ScriptVariables must be checked for type # bug fix: associative array key sorting, new line for arrayed values # bug fix: isosurface color range should not carry over to general "color property" # bug fix: isosurface colorscheme TRANSLUCENT "xxx" fillTriangle error # bug fix: should not allow isosurface ... map colorscheme "xxx" TRANSLUCENT # bug fix: CRYSTAL reader FREQUENCY when input deck is missing VIBRATION record # -------------------------------------------------------------- #version=12.1.4 # new feature: isosurface display within 2.0 {atomset} -- renderable subset of isosurface # new feature: isosurface display all # bug fix: CRYSTAL reader not allowing {555 555 0} load # bug fix: CRYSTAL reader orientation error # bug fix: show info not showing molecule info # bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL # bug fix: broken selectExtended mode # bug fix: some isosurface display properties not generalized to wildcard # bug fix: Parallel processing not creating process-specific copies of shapes # bug fix: load unitcell for slab/polymer should allow 0, not just -1 # bug fix: diastereomer check still checking stereochemistry # bug fix: SMILES generator should not produce stereochemistry for RX2R' # -------------------------------------------------------------- #version=12.1.3 # new feature: load "myfile.xxx" {1 1 1} unitcell [ax ay az bx by bz cx cy cz] # new feature: x = compare({atomset1}, {atomset2}, "ISOMER") # new feature: x = compare(smilesString1, smilesString2, "ISOMER") # bug fix: set picking invertStereo not working for non-ring stereocenters # bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1) # bug fix: "CCCC".find("SMARTS","CCC") should return [1,5,8,11] (other returns [] and "?" # bug fix: SmilesGeneration stereochemistry error # bug fix: "smilesString".find("smarts","pattern") should return "?" upon parsing error # bug fix: proper "false AND"/"true OR" action where second operand is skipped # -------------------------------------------------------------- #version=12.1.2 # new feature: Application Display menu item "resize" (also added to 12.0) # bug fix: SmilesGeneration fails for double bond stereochemistry # bug fix: documented within("SMILES",...) missing and required for SmilesGenerator # bug fix: select within(branch,{},{}) exception # bug fix: "sheet" token missing, so select within(sheet) fails # bug fix: struts not restored from state # bug fix: color STRUTS also colors hbonds # bug fix: draw CYLINDER n ... where n is an integer does not give flat ends # bug fix: PNG file state for multiple file load cannot be read # bug fix: Jmol application not accepting -g # bug fix: "no atoms found returns wrong error message # bug fix: XYZ reader fails with load "filename" 3 # bug fix: "[1,3,4,5]" can be translated to [1,3,4] # bug fix: slab/depth mouse action does not automatically refresh # code: Java 1.5 upgrade -- many generics still have warnings # -------------------------------------------------------------- #version=12.1.1 # bug fix: measure search("...{X}....{X}...") does not work # bug fix: draw arrows are being FIXED in state # bug fix: if ( )....; single-line syntax broken # bug fix: try/catch in functions not implemented correctly # bug fix: SMILES nested $(...) broken # bug fix: binary pmesh reader broken # bug fix: better coding for isosurface file typer # bug fix: print write("ramachandran") # bug fix: reading background images from PNG images within zip files # bug fix: write xxxx.jmol zip sets cannot be read # bug fix: binary surface readers map and ccp4 can misread file type # bug fix: isosurface "=xxx" missing check for isSyntaxCheck # bug fix: isosurface slab for polymer/slab symmetry # -------------------------------------------------------------- # version=12.1.0 # July 28, 2010 #version=12.0.50_dev # bug fix: AtomSetChooser set up too late -- can override embedded jmolScript vibration/vector scale commands # -------------------------------------------------------------- #version=12.0.49 # bug fix: show colorscheme "high" causes exception # bug fix: CONTINUE in switch within for or while loops infinitely # bug fix: select deuterium, HOH, _1H, _H1 isotope business messed up # bug fix: isosurface parameters @x does not work even when x is an array # bug fix: ++ipt; not working # bug fix: zap of model with measurements causes exception # bug fix: PDB reader may read bfactors off by 0.01 # bug fix: isosurface slab -@xxxx... will negate variable xxxx if it is a plane # -------------------------------------------------------------- #version=12.0.48 # bug fix: try {} does not pass VAR variables into its context. # bug fix: catch(err) not setting variable "err" # bug fix: CML files with atoms starting with both aNN and aNN_ will not bond correctly # bug fix: set fontScaling does not scale offset with font # bug fix: application Help menu item no long pushed right. # -------------------------------------------------------------- #version=12.0.47 # bug fix: definition of CARBOHYDRATE was updated: # -- [A2G],[NGA],[SIA],[SLB],[LBT],[NDG],[AMU] added (GalNAc, NeuNAc, lactose, GlcNAc, MurNAc) # -- [ASF],[NAM] removed, they are no longer carbohydrates # -- a few existing ones are deprecated by PDB; they are left for compatibility # but are now listed as such (maybe remove them in future). # bug fix: Bad Jmol.js # bug fix: draw pointgroup fixed to first model # -------------------------------------------------------------- #version=12.0.46 # bug fix: _smilesString variable not being cleared when a PDB file is loaded # bug fix: WebMO reader fails to read HOMO/LUMO business. # bug fix: throwing script parsing error on correct "isosurface slab within [4 elements # representing the slab box]" (was losing last "]"). # bug fix: (application) Jmol console not receiving echo messages # bug fix: UFF full listing (set loglevel 6;minimize steps 0;show minimization) missing n and cosNphi0 in torsions # bug fix: PQR reader mistaking " HD3" as deuterium # -------------------------------------------------------------- #version=12.0.45 # bug fix: isosurface cavity algorithm error makes cavity too large # bug fix: font labels 16 bold does not work (i.e. missing face) # -------------------------------------------------------------- #version=12.0.44 # bug fix: set appendNew false; load =1q0y; load APPEND =1crn causes exception # bug fix: lcaoCartoon does not get hidden when atom deleted # bug fix: isosurface SELECT should also set model index # bug fix: isosurface mesh incompatible with fullylit and frontonly # bug fix: navigate broken # bug fix: modelKit dragMinimizeAtom broken in 12.0.43 # bug fix: dragMinimize should select all non-fixed atoms if there are fixed atoms # bug fix: write @{"xxxx"} fails # bug fix: isosurface ... map VDW -- mapping not saved in state # bug fix: CRYSTAL reader does not read vibrations for atoms with two-character symbols # bug fix: third oxygen atom in 5'-terminal phosphate was not assigned to backbone (e.g. 4tna.pdb) # bug fix: cartoons with hermite level do not reposition for atom position changes or trajectories # bug fix: isosurface plane x=-1 (with no spaces) not accepted # bug fix: x = write("VRML") should give VRML contents and not write to disk # bug fix: defined @ variables not indicating changes when models are deleted # bug fix: calculate structure RAMACHANDRAN broken in 12.0.18 # bug fix: update in Jmol.js: Java version detection got broken in Mac Firefox 4.0.1 (part of browser compatibility test) # -------------------------------------------------------------- #version=12.0.43 # bug fix: undocumented "redo" "undo" application-only commands changed to "redocmd" "undocmd" # bug fix: transcient halos not always transient for dragSelected # bug fix: FIX command not working properly # bug fix: select within(chain, atomno=xxx) will not select all desired atoms # if the chain is spread out over multiple regions of the file (1gzx) # bug fix: set dragselected may not turn off transient selection halos # bug fix: undo (CTRL-Z) and redo (CTRL-SHIFT-Z/CTRL-Y) not implemented for dragSelected # bug fix: molecules incorrectly assigned for covalently attached cofactors, such as HEM (1gzx) # bug fix: set picking dragMolecule then use of SHIFT after rotate COMPARE will result in unwanted translation # -------------------------------------------------------------- #version=12.0.42 # bug fix: quaternion N frame off slightly due to bisection error. # -- also affects Rasmol hydrogen bond calculation # bug fix: select a will not select P-only DNA adenosines (1jgq) # bug fix: select A and select a may be different for P-only DNA strands (1jgq) # bug fix: properties of type float[][] not saved as ScriptVariable lists # bug fix: AIMS reader upgrade to include atom/atom_frac line mix # bug fix: PSI3 reader for WebMO # bug fix: data connect can cause null pointer exception if data statement has white-space-only lines # -------------------------------------------------------------- #version=12.0.41 # bug fix: { echo testing } causes compiler error # bug fix: { echo "testing" } causes compiler error # bug fix: cannot access site_xxx definitions created by PDB file read # bug fix: echo myecho ... after echo ALL still does ALL # bug fix: isosurface CAVITY cannot be mapped # bug fix: PDB load filter mix of (CONF or BIOMOLECULE) and chain filter such as *:A will include additional chains ("C", "O", "N", "S", etc.) # bug fix: application load menu unnecessarily creates new frame and loses current script processing # -------------------------------------------------------------- #version=12.0.40 # bug fix: set picking identifyBond not implemented # bug fix: leaving modelKitMode does not leave bondPickingMode "identifyBond" # -------------------------------------------------------------- #version=12.0.39 # bug fix: menu labels incorrect in 12.0.38 # -------------------------------------------------------------- #version=12.0.38 # bug fix: for(_x...) not disallowed # bug fix: Spartan .smol files: default for charges is now ESPCHARGES (what SpartanStudent reports), not MULLIKEN # -- filter "MULLIKEN" now reads those charges # bug fix: {*}.resno, .atomno, etc. where the property is an integer returns sum, not average # bug fix: closing a prompt dialog with ESCAPE can cause crash; should return "null" # bug fix: conflicting (Edit) selectMenu removed # -- can't have two menus with exactly the same name, or language will only update one # bug fix: image creation does not lock out mouse or system refreshes # bug fix: select {*} (color=...) fails (specifically math functions doubling as atom properties) # bug fix: cross-applet script output from print script("show ...", "B") not working # bug fix: synchronize command broken # bug fix: "string"%-n right-side truncation one character short # code: MouseManager14, ActionManager simplifications # -------------------------------------------------------------- #version=12.0.37 # bug fix: within(xxx, ) will fail # bug fix: Crystal09 reader upgrade # bug fix: adaptation for improperly CONECTed PDB files such as 1W7R # bug fix: select *y defaults to select {*}(y) instead of select {:y} # bug fix: newer cml format for crystal information # bug fix: vibration ON not saved in state # bug fix: not reading MOPAC 6, 7, or 2009 files # -------------------------------------------------------------- #version=12.0.36 # new feature: load MENU -- if user-defined menu label is "null" then that menu item is removed # -- for example: labelName | null or labelMenu | null # bug fix: write of stereo image only shows one half of dual display # bug fix: application does not update menus properly # bug fix: Jaguar reader not reading vibrations correctly # bug fix: write JMOL (instead of write xxx.jmol) not implemented # -------------------------------------------------------------- #version=12.0.35 # new feature: (fixing property smoothing) isosurface... map property x WITHIN x.y # -- allows a maximum distance to be defined; speeds up calculation # -- defaults to 5.0 when set isosurfacePropertySmoothing FALSE # bug fix: load of model when animation is on may cause animation NEXT to fail # bug fix: isosurface VDW can ignore H2O # bug fix: load FILES incorrectly autobonds CONECTed atoms # bug fix: draw LIST broken # bug fix: (signed applet only) write FRAMES multiple calls to file dialog # bug fix: draw/show pointGroup not correct when {0 0 0} is not center of model # bug fix: draw pointGroup deletes all draw objects, not just of this model's point group # bug fix: multimodel show pointGroup does not reset when frame is changed # -------------------------------------------------------------- #version=12.0.34 # new feature: (relevant to Macintosh only) COMMAND-SHIFT-LEFT-DRAG same as CTRL-SHIFT-LEFT-DRAG # bug fix: set PICKING OFF nonfunctional # bug fix: unnecessary moveto commands in state # bug fix: CTRL-SHIFT-LEFT on Macintosh must be pressed with LEFT first. go figure... (Old, old problem fixed) # -- problem was that CTRL-SHIFT-LEFT-DRAG specifically was delivered as CTRL-SHIFT-MOVE # -- specifically relates to changing the slab after slab ON # bug fix: isosurface for trajectory not working # bug fix: Var x in function x() not recognized # bug fix: Var data followed by data++ causes syntax error # bug fix: isosurface .... map select {...} not saved properly in state # bug fix: MO HOMO should select highest non-negative value if no occupancy info # bug fix: Spartan reader not reporting HOMO # bug fix: load xxxx.top should default to xxxx.trj for coord files # -------------------------------------------------------------- #version=12.0.33 # new feature: Molden reader filter options INPUT, NOOPT # bug fix: set bondPicking deletes bond # bug fix: Molden reader does not read optimizations # bug fix: Molden reader nonfunctional # bug fix: Spartan reader fails when no MO calculation # bug fix: Spartan MO d6/f10 reader problems # bug fix: load ? broken in 12.0.31 # bug fix: getProperty by itself does not return SORTED list of properties # -------------------------------------------------------------- #version=12.0.32 # bug fix: SMILES generator error for cationic aromatic nitrogen # bug fix: application with file name does not run jmolscript: embedded scripts # bug fix: isosurface x.xx should default to "isosurface CUTOFF x.xx" for legacy compatibility # bug fix: {xxx}.label = "xxx" does not allow saving state # bug fix: {xxx}.element = "B" only assigns "B" to first atom in set # -------------------------------------------------------------- #version=12.0.31 # bug fix: {xxx}.element = "B" does not work # bug fix: JavaScript getPropertyAsArray("auxiliaryInfo.models") will fail for crystal structures # bug fix: undocumented select within(hkl,...) and select within(plane,...) missing # bug fix: message @x should replace x with a variable; "message @x is the value of x" should not # bug fix: older syntax MESSAGE %{x} for variable value missing # bug fix: variable pointers such as @x = 3 and y = 3 + @x not working # bug fix: AMBER CYX not recognized in @cystine definition # bug fix: MD topology/coord file loading problems; general trajectory problems # bug fix: drag/drop CUBE files should use isosurface sign red blue $FILENAME$ # -------------------------------------------------------------- #version=12.0.30 # bug fix: scriptLevelMax 20 too small -- changed to 100 # bug fix: for/while local variables improperly localized in iterative functions # bug fix: 12.0.29 should not have changed + to be # -------------------------------------------------------------- #version=12.0.29 # new feature: | x (for consistency with 12.1) # -- IN PLACE concatenation # -- array1 will be appended to # -- if x is an array of length n, then n elements will be added # -- works as a |= b # -- to append a full array as one element, use a |= [x] # -- to append with creating a NEW array, use a + x or a + [x] instead # bug fix: a = {} initialized as bitset, not associative array # bug fix: | should set bit # bug fix: | should set bits indicated in # bug fix: & should return true if bit is set # bug fix: % n when n < 0 should do "last n + 1" # bug fix: | [a,b,c] should append elements to array -- IN PLACE # bug fix: animation incompatible with spin for largish structures # bug fix: _modelFile variable incorrect for file read from zip file # bug fix: drag/drop file typer null pointer error when not recognized # bug fix: If a script such as "test.spt" creates a function # test(), then the next implicit script command "test.spt" will fail # bug fix: implicit script command Test.spt loses case of filename # bug fix: array appending appends string values # bug fix: array appending of strings should not split them by line # bug fix: frame 0.0 does NOT enable all frames; breaks "quaternion" command # bug fix: isosurface fragment fix # bug fix: cartesian exporter capping cylinders flat and spherical both # bug fix: Jmol logo was missing from the Help>What's New window. # bug fix (improvement): the Help>User Guide window was too narrow. # code: isosurface/color mapping upgraded to 12.1 level # code: ScriptVariable simplified # -- ScriptVariable[]objects --> (ArrayList)value # code: Vector --> List/ArrayList # -------------------------------------------------------------- #version=12.0.28 # bug fix: Jmol 12.0.23+ does not allow load xxx.xxx 1 (single-model load) # bug fix: Jmol 11.9.24+ will read states created by prior versions incorrectly # -- fixed by adding "legacyAutoBonding" setting # bug fix: loading a file on command line does not allow # for write xxxx.jmol to include model file in zip file # bug fix: passing an array to a function does not correctly pass by reference # bug fix: dot function included in array x = [(whatever).something...] fails # bug fix: array sorting for objects # bug fix: creating arrays from variables does not copy variable value # bug fix: draw .... @s does not work for title, but @{s} does # bug fix: ZAP should not set appendNew TRUE # bug fix: load APPEND after ZAP inserts ZAP into state after load command # -------------------------------------------------------------- #version=12.0.27 # bug fix: write MOL writes incorrect charge # bug fix: isosurface SETS or POCKET with DOTS gives too many dots # bug fix: set measurementLabels off not working for ticks # bug fix: draw TRIANGLES not working # new feature: Finnish translation # bug fix: isosurface color mesh blue not working # bug fix: (modelkit) load $PCl5; assign atom ({2}) "C" fails to place H atoms correctly # bug fix: isosurface sets not sorted by number of vertices # bug fix: logFile/logCommands/logGestures should not be saved in state # bug fix: log file cannot be turned off by setting value to "" # bug fix: user-defined function calls should be able to look like Jmol commands, without () # -------------------------------------------------------------- #version=12.0.26 # bug fix: load ... filter "BIOMOLECULE 1" ... broken in 12.0.19 # bug fix: write xxx.jmol can fail if the same file is used twice in two different contexts # bug fix: obj/pmesh file reading problems # bug fix: failure to create atomicOrbital does not clear that isosurface # bug fix: popup menu does not show load {1 1 1} options correctly # bug fix: draw intersection/polygon without vertices does not clear existing object # bug fix: isosurface slab for plane not working # bug fix: space before [ not recognized as significant when following $xxx or {...} # new feature: isosurface/draw .length (also added to 12.1.27) # bug fix: undocumented $isosurface1[3] fixed # bug fix: set echo myecho [x y] after set echo myecho {3 3 3} does not work # bug fix: isosurface set 0 does not display all sets # code: parameterExpression cleanup # -------------------------------------------------------------- #version=12.0.25 # new feature: (part of write MOL bug fix) write SDF creates multi-model SDfile based on models of selected atoms # new feature: (part of write MOL bug fix) write V3000 creates V3000 file; see http://www.symyx.com/downloads/public/ctfile/ctfile.pdf # bug fix: write MOL creates V2000 file # bug fix: over-run of SDF, MOL/V2000 reports error # bug fix: Web Export and write xx.jmol fail for load XXX:: forcing file type # bug fix: GenNBO reader does not read MOs properly # bug fix: GenNBO reader does not read xxx.31 file P orbitals not in X Y Z order # bug fix: applying unit cell in LOAD command to XYZ file containing multiple models # does not convert later model coordinates to fractional ones. # bug fix: assigning array elements using x[i] = pt, where pt is a # variable that is a cartsian point or a plane does not copy variable # bug fix: SMILES generator in certain cases may not return stereochem (c-C(OH)(H)-c) # bug fix: pop-up menu after zap 1.1 in set of two models crashes Jmol # code: V3000Reader integrated into MolReader # code: JUnit test for file reading GenNBO and CIF files lacks viewer object # -------------------------------------------------------------- #version=12.0.24 # bug fix: failure to read properly data "connect_atoms" from state # when struts or hbonds turned OFF # bug fix: 12.0.19-22 fail to write state properly -- saved settings not saved # bug fix: CIF reader does not recognize -1 for _atom_site_disorder_group # -------------------------------------------------------------- #version=12.0.23 # bug fix: isosurface t.obj should be discernable as OBJ if created by PyMOL # bug fix: set drawPicking does not pick visible isosurfaces # bug fix: draw * translucent does nothing # bug fix: isosurface on frame other than first will be incorrect # bug fix: draw with multiple models can fail to save state # bug fix: SMILES check for c=c can fail. # bug fix: Mopac MGF reader upgrade allows orbital subset # bug fix: Mopac MGF reader upgrade allows filter "alpha", filter "beta" # bug fix: isosurface OBJ pymol.obj not reading Pymol output # bug fix: appending data to models with unit cells can cause odd results # bug fix: JME load append does not get saved properly in state # bug fix: relaxing single-model requirement for isosurface for SELECT option # as long as only a single model's atoms are selected # (Jmol 12.1 goes further, allowing for this for preselected atoms) # bug fix: bond set variables [{1 2 3}] incorrectly shown as atom bitsets ({1 2 3}) # bug fix: xxx.yyy when "yyy" has been defined as a local variable using VAR fails # bug fix: find("SMILES", smilesString) does not find Jmol atomIndex == 0 # bug fix: find("SMILES", smilesString) does not find [2H] # -------------------------------------------------------------- #version=12.0.22 # bug fix: Jmol SMILES generation does not include stereochemistry # for octahedral and trigonal bipyramidal # bug fix: IDTF exporter inverts rotation matrix from pt1, pt2, for dx = dy = 0 # bug fix: Linux file completion from LOAD " improperly lowers the case of file names # bug fix: zap 1.1 when models have cartoons or other bioshapes crashes Jmol (broken in 12.0.RC8) # bug fix: Ramachandran approximation of P straightness off by a few percent # bug fix: SMILES matching string with ".[C@H]" reads stereochemistry incorrectly # bug fix: load SMILES with %nn fails # bug fix: Jmol creating possibly ambiguous aromatic amine SMILES # 1-H-4-methylimidazole was: n1cnc(C)c1; now: [nH]1c[n]c(C)c1 # bug fix: {*}.find("SMILES",smilesString) does not include aromatic H # bug fix: Smiles MF calculation for aromatic atoms N and C in error. # NOTE: Jmol may undercount the number of hydrogen atoms # for aromatic amines where the ring bonding to N is # not explicit. Each "n" will be assigned a bonding count # of two unless explicitly indicated as -n-. # Thus, we take the position that "n" is the # N of pyridine unless otherwise indicated. # # For example: # $ print "c1ncccc1C".find("SMILES","MF") # H 7 C 5 N 1 (correct) # $ print "c1nc-n-c1C".find("SMILES","MF") # H 6 C 4 N 2 (correct) # but # $ print "c1ncnc1C".find("SMILES","MF") # H 5 C 4 N 2 (incorrect) # -------------------------------------------------------------- #version=12.0.21 # bug fix: popup submenu "file" only enabled for application or signed applet # bug fix: load xxx.jmol broken in 12.0.20 # bug fix: write JMOL missing from popup menu # -------------------------------------------------------------- #version=12.0.20 # bug fix: WRITE PDB not padding to 80 char # TODO: WRITE PDB not adding TER records # bug fix: PDB reader not flagging models as PDB properly when all groups are same amino acid # bug fix: no callback for ZAP model=1 # bug fix: set picking invert stereo/delete atom not sending pick callback # bug fix: Argus .agl reader not setting viewpoint transform # bug fix: load xxx where x is a flawed data file can try to load file as a script or isosurface # bug fix: compiler function(){{ double brace error # bug fix: compiler context { var chain=3;print chain } not recognizing context variable for "chain" # bug fix: PDB reader not reading files with empty group name field # bug fix: popup menu does not include measure SEQUENCE # bug fix: set picking measure SEQUENCE not reporting to application console # bug fix: set picking chain, then mouse click does not report number of atoms selected # bug fix: LINUX file dropper returning \r\n with name # bug fix: DRAW $xxx reverses order of points # bug fix: load PACKED for slab/polymer does not work # -------------------------------------------------------------- #version=12.0.19 # bug fix: load "" does not work after loading a SET of models using load DATA # bug fix: CIF reader cannot read files with _space_group_symop_operation_xyz field # bug fix: naming functions or variables after Jmol token names fails or acts unexpectedly # (fixing this bug required script compiler changes, and that lead to the # two new features below) # # bug fix: "var chains" does not work -- i.e. a name of a "within" option. # solution was to allow var ANYTHING. # # bug fix: User variables and functions removed from state because they are # no longer necessary and also indeterminant in terms of the "state". # Originally these were needed because ECHO and DEFINE can be dynamic # -- which is still true -- and because certain commands such as ISOSURFACE # were being saved in the state just as their strings instead of their # intepreted code. But that was changed for 12.0, and this fix also changes # ECHO to be saved in its current state, not its dynamic state. While # dynamic DEFINE types may include variables, they aren't really # part of the "state" per se and aren't needed to recreate the state. So # they are dropped from the state with this fix as well. # # new feature: function calls can look like Jmol commands (also added to 12.1.16): # function myfunc(a, b, c, d){....} # myfunc a b c d # -- these are MATHEMATICAL commands # -- use just a b, not @a @b # # new feature: custom overloading of Jmol commands (also added to 12.1.16) # function measure(a, b) { print "measuring " + a + " " + b; measure @a @b } # measure {atomno=2} {atomno=3} # -- within function X, command X is standard Jmol; # -- outside the function, it is a reference to that function # -- overloaded functions are not saved in the state # # new feature: load xxx.pdb filter "CONF 1" does a front-end filter of just # the first alt-loc atoms within a given residue. This leads to proper # formation of polymers in certain cases (2BLN, 2CI1). (necessary for DSSP) # bug fix: cartoon helix in 1TF6 broken by DSSP HHHGGG run # bug fix: not loading MOL files having no bonds # bug fix: load append INLINE ... not working # bug fix: max for Rasmol/chime units 499 -- should be 1000 # bug fix: show state/xxxx incorrectly case-sensitive # code: undocumented load RANGE [i, j, k,...] removed (see load MODELS) # code: load FILTER clean-up, standardization # -------------------------------------------------------------- #version=12.0.18 # bug fix: QCHEM reader fails # bug fix: CRYSTAL reader fails to read formico_opt.out # bug fix: CIF reader not reading insertion codes (since forever!) # bug fix: set appendNew FALSE fails # bug fix: getproperty IMAGE (returning JPG64) doubles font size with set antialiasDisplay true # bug fix: "configuration 1" should select all if no alternative locations # bug fix: isosurface "xxxx.jvxl" colorscheme "rwb" does not work (jvxl files specifically) # # note: exception made to rule of not adding new features -- DSSP is just too good! # # code: addition of DSSP from 12.1.15_dev # code: removal of unnecessary structure class in ModelCollection # # new feature: Accurate DSSP structure determination should be identical to DSSP # # calculate structure # default DSSP -- new way # calculate structure RAMACHANDRAN # old way # calculate HBONDS STRUCTURE # DSSP structure-determining hydrogen bonds only # # save structure s1 # for example, save the authors' structure assignment # restore structure s1 # # color cartoons STRUCTURE # additional hues for helix310 and helixPI # # show DSSP -- DSSP report # set DEBUG -- verbose DSSP calculation # # set defaultStructureDSSP # --default TRUE # --on load, if PDB file has no HELIX/SHEET records, use DSSP to calculate # --for calculate structure, with no arguments, use DSSP # --setting this FALSE gives previous behavior (Jmol Ramachandran calculation) # set dsspCalculateHydrogenAlways # --default TRUE -- standard DSSP, ignoring all file backbone amide H atoms # --set to FALSE to ensure that file-based NH atoms are used instead of rough approximations # # select helix310 # select helixalpha # select helixpi # try this with 2JC9 for a DSSP >>555<< run # select substructure = 7 # DSSP "G" -- 3/10 helices # select substructure = 8 # DSSP "H" -- alpha helices # select substructure = 9 # DSSP "I" -- pi helices # # label {*.ca} %[substructure] # # STRUCTURE HELIXALPHA .... # STRUCTURE HELIX310 .... # STRUCTURE HELIXPI .... # # PDB and CIF readers read helix types 1 (alpha), 3 (pi), and 5 (3/10) # # feature change: DSSP default for "calculate structure" # -- old way is now "calculate structure RAMACHANDRAN" # feature change: DSSP default for LOAD of PDB file with no header. # in previous versions, Jmol used a ramachandran-angle-based calculation # for secondary structure determination when a PDB file had no HELIX or SHEET records. # It just seems reasonable to use the industry-standard DSSP method instead. # # -------------------------------------------------------------- #version=12.0.17 # bug fix: s = x[i] list variables all broken # bug fix: load FILTER does not include %x for PDB files # bug fix: conformation n definition changed for PDB files to be consistent with DSSP # -------------------------------------------------------------- #version=12.0.16 # bug fix: hetero group protein check should not care about C CA N O file order (1YC5) # bug fix: conformation not working when an alternate location is for key atoms such as N, C, O, CA # bug fix: loading a multi-structure PDB file with CONECT bonding may not autobond (2q3t) # bug fix: undocumented save STRUCTURE not working for initial structure state # bug fix: measure search("...{X}....{X}...") does not work # bug fix: calculate structure only works with last model loaded # bug fix: calculate structure after zap x.y fails # new feature: load reports model count and overall number and model number for MOs # bug fix: GAMESS reader (US) not reading full atom name such as "MOLYBDENUM" # bug fix: load append after calculating structure recalculates structure for other models # bug fix: calculate structure does not target selected model # bug fix: bioshapes not clearing automatically after calculate STRUCTURE # bug fix: switch DEFAULT not working # bug fix: label %1 will cause exception # bug fix: load '@x' not saved properly in state # bug fix: arrays of hashtables and other more complex variables not being saved or created in usable form # bug fix: isosurface MEP with multiple frames fails on second isosurface # bug fix: //comments not searched properly for GOTO operation # bug fix: data "connect_atoms" does not update bond diameter, order, or energy # bug fix: %8.4VALUE still truncating in set defaultdistancelabel # new feature: (simple enough to add this here) new 5th parameter for measureCallback is actual, unrounded value # -------------------------------------------------------------- #version=12.0.15 # bug fix: unbind unknownName unbinds LEFT mouse! # bug fix: Safari slideZoom issue upon leaving and returning to applet (mouse MOVE not issued by OS) # bug fix: naming a variable after a function name such as "color" should be allowed # bug fix: "smilesString" changed to "_smilesString" and properly set # bug fix: Application filename for $xxxx not properly set # bug fix: MEP menu item is using MOLECULAR with default range; should be using VDW with range ALL # bug fix: unescaped spaces in load "$ethyl ether" cause fault at NIH. # bug fix: switch to String smilesUrlFormat = "http://cactus.nci.nih.gov/chemical/structure/%FILE/file?format=sdf&get3d=True"; # bug fix: error writing isosurface color density JVXL file # bug fix: catch without catch(e) causes exception # bug fix: isolated H atoms when calculating hydrogen bonds causes exception # bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT" # bug fix: calculate structure requiring {xxx} # code: deprecated "commandOption" shape property removed # -------------------------------------------------------------- #version=12.0.14 # bug fix: reading unmapped isosurface from JVXL files broken in 12.0.13 # -------------------------------------------------------------- #version=12.0.13 # two new features added retroactively: # new feature: set multipleBondRadiusFactor 0.75 # new feature: multipleBondSpacing # set multipleBondSpacing = -1 (default, varies with viewing angle) # set multipleBondSpacing = -0.5 (half that distance; varies with viewing angle) # set multipleBondSpacing = 0.35 (positive ==> fixed multiple bond spacing) # bug fix: MO NOPLANE not working # bug fix: isosurface map MEP not as accurate as could be # bug fix: SmarterJmolAdapter should not read zip bytes it doesn't have to # bug fix: spacefill JMOL does not work # bug fix: Jmol 12 does not read old 11.1 isosurface commands from states # bug fix: load {i j k} RANGE x.x not expanding load box by 1 in each direction # bug fix: applet console does not display startup message # bug fix: undo/redo problems in AppConsole # bug fix: crystal reader can't read selected model # bug fix: 3.5E+0.0 read as "3.5 0.0" # bug fix: navY/navy color issue # bug fix: write PDB for nonPDB files incorrect # -------------------------------------------------------------- #version=12.0.12 # code: StatusManager update # bug fix: mep color range error (12.1.9, 12.0.11) # color structure for carbohydrate fails # new feature: reset SPIN # bug fix: reset should not reset spin (introduced in 11.7.47); new RESET SPIN includes reset spinning # bug fix: SMILES generator allowing sp3 center in aromatic # bug fix: storing atom properties from CrystalReader messes up model atom bitset # bug fix: non PDB large molecule should not change default rendering # bug fix: PDB large molecule default rendering flaws # -------------------------------------------------------------- #version=12.0.11 # bug fix: color label none when already none and after rendering for multi-line labels or with antialiasdisplay crashes Jmol # bug fix: lcaoCartoon p orbitals for CO2 # bug fix: isosurface ISSQUARED # bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray) # bug fix: color PROPERTY x with set rangeSelected does not work # bug fix: isosurface contour colors # bug fix: #....... #.... two # in one line with first in first character fails # bug fix: isosurface plane problems # bug fix: set drawHover isosurface hover error kills hover watcher # code: AtomPropertyMapper isolated from IsoSolventReader # bug fix: isosurface "t.jvxl" map property temperature nonfunctional # bug fix: isosurface PROPERTY ("VDW 100%" implied) not working # code: rewrite of calculateHydrogen/hybridization code # bug fix: WRITE xxx should do SHOW not clipboard for application # bug fix: % at end of line acts as a line continuation # new feature: lcaoCartoons dsp3 (a,b,c,d,e), d2sp3 (a,b,c,d,e,f) # (added because it is just an extension of lcaoCartoons and has been # asked for repeatedly) # bug fix: "sp3a" not "first bonded atom" # bug fix: failure to read old-style JVXL files. # -------------------------------------------------------------- #version=12.0.10 # bug fix: reading nth model from a file within a ZIP collection not possible # bug fix: LcaoCartoon capping/slabbing not saved in state # bug fix: zip file reading broken in 12.0.9 # bug fix: isosurface planar mapping, contours, atomic orbital speed and scaling problems # code: MarchingSquares total rewrite # bug fix: oops; isosurface atomicOrbital REALLY not scaling well # -------------------------------------------------------------- #version=12.0.9 # bug fix: isosurface atomicOrbital not scaling well # bug fix: undo and smilesurlformat tokens missing # bug fix: isosurface ... map SQUARED ... nonfunctional # bug fix: exit, quit are stopping spinning -- should just be stopping moveTo # unless !exit or !quit. # bug fix: associative array problems with some auxiliaryInfo data saving to state # bug fix: binary map files within zip directories cannot be read # bug fix: mouse-based slab does not refresh # bug fix: JME reader misreading "Br+" # bug fix: Writing PDB file with residue number > 9999 trashes file. Now writes "0000" "0001" etc. # -------------------------------------------------------------- #version=12.0.8 # bug fix: very first start of Jmol, with no history, fails. # bug fix: QChem reader not indicating symmetry A B properly # bug fix: QChem reader filter "BETA" fails # bug fix: obscure error when array variable is in place of required expression # bug fix: ColorEncoder not allowing for override of BW and WB palette # bug fix: GAMESS reader UHF caught on reading orbitals with LZ VALUE line # -------------------------------------------------------------- #version=12.0.7 # bug fix: set defaults RASMOL broken # bug fix: CRYSTAL reader FREQUENCY needs fragment numbers sorted # bug fix: rotation QUATERNION broken by 11.9.36, Mar 25, 2009 - Does not rotation about {0 0 0} # bug fix: CURSOR_WAIT hourglass not turning off automatically after set picking JmolScript operation # bug fix: associative array function .keys should report sorted key list # bug fix: associative arrays as ScriptVariables must be checked for type # bug fix: isosurface color range should not carry over to general "color property" # bug fix: isosurface colorscheme TRANSLUCENT "xxx" fillTriangle error # bug fix: should not allow isosurface ... map colorscheme "xxx" TRANSLUCENT # bug fix: CRYSTAL reader FREQUENCY when input deck is missing VIBRATION record # -------------------------------------------------------------- #version=12.0.6 # bug fix: CRYSTAL reader orientation error # bug fix: show info not showing molecule info # bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL # bug fix: broken selectExtended mode # bug fix: some isosurface display properties not generalized to wildcard # bug fix: Parallel processing not creating process-specific copies of shapes # bug fix: load unitcell for slab/polymer should allow 0, not just -1 # bug fix: SMILES generator should not produce stereochemistry for RX2R' # -------------------------------------------------------------- #version=12.0.5 # bug fix: set picking invertStereo not working for non-ring stereocenters # bug fix: SmilesGeneration stereochemistry error # bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1) # bug fix: "CCCC".find("SMARTS","CCC") should return [1,5,8,11] (other returns [] and "?" # bug fix: proper "false AND"/"true OR" action where second operand is skipped # -------------------------------------------------------------- #version=12.0.4 # bug fix: SmilesGeneration fails for double bond stereochemistry # bug fix: documented within("SMILES",...) missing and required for SmilesGenerator # bug fix: select within(branch,{},{}) exception # bug fix: "sheet" token missing, so select within(sheet) fails # -------------------------------------------------------------- #version=12.0.3 # bug fix: struts not restored from state # bug fix: color STRUTS also colors hbonds # new feature: Application Display menu item "resize" # bug fix: draw CYLINDER n ... where n is an integer does not give flat ends # bug fix: PNG file state for multiple file load cannot be read # bug fix: Jmol application not accepting -g # bug fix: "no atoms found returns wrong error message # bug fix: XYZ reader fails with load "filename" 3 # bug fix: "[1,3,4,5]" can be translated to [1,3,4] # bug fix: slab/depth mouse action does not automatically refresh # -------------------------------------------------------------- #version=12.0.2 # bug fix: draw arrows are being FIXED in state # bug fix: try/catch in functions not implemented correctly # bug fix: SMILES nested $(...) broken # bug fix: binary pmesh reader broken # bug fix: better coding for isosurface file typer # bug fix: print write("ramachandran") # bug fix: reading background images from PNG images within zip files # bug fix: write xxxx.jmol zip sets cannot be read # bug fix: binary surface readers map and ccp4 can misread file type # bug fix: isosurface "=xxx" missing check for isSyntaxCheck # -------------------------------------------------------------- #version=12.0.1 # July 29, 2010 # bug fix: isosurface slab for polymer/slab symmetry # -------------------------------------------------------------- #version=12.0.RC29 # bug fix: VRML/X3D ellipsoids # code: IDTF/VRML/X3D writing of ellipsoid arcs and fill made more efficient # bug fix: .....@{"text" ...} not read as exprssion # bug fix: hover OFF not turning off bond hover # -------------------------------------------------------------- #version=12.0.RC28 # bug fix: Jmol Model Kit broken :{ # bug fix: PROMPT command need not require @{...} # bug fix: a = {} needs to default to ({}) (empty bitset) # bug fix: alternative select @b[a] # bug fix: allowance for b["test"][1][3] # -------------------------------------------------------------- #version=12.0.RC27 # new feature: prompt(label,data,asButtons) # x = prompt("testing") # just shows an OK box # x = prompt("testing","defaultInput") # returns user input or "null" # x = prompt("testing","yes|no|cancel", true) # returns "yes" "no" or "cancel" # x = prompt("testing",["yes","no","cancel") # returns 1, 2, or 3 # # new feature: associative arrays: # # b = {"test" : 34, "test2" : 45} # b["test"] = 35 # b["test3"] =[2, 3, 4, 5] # print b["test"] # # 35 # # show b # # b = { "test3":[2, 3, 4, 5],"test2":45,"test":35 } # # b -= "test3" # show b # # b = { "test2":45,"test":35 } # # # bug fix: SELECT logic error with ! in front of a chain specification # such as * and ! 56:B%1. This was tranlating to # * and ! 56 and :B and %1 # but then ! has higher precidence then and, so # this was "* and (! 56) and :B and %1" instead of # "* and ! (56 and :B and %1" # solution is to add a very high-precidence AND # that trumps NOT. Discovered by Paul Pillot. # new feature: fux, fuy, fuz, fuxyz, and set fractionalRelative # bug fix: dots 150% # new feature: failed file loading with try/catch is caught # new feature: try/catch: # load quartz.cif # refresh # var x = 1 # print "outside, x = " + x # while(true) { # has its own local variables # print " inside while, x = " + x # x = 2 # print " setting x = " + x # try{ # has its own local variables # print " inside try, x = " + x # var x = 3 # print " setting x = " + x # print "TEST1" # load "adfkjd" # will be caught # } # catch(e) { # has its own local variables # print " inside catch, x = " + x # var x = 4 # print " setting x = " + x # prompt @e # break # from WHILE # } # print " after catch, x = " + x # x = 5 # print " setting x = " + x # print "out" # break; # } # print "way out" # print "outside, x = " + x # bug fix: inconsistent unitcell coordinate operations # {1 1 1/2} should be absolute # {...}.fxyz should be absolute # select cell=555 should be absolute # {...}.uxyz should be relative to current UNITCELL # .... hkl {h k l} should be relative current UNITCELL # select UNITCELL should be relative current UNITCELL # draw intersection UNITCELL... should be relative current UNITCELL # isosurface LATTICE {x y z} should be relative to current UNITCELL # # bug fix: RC15 connect DELETE may malfunction when two sets of atoms intersect # bug fix: minor isosurface tweaks -- triangles, gridlines, hover, click # bug fix: hover OFF -- should not prevent hoverCallback # bug fix: x = {*:} causes error # new feature: SWITCH/CASE # -- more like JavaScript than Java # -- like JavaScript, doesn't need constants # -- like JavaScript, evaluations can be made in the cases # -- really just a simpler form of IF/ELSEIF/ELSE # -- expressions are evaluated only as necessary from the top down # -- DEFAULT may appear anywhere. # # switch(x) { # case 0: # case 1: # spacefill only # break; # default: # case 2: # wireframe only # break; # case 3: # wireframe only;wireframe reset;spacefill reset # break; # } # -------------------------------------------------------------- #version=12.0.RC26 # bug fix: pause/resume cause multiple unnecessary refreshes # bug fix: pause/resume can fail if user enters a script command error # bug fix: deleted atoms and atoms not in subset might be included in certain operations # such as coloring, {..}.select = ..., and more # bug fix: "halos ON" should always default to "just larger than current spacefill size" and # adjust size with spacefill size in that case # new feature: PROMPT command with 0 or 1 arguments # # new feature in JmolColorPicker.js--jmolColorPickerBox now accepts object inplace of script # to allow execution of another function rather than a Jmol Script (much like Jmol.js # functions). # completion of refactoring of JmolColorPicker.js (and corresponding changes in Widgets.java). # code: IDTF,VRML,X3D export all simplified camera calculations # TODO: Still have not discovered how to install the right light for a model # new feature: JMOL IN PDF FILES :) # new feature: write t.idtf ---> t.itdf and t.idtf.tex # In order to create U3D files, we start with IDTF, which is an ASCII-based format # The sequence is: # JMOL: write t.idtf # SHELL: idtfconverter.exe -input t.idtf -output t.u3d # SHELL: pdfLatex t.idtf.tex t.pdf # (not sure about that last syntax -- I'm using the GUI MikTex TeXworks interface # to load the t.idtf.tex file and run it. # In general, users will not need t.idtf.tex, because they will want to integrate # the model into some other document, but this file serves as a template and model # should they need that, and it is excellent for testing purposes # bug fix: nucleic acid rendering for VRML and IDTF/U3D missing bases and connectors # bug fix: polyhedra rendering can end up with reversed normals # bug fix: wireframe 0 rendering too small in VRML and IDTF/U3D # -------------------------------------------------------------- #version=12.0.RC25 # new feature: isosurface MAP MEP ... VARIABLE x applies variable data to MEP mapping # new feature: "load =xxxx AS ." "." means "into the default directory; same name" # bug fix: "large molecule" PDB files need stars for unconnected atoms # new feature: load =xxxx defaults to read pdb.gz; load =xxxx.pdb reads .pdb file # bug fix: Jmol could not read its own CML output # bug fix: %5.-5i overflow off by one digit in precision # new feature: SMILES /nostereo/ /noaromatic/, not just SMARTS # bug fix: TestSmiles incorrectly assigning bonds in ...[C@H]1... # bug fix: write PDB not correctly justifying atom names # new feature: auxiliaryInfo.compndSource for PDB files # bug fix: console cleared at end of script with set debugScript # bug fix: load $CCCC or =xxxx AS file.name not working without quotes # bug fix: polyhedra miscalculation in VRML and IDTF export # bug fix: multiple-model data statement with ~~~ broken # new feature: data "model..." and data "append..." command # deprecated and merged with load command: # load data "model xyz".....end "model xyz" ... # allows full parameterization of data loading # new feature: clickCallback adds parameter mode: # // for status messages: # public final static int DRAGGED = 1; # public final static int CLICKED = 2; # public final static int WHEELED = 3; # public final static int PRESSED = 4; # public final static int RELEASED = 5; # new feature: loadStructCallback adds parameters previousCurrentModelNumberDotted and lastLoadedModelNumberDotted # new feature: spartan loader adds filter "noMo" but that isn't particularly useful, probably. # bug fix: isosurface color density not quite getting desired points plotted # bug fix: do nothing after widget checkbox click if no instances (fixes array out of bounds). # bug fix: loading using append with appendNew false may not make bonds # bug fix: SMARTS searching of "or" type primitive nested groups fails # new feature: 3D-SEARCH /noStereo/ flag # bug fix: SMARTS searching with || and measures can fail # new feature: plot PROPERTIES propertyX propertyY [propertyZ] [[min {x y z}] [max {x y z}]] # added min/max allows for truncation of data # new feature: applet console also reports version in title # bug fix: STATE button in console problem in that in some browsers, you cannot clip from # new feature: data model can accept filter=xxx, as in data "model filter=2D" ... # bug fix: It was a mistake to comment out set defaultLoadFilter in the state # as this is needed for inline string state saving. # bug fix: {xxx}.trace = {xxxx}.property_xxxx.all not working # bug fix: connect...auto also creates HBONDS # new feature: preliminary write ... http://.... # -------------------------------------------------------------- #version=12.0.RC24 # bug fix: write("COORDS","PDB") and other cases -- can't recognized upper-case first parameter # bug fix: x = write("PDB") when the file is not a PDB file crashes Jmol # new feature: within("SMILES"...) REMOVED # new feature: within("SMARTS"...) REMOVED # bug fix: SMILES string self comparison could give wrong stereochemistry # bug fix: PDB files without MODEL command can lose first atom # new feature: set dotScale # new feature: show SMILES # new feature: set defaultLoadFilter works with JavaScript loadInline() # bug fix: SMILES not showing stereochemistry involving H # bug fix: "...".find("SMARTS", "/noaromatic/...") not working # bug fix: much speedier mapProperty when all three properties are numeric # bug fix: 3D-SMARTS search combining variable number of atoms [$(...)m-n] and distance # check (.d:min-max)...(.d) fails # bug fix: load FILES does not properly set full path name to files. # bug fix: ramachandran R plot not writing extra straightness measure properly # bug fix: javascript command broken # bug fix: "file 0; mo homo; file 1; animation on" does not generate MO animation # bug fix: Spartan smol reader skips first ("output") section. # -------------------------------------------------------------- #version=12.0.RC23 # feature change: quaternionFrame 'A' now 'B' # bug fix: documented quaternionFrame 'Q' returned (though not useful) # bug fix: readers might shift center of mass (normalize) # when CIF file models are loaded without a unit cell indication. # now set to not do that. You wouldn't notice it particularly unless you # later turned on the unit cell and noticed that the atoms were off # or you know the file data coordinates and notice that picked atoms have # different ones. # new feature: eta/theta atom properties -- nucleic acid conformation # Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle # RNA structure comparison, motif search and discovery using a reduced # representation of RNA conformational space # Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761 # eta (C4_i-1 - P_i - C4_i - P_i+1) # theta (P_i - C4_i - P_i+1 - C4_i+1) # # new feature: PLOT PROPERTY propertyX propertyY (optional propertyZ) # makes a graph for the currently selected atom set # also equivalent for quaternion and ramachandran commands, but preferred for # # plot quaternion... # plot ramachandran... # # deprecated: quaternion, ramachandran # # new feature: mapProperty {atomSetFrom}.property1 {atomSetTo}.property2 (optional propertyKey) # Allows mapping of property data from one set of atoms to another # based on a key such as atomno or resno (default atomno). # Property2 must be "settable". # also mapProperty SELECTED {atomSet} key # same as mapProperty {selected}.selected {atomSet}.selected key # For example, creating a quaternion map, then mapping that data # with straightness, and then selecting a very specific subset of # the quaternion data and using that selection to select data # in the original model: # # load 3cc2.pdb # calculate straightness # set quaternionframe 'B' # quaternion r difference # display {rna} # mapProperty {1.1 and *.P}.straightness {2.1 and rna}.property_x resno # select 2.1 and rna; color property_x;spacefill 0.1 # select 2.1 and rna and within(2.0,{1.7700001 -0.49 2.62}) # mapProperty selected {1.1 and *.P} # # new feature: quaternionFrame "B" for nucleic C4'/P/C4' # # feature change: quaternionFrame "C" for nucleic acids now # set as per: # Sarver M, Zirbel CL, Stombaugh J, Mokdad A, Leontis NB. # FR3D: finding local and composite recurrent structural motifs in RNA 3D structures. # J. Math. Biol. (2006) 215-252 # # new feature: print {selected}.find("SEQUENCE") # returns 1-letter sequence for selected atoms # new feature: print {selected}.find("SEQUENCE", true) # returns 1-letter sequence for selected atoms, with cross-links: # # $ load 1crn.pdb # $ show sequence # # Model 1 # Chain A: # [THR]1 [THR]2 [CYS]3 [CYS]4 [PRO]5 # [SER]6 [ILE]7 [VAL]8 [ALA]9 [ARG]10 # [SER]11 [ASN]12 [PHE]13 [ASN]14 [VAL]15 # [CYS]16 [ARG]17 [LEU]18 [PRO]19 [GLY]20 # [THR]21 [PRO]22 [GLU]23 [ALA]24 [ILE]25 # [CYS]26 [ALA]27 [THR]28 [TYR]29 [THR]30 # [GLY]31 [CYS]32 [ILE]33 [ILE]34 [ILE]35 # [PRO]36 [GLY]37 [ALA]38 [THR]39 [CYS]40 # [PRO]41 [GLY]42 [ASP]43 [TYR]44 [ALA]45 # [ASN]46 # # $ print {*}.find("sequence") # # //* chain A protein 1 *// ~p~TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN //* 46 *// # # $ print {*}.find("sequence", true) # # //* chain A protein 1 *// ~p~TTC:1C:2PSIVARSNFNVC:3RLPGTPEAIC:3ATYTGC:2IIIPGA # TC:1PGDYAN //* 46 *// # # bug fix: state save for quaternion/ramachandran data frames fails # bug fix: Spartan reader not reading MOs when there is only one atom (AOs, that is) # bug fix: bioSMARTS search including first group # bug fix: MOReader (Gaussian, GAMESS) fix for NBO cartesian D/F orbitals # bug fix: atom deletion can result in array length error # bug fix: Application rubber-band selection mode not allows atom pick to be selection toggle # -------------------------------------------------------------- #version=12.0.RC22 # bug fix: bioSMILES "~C:1.~G:1" fails # new feature: axes center {x y z} # new feature: data "connect_atoms" (for state with large number of connections) # new feature: set picking measure sequence # bug fix: rotate symop not functional for some symops # bug fix: phosphorus-only polymer quaternions not operational # bug fix: 3D-SMARTS multiple nesting # new feature: 3D-SMARTS [$(...)n] # new feature: 3D-SMARTS [$(...)nMin-nMax] # new feature: 3D-SMARTS pattern1 || pattern2 # new feature: data "property_atom.xxxx" can be used like "property_xxxx" but xxxx must be a # settable atom property, which it will set. # bug fix: 11.6.RC15 introduced {*}.property_x same as {*}.x. But that is # not documented, and those are supposed to be different. The proper way to do this is: # data "property_x" # ... # end "property_x" # {*}.partialcharge = data("property_x") # -------------------------------------------------------------- #version=12.0.RC21 # new feature: set cartoonBaseEdges # displays nucleic acid bases as triangles # Red:sugar edge, Green:Watson-Crick edge, Blue:Hoogsteen edge # see Nasalean L, Strombaugh J, Zirbel CL, and Leontis NB in # Non-Protein Coding RNAs, Nils G. Walter, Sarah A. Woodson, Robert T. Batey, Eds. # Chapter 1, p 6. # http://books.google.com/books?hl=en&lr=&id=se5JVEqO11AC&oi=fnd&pg=PR11&dq=Non-Protein+Coding+RNAs&ots=3uTkn7m3DA&sig=6LzQREmSdSoZ6yNrQ15zjYREFNE#v=onepage&q&f=false # bug fix: NOS (inosine) not given 1-letter code I # bug fix: quaternion({atom expression}) returning array # new feature: (undocumented) quaternion({atom expression}, nMax) # - returns array of values. # bug fix: state preserved for modelkitmode # new feature: bioSEQUENCE () indicates "not cross-linked": select search("~r~C()~") # new feature: bioSEQUENCE subsets ~p~, ~n~, ~r~, ~d~ # new feature: bioSEQUENCE wildcards N (same as * for ~n~, ~r~, or ~d~) # R (same as [A,G] for ~n~, ~r~, or ~d~) # Y (same as [C,T,U] for ~n~, ~r~, or ~d~) # bug fix: acceptance of curly " from Microsoft Word text clipping in scripts # bug fix: lcaocartoon cap broken # bug fix: isosurface boundbox not read from state # bug fix: translucent isosurface colorscheme saved but not read from state # new feature: modelkit mode invert ring stereochemistry # bug fix: application select-atoms toolbar button nonfunctional # new feature: set picking symmetry (undocumented) # -------------------------------------------------------------- #version=12.0.RC20 # bug fix: JVXL XML reader error with "/>" in data attribute # bug fix: select within(5.0, {0 0 0}) nonfunctional # bug fix: MO fix for df order in model sets containing NBO and non-NBO orbitals # bug fix: font MEASUREMENTS ... # bug fix: QChem reader MO fix # bug fix: G orbital skipping # bug fix: WebExport creates directories in directories # bug fix: SMARTS C(CCCCN1)1 fix. # bug fix: removing rule that a SMILES string cannot end with a branch. # bug fix: log "NOW" changed to log "$NOW$" # bug fix: log "$CLEAR$" clears the log file # bug fix: syntax "else { [eol]" not functional # -------------------------------------------------------------- #version=12.0.RC19 # bug fix: QChem reader MO fix # bug fix: MO using cartesian instead of spherical D orbitals. # bug fix: modelKitMode replacing atoms with H # bug fix: bioSMARTS X:Y problem # bug fix: set logLevel (with no arguments)/show logLevel # bug fix: alas, MEP mapping has been in Bohr, not Angstroms. Values are actually 1.89x prev. calculation # default range set to -0.1 to 0.1 for MEP and MLP. # new feature: atomic lipophilicity mapping (MLP) and generalized MEP: # isosurface sasurface map MLP|MEP [function type (integer 0 to 3)] [resource fileName] # isosurface sasurface map MLP|MEP [function type (integer 0 to 3)] [property_xxxx] # isosurface sasurface map MLP|MEP [function type (integer 0 to 3)] [property propertyName] # The defaults are: # isosurface sasurface map MEP 0 property partialCharge # isosurface sasurface map MLP 3 "http://jmol.svn.sourceforge.net/viewvc/jmol/trunk/Jmol/src/org/jmol/quantum/atomicLipophilicity.txt" # Implemented here is a flexible way of mapping atomic potential data onto # a surface. Given a set of atoms, we assign numbers to the atoms from: # # a) a resource in this package and based on atom names, or # b) a table of data read from a file and based on atom names, or # c) an array of properties assigned to the atoms. # # In addition, once those potentials are assigned, we can apply a variety # of functions of distance: # # (0) Coulomb's law distance function (same as rasmol potential distance function) # (1) f * e^(-d/2) # Gaillard, P., Carrupt, P.A., Testa, B. and Boudon, A., J.Comput.Aided Mol.Des. 8, 83-96 (1994) # (2) f/(1 + d) # Audry, E.; Dubost, J. P.; Colleter, J. C.; Dallet, P. A new approach to structure-activity relations: the "molecular lipophilicity potential". Eur. J. Med. Chem. 1986, 21, 71-72. # (3) f * e^(-d) # Fauchere, J. L.; Quarendon, P.; Kaetterer, L. Estimating and representing hydrophobicity potential. J. Mol. Graphics 1988, 6, 203-206. # from http://www.life.illinois.edu/crofts/bc1_in_chime/chime_talk/chimescript2.html # The difference between MEP and MLP is simply the defaults for resource and function: # # a) the default resource is property partialCharge for MEP and atomicLipophilicity.txt for MLP # b) the default function is Coulomb for MEP and Fauchere for MLP # bug fix: make WebExport Widgets compatible with IE6 through 8 # bug fix: isosurface vdw map ... not working # new feature: preliminary molecular lipophilic potential. # isosurface vdw map MLP # new feature: bioSMARTS indicates all cross-linking for carbohydrates # bug fix: name conflicts in WebExport Widgets js files. # bug fix: table now wide enough for colorpicker popup in WebExport. # bug fix: angstroms measurement unit not showing up as proper A symbol. # new feature: measure search("Ocnc") # or measure search "Ocnc" # - operates on previously selected atoms # bug fix: application -- set modelkitmode does not feedback to buttons # SMILES/SMARTS options summary: # # examples: # # selecting atoms using SMARTS: # # select search("CC") // selects ALL matching atoms using SMARTS notation # select search("CC", 1.1) // same as above, but within model 1.1 # select smarts("CC") // would match ethane, exclusively # # assigning variables based on SMARTS: # # x = {1.1}.find("CC") // assigns a single bitset to all matching atoms # x = {1.1}.find("CC", true) // same as above, but returns an array of pattern matches # n = {1.1}.find("CC", true).length // counts the number of matches # # SMILES string comparison and searching: # # x = "CC(C)CC".find("smiles","CCC(C)C") // smiles matching -- returns an array of length=1 # x = "CC(C)CC".find("smarts","CCCC") // returns a bitset containing all atoms # x = "CC(C)CC".find("smarts","CCCC", true) // returns an array of bitsets containing the pattern # # generating SMILES and bioSMILES strings: # # x = {1.1}.find("SMILES") // get the SMILES string for the model 1.1 # x = {1.1}.find("SMILES", true) // get the bioSMILES string for the model 1.1 # - use select search(...) to do SMARTS substructure searching # - use the find function to assign variables. # - use TRUE with the find function to retrieve and count matches # - use find(..).length to count the number of matches # - use find to get the SMILES or bioSMILES string for a structure # deprecated/unnecessary: # select substructure("..") // same as select smarts(... # select within(smarts...) // same as select smarts(... # select within(smiles...) // same as select smiles(..., but not recommended # x = within("smarts", "CC") // same as {*}.find("CC") REMOVED in RC25 # x = within("smiles", "CC") // same as {*}.find("smiles", "CC") REMOVED in RC25 # bug fix: SMILES errors should be reported but not cause script failure # bug fix: select within("smarts","Cn",all,atomno=19) does not properly # restrict set to only those patterns that include atomno=19 # bug fix: select substructure(...) now synonymous with select SMARTS(), not select SMILES() # as would be expected for substructure searches. # bug fix: modelkit connection doesn't modify bonds automatically # new feature: assign CONNECT {a} {b} # -- does a simple connection, but then, # like assign atom and assign bond, fixes hydrogens # -------------------------------------------------------------- #version=12.0.RC18 # bug fix: set drawPicking/drawHover inconsistent regarding isosurfaces # bug fix: exiting modelkitmode does not reset picking/hover settings # new feature: SMILES/SMARTS C^C and C^^C or C!^C (SMARTS) -- atropisomer (dihedral angle) check # new feature; SMILES and/or BIOSMILES with /double bond/ stereochemistry # new feature: {*}.find("SMILES", asBioSmiles), with asBioSmiles default FAlSE # so simply {*}.find("SMILES") gives STANDARD SMILES (noncanonical) # bug fix: WebExport now defaults to loading split applet # when pages are running from server. # new feature: SMILES reading proposed [C@]=C # bug fix: SmilesGenerator double bonds # new feature: Widgets in WebExport # Spin on/off checkbox # Open Console button # Background Color Picker # Stereo Viewing Mode Control # Animation Control # -------------------------------------------------------------- #version=12.0.RC17 # bug fix: RC16 probably has chirality errors. # bug fix: square planar SP3 chirality inverted # new feature: BIOSMARTS note that for DNA, ":" marks crossing, # and since then the strand sequence reverses, we # can then show double helix simply as: # select nucleic and smarts("~TGTCCT:AGGACA") # or, even simpler: # select nucleic and smarts("~TGTCCT:******") # # new feature: BIOSMILES format. Examples: # $ load 1d66.pdb # $ print {*}.find("SMILES") # //* Jmol BIOSMILES 12.0.RC16 2010-06-03 21:47 1 *// # //* chain D dna *// ~CCGGAGGACAGTCCTCCGG. # //* chain E dna *// ~CCGGAGGACTGTCCTCCGG. # //* chain A protein *// ~EQACDICRLKKLKCSKEKPKCAKCLKNNWECRYSPKTKRSPLTRAHLTEVESRLERL. # //* chain B protein *// ~EQACDICRLKKLKCSKEKPKCAKCLKNNWECRYSPKTKRSPLTRAHLTEVESRLERL. # [Cd][Cd]. # [O] # # Note that the multiple waters are not duplicated here. # After calculating hydrogen bonds, the # base pairing is included in the BIOSMILES. The # code for "base pair" is a colon, ":". # //* ... *// are comment allowed by the specification. # # $ calculate hbonds # 108 hydrogen bonds # $ print {*}.find("SMILES") # //* Jmol BIOSMILES 12.0.RC16 2010-06-03 21:47 1 *// # //* chain D dna *// ~C:1C:2G:3G:4A:5G:6G:7A:8C:9A:%10G:%11T:%12C:%13C:%14T:%15C:%16C:%17G:%18G:%19. # //* chain E dna *// ~C:%19C:%18G:%17G:%16A:%15G:%14G:%13A:%12C:%11T:%10G:9T:8C:7C:6T:5C:4C:3G:2G:1. # //* chain A protein *// ~EQACDICRLKKLKCSKEKPKCAKCLKNNWECRYSPKTKRSPLTRAHLTEVESRLERL. # //* chain B protein *// ~EQACDICRLKKLKCSKEKPKCAKCLKNNWECRYSPKTKRSPLTRAHLTEVESRLERL. # [Cd][Cd]. # [O] # # Jmol will also create a SMILES string for non-bio molecules, but there is no # stereochemistry set yet. That's the next task. (THis model has some extra # isotopes just to check that. Note that we use "ring"-bond connected # .-separated fragments. This is accepted at the Daylight site. However # DEPICT cannot fathom this particular coding for caffeine. # # $ load caffeine.xyz # $ print {*}.find("SMILES") # //* Jmol BIOSMILES 12.0.RC16 2010-06-03 21:47 caffeine *// # Cn1[c]([O])[13c]2n(C)[cH][n][c]2[15n](C)[c]([O])1 # -------------------------------------------------------------- #version=12.0.RC16 # new feature: print {*}.find("smiles") creates BIOSMARTS for structure -- bio only. # new feature: BIOSMARTS can search strings and includes base-pairing. # - print "~CAAGAG".find("smarts","~AGA") # - print "~C(G)A(T)G",find("smarts","~A(T)") # new feature: BIOSMARTS initial "~" indicates 1-character sequence search # - just 1-letter codes # - "+" bonding implied # select smarts("~AT[Y,C]") # new feature: BIOSMARTS [.] --> [*.*] # new feature: BIOSMARTS [ALA.*,O] and [*.0] (lead atom -- P, CA, O) # new feature: BIOSMARTS -- [RES.ATOM]+[RES.ATOM] etc. # select smarts("[ALA.*]+{[PRO.*]}") # select all prolines that are after alanine # select smarts("[ALA.*]+{[PRO.C]}") # select all proline carbonyl carbons that are after alanine # bug fix: "backbone" included asp/glu carboxyl groups (RC3) # bug fix: hyperchem reader does not require FIRST line to start with "mol 1" # code: JmolMolecule class # feature change: set rocketBarrels also removes arrow heads for sheets (rockets only, not cartoons) # new feature: print "CC".find("SMILES"/"SMARTS","MF") -- molecular formula for SMILES/SMARTS string # bug fix: rocketBarrels not fully smooth barrels. # new feature: SMARTS update -- adds full bond logic: # select search("C=,-;!@C") -- C-C double or single bonds (C=,-C) that are also(;) non-ring(!@) # -------------------------------------------------------------- #version=12.0.RC15 # new feature Jmol reads SMILES --> 3D from http://cheminfo.informatics.indiana.edu/rest/thread/d3.py/SMILES # see http://cheminfo.wikispaces.com/smi23d # new feature: load SMILES "smilesstring" # new feature: load $smilesString # code: file reading clean-up in Viewer # bug fix: 12.0.RC6 (4/17) inadvertantly left in "false &&" in if statement in atom iterator broke: # polyhedra 2.0, geosurface, dots, and slows isosurface molecular more than 2-fold # new feature: FIX command takes argument like display or select. But ensures no atoms of this # set will be moved or dragged anywhere accidentally. # bug fix: isosurface selecting 2nd model while two are displayed produces no surface # new feature: set picking dragMinimizeMolecule (docking) # Using the model kit, you can load two models and then # use "drag and minimize molecule (docking) to move a model around and # watch how it responds to its fixed environment (within 5.0 A). If you have a ligand and a receptor, # if you move the ligand, it will minimize; if you move the receptor, it will minimize. # You can undo any change using CTRL-Z and redo it with CTRL-Y. # code: BitSetUtil.setBit() # bug fix: within() with the all-molecules flag was not working. # bug fix: isosurace PMESH inline not working # new feature: allowModelKit # new feature: modelkitmode expanded; "all frames" icon added in application # bug fix: improper/incomplete deletion of atoms # NOTE: Jmol 11.9 should not be considered ready for atom deletion # code: refactoring for proper deleted atoms processing # code: circle-drawing simplified; better highlight; POV-Ray halos fixed # new feature: assign ATOM {atom} "Symbol or Pl or Mi" # -- changes the type of {atom} to the given symbol or changes the charge up (Pl) or down (Mi) by one # -- adjusts valence with hydrogens as necessary # -- for example: assign ATOM {atomno=3} "C" # new feature: assign ATOM {atom} "type" {x y z} # -- creates a new atom at {x y z} of the given type, connected to {atom} # new feature: assign BOND {bond} "2" # -- modifies the bond and fixes valences at the two ends using hydrogen atoms # bug fix: synchronized (function) does not allow mouse-based function calling # # TODO: Model Kit icons for atom/bond menus, rings, rotation # # new feature: set picking assignAtom_+/- changed to assignAtom_Plus/Minus # new feature: set picking assignBond_+/- changed to assignBond_Plus/Minus # new feature: set modelkitMode # -- establishes three context menus -- atom, bond, and modelkit # -- allows extensive and easy modification of structures # TRIAL CHANGE: JmolApplet.jar and JmolAppletSigned.jar do not contain translations # for translations, use JmolApplet0.jar and JmolAppletSigned0.jar # this saves almost 30% in file size. Otherwise all the translations for # all languages are included in every download to every browser. # Point being that one should not use JmolApplet.jar or JmolAppletSigned.jar # in "production" mode -- they are just too big! # bug fix: after deleting atoms, connections can be found to deleted atoms # -------------------------------------------------------------- #version=12.0.RC14 # bug fix: draw xx* delete -- does not recognize xx* as wild # bug fix: restore coord does not recalculate shapes # new feature: set highlight {atom set} or set highlight OFF # new feature: set picking assignAtom_Xx where Xx is an element # assigns the picked atom to that element and # bonds nearby atoms if present to form rings # new feature: set picking assignAtom_+ # increments charge # new feature: set picking assignAtom_- # decrements charge # all three adjust valence accordingly using hydrogen atoms # new feature: set bondPicking -- independent of atom picking # new feature: set picking assignBond_+ # increments bonding # new feature: set picking assignBond_- # decrements bonding # new feature: set picking assignBond_0|1|2|3 # sets bonding # all three adjust valence accordingly using hydrogen atoms # new feature: CTRL-V will load file in clipboard or fail gracefully # new feature: CTRL-Z single undo of deletion/modification actions # new feature: set picking invertStereo # bug fix: minimization after atom deletion # -------------------------------------------------------------- #version=12.0.RC13 # new feature: application title changes with animation frame change # new feature: file system directory clip file name(s), then CTRL-V into Jmol --> loads files # bug fix: Crystal reader broken # bug fix: AtomSetChooser not producing heirarchy of models # bug fix: within(BASEPAIR) incorrect logic check # code: ActionManagerMT and associated interfaces moved to org.jmol.multitouch # bug fix: smiles, mac problem with latest pre-release build # new feature: set picking dragMinimize -- drags and minimizes all atoms in the molecule containing the picked atom # new feature: set picking dragAtom -- drags the atom picked to a new location # code: TransformManager removing pointT # bug fix: dragSelected could be off by 1 pixel # bug fix: working on the 1.5/1.4 problem -- all unnecessary 1.5 coding switched back to 1.4 format # including String.contains; parallel processing Executor class isolated from Viewer # bug fix: select within(SMILES,@x) not working # code: adding org/jmol/smiles/package.html # bug fix: About Jmol HTML does not change language # -------------------------------------------------------------- #version=12.0.RC12 # bug fix: set measurements 0.05 not saved in state # bug fix: SMILES business not working outside of first frame # new feature: m = compare({2.1},{1.1} [,"SMARTS" (default)|"SMILES"],"smartsString..." [,"stddev"]) # does a MATCH of atoms, then a compare # new feature: compare {2.1} {1.1} "[OH]ccOC" translate rotate # SMARTS implied, but keyword SMILES or SMARTS can be used as well: # correlates and moves model 2.1 to best fit for 1.1 based # on the mapping of atoms from the SMARTS string # -------------------------------------------------------------- #version=12.0.RC11 # code: addX(x) where x is Float.NaN should use the string "NaN" # new feature: compare function with STDDEV option returns "NaN" if a comparison is not possible # new feature: load @x where x is an array of filenames # bug fix: @x not allowed in strictly STRING context such as select search(@x) # bug fix: 12.0.RC3 breaks select *.O1 # new feature: 3D-Search "d" -- non-hydrogen connections # new feature: 3D-SEARCH $XXX="SMARTS-code"; .... [$XXX] ... # select search(' \ # $Aro1="[a&!$(aC)]" (i.e. aromatic not attached to aliphatic carbon); \ # $CarbonylO="O"; \ # {[$CarbonylO]}[$Aro1] \ # ') # new feature: 3D-SEARCH allows white space # bug fix: state involving JME files not properly loaded # bug fix: load FILTER not saved in state when not involving a lattice # bug fix: "axesScale" saved in state as "axisScale" # bug fix: messageStyleChime needs #xxx reports # bug fix: restrict cell={2 2 2} position depends upon current unit cell # refactoring with JmolNode, JmolEdge, and Elements # new feature: JmolSmilesApplet.jar -- just checks SMILES strings # new feature: "xxxx".find("smiles","yyyy") will match ALL types of stereochemistry, # including cis/trans -- for example, all of these return "1": # print "O[C@](F)(Cl)I".find("smiles","O[C@](F)(Cl)I") # print "O[C@](F)(Cl)I".find("smiles","[C@](O)(F)(Cl)I") # print "O[C@](F)(Cl)I".find("smiles","[C@@](O)(Cl)(F)I") # print "OC(Cl)=[C@]=C(C)F".find("smiles","OC(Cl)=[C@AL1]=C(C)F") # print "OC(Cl)=[C@]=C(C)F".find("smiles","OC(Cl)=[C@AL2]=C(F)C") # print "F[Po@SP1](Cl)(Br)I".find("smiles","F[Po@SP1](Cl)(Br)I") # print "F[Po@SP1](Cl)(Br)I".find("smiles","F[Po@SP2](Br)(Cl)I") # print "S[As@@](F)(Cl)(Br)C#O".find("smiles","S[As@@](F)(Cl)(Br)C#O") # print "S[As@@](F)(Cl)(Br)C#O".find("smiles","O#C[As@](F)(Cl)(Br)S") # print "S[Co@@](F)(Cl)(Br)(I)C#O".find("smiles","S[Co@@](F)(Cl)(Br)(I)C#O") # print "S[Co@@](F)(Cl)(Br)(I)C#O".find("smiles","O#C[Co@](F)(Cl)(Br)(I)S") # print "F/C=C/F".find("smiles","F/C=C/F") # print "F/C=C/F".find("smiles","F\\C=C\\F") # print "C(/F)(Cl)=C/F".find("smiles","C(/Cl)(F)=C\\F") # print "C(/F)(Cl)=C/F".find("smiles","C(\\F)=C(/Cl)F") # bug fix: JME load can place H in wrong side if SP2 is detected # bug fix: atom.bonds may be null # new feature: { } in search string selects only that subset of atoms within the braces # new feature: smarts() function changed to search() # new feature: full implementation of 3D-SEARCH # code: org.jmol.smiles.SmilesAromatic.java # new feature: select search("searchString", {selectedAtoms}) # allows determining aromatic rings that are connected to metals # -------------------------------------------------------------- #version=12.0.RC10 # bug fix: isosurface sigma x.x not properly implemented # "sigma 3.0" means "3.0 times the cutoff associated with sigma = 1.0" # this to be consistent with the Aztex viewer sliders that set the value of # 1.0 to be "1.0 sigma" and then scale based on that. # new feature: "3D-SEARCH" -- search("a") assigns aromatic based on 3D geometry -- # -- flat ring of 3-7 atoms with all substituents directly in plane # true, not the official designation, but far more practical than checking bonds # -- will pick out rings in HIS, TYR, TRP, nucleic acid bases, etc. # new feature: full set of allenic, tetrahedral, square planar, trigonal pyramidal, # and octahedral smiles/search/substructure stereochemistry # tested against all structures described at # http://www.daylight.com/dayhtml/doc/theory/theory.smiles.html#RTFToC24 # new feature: smiles/search/substructure adds allene stereochemistry: # select search("C(Cl)(C)=[C@@]=C(F)[H]") # new feature: smiles/search/substructure adds double bond stereochemistry: # select search("C(O)/C=C/([CH2])C") # new feature: "search" does not include attached hydrogens in match # new feature: smiles/search/substructure with tetrahedral chirality # select search("C[C@@]([C]=O)([CH])[CH2]") # code: Smiles refactoring and efficiencies # note: I realize that search and smiles is a can of worms, particularly in # relation to aromaticity. Ignoring that for now. # new feature: {atomSet}.find(["SEARCH",]"searchString"[,isAll]) # new feature: {atomSet}.find("SMILES","smilesString"[,isAll]) # new feature: "smilesString".find("SEARCH","searchString" [, isAll]) # new feature: select search("searchString") # search does not do implied H atoms, making it much easier to # use for pattern matching, which it was made for. # new feature: select SMARTS("smilesString") alias for substructure(..) # more specific and relevant -- SMILES strings are supposed to # be for full molecules, not substructure searching # new feature: JME data saved in variable "jmeString" for later generation of 2D data # new feature: "smilesString".find("SMILES","smilesString" [, isAll (FALSE)] ) # bug fix: SMILES parser not properly checking explicit double bond check # new feature: SMILES matching expanded to aromatic types # bug fix: Spartan reader (compound document) misread# code: frequency reading standardized -- using auxiliaryInfo.modelProperties more effectively # code: note that then getProperty modelInfo will return constraints, energies, and vibrational frequency info # CHANGED FEATURE: set loadDefaultOrientation retired (Sygress/CAChe and Spartan files only) in favor of FILTER "noOrient" # note that this will change the default orientation for these files to be the one last # saved in the actual .spartan or .csf file. # bug fix: undocumented obscure reference to nonstandard Hall symbols disregarded in readers # new feature: isosurface "=nnnn" automatically loads Uppsala Electron Density Server data # new feature: edsUrlCutoff, edsUrlFormat sets method of getting cutoff and file from electron density server # String edsURLFormat = "http://eds.bmc.uu.se/eds/dfs/%LC13/%LCFILE/%LCFILE.omap"; # String edsURLCutoff = "load('http://eds.bmc.uu.se/eds/dfs/%LC13/%LCFILE/%LCFILE.sfdat').lines.find('MAP_SIGMA').split(' ')[2]"; # LCFILE is file.toLowerCase(); LC13 is file.substring(1,3).toLowerCase() # bug fix: state should not be saving loadFormat, edsLoadFormat, or edsLoadCutoff # bug fix: isosurface LATTICE option not generating copies for export # code: all exporters may write files directly (was just POVRAY) # -------------------------------------------------------------- #version=12.0.RC9 # bug fix: mo parameters not restored properly from state # application: File menu "Output Console" changed to just "Console" # code: support for Java 1.0, 1.1, 1.2, 1.4 dropped (MouseManagers and JmolPopup, Graphics3D) # bug fix: parallel: # ScriptEvaluator: Given function object holds state, it can not be # called from two threads at the same time. So, runFunction is wrapped in synchronized(function). # ParallelProcessor: Is modified to use lock object vs this as this is used in ScriptEvaluator. # Viewer: Change to Executor factory to use different thread executor, # thus avoiding deadlock if parallel functions call parallel functions and # allows parallel processes to be eligible to run. # new feature: script level iteration max increased to 20 (still just an arbitrary number) # new feature: "boundingBox" alias for "boundBox", also "boundingBoxColor" and "showBoundingBox" # new feature: reading mol file stereochemistry bond types 1 and 6 # bug fix: fix for write POVRAY "xxx" not writing file for signed applet # new feature: wait cursor for file loading and isosurface creation # bug fix: CSF reader upgrade # bug fix: stereochemistry addtion for JME skipping some wedges # 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" # code: Java 1.5 required. (this has been the actual case for some time) # code: UFF Calcution tweak: // added b.type == "C_2+" for cations 12.0.RC9 # bug fix: UFF calculation fails to recognize C+ and C- # bug fix: POV-Ray exporter should not store file path in .ini file # code: unitcell cleanup # bug fix: boundbox {1/2 1/2 1/2} {1/2 1/2 1/2} not working # new feature: CRYSTAL reader orients unit cell # code: general capability to orient unit cell # new feature: isosurface lattice {a b c} # -- can be applied AFTER the fact -- it is just a rendering method # -- best carried out with PACKED unit cells # bug fix: major upgrade for state preservation of isosurface # -- no longer ;# xxxxx # -- command in state reflects variable insertion # -- sign colors not having desired effect # -------------------------------------------------------------- #version=12.0.RC8 # code: modelsetbio efficiencies # new feature: axes labels "a" "b" "c" "-a" "-b" "-c" -z- extended to 6 from 3 # bug fix: axes, boundbox, unitcell tick labels did not start properly for format ["%0.2f", ...] # bug fix: unitcell ticks should allow fractional coordinates; "scale HKL" not implemented # code: removal of "simple" atom option for polyhedra # bug fix: polyhedra collapsed incorrect shading calculation # bug fix: ParallelProcessor upgrade # bug fix: sigma option for isosurface 1/sigma? # bug fix: binary document reader may not read full set of bytes in byte array when using http: # -------------------------------------------------------------- #version=12.0.RC7 # bug fix: unicode characters in filenames # bug fix: isosurface broken in 12.0.RC6 # new feature: drag-and-drop defaults for map files and PDB files # bug fix: VRML exporter fails to remove duplicate spheres if not same color # bug fix: states not saving correct path to isosurface files # new feature: spacefill, halos, stars -x.y is "ONLY" as for other shapes # bug fix: _atomPicked not updated for centering or other non-identify actions # new feature: model numbers can be given as "2.1" in quotes # bug fix for parallel processing and isosurface # -------------------------------------------------------------- #version=12.0.RC6 # new feature: MO MODEL x.y .... specifies which model to use # # code: atom iterators made thread safe and optimized a bit # # code: parallel processor in place; working; # tested on dual core multiple processor Mac # result -- 8 sec --> 4 sec for the two molecular surfaces # # example PARALLEL code: see http://chemapps.stolaf.edu/jmol/docs/examples-11/data/multiProcessTest.spt # # parallel makeIsos{ # process{isosurface s1 molecular} # process{isosurface s2 molecular; color isosurface green} # } # load 1crn.pdb # t = now() # makeIsos # print now() - t # # parallel: 4 s, not parallel: 8 s MacBook Pro/Windows, two processors # # print "------------------------" # parallel showMOs(i,j) { # process{mo model 1.1 @i} # process{mo model 2.1 @j} # } # # load files "C6H6.smol" "C6H6.smol" # showMOs(22,23) # frame *; # # # # code: ShapeManager created; all shape[] references out of ModelSet # code: preliminary PARALLEL {.... PROCESS {....} ....} # code: Normix3D refactoring # bug fix: set measureAllModels not working properly # bug fix: isosurface renderer subtle improvement for almost-degenerate-vertex triangles # new feature: set monitorEnergy -- preliminary idea only # bug fix: UFF carbonyl out-of-plane calculation coding error does not minimize carbonyl groups correctly # -------------------------------------------------------------- #version=12.0.RC5 # new feature: multiple file drag and drop into application and signed applet # new feature: minimize SILENT # new feature: JME file loading uses minimize silent addhydrogens # new feature: drag and drop into signed applet # new feature: drag and drop from link, state-image for MSIE and Mozilla # new feature: load INLINE "......jme data...." # really only for JME data, since there is no option for multiple lines # same as # x = ".....jme data...."; load "@x" (which does allow for multiple lines) # # code: removed unused, undocumented load DATA option # new feature: mol file FILTER "2D" option # new feature: within("smiles",{atomSet}[,{requiredAtoms}]) # -- removed in RC17 -- just need search("SMARTS string",{atomSet}) # new feature: x = {} as "empty set" # code: jme 2D to 3D enhancement # bug fix: resolver could consider some CUBE files to be MOL files # bug fix: deleting atoms or bonds does not reset molecules # bug fix: GOTO command broken within IF construct # bug fix: restrict ... with dots ON causes NPE # new feature: select CYSTINE # new feature: set minimizationSilent # code: org.jmol.api.smilesMatcherInterface # public abstract BitSet[] getSubstructureSetArray(String smiles) # new feature x = within("smiles",smilesString) # returns ARRAY of bitsets -- all matching sets # $ x = within("smiles", "[C]1[C][C][C][C][C]1") # get all cyclohexane rings # $ print x # ({0 1 3 5 6}) # ({0 2 4:6}) # -- REMOVED in RC25 # TODO: add this to read JME cyclohexane rings better? # new feature: JME reader reads stereochemistry and automatically adds hydrogens and does minimization # this can be prevented using FILTER "nominimize" # bug fix: JME reader broken # new feature: show within(nResidues, GROUP, {atoms}) # new feature: show basepairs # new feature: within(sequence, "GCAUGGC") # new feature: within(basepair) # new feature: within(basepair, "GCAU") # canonical RNA # bug fix: within("GC") not working # -------------------------------------------------------------- #version=12.0.RC4 # new feature: repaintWaitMs (1000) # bug fix: hiding of HBONDS does not work properly with set HBONDS BACKBONE # bug fix: hiding of RNA backbone does not work properly # bug fix: drag selected (App icon) does not work properly) # code: better molecule calculation # new feature: negative sizes for cartoons, rockets, trace, backbone, wireframe, etc. implies ONLY # new feature: set rangeSelected now applies to any property, not just temperature # new feature: much improved nucleic hydrogen bonding -- see 2qnh.pdb # bug fix: x = {atomno < 10}; select x fails # 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 for BIOMOLECULE generation # code: hermite renderer did not need global integer -- causing exception when rendering threads clash # bug fix: write PNG does not properly indicate that it is going to the clipboard # code: better handling of VAR local variables # new feature: VAR variables are now local to FOR and WHILE loops, as in Java # new feature: { } will group contexts for VAR variables: # x = 3 # { var x = 10; print x } # print x # x=3 again # real reason for this is to allow state to define commands with localized variables: # { # var x1 = ..... # var x2 = ..... # isosurface @x1 @x2 ... # } # # code: OutputStringBuffer class -- allows optional writing to file instead of a StringBuffer # code: better file i/o for certain write operations # new feature: filter "#spacefill 0; wireframe 1 for chains that # contain bonds and backbone for those that do not in order to conserve resources. # # new feature: calculate hbonds {....} {....} for models with H atoms # - H atoms must be in first set; atoms to consider must be in second set. # - no restriction in second set as to atom type other than that H atom in that set will be ignored. # -------------------------------------------------------------- #version=12.0.RC2 # bug fix -- recent GAMESS f-orbital read error # bug fix -- recent MOL file read failure # -------------------------------------------------------------- #version=12.0.RC1 # release candidate 1 for Jmol 12.0 # # bug fix: hbonds delete broken # # new feature: rotate SYMOP n {atomSet} # n < 0 indicates "reverse" # code: generalized d/f orbital order reading # bug fix: WebMO f-orbital order fix # # new feature: invertSelected STEREO {center} {atomsToInvert} # # Does a rotation of 180 degrees around a center about a line connecting # the center and the geometric center of any connected atoms not in the # list to invert. The results is the standard organic chemist's # "stereochemical inversion" at that point -- which does not # invert stereochemistry along the branches. # # bug fix: set minimizationCriterion, set minimizationRefresh, set minimizationSteps # code: matrix3f/matrix4f JmolScript improvements # bug fix: load "@x" loads model twice when the saved state is restored # bug fix: load "@x" does not preserve load options # bug fix: UnitCell in appended model but not first model does not display # # new feature: function compare({bitset1} or [{positions1}],{bitset2} or [{positions2}]) # # Takes either two sets of atoms or two arrays of atom positions # and returns a 4x4 matrix m indicating the rotation (m%1) and translation (m%2) # required to BEST transform set 1 into set 2. Unlike the COMPARE command, # No filtering is done -- every atom or position in set1 is compared with every # position in set2. Optional third parameter "stddev" allows return of just # the RMSD for this comparison. For example: # # m = compare({2.1 and spine and 92-100}, {1.1 and spine and 27-35}) # # new feature: %1 and %2 modulus for Matrix4: # # m4%1 (rotation matrix) # m4%2 (translation vector) # # (Note that quaternion(m4%1) then returns a quaternion equivalent of the # rotation matrix.) # # new feature: rotate [selected] COMPARE {bitset1} or [{positions1}],{bitset2} or [{positions2}] # # Compares the atom positions or coordinate arrays and moves either # the selected atoms or the current view. So, for example: # # tempcoord = {2.1}.xyz # compare 2 {2.1} {1.1} ROTATE TRANSLATE # [...later] # select {2.1}; rotate selected COMPARE {2.1} @tempcoord -2 # # Over the course of 2 seconds ("2" would mean 2 degrees per second) # the atom positions of model 2.1 will be moved back to their original # positions that they had prior to the compare operation. # # new feature: rotate [SELECTED] TRANSLATE {x y z} [extent] [rate] # # same as TRANSLATE {x y z} (SELECTED is implied), but allows for # an animation of the process. When not combined with a rotation, # the optional extent is in Angstroms and rate is in AngstromsPerSecond, # otherwise extent is in degrees and rate is in degreesPerSecond. # # new feature: rotate [SELECTED] [HELIX] (matrix variable) # # Allows rotation and translation by a 4x4 matrix. The optional # parameter HELIX moves the atoms along the optimal helical path. # For example: # # x = compare({2.1 and spine and 92-100}, {1.1 and spine and 27-35}) # select 2.1 # rotate selected @x -3 # # new feature: compare nSeconds ... # # Animates the compare move over a number of seconds. # # bug fix: compare ORIENTATION can give spurious result # # -------------------------------------------------------------- #version=11.9.36 # bug fix: Spartan and WebMO orbitals are already normalized! # new feature: GenNBO file reader for xx.31-.41 files and .nbo output if in that directory # new feature: can append gennbo data to Gamess, Gaussian, Jaguar, NWChem, Psi, or Qchem calculation # bug fix: Gaussian04 reader unexpected lower case reading end of MO data # bug fix: LCAOcartoon saving in state causes bug. # bug fix: show symop by itself AFTER show symop n does not show full list # bug fix: GAMESS reader misreading vibrations since 11.9.32 # bug fix: load "xxx" AS "yyy" fix # bug fix: set dragSelected; set pickingStyle drag doesn't refresh properly # -------------------------------------------------------------- #version=11.9.35 # new feature: quaterion(array1,array2,"relative") # bug fix: translateSelected X .. broken # new feature: property SELECTED float settable: # {atomno<10}.selected = true # print {*}.selected # fraction selected # new feature: color "rwb" [TRANSLUCENT] # new feature: quaternionFrame "a" extended to nucleic acids (CA or P only) # (changed to "B" for "backbone" in 12.0.RC23) # bug fix: calculate hydrogens for R--N fails # bug fix: measure() function not checking units # bug fix: translate X broken # new feature: compare {model1} {model2} subset {....} ... # just allows a somewhat cleaner command line: # compare {2.1} {1.1} subset {*.CA} {1-20} {6-25} {25-30} {40-45} # -------------------------------------------------------------- #version=11.9.34 # new feature: SPINE predefined set # includes *.CA, *.N, *.C and *.P, *.O3', *.O5', *.C3', *.C4', *.C5' # does NOT include phosphate oxygens OP1 and OP2 (should it?) # # new feature: COMPARE command (was ALIGN; was default "orientation") # # * see Berthold K. P. Horn, # * "Closed-form solution of absolute orientation using unit quaternions" J. # * Opt. Soc. Amer. A, 1987, Vol. 4, pp. 629-642 # * http://www.opticsinfobase.org/viewmedia.cfm?uri=josaa-4-4-629&seq=0 # * # * and Lydia E. Kavraki, "Molecular Distance Measures" # * http://cnx.org/content/m11608/latest/ # # compare {model1} {model2} {bsAtoms1} {bsAtoms2} # compare {model1} {model2} {bsAtoms1} {bsAtoms2} {bsAtoms1'} {bsAtoms2'} ... # compare {model1} {model2} orientations # compare {model1} {model2} orientations {bsAtoms1} {bsAtoms2} # compare {model1} {model2} orientations quaternionList1 quaternionList2 # additional options for above: ROTATE and/or TRANSLATE # new feature: set QuaternionFrame "C" for nucleic redefined # code: better treatment of RESTORE COORD when going back to the file default # new feature: set QuaternionFrame "P" for nucleic (phosphorus) # based on center P[i], O[i-1], O[i] # (note that this changes the default, since "P" is # the default quaternionFrame, and that was being ignored # bug fix: deleted atoms included in isosurface calculation # # -------------------------------------------------------------- #version=11.9.33 # bug fix: black shades lost in writing (antialiased) images # new feature: ALIGN command (but see 11.9.34 -- changed to COMPARE): # # align {modelFrom} {modelTo} {atomsFrom} {atomsTo} # # aligns modelFrom with modelTo based on orientations and # center of mass of atomsFrom and atomsTo # # uses quaternion mean to minimize ORIENTATIONAL difference between # atomsFrom and atomsTo. Quaternions are created based on the setting # of quaternionFrame; non-PDB files are not yet supported. # # new feature: widgets in WebExport (background colorpicker, spin on/off, stereo mode). # internal documentation for this is not complete. # bug fix: isosurface cavity not working when some atoms are hidden. # new feature: quaternion(quaternionArray1) # quaternion mean # new feature: quaternion(quaternionArray1, quaternionarray2) # difference array # new feature: x**y for Math.pow(x,y) # new feature: quaterion array .average .stddev using SphereMean # bug fix: using --i instead of i-- with for causes infinite loop # new feature: .x, .y, .z all work as well as .atomx, .atomy, .atomz # bug fix: fx, fy, fz, ux, uy, uz all fail to work # bug fix: some problems with set picking labels and conflicting mouse actions, no refresh # bug fix: spin $line1 when $line1 is a set of lines in different frames fails # bug fix: spin $line1 followed by spin $line2 causes spin to stop rather than switch axes. # bug fix: draw FIXED arc, curve, arrow -- no reason not to do this, I think. # -------------------------------------------------------------- #version=11.9.32 # bug fix: isosurface colorscheme not always being saved properly in state # bug fix: isosurface ;# command extension not being truncated upon state save # bug fix: isosurface boundbox option not saved properly in state # bug fix: hbonds after wireframe will be thin # new feature: translateSelected X|Y|Z .... # new feature: con nect 80% 120% ...... # uses percentages of bonding/ionic radii instead of static values. # bug fix: lcaocartoon "s" is not being saved in state # new feature: lcaocartoon scale 1.0 "cpk" // creates isosurface at current spacefill radius; # can be used with slab and cap # new feature: lcaocartoon slab/cap unitcell/boundbox # new feature: isosurface slab/cap UNITCELL # new feature: isosurface slab/cap BOUNDBOX # bug fix: ADF reader not reading degenerate orbital energies properly # code: major reader overhaul. # new feature: GROMACS reader allows {i j k} notation and unit cell # new feature: readers can now assign atomic data for atoms of the "property_" type # implemented for property_spin and property_magneticMoment in CrystalReader # for example: # # load "crystal::full_PBE40.out" # select property_spin = 1; label "\u2191" # up arrow # select property_spin = -1; label "\u2193" # down arrow # select *; font labels 35 # # bug fix: All water should be included in the 'solvent' set # -------------------------------------------------------------- #version=11.9.31 # bug fix: select IONS broken # bug fix: calculate hydrogens skipping atoms that already have H attached. # bug fix: isosurface CCP4/MRC reader insideout problem # new feature: isosurface map DSN6/O reader # bug fix: load models {(.....)} not preserved in state # code: simpler adapter class -- atomSetNames and atomSetProperties into atomSetAuxiliaryInfo # new feature: frame TITLE alone sets title to "@{_modelName}" # new feature: vector scale range now -100 to 100 # bug fix: structure HELIX {3-4} will cause 5-... to lose structure type # bug fix: select 1:3.* # new feature: Crystal output reader http://www.crystal.unito.it/ # -- thanks to Pieremanuele Canepa for contributing this # new feature: unit cells for SLAB (2D) and POLYMER (1D) periodicity # new feature: frame title "@{_modelName}" similar to echo "@{_....}" # modified upon rendering to reflect new model during animation # new feature: frame all;frame title ... sets frame title for all visible frames # -------------------------------------------------------------- #version=11.9.30 # bug fix: Mac opening file dialog does not read files from local drive # bug fix: DGRID reader bug for symmetries with long descriptions: T1.g_1 # new feature: isosurface SIGMA 1.0 "filename.ccp4" -- uses "rms" value in file assda "sigma" # not applicable to other file types. # bug fix: MRC/CCP4 reader defaults set to SIGMA 1.0 (was SIGMA 2.0) # bug fix: isosurface fragments broken by bitset upgrade # bug fix: WebExport changing instance dimensions no longer causes wrong static image assignments # new feature: load "filename" 0 -- loads LAST model only (usually the optimized geometry) # bug fix: quaternion and ramachandran frames broken by bitset upgrade # new feature: app "open Url" allows "=1crn" or just "1crn" # code: preliminary set useArcBall -- Ken Shoemake's idea for better mouse drag action # code: very prelminary http://www.cse.clrc.ac.uk/cmg/CRYSTAL/ output reader # bug fix: some VASP files not readable because they contain ">vasp <" instead of ">vasp<" # bug fix: calculate hydrogens for cumulenes -- but not for whole molecule # because in this case the addition of hydrogens to one atom affects the addtion to the next # and the calculation does only one pass. Will be a complicated fix that # will require incremental merging atom-by-atom. # bug fix: after hydrogen addition, name inappropriately changes to "merge" # bug fix: minimization not running properly as part of a larger script # bug fix: selection after deletion includes unwanted atoms # bug fix: minimization after atom deletion problem # bug fix: select DNA, select RNA broken # bug fix; applet console double-reporting information # bug fix: [state] button in app console not showing state # bug fix: calculate hydrogens for terminal alkenes # -------------------------------------------------------------- #version=11.9.29 # bug fix: some problems with deleted atoms not properly deleting bonds # bug fix: minimization not reset after changes of atom position, element, bonds # new feature: set picking deleteAtom # new feature: set isKiosk TRUE -- forces focus at all # times and presumes no underlying applets. # This allows multi-touch to activate immediately # and not wait for a second click # -------------------------------------------------------------- #version=11.9.28 # bug fix: memory leak in shape.setProperty() XML business # bug fix: nodisplay mode could crash # new feature: frank may be turned off by local signed applet # new feature: _multiTouchServer and _multiTouchClient flags # bug fix: isosurface cavity broken # code: FastBitSet implemented for isosurface and dots # bug fix: exit command exits Jmol instead of just the script or previous scripts # bug fix: load sometimes not properly accounting for unique axis information # bug fix: web export- dimension spinners now show dimensions of chosen instance # bug fix: web export- syncLists function now works for more than two lists. # new feature: web export- changing dimension spinners after an instance is added # now updates the dimensions of the selected instance. # -------------------------------------------------------------- #version=11.9.26 # bug fix: Rasmol radii broken. # -------------------------------------------------------------- #version=11.9.25 # bug fix: 11.9.24 IS BROKEN - DO NOT USE --- set of models from atoms totally incorrect # bug fix: application entry of multiple-line commands without final CR causes array pointer exception # -------------------------------------------------------------- #version=11.9.24 # # new feature: implicit "script" command with just a filename, possibly in quotes: # # test.spt # 'testing now.spt' # # new feature: {xxxx}.ionicRadius = x.y # new feature: set mouseWheelFactor 1.02 (Jmol 11.8: 1.15) # new feature: set mouseDragFactor 1.0 (*180 degrees gives rotation across full screen) # # code: implicit script command: xxxxx.xxx -- "set" structure, but without equals and of length 3 # code: added 1000 ms timeout for the wait() in RepaintManager.requestRepaintAndWait() # to try to avoid lock-up. Fingers crossed. # new feature: set logCommands --- logs commands to file if set logFile "somename" has been given # new feature: set logGestures --- logs gestures (swipe, pinch, zoom, rotate) # new feature: set waitForMoveTo --- allows asynchronous moveTo commands # new feature: mouse binding: double-click left bound to "_stopMotion" action # new feature: moveto STOP -- stops asynchronous moveTo motion # code: much clearer StateManager.GlobalSettings details; some parameter cleanup # bug fix: drawHover status not reported properly after zap/new model loaded # code: abstraction of FastBitSet (SlowBitSet implemented using set testflag3 TRUE) # code: moving of Dots to shapespecial package # new feature: timeout command # new feature: set allowMultiTouch [default TRUE] can be used to disallow multi-touch gestures # code: build.xml going to source 1.4 target 1.4 instead of source 1.3 target 1.1 # code: smarter handling of bitsets --> about 10% faster math processing # bug fix: bfactor min/max was ignoring first atom # bug fix: mouse/thread issues when moveTo is running # code: ScriptEvaluator.set()/.show() clean up; all set parameters as tokens; deprecatedparam tok # bug fix: some show parameters lost in 11.9.22 # bug fix: within molecule was using undocumented "visible" # new feature: set picking select structure # new feature: set picking select polymer # new feature: print {*}.polymer # new feature: select within(polymer, ...) # new feature: set pickingstyle drag makes the LEFT button a click-and-drag button # when associated also with: # # set pickingsyle drag # set picking select polymer # or whatever # set dragSeleted TRUE # -------------------------------------------------------------- #version=11.9.23 # new feature: set preserveState FALSE (default TRUE) -- # for some applications it can be helpful to turn off the # feature of preserving the state in order to save memory # * This flag if set FALSE: # * # * 1) turns UNDO off for the application # * 2) turns history off # * 3) prevents saving of inlinedata for later LOAD "" commands # * 4) turns off the saving of changed atom properties # * 5) does not guarantee accurate state representation # * # * It is useful in situations such as web sites where # * memory is an issue and there is no need for such. # * # * # new feature: set strutsMultiple (default FALSE) allows multiple struts on a given atom # new feature: set LOGFILE "name" -- log file will be "JmolLog_" + name # in the Jar file directory -- note that this is not # ever possible with the web-based version, even with the # signed applet, but signed applet or application running # locally can write to this file # # set logFile "test" # # new feature: LOG command -- same as print but to the log file # can be prepended with nicely formatted date with "$NOW$" as the # first five characters # # log "$NOW$\n" + getProperty("modelInfo") # # new feature: show state [name] # new feature: all saved orientations now saved in state # bug fix: isosurface ID @{xxxx} .... #ID .. #ID not overriding # new feature: write MESH t.mesh JVXL "vertex-only" very compact style mesh surface # new feature: isosurface SLAB {plane definition} [optional offset] # new feature: -{plane definition} refers to opposite-facing plane as {plane definition} # bug fix: frame *;draw {atomno=1} {atomno=5} not working properly # bug fix: frame ALIGN for trajectories # bug fix: isosurface vdw broken # new feature: PDB trajectory for concatenated PDB files (no "MODEL" line) # bug fix: pdb reader trajectory error # bug fix: multitouch applet activation via display.hasFocus() # working properly except you can't just jump from one # page to another if applets are producing the SparshUI server # be sure to go through an intermediary page, like a MAIN page # -------------------------------------------------------------- #version=11.9.22 # bug fix: X3D exporter broken # bug fix: MO export to cartesian exporters (VRML/X3D/Maya) should not do front-only # code: XJVXL efficiencies -- base90+35 encoding of bitsets. # bug fix: getproperty SHAPEINFO broken # bug fix: PMESH reader broken in 11.9.21 # bug fix: isosurface vdw does not use "auto" # bug fix: isosurface vdw 100% translucent skips "translucent" # code: refactoring of all SET parameters (Phase I) fully tokenized # new feature: at console, set xx[tab] completes xx with all matching set parameters # bug fix: (includes Jmol.js) -- using jmolAppletInline() with a model having "|" in it fails (namely, JVXL files) # new feature: JVXL files for molecular orbitals readable as CML, including atom positions # bug fix: JVXL writing way too much information # bug fix: JVXL write invalid XML # bug fix: CML reader not accounting for possibility of nonunique atom names # new feature: set picking STRUTS # bug fix: APBS reader could hang on empty line # bug fix: isosurface "..." AS "..." capability expanded to all readers # -------------------------------------------------------------- #version=11.9.21 # new feature: isosurface INLINE @x # # new feature: for the Center for Biomolecular Modeling, Milwaukee School of Engineering # contributed ideas of Mark Hoeltzer for rapid prototyping. # # new feature: STRUTS shape -- for rapid prototyping -- these are sticks that # can be connected anywhere but are not measures and are not covalent bonds # # new feature: calculate STRUTS -- contributed algorithm of George Phillips # (phillips@biochem.wisc.edu) automates introduction of struts # # new feature: set picking CONNECT -- like measuring distances, except you get bonds. # new feature: set picking DELETEBONDS -- opposite idea -- click two atoms generally, # or, with set BONDPICKING, click the center of the bond # # new feature: set strutSpacing 6 -- George's "DELTA" # new feature: set strutLengthMaximum 7.0 -- George's "THRESH" # new feature: set strutDefaultRadius 0.3 -- default rendering (will be translucent white as well) # # bug fix: VRML export not always getting right diameters # bug fix: VRML export using /n instead of \n after comment # bug fix: exporters calculate incorrect hond width # bug fix: calculate hbonds {*} {*} inappropriately adding Hbonds between two carbonyl groups # # new feature: load/isosurface "filename" AS "myfile" loads the file # and saves it as file "myfile" # thus accomplishing an optional local file caching system. # also saves the LOCAL version in the state. # # bug fix: message this is a @{test} fails # new feature: (minimal) cloud rendering of electron density using # # isosurface color DENSITY cutoff 0 # # and typically some colorscheme such as translucent bw: # # isosurface color density cutoff 0 boundbox colorscheme translucent bw \ # color range 1.0 3.0 within 2.0 {*} "3hyd_map.ccp4" mesh nofill # # new feature: colorscheme TRANSLUCENT [color scheme name] # new feature: colorschemes BW and WB (Black/white, white/black) # # bug fix: POV-ray not drawing isosurface mesh # -------------------------------------------------------------- #version=11.9.20 # new feature: isosurface CENTER option for CCP4,MRC,XPLOR files # allows centering offsets in crystallographic grid coordinates of map file # new feature: isosurface COLOR DENSITY option produces a point-graph of grid colored by # grid point value rather than an isosurface # code: restructuring of surface readers and JVXL coder # new feature: xyz files with 9th column is atom number # bug fix: adding hydrogens does not update atom numbers # code: JVXL reader refactoring # bug fix: XPLOR fix/upgrade # bug fix: MRC/CCP4 reader not accounting for unit cell dimensions # verified by inspection with 3hyp (Eric Martz) # # bug fix: application preferences have their own hardcoded defaults! # setting vdw to 23% # # code: initial progress toward XML state definition # code: organizing of ScriptEvaluator # # code: refactored jvxl.data.JvxlCoder and jvxl.readers.JvxlXmlReader # methods to util.XmlUtil and util.XmlReader # -------------------------------------------------------------- #version=11.9.19 # new feature: set SLABCLEANLY no partial atoms or bonds # (note -- this changed to SlabByAtom in later version) # new feature: set SLABBYMOLECULE no partial molecules # # new feature: XJVXL excludedVertexData and excludedTriangleData # for particularly accurate rendering of isosurfaces # new feature: ALL JVXL OUTPUT TO XJVXL FORMAT # code: JVXL 1.0 code commented out; all writing is to XJVXL # # new feature: draw POLYGON # really for the state after definition of an intersection # but also useable in principal: # # draw POLYGON nVertices {vert1} {ver2} ... # nFaces [face1] [face2] [face3] # # where [face1] is a triangle definition (not quadralateral) # consisting of either three integers: [v1 v2 v3] # or four integers: [v1 v2 v3 meshCode] # # v1,v2,v3 point to vertices (0-based) # meshCode is a bitset number 0-7 indicating which edges of the # polygon are to be displayed in "mesh" format: # # 0 no edges # 1 v1-v2 edge # 2 v2-v3 edge # 4 v3-v1 edge # 3,5,6,7 -- combinations of the above three # # if meshCode is not included, it is registered as 7 (all edges) # # This be useful for objects that have very sharp edges, like cubes. # # new feature: calculate hydrogens (including formal charge) # new feature: minimize ADDHYDROGENS # minimizes and then adds hydrogen # bug fix: delete atoms not compatible with hybridization calculation # bug fix: connect AROMATIC not functional # bug fix: inconsequential "COMPILER ERROR" message after x *= y # new feature: calculate hydrogens (including formal charge) # # new feature: isosurface within 2.0 {points} # gives true calculation of surface within that distance # of ANY atom in the set, not just the center # (isosurface WITHIN was introduced in Jmol 11.1.21 but not documented # # new feature: boundbox SCALE x.x option: # boundbox scale 0.5 # scales the current boundbox # boundbox scale 1.1 {*} # scales the boundbox to 10% larger than usual # boundbox scale 1.1 CORNERS {first} {second} # boundbox scale 1.1 {center} {cornerVector} # boundbox scale 1.1 $isosurface1 # # new feature: boundbox $isosurface1 # new feature: XPLOR electron density reader # # code: All volume surface readers now progressive, meaning # they read only as much file data as necessary and # run the Marching Cubes algorithm concurrently with file # reading -- this is more memory efficient by a POWER of 2/3. # # bug fix: applet cannot load inline # bug fix: MRC (CCP4) MAP offset # -------------------------------------------------------------- #version=11.9.18 # new feature: VASP vasprun.xml reader http://cms.mpi.univie.ac.at/vasp/ # bug fix: load .... COORD not functional # bug fix: connected(0, {carbon}) not working # new feature: set slabByMolecule # new feature: set zshadePower -- log_2(p) in f = [(zDepth - z) / (zDepth - zSlab)]^p # # new feature: math function measure({exp1},{exp}[,{exp}[,{exp}]],min, max, format, units, "CONNECTED") # all optional after the first two expressions (or coordinates) # min/max in Angstroms # format of the sort "%a1 %a2 %5.3VALUE %UNITS" # units may be "pm", "nm", "au", or "angstroms"(default/unknown) # "CONNECTED" indicates that the atoms must be connected as well # for example: # # print measure({carbon}, {oxygen}, 1.2, 1.5, "%a1%i1\t%a2%i2\t%3.0VALUE\t%UNITS", "pm", "CONNECTED") # # code: refactoring of measurements # # new feature: embedded scripts in PovRay, JPG, and PNG files stripped of local file path, # so will run from any directory having that file also in it. # new feature: select configuration=1 same as "configuration 1", but with no shape updating # # 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 # code: better assignment of the per-model "isPDB" flag based on: # a) Is it a PDB, PQR, or mmCIF file? # b) If so, are there residues other than UNK? # # bug fix: popup menu ballandstick 20% -> 23%AUTO # -------------------------------------------------------------- #version=11.9.17 # new feature: spacefill AUTO # new feature: spacefill JMOL # new feature: spacefill BABEL # new feature: spacefill BABEL21 # new feature: spacefill RASMOL # new feature: spacefill 20%JMOL # new feature: spacefill 23%BABEL # etc. # # default atom size changed from 20%Jmol to 23%Auto for C atom size match in small molecules # # new feature: update of Babel VDW forces. We had been using Babel 1.0 numbers # that were changed long ago; # new feature: set defaultVDW BABEL21 -- older 2.1 numbers previously "BABEL" # # bug fix: MAJOR -- proper model-based Van der Waals radii. # this bug has been with Jmol since its inception -- that # the inflated Jmol parameters for H, C, N, and O are not # proper for anything but traditional "no hydrogen" PDB files # That "Jmol" data set should not be used with small molecules, # and it has long been noted that it looks incorrect. While we # have had the (old) Babel data set, one should not have to # know to use that manually. The new feature associated with this # fix is # # set defaultVDW AUTO (default) # # So now Jmol will apply a proper Babel-based VDW set when # the file has hydrogen atoms present. One can always override this # if desired, but I think the only reason to do that is to have # the identical match to an improperly defined VDW size in previous # output. # # Note -- script files already in place will not be affected, # as they explicitly define defaultVDW to be JMOL. # # code: better consistency in handling radius parameters using RadiusData # # new feature: draw BOUNDBOX (backlit for backside only) # new feature: draw UNITCELL (backlit for backside only) # these both allow for scaling: # draw scale 2.0 UNITCELL MESH NOFILL # draw scale 0.8 BOUNDBOX POINTS NOFILL # new feature: draw INTERSECTION BOUNDBOX HKL {h k l} # new feature: draw INTERSECTION UNITCELL HKL {h k l} # new feature: draw INTERSECTION BOUNDBOX PLANE {a b c d} # new feature: draw INTERSECTION UNITCELL PLANE {a b c d} # new feature: draw SYMOP {atom1} {atom2} # new feature: draw SYMOP n {atom1} {atom2} # extends draw SYMOP n {atom} # extends draw SYMOP n # new feature: show SYMOP {atom1} {atom2} # new feature: show SYMOP n # new feature: show SYMOP # new feature: math function hkl(a,b,c) # reorganizing readers # new feature: isosurface OFFSET {x, y, z} # new feature: isosurface SCALE3D x.xx Creates a "mountain" plot from a planar map # -------------------------------------------------------------- #version=11.9.16 # bug fix: WebMO reader broken # bug fix: Exporters not reading normals for isosurfaces # -------------------------------------------------------------- #version=11.9.15 # reader refactoring; applet jar for quantum merged with readersQuantum # bug fix: MOPAC reader broken in 11.9.14. # -------------------------------------------------------------- #version=11.9.14 # new feature: DGRID reader (http://cqb.fc.ul.pt/intheochem/nuno/data/dgrid-4.4.zip) # http://www.scm.com/Doc/Doc2009.01/ADF/ADFUsersGuide/page430.html # new feature: ADF orbital reading -- MOs go into LAST model frame # code: refactoring of readers # bug fix: write to clipboard not working # bug fix: TestSmarterJmolAdapter not updated for Xml type name change # bug fix: HIN format disallowed by AIMS addition (11.9.2) # bug fix: label %i not working (11.9.13) # bug fix: isosurface CUTOFF for MO not functioning (11.9.13) # code: MO calculation efficiencies # bug fix: select within(0.3, hkl, {1 2 3}) requires quotes: "hkl" # new feature: write PMESH creates XJVXL file # new feature: getproperty "shapeInfo.isosurface[1].xyzMin" # new feature: getproperty "shapeInfo.isosurface[1].xyzMax" # new feature: getproperty "shapeInfo.pmesh[1].xyzMin" # new feature: getproperty "shapeInfo.pmesh[1].xyzMax" # new feature: isosurface OFFSET {x y z} # code: exporter efficiencies, MO calculation efficiencies # bug fix: MO output to XJVXL # bug fix: XJVXL skip to specific isosurface in file # -------------------------------------------------------------- #version=11.9.13 # bug fix: PDB cryst1 record for NMR files not ignored # new feature: set phongExponent like set specularExponent, but se = 2^pe # code: refactoring lighting # code: refactoring mesh objects # bug fix: symop in biomolecule context not recsognized by label "%[symmetry]" # bug fix: "label %" can cause Java exception # new feature: optional set saveProteinStructureState usually TRUE # but can be set to FALSE to not write helix/sheet/turn data to state # bug fix: long scripts in setEcho being chopped when saved in state # bug fix: %{...} not recognized by script compiler # new feature: color fractions as points: {0.5, 0.5, 1} or [0.5 0.5 1] # new feature: anisotropy {scaleX scaleY scaleZ} and center now implemented # for all file-based and function-based isosurfaces. # scales are factors data coordinates are to be multiplied # by for display in the Jmol coordinate system. So, for example, # # pmesh ANISOTROPY {0.1 1 1} center {-4 0 0} "pmesh.bin" # # compresses the surface along x and causes data {0 0 0} to appear # at Jmol coordinate {-4 0 0} # # 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 # bug fix: file name completion fix (tab key after double- or single-quote) # bug fix: Warren Delano's idea for front-only translucency on isosurfaces (in memory of Warren Delano 1972-2009) # -------------------------------------------------------------- #version=11.9.12 # new feature: preliminary Tachyon ray tracer support # new feature: axes labels "x" "y" "z" # new feature: axes labels ON # new feature: axes labels OFF # new feature: axes ticks [x|y|z] {major,minor,subminor} format ["%0.2f", ...] scale {x y z}|x.xx (state fixed) # new feature: boundbox ticks [x|y|z] {major,minor,subminor} format ["%0.2f", ...] scale {x y z}|x.xx first x.xxx # new feature: unitcell ticks ..... with special option "scale hkl" to indicate unit cell dimension scaling # new feature: measure ticks {major,minor,subminor} format ["%0.2f", ...] scale {x y z}|x.xx first x.xxx {point1} {point2} # bug fix: signed applet should not consider "/xxx" to be local # bug fix: stereo mode results in zoom for entire right panel. # bug fix: Jmol application not saving/restoring window position # code: preliminary plot3d command # code: better handling of syntax errors in ScriptEvaluator.isosurface # code: reworking of measurements; adding TickInfo # code: refactoring of org.jmol.export # -------------------------------------------------------------- #version=11.9.11 # new feature: AMPAC reader # new feature: zoom in; zoomTo in # new feature: zoom out # new feature: -Msparshui, -Msparshui-simulated for application # multiTouchSparshUI=true or multiTouchSparshUI-simulated=true for applet # requires prior starting of JmolMultiTouchDriver.exe, currently set up # only for HP TouchSmart computer. # Uses a modified SparshUI interface over port 5946 (client) and 5947 (device). # Multi-touch gestures include a two-finger drag to translate and a two-finger # spread/pinch to zoom in/out. # In addition, a one-finger flick starts spinning. # # bug fix: _width and _height lost after initialize # bug fix: zshade incompatible with translucency # bug fix: font axes not functional # bug fix: compiler can crash on incomplete statements # 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 # bug fix: zoomTo out not functioning # code: Jmol/SparshUI multitouch refinements # code: draw: dmesh.modelFlags not properly implemented (reset in setModelVisibility) # -------------------------------------------------------------- #version=11.9.10 # bug fix: zoom/zoomTo does not refresh transform parameters # new feature: - transpose # new feature: matrix math with arrays as well as points # new feature: .row(n), .col(n) # bug fix: * error # bug fix: dot product miscalculation # bug fix: ().dot() nonfunctional # code: JmolSparshClientAdapter allows for restarting gesture server (in the case, # for example, if it was closed by an applet page being flushed). # code: SparshUI interface extension to allow input device option to consume a # set of events or not. # 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 # new feature: draw intersection $isosurfaceID PLANE|HKL [plane definition] # new feature: draw lineData [{pt1} {pt2}, {pt3} {pt4}, ... ] draws line segments from point-pair data # this is the state form of drawn isosurface/plane intersections # # for example: # # isosurface s1 sasurface # draw diameter 0.1 intersection $s1 PLANE x=13 color red # new feature: isosurface color mesh # colors mesh a specific color independent of isosurface color or color mapping. # bug fix: rear mesh lines not visible on isosurface when surface also drawn # bug fix: script APPLET * "...." does not work. # bug fix: Export uses incorrect width/height parameters when size is not window size # new feature: double-click-drag translates model # new feature: multitouch gesture antiparallel strokes: rotate at point # new feature: multitouch gesture spread/pinch: zoom in/out at point # new feature: multitouch horizontal drag: next/previous frame(s) # new feature: app command parameter [-M or --multitouch] "sparshui" or "sparshui-simulated" # applet jmolSetCallback("multiTouchSparshUI", "true") # applet jmolSetCallback("multiTouchSparshUI-simulated", "true") # with those variables set, Jmol will load the multitouch package and start # an integrated SparshUI server (if none is already started). In addition, # with the -simulated flag, Jmol simulates multitouch using CTRL-LEFT drag (twice) # This incorporation of SparshUI also demonstrates the on-the-fly loading # of a client gesture into the SparshUI system using an extension of the # SparshUI protocol that allows delivery of a class name rather than a SparshUI # gesture ordinal. # # code: ActionManagerMT - for multitouch # code: preliminary org.jmol.multitouch package # code: preliminary com.sparshui package (I've been assured this is LGPL # despite the GPL license in the direcory) # # new feature: set timeout "name" mSecDelay "script" # if mSecDelay > 0, then the script runs once # if mSecDelay < 0, then the script runs every -mSecDelay milliseconds # if mSecDelay = 0 or script is "", cancels the named timeout # new feature: set timeout "name" OFF # cancels the named timeout # new feature: set timeout OFF # cancels all current timeouts # new feature: show timeouts displays currently set timeout information # 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 # code: JmolFrameExportJmolAdapter abandoned -- hasn't been implemented since 11.0 # bug fix: occasional null pointer error during ZAP due to continued rendering by # previous graphic painting thread # code: refactoring of FileManager and clean-up of Viewer code # in relation to model loading. # -------------------------------------------------------------- #version=11.9.9 # new feature: preliminary customizable mouse bindings: # # bind "MOUSE-ACTION" actionName|"...some script..." # unbind ["MOUSE-ACTION"|all] [actionName|all|"...some script..."] # # mouse actions include: # # CTRL ALT SHIFT LEFT RIGHT MIDDLE WHEEL DOUBLE SINGLE # # action names include: # # _rotate _wheelZoom _rotateZ _rotateZorZoom _translate _slideZoom # _dragSelected _rotateSelected _dragLabel _dragDrawPoint _dragDrawObject # _swipe _spinDrawObjectCW _spinDrawObjectCCW _slab _depth _slabAndDepth # _popupMenu _clickFrank _navTranslate _pickAtom _pickPoint _pickLabel # _pickMeasure _setMeasure _pickIsosurface _pickNavigate _select # _selectNone _selectToggle _selectAndNot _selectOr _selectToggleOr # _reset # # for example: # # bind "CTRL-ALT-LEFT" _popupMenu # unbind "CTRL-ALT-LEFT" _popupMenu # unbind _clickFrank # unbind "CTRL-ALT-LEFT" # # Note that by binding a script to the mouse action, you can divert # Jmol's action to be your own. The script can contain variables # _X, _Y, _DELTAX, _DELTAY, _TIME, and _MODE # which will be filled with data. _MODE values include: # 0 (mouse pressed) # 1 (mouse dragged) # 2 (mouse released) # 3 (mouse wheeled) # # Note also that the bindings relate to the currently set value of # set pickingStyle # "toggle", "selectOrToggle", "extendedSelect" # # # new feature: getproperty mouseInfo # mouseinfo.bindingName "Jmol" # mouseinfo.actionInfo *String[34] ["rotate","zoom",...] # mouseinfo.actionNames *String[34] ["_rotate","_wheelZoom"...] # mouseinfo.bindingInfo *String[27] ["rotate\tLEFT","zoom\tWHEEL","rotate Z\tALT+LEFT, SHIFT+RIGHT"...] # mouseinfo.bindings *Vector[35] # mouseinfo.bindings[1] *String[2] ["ALT+SHIFT+LEFT","_dragSelected"] # mouseinfo.bindings[2] *String[2] ["RIGHT","_popupMenu"] # mouseinfo.bindings[3] *String[2] ["ALT+LEFT","_dragDrawPoint"] # mouseinfo.bindings[4] *String[2] ["CTRL+RIGHT","_translate"] # ... # bug fix: smoother zoom using mouse wheel or Mac two-finger gesture. # bug fix: MSIE mouse-wheel malfunction due to Jmol not consuming the wheel motion # new feature: mouse move into right 2% of screen display zoom cursor # new feature: LEFT vertical motion within right 2% of screen effects zoom action # new feature: swipe gesture: mouse released while LEFT motion of at least 10 microsteps # starts spinning (like Google Earth) # new feature: set allowGestures TRUE allows swipe # 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 # new feature: show mouse and show mouse xxxx (still some work to do) # for example, show mouse select # # move selected atoms (requires SET DRAGSELECTED) ALT+SHIFT+LEFT # rotate selected atoms (requires SET DRAGSELECTED) ALT+LEFT # toggle selection (requires SET PICKINGSTYLE EXTENDEDSELECT/RASMOL) SHIFT+LEFT, LEFT+double-click # # or show mouse: # # rotate LEFT # zoom WHEEL # rotate Z ALT+LEFT, SHIFT+RIGHT # rotate Z (horizontal motion of mouse) or zoom (vertical motion of moouse) SHIFT+LEFT, MIDDLE # translate CTRL+ALT+LEFT, CTRL+RIGHT, SHIFT+LEFT+double-click, MIDDLE+double-click # zoom (along right edge of window) LEFT # move selected atoms (requires SET DRAGSELECTED) ALT+SHIFT+LEFT # rotate selected atoms (requires SET DRAGSELECTED) ALT+LEFT # move label (requires SET PICKING LABEL) SHIFT+LEFT # move specific DRAW point (requires SET PICKING DRAW) ALT+LEFT # move whole DRAW object (requires SET PICKING DRAW) SHIFT+LEFT # spin model (swipe and release button and stop motion simultaneously) LEFT # click on two points to spin around axis clockwise (requires SET PICKING SPIN) SHIFT+LEFT # click on two points to spin around axis counterclockwise (requires SET PICKING SPIN) LEFT # adjust slab (front plane; requires SLAB ON) CTRL+SHIFT+LEFT # adjust depth (back plane; requires SLAB ON) CTRL+SHIFT+LEFT+double-click # move slab/depth window (both planes; requires SLAB ON) CTRL+ALT+SHIFT+LEFT # pop up the full context menu CTRL+LEFT, RIGHT # pop up recent context menu (click on Jmol frank) LEFT # translate navigation point (requires SET NAVIGATIONMODE and SET PICKING NAVIGATE) LEFT # pick an atom LEFT # pick a DRAW point (for measurements) LEFT # pick a label to toggle it hidden/displayed (requires SET PICKING LABEL) LEFT # pick an atom to include it in a measurement (after starting a measurement or after SET PICKING DISTANCE/ANGLE/TORSION) LEFT # pick an atom to initiate or conclude a measurement LEFT+double-click # pick an ISOSURFACE point ALT+LEFT # toggle selection (requires SET PICKINGSTYLE EXTENDEDSELECT/RASMOL) SHIFT+LEFT, LEFT+double-click # reset (when clicked off the model) SHIFT+LEFT+double-click, MIDDLE+double-click # # code: ActionManager and Binding variations (finally!) isolates # key/button mouse actions and Jmol actions to allow for a generalized # binding of "gestures" to Jmol actions. Included are four bindings: # Jmol, Rasmol, Drag, and Pfaat. This is in preparation for incorporating # multitouch capability in Jmol # # new feature: expanded zoomTo: # zoomTo timeSeconds zoomLevel [xTrans] [yTrans] # 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.9.8 # new feature: labels HIDE and labels DISPLAY do exactly that # new feature: application console completes commands and quoted filenames with # # new feature: load "xxxx.xxx" [-vibration number] # loads only the specific vibration model. # # new feature: (embedded application; org.jmol.api.JmolViewer.java method): # abstract public String loadInline(Vector arrayData, boolean isAppend); # @param arrayData a Vector of models, where each model is either a String # or a String[] or a Vector # @param isAppend TRUE to append models (no ZAP) # @return null or error message # #### NOTE: THIS METHOD DOES NOT PRESERVE THE STATE # #### BECAUSE IT DOES NOT SAVE THE READ DATA IN A SCRIPT COMMAND # #### FOR THAT FUNCTIONALITY USE loadInline(String[] modelData, boolean isAppend); # # 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 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 # # code: refactoring of readers to standardize vibration loading # code: removed unnecessary org.jmol.applet.Jvm12.java # code: major overhaul of Tokens -- all script options now included as # tokens so that tab-completion has access to the full repertoire of command # options. # Future work might refine that to indicate only the appropriate options. # code: clean up of (Xxxx) null -- only useful during compilation as a # parameter of a method call so as to set which method to call. # -------------------------------------------------------------- #version=11.9.7 # 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: select xxx when xxx is an array fails to do lookup of defined values # bug fix: legacy code: Bond.getBondModelIndex returning atomIndex instead # new feature: application file dropper for xjvxl and jvxl files into "isosurface1" # bug fix: writing valid XML by escaping < and & using ~; and ~% # 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)))", # code: JvxlReader/JvxlXmlReader refactoring # new feature: Jvxl 2.1 -- XML format for JVXL files # generated using write t.xjvxl or for files that require this feature # isosurface test: # # load cH3F.smol; slab 50 # set clickcallback "jmolscript:if (_mouseModifiers == 0) {isosurface plane @{_slabPlane} map contour mep;write t.jvxl;delay 0.5;isosurface t.jvxl}" # # new feature: now() function, with now(fromWhen) # for example: # i = now(); # ... # print now(i); # reports milliseconds # # bug fix: loglevel 3 still sending messages # # new feature: isosurface/pmesh commands accept unquoted file names. # new feature: Jvxl 2.1 -- XML format for JVXL files # here, initially, only being used for writing contour or triangle data # NOTE -- Jvxl-XML is not backward-compatible with previous versions of Jmol. # for now use SET testflag4 ON to enable full XML writing of JVXL files # new feature: Jmol frank hover provides menu tip # new feature: getproperty shapeinfo better reports contour levels # new feature: isosurface ... map CONTOUR DISCRETE [0.5, 1.0, 1.5, 2.0] # new feature: isosurface ... map CONTOUR INCREMENT {0.0, 1.0, 0.2} # # 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 -- not tied to slab on # 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 # # code: reworking of JVXL reader classes, creation of JvxlCoder.java # code: reworking of ASimpleJvxlWriter to utilize standard classes # code: reworking of Parser, TextFormat, ArrayUtil, and Escape # to not utilize any nonstandard Java classes (such as # Graphics3D or BondSet or Token), thus making these # classes generic and not Jmol-dependent. # code: StatusListener refactored as individual class # -------------------------------------------------------------- #version=11.9.6 # 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) # -- Thank you, Sarah Mattler, WUSTL! # -------------------------------------------------------------- #version=11.9.5 # bug fix: load xxx.jmol # bug fix: better file previewer (with signed applet, also) # no echo and no uccage, only first model # bug fix: security upgrade for writing files by the signed applet # 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 # # new feature: shape size setting and query: # # {xxx}.cartoon = 2.5 # print {xxx}.cartoon # if ({selected}.backbone)... # # TESTABLE shapes include: # # backbone, cartoon, dots, ellipsoid, geosurface, # halo, meshRibbon, ribbon, rocket, spacefill, star, trace # # SETTABLE shapes include: # # backbone, cartoon, halo, meshRibbon, ribbon, rockets, spacefill, star, trace # # new feature: restrict BONDS xxxxx respects bondMode for bonds and backbone # # 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.9.4 # bug fix: select *.? not working properly # code: better file output localization within code in viewer.createImage() # # new feature: write ZIP|ZIPALL "xxx.jmol" and write ZIPALL "xxx.jmol" or just # # write xxx.jmol # ZIPALL implied # # creates single-file package; added "ZIPALL" includes remote files # # new feature: $SCRIPT_PATH$ prefix to file name uses path of script # file rather than default path # bug fix: isosurface not retrieving exact reference for jvxl files in state # bug fix: (potential) draw symop could have incorrect glide# rearrangement of a few pop-up menu entries and new ones # affects: File (Open+Save+Export) | About (Model+Jmol+System) | Computation:Minimize # -------------------------------------------------------------- #version=11.9.3 # bug fix: "zapped" file does not clear menu # new feature: symop(-n) -- use for "reverse of" n # new feature: symop("!x..y..z..") "reverse of" "x..y..z.." # new feature: 3x3 or 4x4 matrix element get/set: # note that this is all 1-based. # # mat[3] = [1,3,4] # mat[13]= 3.0 # # rows: [1], [2], [3], [4] # columns: [-1], [-2], [-3], [-4] # elements: [11] [12] [13] [14] [21] [22]... [44] # # new feature: matrix element getting option mat[row][col]: # # print mat[33] # print mat[3][3] # # just can't do this: mat[1][3] = 3.0 # # maybe someday.... # # new feature: matrix invertiion using "!": # mat = quaternion({1 0 0}, 35)%-9; # print !mat # # draw symop 3 # draw symop @{!symop(3)} # # new feature: x = quaternion(mat); mat = x%-9 # create quaternion from 3x3 matrix and return matrix from quaternion # new feature: symop("x,y,z") or symop(n) returns matrix4f for this operator # new feature: symop(n)*symop(m) returns matrix4f for the concatenated operation n*m (m first, then n) # new feature: symop(mat,...), where mat is a matrix4f variable same as symop("x,y,z",...) # new feature: draw symop @matrixVariable # thus we can have: # # draw symop @{symop(11)*symop(14)} # # or # # x = symop(11) * symop(14) # print symop(x,"description") # # new feature: symop(xxx,"[what]") where "[what]" is: # "xyz", "description", "translation", "center", "axispoint","axis", "angle", "matrix4f", # or anything else is a draw ID # # new feature: symop() returns array of information for symop(3,"array") or symop("x,y,z", "array") # * xyz (Jones-Faithful calculated from matrix) # * xyzOriginal (Provided by operation) # * description ("C2 axis", for example) # * translation vector (fractional) # * translation vector (cartesian) # * inversion point # * axis point # * axis vector # * angle of rotation # * matrix4f representation # # new feature: matrix3f and matrix4f variables with basic rotational/translational multiplication # # 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" # new feature: isosurface map FULLPLANE creates full plane instead of just around the contours. # bug fix: isosurface reading of contoured JVXL files defaults to "nomesh nofill" # -------------------------------------------------------------- #version=11.9.2 # bug fix: file save from menu does not pull up dialog # bug fix: aims/castep readers # bug fix: "initialize" should not reset defaultDiretory # new feature: xxxx.sum same as xxxx.add(), but faster and more intuitive. # new feature: print {xxx}.volume("type") -- in Ang^3. Multiply by 0.602 for cm^3/mol # where "type" is "jmol" or "babel" or "rasmol" or "user" (based on data element_vdw) # if "type" is not given, Babel is assumed. A.Bondi, J. Phys. Chem. 68, 1964, 441-451. # new feature: calculate volume (of selected atoms) # bug fix: compiler error for {xxx}.yy = n \n {xxx}.yy = n # bug fix: compiler error for literal -0 or -0.0 # new feature: script LOCALPATH "xxx" and write script LOCALPATH "xxx" # either on reading or writing sets all LOCAL file references in script # to be within the path indicated. For example, # # write script LOCALPATH "" "tx.spt" # # will create a script "tx.spt" stripping all file paths from file names -- that is, # a script that assumes all files are in the current directory. # # script LOCALPATH "data" "tx.spt" # # will convert a reference "C:/temp/myfile.xyz" in script "tx.spt" to "data/myfile.xyz" # # file references including the LOCALPATH will be truncated: # "C:/temp/data/myfile.xyz" will become simply "data/myfile.xyz" # # new feature: script REMOTEPATH "xxx" and write script REMOTEPATH "xxx" # same as REMOTEPATH, but only changes http: https: or ftp: references # # bug fix: show pointgroup can give wrong format after getproperty PointGroupInfo # bug fix: mmCIF misreads bfactor data # new feature: crystallographic symmetry and anisotropic ellipsoids for proteins. # bug fix: load append of file with ellipsoids causes array out of bounds exception # bug fix: show spacegroup can cause null exception # new feature: getProperty command allows xxx.yyy.zzz[3] notation and has new output format # # > getProperty auxiliaryInfo.models[1].symmetryOperations # # auxiliaryInfo.models[1].symmetryOperations *String[2] ["x,y,z","-x,y+1/2,-z"] # # > print getProperty("auxiliaryInfo.models[1].symmetryOperations")[2] # # y+1/2,-z # # new feature: connect command prefers COLOR keyword prior to color designation # code: refactoring org.jmol.viewer.Script... into org.jmol.script # with the result that far more viewer methods are more publicly accessible # bug fix: animation direction -1 not functional # bug fix: script lines 1-3 not functional # ----------------------------------------------------------------------------- #version=11.9.1 # bug fix: 2D mesh property not cleared # new feature: clickCallback -- returns screen x, y, modifiers, clickCount, and an int[1] array allowing for return of modified modifiers. # function myClickCallback(app,x,y,modifiers,clickCount,Ret){} # app is the applet identifier, usually "jmolApplet0" # x and y are screen coordinates with [0,0] in the bottom left corner # modifiers is a set of bits indicating what keys and mouse buttons were pressed: # 1(shift), 2(ctrl), 4(right), 8(alt), 16(left). # If none of these bits are set, this is a "mouse-up" event # clickCount is the number of clicks. # 0 here indicates the mouse was pressed (as in the initiation of a drag operation) # negative numbers indicate dragging # positive numbers are standard clicks of the mouse # Ret is an array with just one element that allows returning a new modifier. # Setting Ret[0]=0 cancels Jmol processing of the event. # # 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 # bug fix: grp.property_x = n can change definition of grp # code: refactoring of Measure/Graphics3D # bug fix: q1.dot(q2) # ----------------------------------------------------------------------------- # version 11.8.RC6 # 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 below NOT CORRECT -- fixed in Jmol 11.9.7 and Jmol 11.8.8 # 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 # will be checked if loadAtomDataTolerance is less than zero. # --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 {*} {*} [not documented; not working] # 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: set currentLocalPath -- for dialogs only # 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: set selectAllModels (generally TRUE, but can be set FALSE) # 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: MRC (CCP4) electron density surface data file read with incorrect origin offset; # bug fix: MRC files inside out # new feature: MRC (CCP4) uses 3*rms + mean for automatic cutoff # 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) # # set axis1Color ... # set axis2Color ... # set axis3Color ... # set axesColor ... # # 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=