# NOTE: This is not the development trunk. It is the release branch. # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 11.9.x version=11.8.18 # bug fix: (not really) -- " " character in VRML export added to accomodate AutoDesk 3D MAX import read bug # bug fix: drawHover status not reported properly after zap/new model loaded # code: model properties atomCount, bondCount should be private # bug fix: bitsets not properly handled in model deletion # bug fix: bfactor min/max was ignoring first atom # bug fix: within molecule was using undocumented "visible" # bug fix: frame *;draw {atomno=1} {atomno=5} not working properly # bug fix: pdb reader as trajectory error # bug fix: MO export to cartesian exporters (VRML/X3D/Maya) should not do front-only # bug fix: APBS reader could hang on empty line # bug fix: message this is a @{test} fails # bug fix: CCP4/MRC and XPLOR map file reader fix/upgrade # ----------------------------------------------------------------------------- #version=11.8.17 # bug fix: revertings changes to cancelRendering # bug fix: applet cannot load inline # ----------------------------------------------------------------------------- #version=11.8.16 # bug fix: connected(0, {carbon}) not working # bug fix: obscure compiler PDB bug for polyhedra, structure, frame commmands # utilizing user-defined functions of the form @{xxx({n})} # bug fix: polyhedra colors not deleted when polyhedra deleted # bug fix: polyhedra can be lost if only a subset are colored # bug fix: write to clipboard not working # bug fix: label %i not working # bug fix: select within(0.3, hkl, {1 2 3}) requires quotes: "hkl" # ----------------------------------------------------------------------------- #version=11.8.15 # bug fix: PDB cryst1 record for NMR files not ignored # bug fix: symop in biomolecule context not recsognized by label "%[symmetry]" # bug fix: "label %" can cause Java exception # bug fix: older format %{...} not recognized by script compiler # bug fix: long scripts in setEcho being chopped when saved in state # bug fix: "color background xxxx" clears background image as well # bug fix: labels given text after containing an image have incorrect y-displacement # bug fix: transparent pixels in images not respected # ----------------------------------------------------------------------------- #version=11.8.14 # bug fix: _width and _height lost after initialize # bug fix: Jmol 11.8.10-11.8.13 will not read state orientation correctly # ----------------------------------------------------------------------------- #version=11.8.13 # bug fix: font axes not functional # bug fix: FILTER "biomolecule ..." option broken in LOAD command. # bug fix: {xxx}.xxx = syntax immediately following "for ( ) {...}" causes compilation error # bug fix: draw: when only some models are visible, does not properly assign models to drawn object # code: draw: dmesh.modelFlags not properly implemented (reset in setModelVisibility) # bug fix: zoomTo out not functioning # ----------------------------------------------------------------------------- #version=11.8.12 # bug fix: zoom/zoomTo does not refresh transform parameters # bug fix: dot product miscalculation # bug fix: NWChem reader not reading files with lower-case-only atom names # bug fix: code - viewer.getDisplayModelIndex() not used properly when background model is present # bug fix: rear mesh lines not visible on isosurface when surface also drawn # bug fix: Export uses incorrect width/height parameters when size is not window size # ----------------------------------------------------------------------------- #version=11.8.11 # bug fix: select *.CD not accepted. # bug fix: navigation key release causing unnecessary refresh # bug fix: console command recall (up arrow) does not always return full command line # bug fix: zShade/navigation mode incompatibility # bug fix: navigate TRACE broken in 11.7.47 # bug fix: zshade not resetting properly; now reset off with reset() or load of model # bug fix: occasional null pointer error during ZAP due to continued rendering by # previous graphic painting thread # code: JmolFrameExportJmolAdapter abandoned -- hasn't been implemented since 11.0 # ----------------------------------------------------------------------------- #version=11.8.10 # bug fix: MSIE mouse-wheel malfunction due to Jmol not consuming the wheel motion # bug fix: isosurface xxx lcaocartoon ... does not always honor xxx as isosurface name # bug fix: Hall name translator can incorrectly assign matrix for F m -3 m group # bug fix: Gaussian '09 reader not reading " Atom AN" properly in frequency lists # bug fix: zoom/rotateXY modes not properly isolated # bug fix: moveto with {0 0 0 0} uses instead {0 0 1 0} # bug fix: zoomto fights with user over orientation # bug fix: AIMS files with empty lines preceding keyword lines are now recognized # bug fix: AIMS reader not reading multipole lines describing monopoles # bug fix: CASTEP and AIMS readers now properly load unit cells using cell vectors # which are not suitably aligned with the coordinate axes of the reference coordinate system # bug fix: CASTEP reader not understanding unit specifier in .cell files # ----------------------------------------------------------------------------- #version=11.8.9 # bug fix: strand count assignment error in cif/pdb readers causes failure to load 3ovo.cif # bug fix: labels offset using set picking select label not saved in state properly; # added "set labelOffsetExact" # bug fix: set picking select label shifting label causes jump and not saved in state reproducibly # bug fix: set toggleLabel inappropriately resets label to default setting # bug fix: moveto QUATERNION (undocumented for 11.8) not distinguishing between # orientation quaternions and molecular quaternions # -- MOLECULAR keyword added # bug fix: setting perspective model stops animation in state script # bug fix: GAMESS reader not reading all vibrational frequencies # ----------------------------------------------------------------------------- #version=11.8.8 # bug fix: GAMESS reader not reading BETA MOs. # bug fix: A function starting with "_" originally was considered # local to the applet, with all other functions being static. # Then, in 11.7.45, this was switched. Unfortunately, # that meant state functions _set... were static # causing applet-applet interference. # So for this fix I've changed that to be "static_..." for # expressly static functions, and then also designated # "_...." functions as not generally declared when writing # a state or in "show functions" so that a state does not # duplicate itself, and "show functions" works as before. # bug fix: jmol -ionxs with a script that includes measurement tries to update a nonexistant measurementTable # bug fix: select xxx when xxx is an array fails to do lookup of defined values # bug fix: legacy code: Bond.getBondModelIndex returning atomIndex instead # bug fix: water: +", (oxygen & connected(2) & connected(2, hydrogen or deuterium or tritium), (hydrogen or deuterium or tritium) & connected(oxygen & connected(2) & connected(2, hydrogen or deuterium or tritium)))", # bug fix: data3d_ not working for saving state after functionXYZ # bug fix: isosurface does not clear data after functionXY or functionXYZ # bug fix: label %vx giving x coord, not vibration x component # bug fix: write VAR for string array does not work. # bug fix: GAMESS reader vibrations use wrong atom coordinates # bug fix: PQR reader not adaptive # bug fix: zshade now working correctly (almost -- see 11.8.11) # bug fix: setting spacefill to a large user-defined VDW radius incorrect # bug fix: Gaussian 09 LOG file reader upgrade for MOs # bug fix: unitcell offset {1 1 1}; select UNITCELL # ----------------------------------------------------------------------------- #version=11.8.7 # bug fix: incorrect reference to jmolStatusListener for sync callback in StateManager # bug fix: file drop needs zap prior to load for cleaner operation # bug fix: Hall symbol translation generates incorrect Jones-Faithful operation (missing translation) # (broken by 11.8.4 9/5/2009) -- Thank you, Sarah Mattler, WUSTL! # ----------------------------------------------------------------------------- #version=11.8.6 # bug fix: context menu View... broken when boundbox or unitcell are on # bug fix: syncScript broken # bug fix: load trajectory not working properly # bug fix: animation/spin incompatibility problem # bug fix: initialize does not reset antialiasDisplay or set animation off # bug fix: getProperty("menu") does not work until a menu has been called up by user # bug fix: menu item for style does not respect bondMode # bug fix: lcaocartoon not working # ----------------------------------------------------------------------------- #version=11.8.5 # bug fix: select *.? not working properly # bug fix: isosurface not retrieving exact reference for jvxl files in state # bug fix: (potential) draw symop could have incorrect glide # ----------------------------------------------------------------------------- #version=11.8.4 # bug fix: "zapped" file does not clear menu # bug fix: x = {255,0,0}; select color=x; #did not work # bug fix: symop() -- can now be used without "all." # bug fix: isosurface reading of contoured JVXL files defaults to "nomesh nofill" # ----------------------------------------------------------------------------- #version=11.8.3 # bug fix: file save from menu does not pull up dialog # bug fix: aims/castep readers # bug fix: "initialize" should not reset defaultDiretory # bug fix: compiler error for {xxx}.yy = n \n {xxx}.yy = n # bug fix: compiler error for literal -0 or -0.0 # bug fix: show pointgroup can give wrong format after getproperty PointGroupInfo # bug fix: mmCIF misreads bfactor data # bug fix: load append of file with ellipsoids causes array out of bounds exception # bug fix: show spacegroup can cause null exception # bug fix: animation direction -1 not functional # bug fix: script lines 1-3 not functional # ----------------------------------------------------------------------------- #version=11.8.2 # bug fix: 2D mesh property not cleared # bug fix: popupMenu disabling nonfunctional # bug fix: acos, to be consistent, needs to deliver degrees, not radians # bug fix for MOReaders * NBO: --- note, "-" can be in column with " " causing tokenization failure # ----------------------------------------------------------------------------- #version=11.8.1 # bug fix: grp.property_x = n can change definition of grp # code: refactoring of Measure/Graphics3D # bug fix: q1.dot(q2) # new feature: CASTEP (http://www.castep.org/) and AIMS readers # new feature: popup menu gives Symmetry operation display option # new features for the 238th American Chemical Society National Meeting, Washington, D.C., Aug. 19, 2009 # new feature: draw ID xxx SYMOP [n or "-x,y,z"] [optional {atom or position}] # draws symmetry operation for spacegroup # see http://chemapps.stolaf.edu/jmol/docs/examples-11/showsym.htm # new feature: pt = all.symop(3, {atomno=3}) # new feature: sdrawCommands = all.symop(3, {atomno=3},"draw_id") # # new feature: ho, ho, this is fun. Wouldn't it be nice to just drag a JPG into # Jmol and have it come alive? # write IMAGE t.jpg # load t.jpg (Or just drag it into the Jmol window from a file directory. # The IMAGE option instructs Jmol to add its state to the JPG image, so when it is # dragged in, Jmol recognizes that and loads the state. Very cool. # # also with PNG images; to not do this, use # # set imagestate false # # bug fix: polyhedra saving in state # bug fix: function call as statement with expression argument fails: # # testing({atomno=3}) # # bug fix: isosurface map property can create holes in isosurface # code: dissociation of applet console from jvm12 # bug fix: Various Examples fixes # bug fix: defaultDirectory should not be part of the state # new feature: select structureID="xxx" selects structures by alphanumeric id such as "S1" or "H3" # bug fix: show structure not properly showing structure indices, IDs, or strand counts for PDB or CIF files # code: Jmol embedded in applications can use Jmol menu and Jmol console directly (needs testing) # code: PdfCreator incorporated into ImageCreator and outputs antialiased image # ----------------------------------------------------------------------------- #version=11.8.RC5 # new feature: Jmol embedded in applications can use WRITE command to create all types of images and exports # new feature: VERY COMPACT IDTF export (for U3D conversion; all except background color) # * after # * # * write t.idtf # * # * using IDTFConverter.exe, on Windows one can turn these files into VERY COMPACT U3D files. # * # * IDTFConverter.exe -input t.idtf -output t.u3d # * # * see http://sourceforge.net/projects/u3d/ # * see http://en.wikipedia.org/wiki/Universal_3D # * see http://www.ecma-international.org/publications/standards/Ecma-363.htm # * in the downloadable zip file, see docs/IntermediateFormat/IDTF Format Description.pdf # # bug fix: (application) delaying saveChooser load makes startup MUCH faster when loading a file # bug fix: gaussian reader may fail to read MOs from Gaussian 03: AM64L-G03RevC.01 3-Apr-2004 # ----------------------------------------------------------------------------- #version=11.8.RC4 # from the 2009 GORDON RESEARCH CONFERENCE ON EDUCATION: # bug fix: DRAW point size 6 pixels (an even number) sets it just one pixel off center -- 7 is better. # new feature (TODO): 4D extension (that's right -- FOUR dimensions) # new feature: set picking Label now allows label offset by holding SHIFT down while dragging atom # new feature: lone pairs and radicals -- extension of lcaoCartoon: # # select oxygen; lcaocartoon lonePair "sp2a" # select oxygen; lcaocartoon radical "sp3" # # new feature: print getProperty("FileInfo","REMARK300") //was PdbInfo # new feature: print getProperty("FileInfo","models",1,"_citation_year"); # TODO: load 1crn.pdb;quaternion;quaternion diff;zap 2.1 -- leaves blank model 2.1 and destroys state # TODO: what to do about deleting models prior to current -- why statescript removed? # bug fix: zap x.y when have measures to draw objects causes exception # bug fix: isosurface mapping with property where property can be NaN does not render some regions # bug fix: lcaoCartoon wildcard problems # bug fix: undocumented rotate[selected] {pt1} {pt2} ... has pt1/pt2 backward. Should be such that: # # rotate x 10 # # is the same as # # rotate {0 0 0} {1 0 0} 10 # # new feature: set quaternionFrame "a" -- alpha-carbon-ONLY straightness. see 1JGQ # bug fix: compiler error when integer typed instead of command # bug fix: state for lcaocartoon broken # bug fix: set picking spin for draw objects broken in 11.8.RC1 # new feature: set helixStep 0 -- relates a quaternion to the standard reference frame # bug fix: DRAW CIRCLE size may not be correct when restored from state # new feature: write "xxx.X3D" # new feature: [x,y,z].sum2 or {xx}.someProperty.sum2 -- sum of squares # new feature: VRML export nearly full support # -- includes draw, ellipsoids, dots, isosurface, cartoons, stars, halos, # polyhedra, vectors, dipoles, etc. # -- no background labels # -- labels are not exactly the right size # -- no background image # -- no ellipsoid quadrant cutouts # -- slightly irregular trace when very small diameter # code: simplified export interfaces # ----------------------------------------------------------------------------- # version=11.8.RC3 # code: more efficient VRML export # new feature: set helixStep 1,2,3,... sets step for quaternion-based analysis of structure -- see 1C4D # bug fix: 1C4D has [FOR] -- not accepted # bug fix: color isosurface red translucent prior to isosurface command causes null pointer exception # new feature: isosurface select(....) SET n # where n is an integer 1,2,3... that selects which set is to be displayed and # counted for area or volume # bug fix: spacegroup reading when center of molecule is not in unit cell can cause bonding errors # new feature: isosurface area for subsets -- use # isosurface area select(oxygen) sasurface colorscheme sets # bug fix: draw OFF in state script is not selective # ----------------------------------------------------------------------------- # version=11.8.RC2 # bug fix: mouse-picked measurements broken in 11.8.RC1 # ----------------------------------------------------------------------------- # version=11.8.RC1 # bug fix: measurements defined using points not restricting to models # -- note, bug fixes in .RCx versions will not be fixed in 11.6 # ----------------------------------------------------------------------------- # version=11.7.47 # new feature: set quaternionFrame "RC" or "RP" -- ramachandran-derived straightness # new feature: array1.add("sep", array2) adds a new column of values separated by sep, for example: # set quaternionFrame "P";ap = {*.ca}.straightness; # set quaternionFrame "C";ac = {*.ca}.straightness; # print {*.ca}.label("%n\t%R").add("\t",ap).add("\t",ac); # # bug fix: VRML balls missing; VRML/POVRAY error on partial surfaces # new feature: NAVIGATION STOP -- sets navX, navY, navZ to 0 # new feature: navX, navY, navZ, navFPS all settable # new feature: NAVIGATION ON/OFF now does continuous motion with arrow keys # SPACE to stop # LEFT/RIGHT to pan left or right # UP/DN to move forward/back # ALT UP/DN to pitch up/down # CNTL UP/DN to increase/decrease speed in larger amounts # code: more efficient labelGroup calculatiion # bug fix: navigationmode not properly adapting with window resize or antialiasdisplay # new feature: draw HELIX AXIS or quaternion HELIX AXIS, also for DNA/RNA # code: cleaned up navigation business; an attempt at navigating a surface...Maybe not... # new feature: GROMACS reader # bug fix: arrays passed to functions by reference do not update if size is increased # new feature: by passing an array to a function, you can make that variable # return a value -- any value, not just an array: # function test(a) { # a = "new value" # } # b = [] # test(b) # print b ==> "new value" # # bug fix: spacegroup "-- [--]" displayed when load command option SPACEGROUP is used # bug fix: mol2 reader not properly allowing override of CRYSIN unit cell record # bug fix: %r not correct label # bug fix: quaternionFrame default now "p" # bug fix: quaternion difference off by one group # bug fix: show FUNCTIONS not working # bug fix: draw picking in multimodel context causes null pointer exception # new feature: within("HELIX"), within("SHEET") -- helix and sheet, but not ends # new feature: all.bin(f0, f1, df) -- binning of data to give an integer array of counts # for example: print {*}.straightness.all.bin(0, 1, 0.05) # bug fix: WRITE MO does not work when no current MO is present # new feature: draw ARC {center} {plane} # new feature: draw ARC {center} {axisPoint} # new feature: draw CIRCLE {center} {plane} # new feature: draw CIRCLE {center} {axisPoint} # new feature: draw SCALE works with CIRCLE # bug fix: draw ARC was using radius, not diameter, for scale # bug fix: draw RAMACHANDRAN angle arrow radii too small # bug fix: quaternion difference draw not quite correct on axis position # bug fix: 11.7.43 broke restoration of state having multimodel draw # ----------------------------------------------------------------------------- #version=11.7.46 # bug fix: select model=1 does not work (since 11.6.RC17!) # new application: JmolData.jar # This application completely disallows any display -- it is totally formless # There are no Java Swing JFrames involved, no dialogs, no popup menus, # no display, no shapes, no labels, no echos -- just the model data. # # bug fix: command-line jmol scripts not exiting jmol upon an error condition # argh. FOR broken in 11.7.45 # new feature: helix(resno or {atomExpression},type) # given x = C-alpha, C-carbonyl, or N (depending upon set quaternionFrame) # where type = # "point" -- nearest point to x on local helix axis # "axis" -- quaternion derivative vector normal indicating local helix axis # "angle" -- rotation around local heix axis for resno i --> i+1 # "radius" -- vector normal from local helix point to x # "draw" -- draw command for the local helix vector # note that the axis length is the rise, radius length is the radius, # and 360 / angle is the pitch of the helix # # bugfix: gamess readers crashing if keywords missing from basis options or control options # code: findNearestAtomPicked added to JmolViewer # new feature: VRML exporter displays ribbons and cartoons by automatically setting # hermiteLevel 1 if necessary. # new feature: VRML exporter recognizes color and normals for isosurface # ----------------------------------------------------------------------------- #version=11.7.45 # bug fix: load trajectory XXX.cif not applying fractional coordinates. # bug fix: load trajectory {0 -1 1} not loading any models if first model has 0 atoms # (as in certain cif files) # bug fix: dipole offsetside not working for molecular dipole (EVER!) # # code: refactored scriptEvaluator and Jmol.java. Now it is much simpler # to create a truly "headless" Jmol application, where Jmol is being # used for the investigation of the structure instead of visualization. # # script editor behaving properly except for a nasty SWING bug that will # require recasting this in AWT instead of SWING. # See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4353673 # # new feature: gamessUS reader now reads dipoles and partial charges. # # TODO script editor -- search? argh... I knew this would be a can of worms... # script editor -- undo/redo works (CTRL-Z, then SHIFT-CTRL-Z or CTRL-Y) # # new feature: drag/drop and file menu-open scripts directly into editor, from where they can be checked or tested. # code: refactored readers, allowing for more obvious initialization/finalization methods # new feature: App and applet consoles now have "editor" buttons # that load scripts into a "script editor" and allow stepping through # scripts (and changing values during the pauses) - preliminary only # # opens a rough draft ScriptEditor # new feature: Gamess file reader now translates internal basis set and calculation # methods representations into roughly literature standard for Pople & Dunning basis # sets as well as perturbation, CI and CC calculation methods. This is dumped to # calculationType. # new feature: application console buttons: PAUSE, ?, STEP # new feature: SHOW TRACE -- reports stack trace # bug fix: functions with names starting with _ were local instead of global # bug fix: 2 pixels off in y for labels. Don't know why I thought that was necessary in Text.java::setBoxXY. # new feature: SHOW VARIABLES now gives variable trace through function stack # new feature: [Oh, VERY COOL!] You can now pause the app anywhere in a # script, do anything you want -- even within functions -- change variables, # set parameters, anything -- and then resume with RESUME. Some of us # have dreamt of having this with JavaScript. Very very useful! # so, for example: # # function testing(i,j) { # n = 3 # show variables # pause change any variable and then enter RESUME # show variables # } # testing(3,5) # # bug fix: problems with PAUSE/RESUME within App # bug fix: "set ?" nonfunctional # bug fix: unmatched { in quotes in @{ } not properly treated: echo @{" testing}"} # new feature: strings may start with ' or ", like JavaScript: # x = 'testing' # print 'there are ' + all.length + ' atoms' # cd, echo, gotocmd, help, hover, javascript, label, message, and pause # all are implicitly strings. You CAN use "..." but you don't have to, # and you cannot use '...'. This way the introduction of single quotes # as an equivalent of double quotes cannot break existing scripts. -- BH 06/2009 # new feature: print getProperty("PDBInfo","REMARK300") # ----------------------------------------------------------------------------- #version=11.7.44 # bug fix: write FRAMES also for trajectories # new feature: MO LIST or SHOW MO LIST display listing of orbitals for all files # new feature: GAMESS reader now sets calculationType, orbital type, and auxiliaryInfo.calculationOptions # bug fix: select(x;{xxx};...) or for(x;{xxx};...) when {xxx} is empty returns incorrect result # bug fix: dipoles cannot be colored by name # bug fix: dipole settings not accessible via wildcards # new feature: merging of label() and format() functions -- same in all respects. # bug fix: spartan'08 reader not reading vibrations # ----------------------------------------------------------------------------- #version=11.7.43 # bug fix: /** comment ending line can cause odd error # bug fix: set xxxx n where n is an integer fails. # bug fix: GAMESS reader not properly assigning MOs # code: better .stddev calculation # new feature: a = [] note that a+=2 then produces [2] -- "a+=" similar to JavaScript a.push(2) # bug fix: a="test";a[1] = "b" not working # bug fix: {atomExpression}.min, .max # ----------------------------------------------------------------------------- #version=11.7.42 # new feature: function parameter arrays passed by reference, so, for example: # # var a = [1,2,3,4] # function incrementA(a, i) { a[i]++ } # incrementA(a, 3) # show a # # gives a = [1,2,4,4] # # new feature: general commands no longer restricted to single lines. # any unpaired ( or [ or { triggers continuation # # new feature: set or x = command no longer restricted to single lines. # any binary math operator at end of line or beginning of next line # marks continuation, also any unpaired ( or [ or { triggers continuation # (same as JavaScript) # # new feature: -p Jmol application command line option --printOnly silent operation with only print command output or warnings going to the console # for example: # java -Xmx512m -jar "Jmol.jar" -pions "myscript.spt" # just outputs messages from the print commands in that script # # bug fix: pickMeasureScriptTip not found # # new feature: support for extended inline if: x = (a ? this : b ? that : theother) # default change: load trajectory "myfile.top" COORD {first,last,stride} "mdcrd::myfile.trj" defaults to last = -1 ("load all trajectories") not "load one trajectory" # bug fix: gzipped gzip file not read properly. (Jmol-FAH files) # new feature: {*}.modelindex # # bug fix: y = q improperly defining q if q does not exist. # "all" equivalent to {*} # new feature: load ("filename", nBytesMax) --- and returns "java.io.FileNotFoundException" if file # does not exist when nBytesMax == 0, so is a simple test for "Local File Exists" # would be if (load("filename",0).length == 0)... # # new feature: print {xxx}.label.all("xxxx") -- forces array even if only one atom (like "{xxx}.label.all") # bug fix: color.all not working properly # bug fix: xxx.all was not forcing array when only one value # # code: refactored classes -- next best thing to a separate package (they aren't really public) # # CompilationTokenParser --> ScriptCompilationTokenParser # Compiler --> ScriptCompiler # Eval -> ScriptEvaluator # FlowContext --> ScriptFlowContext # Function -> ScriptFunction # Variable -> ScriptVariable # # bug fix: load @filename # new feature: format("sprintf format", a, b, c, ...) # new feature: {xxxx}.label("") shows current label # new feature: [array].sort # new feature: [array].reverse # new feature: [array].min # new feature: [array].max # new feature: [array].average # new feature: [array].stddev # new feature: (value).label("C++ printf format") # bug fix: quarternion().q not working # bug fix: Crystallographic Information File not recognized. # ----------------------------------------------------------------------------- #version=11.7.41 # bug fix -- bitsets not copied: m1 = {m and selected} changes m to "m and selected" # # OK, this version basically turns Jmol scripting language into a subset of JavaScript. # Or, maybe a superset of the basic JavaScript constructs. Anyway, they are related. # # Similarities to JavaScript: # # --Jmol scripting now supports ++, --, +=, -=, *=, /=, \=, |=, &= # --The if, for, while, and function constructs are all about the same, using braces. # for example: # # for (i = 1; i <= 10; i++) {print {*}[i].radius} # for (i = 0; ++i <= 10;) {print {*}[i].temperature} # if (var i < 10) {{*}[i].radius *= 2} else {spacefill off;wireframe} # i = 0; while (++i < 10) {select {*}[i * 2]; color red } # # --A relatively free typing of variables. Jmol is going to save variables as strings # in terms of the Jmol "state" but in this version I introduce the Variable class that # subclasses Token and allows for a more organized approach to variables and sets the # stage for future improvements. # --Commands separated by semicolons or line breaks # --Object-like methods and fields such as {*}.xyz.all.join(" ") and {atomno=3}.radius # --On-the-fly compilation. # # Differences include: # # --A broarder range of variable types, including boolean, integer, decimal, # string, point, axis-angle/plane/quaternion, atom bitset, bond bitset, # and one-dimensional array. # --No case-sensitivity for variable names. # --1-based rather than 0-based arrays. (ONLY because that's the way models are numbered.) # --Array indexing from the back to the front using n <= 0: A[0] A[-1] A[-2]. # --Array ranges [n][m], for example A[-3][0] # --Core commands do not use commas or parentheses. # --Visual-Basic-like IF / ELSEIF /END IF, FOR/END FOR, WHILE /END WHILE, and GOTO options. # --A broad range of mathematical operations # --Of course, a whole suite of methods that relate to molecular structure. # # # nested ( ... ? ... : ... ) phrases ready for testing. # # print (1 < 30 ? 1 : 2) # print (1 < 30 ? (5 < 1 ? "yes" : "no") : 0) # print (1 < 30 ? (5 < 1 ? "yes" : (6 > 20 ? "yes2" : "hmm")) : (33)) # print (100 < 30 ? (5 < 10 ? "yes" : (6 > 20 ? "yes2" : "hmm")) : (33)) # print (1 < 30 ? (5 < 10 ? "yes" : (6 > 2 ? "yes2" : "hmm")) : (33)) # print (100 < 30 ? 33 : (5 < 1 ? "yes" : (6 > 2 ? "yes2" : "hmm"))) # # bug fix: echo @{.... .... .... } not counting braces # ----------------------------------------------------------------------------- #version=11.7.40 # bug fix: setting commandOptions "" in Viewer.setAppletContext() # {atomno=3}.radius += 0.1 # # bug fix: in certain APPEND cases, binary space partitioning forest initialization is not complete # bug fix: minimization not trapping error on viewer going null # new feature: set useMinimizationThread T/F nec. to be FALSE when running minimizations in scripts that require values # # # code: compiler refactoring and efficiencies; # code: compiler continued development of advanced scripting syntax. # # new feature: # # Jmol scripting now supports ++, --, +=, -=, *=, /=, \=, |=, &= # # i++ # ++i # i += 3 # # and basically all the standard flow syntax of Java and JavaScript: # # # for (i = 1; i <= 10; i++) {print {*}[i].radius} # for (i = 0; ++i <= 10;) {print {*}[i].temperature} # if (i < 10) { {*}[i].radius *= 2} # i = 0; while (++i < 10) {select {*}[i]; color red } # # # # plus some more -- no line breaks necessary for for/if/while: # the braces really aren't necessary; there is no ambiguity here: # # for (i = 1; i <= 10; i++) print {*}[i].radius # # if (i < 10) { {*}[i].radius *= 2} # # for (i = 1; i < 10; i++) print i # if (i < 10) print i # # bug fix: isosurface efvet reader not displaying data properties as colors # bug fix: select {*.ca} (_x.atomno < 100) not working # # code: major refactoring of variables. # # new feature: complete freedom from lines and "end if, end for, end while" -- # just use standard { } notation. If no braces are used, then END must be used: # # for (var x = 1; x < {*}; x = x + 1) # if ({*}[x].temperature < 10) # ({*}[x]).radius = 1 # else # ({*}[x]).radius = 0 # end if # end for # # same as: # # for (var x = 1; x < {*}; x = x + 1){ # if ({*}[x].temperature < 10) { # ({*}[x]).radius = 1 # } else { # ({*}[x]).radius = 0 # } # } # # same as: # # for (var x = 1; x < {*}; x = x + 1){ # {{*}[x]}.radius = ({*}[x].temperature < 10 ? 1 : 0) # } # # same as: # # for (var x = 1; x < {*}; x = x + 1){{{*}[x]}.radius = ({*}[x].temperature < 10 ? 1 : 0)} # # new feature: standard { ... ? ... : ... ) notation in Jmol math: # # print ({*} < 100 ? "a small molecule" : "at least 100 atoms") # # new feature: load "@x" -- inline load of data contained in variable x. # # new feature: {*}.label = xxx and {*}.label("%[label]") and select label="xxx" # # new feature: An XML reader for Materials Studio .xsd files http://accelrys.com/products/materials-studio/ # # new feature: greatly expanded item selecting: # # n = 2 # {{atomno > 10}[n+2][n+5]}.radius = 0.3 # # note that an outer set of {} is required when setting a property # You cannot just do {atomno>10}[5][6].radius # # new feature: .length alias for .size except for x.bonds - so it can be # used where you would use that in Java, for instance: # # natoms = {*}.length # for (i = 1; i <= natoms; i = i + 1) # ... # end for # # new feature: inline FOR(varName;{atom expression};math expression) # # ans = for(x;{*.ca};x.resno) # # produces a list of values # # new feature: .add() sums up values # # ans = for(x;{*.ca};x.bonds.length).all.add() # # new feature: inline IF(math expression;math if true; math if false) # # ans = if (x.resno < 5 ; "low resno"; "high resno") # # and combined: # # var ave = {*.ca}.boundcount.all.add() # print for(x;{*.ca};if (x.bonds.length < ) # # bug fix: MO reader can fail setting min/max bounds # bug fix: various tweaks of atom properties business. # bug fix: x = array();x[1] = "testing" not working # ----------------------------------------------------------------------------- #version=11.7.39 # bug fix: biomolecules for new PDB format # new feature: consistent set of atom properties now accessible via: # # select {xxxx = whatever} # # rather than the more cumbersome: # # select {*} (_x.xxxx = "whatever") # # for example: # # select insertion = "A" // see 1jgq.pdb # display insertion = "?" // single-character wildcard here # select altloc != "" // see 1vwh.cif # select atomName = "O11" and cell = 555 # select atomType = "OXT" # select atomName = "O*" // wildcards accepted # # This largely duplicates the current Rasmol notation but adds more of a # natural language search language. # # The full set of atom properties can be checked this way: # # adpmax adpmin altloc atomID atomIndex atomName # atomno atomType atomX atomY atomZ bondcount # cell color covalent element elemno file # formalCharge fracX fracY fracZ group group1 # groupID groupindex identify insertion ionic model # molecule occupancy partialCharge phi polymerLength property_xx # psi radius resno sequence site spacefill # straightness strucno structure surfacedistance symop temperature # unitX unitY unitZ valence vanderwaals vibX # vibY vibZ # # full parameter list: # #{*}.xxx = y # "select xxxx=yyyy" # "label %x" # "label %[xxxx]" # property # description # yes yes adpmax the maximum anisotropic displacement parameter for the selected atom # yes yes adpmin the minimum anisotropic displacement parameter for the selected atom # yes A yes altloc PDB alternate location identifier # yes yes yes atomID special atom IDs for PDB atoms assigned by Jmol # yes D yes atomIndex atom 0-based index; a unique number for each atom regardless of the number of models loaded # yes yes a yes atomName atom name # yes i yes atomno sequential number # yes yes B yes atomType atom type (mol2, AMBER files) or atom name (other file types) -- Jmol 11.7.1 # yes yes x yes atomX Cartesian X coordinate # yes yes y yes atomY Cartesian Y coordinate # yes yes z yes atomZ Cartesian Z coordinate # yes yes bondcount covalent bond count # yes cell crystallographic unit cell # c/s yes chain protein chain # yes yes color the atom color # yes yes covalent covalent bonding radius # yes yes e yes element element symbol # yes yes l yes elemno atomic element number # yes yes file file number containing this atom # yes yes C yes formalCharge formal charge # yes yes fracXyz fractional XYZ coordinates # yes yes X yes fX fractional X coordinate # yes yes Y yes fY fractional Y coordinate # yes yes Z yes fZ fractional Z coordinate # yes n yes group 3-letter residue code # yes m yes group1 single-letter residue code (amino acids only) # yes yes groupID group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file.

[|| 0 | noGroup|| 1-5 |ALA, ARG, ASN, ASP, CYS|| 6-10| GLN, GLU, GLY, HIS, ILE|| 11-15| LEU, LYS, MET, PHE, PRO|| 16-20 | SER, THR, TRP, TYR, VAL || 21-23 | ASX, GLX, UNK|| 24-29| A, +A, G, +G, I, +I || 30-35| C, +C, T, +T, U, +U||]

Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly. # yes G yes groupindex overall group index (Jmol 11.5.35) # yes U yes identify for a PDB/mmCIF file, same as [%[group]]%[sequence]:%[chain] %%%[altloc]/%[model] #%[atomno]. For non-PDB data, same as %[atomname]/%[model] #%[atomno] # yes E yes insertion protein residue insertion code # yes I yes ionic radius used for bonding (ionic radius when a formal charge is defined) # yes M yes model model number # yes N yes molecule molecule number # yes yes Q yes occupancy occupancy 0.00 - 1.00 # yes yes P yes partialCharge partial charge # yes f yes phi protein group PHI angle for atom\'s residue (Jmol 11.3.41) # yes L yes polymerLength polymer length # yes yes property_xx a property created using the DATA command # yes p yes psi protein group PSI angle for the atom\'s residue (Jmol 11.3.41) # yes yes I yes radius currently displayed radius -- in SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms # yes R yes resno PDB residue number, not including insertion code # yes r yes sequence PDB residue number, including insertion code # yes S yes site crystallographic site number # yes yes yes spacefill currently displayed radius # yes T yes straightness quaternion-derived straightness (second derivative of the quaternion describing the orientation of the residue. This quantity will have different values depending upon the setting of quaternionFrame as "C" (alpha-carbon based), "P" (carbonyl-carbon based), or "N" (amide-nitrogen based). The default is alpha-carbon based, which corresponds closely to the following combination of Ramachandran angles involving three consecutive residues i-1, i, and i+1: -psii-1 - phii + psii + phii+1. # yes yes strucno a unique number for each helix, sheet, or turn in a model, starting with 1. # yes yes structure "helix", "sheet", "turn", or "none" # yes u yes surfacedistance shortest distance to a surface atom # yes symop symmetry operation code # o yes symmetry list of crystallographic symmetry operators generating this atom # yes yes t yes temperature temperature factor (B-factor) # yes unitXyz unit cell XYZ coordinates # yes yes uX unit cell X coordinate normalized to [0,1) # yes yes uY unit cell Y coordinate normalized to [0,1) # yes yes uZ unit cell Z coordinate normalized to [0,1) # yes yes yes valence the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3 # yes yes V yes vanderwaals van der Waal radius # yes v yes vibXyz vibration vector, or individual components as %vx %vy %vz # yes yes yes vibX vibration vector X coordinate # yes yes yes vibY vibration vector Y coordinate # yes yes yes vibZ vibration vector Z coordinate # yes yes xyz Cartesian XYZ coordinates # g yes group index in chain # q yes occupancy (0-100%) # W yes PDB residue designator with x, y, z included: [%n]%r %x %y %z (Jmol 11.3.41) # bug fix: isosurface cavity colorscheme not applied # bug fix: isosurface cavity colorscheme "sets" error # code: extensive rewrite of Eval in terms of getting and setting atom properties # code: Token.atomproperty broken down into intproperty, floatproperty, and stringproperty # new feature: consistent set of atom properties now accessible via: # select {xxxx = whatever} # select {*} (_x.xxxx = "whatever") # # code: removed duplication in Eval for getBitSetProperty() and atomProperty() # code: artificial size limitations in spacefill, halo, star, dots was not # consistent with setting those values using {xx}.radius (for example) # new feature: relaxed limitation on spacefill, halo, star, dots size to 16A. # new feature: {xxx}.spacefill = n # new feature: {xxx}.radius = n (same) # new feature: print {xxx}.ionic ionic radius # new feature: print {xxx}.covalent covalent radius # # # code: ver efficient and flexible atom label compiler class modelset.LabelToken # see Eval, Atom, Bond, and Measurement for implementation. # # new feature: label %[....] where .... is one of: # %[altloc] %A # %[atomIndex] %D # %[atomName] %a # %[atomno] %i # %[atomType] %B # %[atomX] %x # %[atomY] %y # %[atomZ] %z # %[bondcount] # %[chain] %c # %[chain] %s # %[element] %e # %[elemno] %l # %[formalCharge] %C # %[fxyz] # %[fx] %X # %[fy] %Y # %[fz] %Z # %[group] %n # %[group1] %m # %[groupID] # %[groupIndex] %G # %[identify] %U # %[insertion] %E # %[ionic] %I # %[model] %M # %[molecule] %N # %[occupancy] % # %[partialCharge] %P # %[phi] %f # %[polymerlength] %L # %[psi] %p # %[radius] # %[resno] %R # %[sequence] %r # %[site] %S # %[spacefill] # %[straightness] %T # %[strucno] (1,2,3,...) # %[structure] (helix,sheet,turn,none) # %[surfaceDistance] %u # %[symmetry] %o # %[temperature] %b, %t # %[uxyz] # %[ux] %ux # %[uy] %uy # %[uz] %uz # %[valence] # %[vanderwaals] %V # %[vxyz] %v # %[vx] %vx # %[vy] %vy # %[vz] %vz # %[xyz] # # this leaves only three label abbreviations without equivalents: # # %g // getSelectedGroupIndexWithinChain() # %q // occupancy * 100 # %W // identifier and XYZ coord # bug fix: selected connected(hbond) not working. # bug fix: quaternion straightness not following quaternionFrame type (was using testflag3) # bug fix: quaternion straightness not setting end points to Float.NaN # new feature: color hbonds energy # new feature: application flag -L --nosplash no splash screen (For Jmol in Sun Wonderland dev. 5) # new feature: load XYZ ... loads just the XYZ coordinates, in sequence, based on selected atoms. # lots of potential uses for this: # --NMR files where you want just one model at a time and, once loaded, want to save the positions # --basically anywhere you want a "trajectory" but don't want to save all that data # bug fix: QchemReader reading second set of MOs with spherical basis problem (at end of optimization) # ----------------------------------------------------------------------------- #version=11.7.38 # new feature: load OCCUPANCY ... int [0 to 255] # new feature: load PARTIALCHARGE ... float ~[-3.4 x 10^38 to 3.4 x 10^38] # new feature: load TEMPERATURE ... float [-327.68 to 327.67], with 0.01 precision (stored as short) # new feature: loadAtomDataTolerance, with default 0.01 Angstroms # spartan smol reader broken in 11.7.37 # ----------------------------------------------------------------------------- #version=11.7.37 # new feature: load VIBRATION "filename" n ....... # --all features of the load command, but only loads the vibrational information # --applies {within(loadAtomDataTolerance,xyzcoord)}.vxyz = vibcoord, so to all unit cells # --optional n is just as for any load -- optional nth model # --operates on previously selected atoms only # --allows embedded jmolscript, just as for any load # --sets _vibrationName from file's atom set collection name # new feature: loadAtomDataTolerance (see above) # bug fix: load {n n n} not saved in state # new feature: load {a b -c} packs a x b x c cells # new feature: select within(-0.1, {1/2 1/2 1/2}) -- negative distance within selects atoms based on unitcell coordinates # new feature: select within(-0.1, atomno=3) -- negative distance within selects atoms based on unitcell coordinates of all atoms involved # new feature: select within(-0.1, true, atomno=3) -- negative distance within model selects atoms based on unitcell coordinates # new feature: select ux|uy|uz < x.x -- selection based on unit coordinates # new feature: {x y z}.fxyz -- returns fractional from cartesian # new feature: {x y z}.uxyz -- returns unitcell from cartesian # new feature: {x y z}.ux, .uy, .uz similar to .fx, .fy, .fz # new feature: {x y z}.xyz -- returns cartesian from fractional # note that .x .y .z does NOT do this conversion. If that is # intended, you need to use {x y z}.xyz.x # if multiple models are visible, then all these just return as through there were no unit cell. # # new feature: {atomExpression}.uxyz, .ux, .uy, .uz -- unit cell coordinate # The value depends upon the setting of unitcell offset. For example, if we have # # unitcell 444 # # then {x}.uxyz will be in the range {-1,-1,-1/1} (inclusive) to {0,0,0/1} (exclusive) # Note that uxyz is not settable, but fxyz is, so one could, for example, # pack a unit cell using: # # unitcell 555 # n = {*}.size # for (var a = 1; a < n; a = a + 1) # {atomno=a}.fxyz = {atomno=a}.uxyz # end for # bug fix: {atomExpression}.fxyz does not return factional value, just 0.0 # ----------------------------------------------------------------------------- #version=11.7.36 # code: better treatment of user-defined space group # new feature: "xxxxx".find("pattern","flags") allows regular expression matching; # flags include: # "i" (case insensitive) # "v" (reverse -- "true" if a string does NOT match; nonmatching elements for list) # "m" (without "v", returns matching phrase in string or each list element or # with "v", returns all but the matching phrase in string or on any matching list element) # for example: # # print script("show spacegroup all").split().find("Hall symbol:").find("primitive","v") # # Hall symbol: P 1 # Hall symbol: -P 1 # Hall symbol: P 2y # Hall symbol: P 2y # Hall symbol: P 2 # ... # # print script("show spacegroup all").split().find("Hall symbol:") # .find("primitive","v").find("Hall symbol: ","vm") # # P 1 # -P 1 # P 2y # P 2y # P 2 # ... # # bug fix: Hall lattice operation (SHELX only) could place atoms in unexpected unit cell # bug fix: unitCell normalization error could miss some atoms in multi-unit cell visualizations # new feature: Wien2k reader # bug fix: possible exception when writing large image with translucency due to caught memory overflow leaving plotting buffer null # ----------------------------------------------------------------------------- #version=11.7.35 # bug fix: calculate hbonds can fail when group does not have O or OXT atoms # bug fix: (applet) jmolGetPropertyAsString("image") not functional # new feature: label %G -- group index, like atom index, 0-based for entire collection # new feature: ramachandran DRAW -- draws dihedral planes and angles # bug fix: draw/isosurface *name* # bug fix: data "append" does not set model the way load "append" does # bug fix: application frame arrows do not work after loading multiple models # ----------------------------------------------------------------------------- #version=11.7.34 # bug fix: isosurface incorrectly setting number of grid points for MEP surface map # new feature: application -s - reads input from System.in (untested) # new feature: \? in atom name escapes ? wildcard. Still no * in names, # but you can use multiple ?s: select ?\? or ??\? or ???\? or ????\? # new feature: isosurface FunctionXYZ -- same as FunctionXY, but must return float[][][] # -- note, this involves an additional required function in interface JmolStatusListener # public float[][][] functionXYZ(String functionName, int nx, int ny, int nz); # ----------------------------------------------------------------------------- #version=11.7.33 # bug fix: minimization callback does not report dE # bug fix: minimization does not interrupt or stop in applet # bug fix: rotate quaternion with NaN values not ignored # bug fix: applet console not closed when web page destroyed # bug fix: load file:///xxx.xxx (file:/// with file in root path) causes unrecoverable exception # bug fix: signed applet JmolAppletSigned0.jar does not include minimizer in internal jar index # bug fix: rotate -x n rotates wrong direction # new feature: load xxxx FILTER "NBOcharges" loads NBO charges instead of Mulliken # note: for NBOs you still need FILTER "NBO" so with charges that would be FILTER "NBO;NBOcharges" # bug fix: Jaguar reader vibrations not correct # bug fix: autoBond option in Preference menu was not writing to properties file in $HOME/.jmol # new feature: preliminary NBO support for Gaussian and QChem needs checking # code: subclassing Gaussian, QChem, NWChem, Gamess, Jaguar, Psi readers all into MOReader class # ----------------------------------------------------------------------------- #version=11.7.32 # bug fix: reading multiple files from a ZIP file collection, Jmol was forcing autobond # even when bonds were defined # bug fix: load MANIFEST not working properly # bug fix: V3000 reader chokes on CHG=n and does not recognize MASS=n # bug fix: Spartan SMOL file reader failure (coded & instead of && in if statement!) # new feature: CML "isotope" and CML "partial12" bond order. # new feature: GAMESS reader reads NBOs using # load "xxx.gamess" filter "!EIGEN" # to only load NBOs; by default ALL MOs are loaded. # new feature: QChem reader reads occupancy, frequencies and MOs # ----------------------------------------------------------------------------- #version=11.7.31 # bug fix: automatic adjustment for 5D (spherical) orbitals, especially for Spartan Smol reader # bug fix -- Spartan reader adding " in front of atom label # new feature: frame ALIGN {atoms} -- aligns frames around designated atoms in each frame # for example: frame ALIGN {C2} -- align each frame on C2/n where n is a frame number # for example: frame ALIGN {*} -- align all frames on center for that frame # new feature: Spartan MO-Animation files can be read # bug fix -- animation/spin while script is rendering can cause Exception # in general, one needs to use # set refreshing FALSE # ... # set refreshing TRUE # around code that might be running and deleting atoms or bonds while some other # process is rendering # bug fix -- trajectories with files having bonds can be a problem # bug fix -- animation/spinning while connections are being made can cause exception # code -- more documentation and somewhat reorganized adapter section. # bug fix: antialiasdisplay with MO does not show correct font size. # new feature: Spartan zip directories xxx.spardir.zip containing directory xxx.spardir can be read # new feature: Spartan reader now reads all models in an energy profile # new feature: MO no longer restricted to one per model set; rather, one per MODEL # new feature: MO command operates on all models in current frame set: # for instance: # load t.spardir # frame *; MO HOMO # animation on # will generate highest-occupied MO for all models and run through them quickly # This allows for animation of molecular orbitals along a reaction pathway # code: first attempt at Gaussian WFN file reading was unsuccessful. # ----------------------------------------------------------------------------- #version=11.7.30 # bug fix: signed applet does not use CD to set dialog default directory # bug fix: errorCallback not functional # new feature: set autoLoadOrientation (default: FALSE) automatically sets "reset" orientation to that in file, if present # new feature: restore orientation DEFAULT -- resets orientation to file's default orientation or stanadard "reset" if not present # code: generalized setTransform() in JmolAdapter readers CSF and SpartanSmol (.spardir) # bug fix: Spartan .spardir /input files not being read # bug fix: draw arrow/vector slightly overshoots end point # ----------------------------------------------------------------------------- #version=11.7.29 # bug fix: isosurface/mo FRONTONLY not operative # new feature: draw ID xxx FRAME {center} {quaternion} # draws x,y,z coordinates for the frame defined by the specified quaternion at the specified center. # bug fix: MO calculations skips d2+ orbital due to integer division. # ----------------------------------------------------------------------------- #version=11.7.28 # bug fix: 11.7.27 does not display color for MOs; "color MO" can crash Jmol # ----------------------------------------------------------------------------- #version=11.7.27 # bug fix: line raster not completing lines # code: JmolCallbackListener implemented, extended by JmolStatusListener # code: JmolViewer now includes setJmolCallbackListener # bug fix: measure n1 n2 n3 n4 with just numbers selecting atoms in frame 1 rather than current frame. # bug fix: toolbar icon for pickMeasure tied to tools "measurements..." item # bug fix: (Application) meaurement table not updating properly # bug fix: (Application) measurements toolbar icon does not stay shaded # bug fix: very subtle code error on lines and cylinders rasterization not completing line end pixel in most cases # bug fix: (Application) measurement icon measures angles, not distances. # new feature: JVXL format supports polygonColixes[] # code: polygonColixes[] to define polygon colors rather than vertex-based colors (as in OBJ file) # new feature: isosurface points can be retrieved using $id[n] where n=0,1,2,3... similar to $draw[n] # debugging: setTestflag2() turns on vertex labeling in isosurfaces # new feature: isosurface OBJ file reader using # isosurface OBJ "myfilename" n # where n is an optional pointer to a specific group (starting with 1) # # bug fix: subtle MarchingSquares calculation error produces incorrect contours for mapped plane # new feature: hover displays isosurface values for contour plots and planar plots # new feature: isosurface .... map contour [n] [mep|MO homo|etc] # for example: isosurface molecular map contour 10 mep # [n] is optional; defaults to 9 # new feature: isosurface CONTOURLINES|NOCONTOURLINES # displays contour lines; for planes, same as MESH|NOMESH # new feature: default rendering for isosurfaces involving the # CONTOUR keyword is CONTOURLINES NOFILL # new feature: hovering over isosurface contourlines displays value # bug fix: isosurface TRIANGLES not turning off when isosurface cleared # bug fix: remapping colors of translucent isosurface can have incorrect colors # bug fix: isosurface sphere 1.0 map molecular not working # bug fix: MO calculation with selected atoms can fail # bug fix: picked atoms automatically selected -- bug in 11.7.24 # new feature: very preliminary isosurface ED (RHF only) //and isosurface ESD # bug fix: JVXL writing after reading JVXL file may not write properly # bug fix: Jmol in other applications not initialized the same way can cause null pointer exception loading file with symmetry # ----------------------------------------------------------------------------- #version=11.7.26 # new feature: isosurface VOLUME reports the volume of an isosurface and stores the number in variable isosurfaceVolume # new feature: ASimpleJvxlWriter can calculate the volume of the surface # new feature: isosurface AREA reports the area of an isosurface and stores the number in variable isosurfaceArea # new feature: ASimpleJvxlWriter can calculate the area of the surface # bug fix: Spartan reader reads MOs improperly when only a partials set of MOs is included in the file # bug fix: Some Spartan files not reading: Compound Document not properly finding root directory block # code: rewritten code for Marching Cubes no longer requires 2D array of cube data # ----------------------------------------------------------------------------- #version=11.7.25 # code: rewritten code for ASimpleJvxlWriter allows streaming data # code: rewritten code for Marching Cubes no longer requires 3D array of data # new feature: CTRL-K toggles keystrokes with display; ALT-K or CTRL_ALT_K same without display # color of frank displays condition -- blue (unsigned) or orange (signed) indicates keystrokes enabled # bug fix: PDB load filter broken for ANISOU # bug fix: isosurface plane improperly coloring nonmapped planes # code: rewritten code for JvxlReader saves nx*ny*nz*8 bytes of memory on loading JVXL files # because there is no need for voxelData = float[nx][ny][nz]. # new application: org.openscience.app.jvxl.simplewriter.ASimpleJvxlWriter.java # -- streamlined methods for converting CUBE data to JVXL files # ----------------------------------------------------------------------------- #version=11.7.24 # bug fix: Mopac graphf UHF files not read properly for beta orbitals, or can't read file # new feature: character \0 at the start of an echo does screen echo only, not to callback or console # new feature: typing into applet executed as script commands # new feature: set showKeyStrokes # sets the echo to bottom left and shows the key strokes as they appear # new feature: set dragSelected (was "set picking dragSelected") # # ALT_LEFT or CTRL_ALT_RIGHT highlights atoms and rotates them # ALT_SHIFT_LEFT highlights atoms and translates them # bug fix: set picking draw can lose focus during drag operation # ----------------------------------------------------------------------------- #version=11.7.23 # new feature: load "myfile.cif" {ijk i'j'k' -1} # loads crystal structure and packs unit cell # new feature: load "myfile.cif" PACKED # same as {555 555 -1} # # bug fix: {*}.formalCharge = 1 after {*}.formalCharge = -1 sets formal charge to -7 and exception # bug fix: Menu File|Open does not honor "start in" directory # ----------------------------------------------------------------------------- #version=11.7.22 # new feature: translate x|y|z x.x nm|angstroms|% # bug fix: structure helix ({xx:yy}) compiler bug # new feature: additional VRML support (Angel Herraez) # new feature: u3d exporter template only -- no actual output # ----------------------------------------------------------------------------- #version=11.7.21 # bug fix: user menu ...Text menus not translated # bug fix: minimization broken # bug fix: menu save ?.spt # bug fix: write PovRay "?.pov" # ----------------------------------------------------------------------------- #version=11.7.20 # bug fix: protein-protein hydrogen bonds not calculated across biopolymer boundaries # ----------------------------------------------------------------------------- #version=11.7.19 # bug fix: vibrationperiod set to 0 if vibration off when state saved # bug fix: Compilation problem with "new IOException(e)" # bug fix: application -i option still gives message from "set xxxx" # bug fix: recent application changes do not work with -w option # ----------------------------------------------------------------------------- #version=11.7.18 # bug fix: 11.7.15 does not run script after loadInline applet parameter # new feature: Alchemy/3DNA reader # # new feature: new command "exitJmol" does just that -- application only; # can be overridden in a script by user defining the function "exitJmol" # # new feature: application -d --debug sets loglevel to 5 # new feature: application -J --jmolscript1 Jmol script BEFORE -s # new feature: application -j --jmolscript2 Jmol script AFTER -s not accepting values # # new feature: (embedded application method of JmolViewer): # # public Object viewer.getImageAs(String type, # int quality, # int width, # int height, # String filename, # OutputStream outputStream); # # allows creation of an image of a given type ("JPG", "JPEG", "JPG64", "PNG", "GIF", "PPM") # of a specific quality (-1 indicates default) # 0 to 100 for JPG (-1 = default of 75) # 0-9 for PNG (-1 = default of 2) # and specific width and height # and returned as byte[] (when fileName = null, os = null) # or sent to an output stream (os != null) # or set to a file (os == null, fileName != null) # # return can be String if there is an error. # # command sequence, for example: # # jmol.viewer.scriptWait("load =1crn;cartoons on;set antialiasdisplay"); # Object nullOrErrorMsg = jmol.viewer.getImageAs("JPG", 75, 300, 300, "t75.jpg", null); # Object nullOrErrorMsg = jmol.viewer.getImageAs("JPG", 75, 300, 300, null, os); # Object bytesOrError = jmol.viewer.getImageAs("JPG", 75, 300, 300, null, null); # Object stringOrError = jmol.viewer.getImageAs("JPG64", 75, 300, 300, null, null); # # this method, like WRITE IMAGE uses the antialiasImage settings # # primarily, this is for writing to an OutputStream directly, but # the rest seemed simple to implement along with that. # # new feature: (embedded application method of JmolViewer): # # public String clipImage(String text); # # sends image (null parameter) or text to clipboard # ----------------------------------------------------------------------------- #version=11.7.17 # new feature: q = quaternion(matrixColumn1, matrixColumn2) # quaternion from first two columns of a 3x3 rotation matrix # bug fix: some quaternions cannot be created from a 3x3, namely: # q = quaternion({1 2 -2}, {2 1 2}) = {0.57735026 0.57735026 0.0 0.57735026} (xyzw format) # bug fix: ignoreError -- need not get error string # bug fix: write image does not set mustRender # bug fix: set debugscript and set loglevel do not act in script immediately # # new feature: Jmol.js jmolScriptWaitOutput(script) returns all messages that would # have been sent to the console. # new feature: applet.getJmolStatus("AS_VECTOR") and applet.getJmolStatus("AS_HASHTABLE") # allows slightly different format for JSON return # new feature: measureCallback reports pending measurements as well as completed ones # # code: documentation for callbacks in Viewer; refactoring of StatusManager # # function myAnimFrameCallback(frameNo, fileNo, modelNo, firstNo, lastNo) {} # function myEchoCallback(app, message, queueState) {} # function myErrorCallback(app, errType, errMsg, objectInfo, errMsgUntranslated) {} # function myHoverCallback(strInfo, iAtom) {} # function myLoadStructCallback(fullPathName, fileName, modelName, errorMsg, ptLoad) {} # function myMeasureCallback(strMeasure, intInfo, status) {} # function myMinimizationCallback(app, minStatus, minSteps, minEnergy, minEnergyDiff) {} # function myPickCallback(strInfo, iAtom) {} # function myResizeCallback(width, height) {} # function myScriptCallback(app, status, message, intStatus, errorMessageUntranslated) {} # function mySyncCallback(app, script, appletName) { # ...[modify script here]... # return newScript # } # # new feature: errorCallback and scriptCallback report untranslated errors # new feature: when errorCallback or scriptCallback is enabled, messages are translated # note: To get translation in message callbacks, use jmolSetTranslation(true) # bug fix: translations of Console not implemented correctly # bug fix: translation not disabled when messageCallback is present # ----------------------------------------------------------------------------- #version=11.7.16 # new feature: set errorCallback -- cannot be a Jmol script! # new feature: load xxx.gamess FILTER "natural,optimized" # new feature: load xxx.gamess FILTER "!natural,!initial" # bug fix: script error messages not updating when language changed (coding) # bug fix: app -j "xxx" option not properly implemented # bug fix: MO scale # readers: MOLDEN reader update contributed by Albert DeFusco - adefusco # readers: GAMESS reader update contributed by Albert DeFusco - adefusco # ----------------------------------------------------------------------------- #version=11.7.15 # bug fix: measure allConnected broken # bug fix: 11.7.14 has broken define ({...}) statement # code: better handling of OutOfMemoryError conditions (2) # code: refactoring of method names in FileManager and Viewer # code: refactoring of method names to remove ambiguities between "openFile" and "createModelSet" # code: fixing inappropriate calls to getOpenFileError(), which actually creates the model set. # new feature: applet methods jmolLoadInline, jmolLoadInlineScript, jmolLoadInlineArray, # jmolAppendInlineArray, jmolAppendInlineScript all return load error message # ----------------------------------------------------------------------------- #version=11.7.14 # code: efficiencies # new feature: jmolGetPropertyAsString("errorMessage") # new feature: out-of-memory "Java heap error" trapping in scripts and image creation # new feature: save [bonds|coordinates|orientation|selected|state|structure] DELETE # bug fix: write .... @{...} can fail # bug fix: write coords CLIPBOARD broken # bug fix: select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi) fails when atomExpression is ({}) # bug fix: applet compilation error not sent in termination message # bug fix: build javax package does not include AxisAngle4d.class, Matrix4d.class # bug fix: compilation of myfunc({1 2 3}) fails # bug fix: hover watcher occasional uncaught exception # ----------------------------------------------------------------------------- #version=11.7.13 # new feature: sync * stereo # bug fix: applet improperly reporting status of "quiet" commands # bug fix: stereo not in state # bug fix: stereoDegrees parameter not reported correctly # bug fix: quaternion straightness update # bug fix: translucency of mapped isosurfaces not saved in state # bug fix: Dialog look and feel for Mac # bug fix: negative number in range involving ^ fails: select 10^P -17^P # code: better allocateViewer method # ----------------------------------------------------------------------------- #version=11.7.12 # new feature: isosurface PMESH; pmesh command deprecated # code: pmesh now a subclass of isosurface, with org.jmol.jvxl.PmeshReader doing the work. # new feature: all options of isosurface now option for pmesh. # all pmesh command does is guarantee that if the pmesh data is standard pmesh ASCII data, # then it will be read correctly. Binary pmesh files may be read with isosurface command. # new feature: pmesh files and inline scripts now can be colored and saved as JVXL files # new feature: isosurface INLINE "--pmesh data--" # # bug fix: .xxx broken for Jmol 11.7.11 # JVXL 2.0 format enhancements # new feature: #xxx comments act as targets for goto as well as MESSAGE commands # bug fix: goto xxx with trailing white space fails to find xxx # bug fix: goto with a # comment in the script prior to the target line fails # bug fix: two //xxx comments in a row breaks script # new feature: fully remappable JVXL files # new feature: JVXL file format version 2.0 writing and reading for general vertex/triangle file source. # code: superfast JVXL compression/decompression # bug fix: straightness absolute value -- values 0 (not straight) to 1 (straight) # load =1crn;calculate straightness;color "bwr" range 0 1;color straightness # new feature: efvet file reader (http://ef-site.hgc.jp/eF-site) # isosurface color "rwb" "myfile.efvet" # bug fix: isosurface APBS dx file reader broken (since 4/2007) # menu: "Minimize" GT # ----------------------------------------------------------------------------- #version=11.7.11 # bug fix: UFF.txt not included in build # new feature: user-definable atom selector for extended select: # # select {*.ca} (myfunc < 3.0) # # new feature: user-definable atom selector functions. # _x is used for the selected atom (not _atom) as for # select {atomExpression} (property expression) # # function myFunc() # return _x.x + _x.y + _x.z # end function # # print {*}.myFunc # print {*}.myFunc.min # print {*}.myFunc.max # print {*}.myFunc.all # # parenthetical parameters are allowed provided .min, .max, .all are not used # # ----------------------------------------------------------------------------- #version=11.7.10 # bug fix: function definitions occurring before prior script commands are executed. # bug fix: message @{xxxx} in function not picking up function context variables # new feature: set fontCaching false -- for testing of font caching issues # bug fix: CD command not working for writing # bug fix: Some browsers do NOT strip \n from tags, necessitating changes in loadInLine() # ----------------------------------------------------------------------------- #version=11.7.9 # bug fix: initializeBspf(); missing in setTrajectory() # new feature: hbonds delete # new feature: calculate hbonds {*} {*} # between {O or N} and {O or N} only # new feature: set hbondsAngleMinimum # if hbondsAngleMinimum is set > 0 (default 90 ?), then that angle is checked # for any atoms A--X- - -Y where A is attached to X, # and X and Y are the two heteroatoms involved. # new feature: set hbondsDistanceMaximum # maximum distance for X---Y. (default 3.25 ?) # # bug fix: AMBER atom type IM and IP not recognized # bug fix: AMBER topology file reading of IFBOX=2 files # bug fix: antialiased fontscaling labels can appear incorrectly # bug fix: font maximum reduced # code: major scaled memory font savings # bug fix: more lenient MopacGraphF format resolving # bug fix: "valence" not "valency" in data property_valence # ----------------------------------------------------------------------------- #version=11.7.8 # bug fix: set antialiastranslucent false not functional # bug fix: text color near black with antialiasdisplay becomes white # bug fix: text antialiasing of near-black text looks very bad when antialiased # new feature: settable atom elements, atomType, and atomName # {atomno=3}.element = 6 # set atom 3 to carbon # {atomno=3}.element = "C" # note -- this will reset the atom color to its standard CPK value. # {atomno=3}.atomType = "xxx" # {atomno=3}.atomName = "xxx" # new feature: select within("atomName", "xxx,yyy") # new feature: select within("atomType", "xxx,yyy") # ----------------------------------------------------------------------------- #version=11.7.7 # bug fix: forcefield file UFF.prm --> UFF.txt # bug fix: better Escape method for strings # bug fix: connect auto not registered in state # # new feature: Jmol math simple array definitions using brackets: x = [3,4,5,6] # new feature: set atomTypes "abcd=>C;efgh=>H" for reading mol2 and mdTop files # # code: better algorithm for atom types in Mol2Reader # code: faster loading -- no "pre" definition of atom sets # code: Eval load conversion of param[] values to htParams entries # ----------------------------------------------------------------------------- #version=11.7.6 # bug fix: draw point translucent only draws ring # new feature: mol2 format reads force field atom types for AMBER, CFF91, GAFF, ESFF, CHARMM, COMPASS, CVFF, CVFF_aug, PCFF force fields (rev2) # bug fix: load string inline with multiple models fails # code: FindBugs fixes for Eval, DrawRenderer, Isosurface, ForceFieldUFF,PdbReader # code: ScriptWindow public: sendConsoleEcho,sendConsoleMessage,notifyScriptStart,notifyScriptTermination # ----------------------------------------------------------------------------- #version=11.7.5 # code: ScriptWindow public: sendConsoleEcho,sendConsoleMessage,notifyScriptStart,notifyScriptTermination # bug fix: set labelToggle malfunctioning # bug fix: missing default background for toggled labels # bug fix: color {oxygen} translucent blue # bug fix: color translucent 1 blue 1-8 integer settings off by one # bug fix: background color +/-1 adjustment removed # ----------------------------------------------------------------------------- #version=11.7.4 # bug fix: spardir within /M... directory # new feature: write MENU "filename.mnu" # new feature: (Application) -c option checks without loading files; -C option checks with loading files # code: LOAD command ignores all nonrecognized pre-filename keywords # ----------------------------------------------------------------------------- #version=11.7.3 # new feature: x = file("some file name") or x = file("?") -- returns full path to file # new feature: (Application) Files...Export...Gaussian... Build Gaussian Input File Dialog # new feature: (Application) command line option -j --jmolscript "script commands" # new feature: load MODELS ({bitset})|{first,last,stride} # new feature: load TRAJECTORY ({bitset})|{first,last,stride} # new feature: load APPEND MODELS ({bitset})|{first,last,stride} # new feature: load APPEND TRAJECTORY ({bitset})|{first,last,stride} # new feature: load APPEND "[topolopy file]" COORD ({bitset})|{first,last,stride} "mdcrd::md1.crd COORD ..." # new feature: load FILES "[topology file]" COORD ({bitset})|{first,last,stride} "mdcrd::md1.crd COORD ..." # ----------------------------------------------------------------------------- #version=11.7.2 # new feature: independent JAR files for language localizations # bug fix: XML readers broken in 11.7.1 # bug fix: AMBER molecular dynamics topology file misreads P atoms # # new feature: select within(atomName,"ATOMNAME1,ATOMNAME2,...") # new feature: select within(atomType,"ATOMTYPE1,ATOMTYPE2,...") # NOTE: 11.7.8 changes just "type" to "atomType" # selects within a set of atom types (defined currently only for mol2 and AMBER topology file types) # matching is case-sensitive. # defaults to atom name if no types are indicated # for example: select not within(atomType,"HW,OW") # # new feature: cd command sets defaultDirectory # cd # reports current directory and sets default directory to that # cd ? # (signed applet and app only) opens a directory # cd .. # moves up one directory # cd temp # moves to subdirectory temp # cd "" # resets the default directory # ----------------------------------------------------------------------------- #version=11.7.1 # new feature: draw LINE {...} {...} {...} {...} draws line segments # new feature: making Jmol movies using write frames {atomExpression} [width] [height] "movie.jpg" # creates a set of files movie0001.jpg, movie0002.jpg, etc. for frames in atomExpression # these fils can then be combined using an external program of user's choice to create # a movie from a sequence of JPEG images # # write frames {*} "all.jpg" # write frames {1.0} "firstFile.jpg" # write frames {1.0} 200 200 "smallFile.jpg" # # new feature: load of molecular dynamics topology file and coordinates # # load files "u.mdtop" FILTER "![WAT],![URE]" COORD {0 -1 1} "mdcrd::u.mdcrd" ; # # -- mdtop file must have %FLAG and %FORMAT comments # -- FILTER is optional # -- COORD {first,last,step} is optional for each coordinate file loaded # first,last,step same as in VMD -- 0 for very first trajectory, last -1 meaning "all" # default {0 0 1} so that just one trajectory is loaded from each file # -- explicit format "mdcrd::" is required, because these files have no identifying characteristics # -- as many COORD keywords/coordinate files as desired can be included: # # load files "u.mdtop" FILTER "![WAT],![URE]" COORD {0 -1 1} "mdcrd::u1.mdcrd" "mdcrd::u2.mdcrd" COORD {0 300 10} "mdcrd::u3.mdcrd" ; # # new feature: x = quaternion({center_or_point}, {atomX_or_point}, {atomXY_or_point}) # # -- quaternion is created based on three atoms or coordinates # -- such that X = atomX - center, Z = cross(atomXY - center, atomX), Y = cross(Z, X) # # new feature: x = quaternion(q, "id", {center}) # # -- creates DRAW sequence to draw quaternion q as three arrows red(x), green(y), blue(z) # ----------------------------------------------------------------------------- #version=11.6.RC19_dev # bug fix: GIF encoder color / class not found issues # bug fix: very thin cylinder does not appear at all viewing angles # bug fix: load "/xxx" with unsigned remote applet loads local file instead of remote root directory # -- this change represents a difference in behavior between the unsigned applet and other code (signed applet or application) # bug fix: sulfur/sulphur always spelt as in IUPAC Red Book # bug fix: display of aromaticSingle bond for NEW bond results in dotted bond. # translation: English language variants no longer ignored # ----------------------------------------------------------------------------- #version=11.6.RC18 # bug fix: fileName not reset after ZAP # bug fix: set echo none; color echo green null pointer exception # bug fix: .x not recognized # bug fix: set xxxCallback "" does not clear callback ("none" was required unnecessarily) # bug fix: cartoons ending in helix or strand draw single dot for final amino acid # ----------------------------------------------------------------------------- # version=11.6.RC17 # bug fix: draw scale not saved in state for arc or xy arrow # bug fix: drag/drop not enabled on consoles # bug fix: Jmol state command "calculate surfaceDistance WITHIN ({...})" not passing compiler # bug fix: Swing antialiasDisplay broken due to setTransparentBackground debugging # bug fix: trajectories not enabled # code: if (true...)/ if (false...) code cleanup # bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1 # bug fix: select model=0.0 caused infinite loop # ----------------------------------------------------------------------------- #version=11.6.RC16 # bug fix: mol2 PDB format better handling of chains and derived element types # bug fix: save image button/menu interface broken in 11.6.RC15 # ----------------------------------------------------------------------------- #version=11.6.RC15 # new feature: MOL2 reader is PDB-enabled. # new feature: data() and DATA expanded to allow fixed-column entry # bug fix: data property_partialcharge does not update atomic partialCharge data itself for MEP # but instead just creates a data type "property_partialcharge" # bug fix: CML reader failst to load primitive lattice parameters when no symmetry # note: CML reader only reads the first structure of a file # bug fix: CML reader not assigning atom labels # bug fix: CML files not properly loading symmetry # bug fix: O- formal charge radius MUCH too large; N+ MUCH too small. -- REMOVED # code: thread control for Java Swing in applet context # thread creating Swing objects MUST be event thread # -- using SwingUtilities.invokeAndWait() from the commandWatcher thread # new feature: load menu items for signed applet # new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates # new feature: minimize menu item # new feature: signed applet allows "load ?" and includes previewer # bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default # new feature: signed applet/application load ?xxx uses load dialog # webexport help updated to reflect ability to handle files opened with "load append" # ----------------------------------------------------------------------------- #version=11.6.RC14 # new feature: signed applet may write file, images, scripts, variables to disk. User dialog is required. # new feature: write GIF # code: allows for getJpeg(quality,asString) option to return byte array instead of base64. # bug fix: xxx.split()[3].replace does not do selection first # bug fix: ramachandran and quaternion derivative not indicating structure due to dropping last atom # ----------------------------------------------------------------------------- #version=11.6.RC13 # bug fix: set historyLevel recording full scripts, not individual commands # bug fix: y-offset for echo text and images # bug fix/new feature: HIDE/DiSPLAY/DELETE/COLOR $*xxx* extended to ECHO # bug fix: findbugs input stream closure # translation: add GT.escapeHTML and stricter checking for special characters in file names # used by web export. # ----------------------------------------------------------------------------- #version=11.6.RC12 # bug fix: getProperty("atominfo",{atom expression}) not working for "atominfo[0].xxx # bug fix: getProperty("modelinfo",{atom expression}) not working # new feature: set atomPicking TRUE/FALSE # new feature: set bondPicking TRUE/FALSE # bug fix: draw pointgroup when principalPlane == null # bug fix: findbugs corrections in minimize.forcefield, modelset.AtomCollection, shapespecial.DrawRenderer # new feature: applet parameter jmolSetCallback("maximumSize", nnn) -- sets maximum size of applet when resizing to this value # cml reader fix for not applying symmetry to first model # translation: added GT._ calls for HTML templates and JS in WebExport # ----------------------------------------------------------------------------- #version=11.6.RC11 # bug fix: echo IMAGE and antialiasdisplay # bug fix: super/subscripts with antialiasdisplay # translation: menu items in console # bug fix: web export / language # bug fix: draw pointgroup C2 2 not distinguished from draw pointgroup C2 1 # bug fix: d2 point groups cause null pointer exception due to missing principal axis # bug fix: {*}.x = .... broken # ----------------------------------------------------------------------------- #version=11.6.RC10 # new feature: (just not documented) rotate {atom1} {atom2} 10 # new feature: moveto quaternion {resno=3} {3.ca} # bug fix -- set picking spin, also compatibility of set picking spin and doing measurements # bug fix -- draw pointgroup, write pointgroup draw # ----------------------------------------------------------------------------- #version=11.6.RC9 # code: more efficient return of point group information and calculation # new feature: getProperty PointGroupInfo # bug fix: show pointgroup draw null pointer exception # bug fix: print $planeA - capital letters in a draw name disallow finding it. # ----------------------------------------------------------------------------- #version=11.6.RC8 # bug fix: ramachandran / ramachandran r navigation problem # code: Minor refactoring and pruning. # --- Core applet now 715K (JmolApplet0.jar + _Core, _Jars, _Main, _Popup, and _Viewer) # code: Pre-Jmol.js button controls removed, saving about 10K # new feature: script APPLET appletName "some script" # --allows direct inter-applet communication independent of set SYNC # --appletName can be * (all applets), > (other applets), . (this applet), # or an applet name such as "jmolApplet0" or just the extension "0" # or a quoted set of applet names separated by commas. # --for *, the current applet always reports LAST # new feature: x = script("some script", "appletName") # --same as above # --in addition, allows retrieval of information from another applet # for example: # # x = script("print getProperty(\"modelInfo.modelCount\")","B") # # gets the number of models loaded in applet jmolAppletB. # # x = script("show orientation moveto","jmolApplet2") # # gets the current orientation of applet jmolApplet2. # # xList = script("print getProperty(\"appletInfo.fullName\").split(\"__\")[1] + \":\" + script(\"show rotation\").trim()","*") # # gets a new-line-separated list of rotational quaternions for all applets with applet names. # # # new feature: print getProperty("modelInfo.models[3].file") syntax # ----------------------------------------------------------------------------- #version=11.6.RC7 # new feature: draw ramachandran includes planes connecting atoms. # bug fix: refresh for hover # bug fix: state definition for lcaoCartoons, isosurface with IDs containing spaces # new feature: $*xx* double wild cards # new feature: generally for objects (draw,pmesh,isosurface,etc.) use DISPLAY/HIDE rather than ON/OFF # so as to be consistent with other objects. (OFF was not deleting these) # new feature: support for application transparent background -- "-b" command switch (testing only) # and setAppletContext "-b" switch as well. # bug fix: structure helix|sheet|turn|none {atomExpression} was undocumented and had state issues # new feature: HIDE $xxx # new feature: DISPLAY $xxx # new feature: DELETE $xxx # bug fix: adaptation for malformed PDB files (HEADER with nothing following it) # bug fix: more language localization in webexport # new feature: applet message regarding help and command entry # ----------------------------------------------------------------------------- #version=11.6.RC6 # code: better navigation refreshing # bug fix: oops, 11.6.RC5 is totally broken due to missing refreshes # bug fix: language localization in webexport # ----------------------------------------------------------------------------- #version=11.6.RC5 # bug fix: set fontscaling with multiple echo texts/images at the same xyz location only scaling the first item # bug fix: set echo xxxx 30 40 # bug fix: WAY more streamlined refreshing # bug fix: createImage(), not getImage() in order to allow dynamic file change # bug fix: halo size for antialiased display # Addition of translation tags to webexport # bug fix: write IMAGE broken for 11.6.RC2+ # bug fix: unnecessary refreshes removed from moveto/zoom with time 0 # new feature: background IMAGE "filename" # code: viewer refactoring to simplify/remove private methods and synchronization # ----------------------------------------------------------------------------- #version=11.6.RC4 # bug fix: select @m throws an error # code: refactoring shapespecial into shapespecial and shapesurface # code: refactoring modelset.CellInfo into symmetry.SymmetryInfo # code: realignment of applet JAR files # -- new _ShapeSurface.jar, which now includes org.jmol.jvxl/** # -- removal of _Jvxl.jar # -- refactoring reduces preliminary applet Jar file loading to 720K (if English) # -- should provide faster loading of simple models and more efficient loading of more complex ones # -- basic minimum load involves just JmolApplet0.jar + _Core, _Jars, _Main, _Popup, and _Viewer # ----------------------------------------------------------------------------- #version=11.6.RC3 # bug fix: minor error in pointgroup; dimension tied to radius # new feature: set dotDensity [-3 to 3] # new feature: draw pointGroup [type] [index] SCALE [x] # where [type] is one of Cs, Ci, Cn, or Sn, where n is an integer or the character "n" # ----------------------------------------------------------------------------- #version=11.6.RC2 # bug fix: image background transparency # new feature: set pointGroupDistanceTolerance (default 0.2 angstroms) # new feature: set pointGroupLinearTolerance (default 8 degrees) # bug fix: Cs pointgroup not found # bug fix: set echo DEPTH/IMAGE # bug fix: workaround for Java 1.6.0_10 diallowing popup menu # new feature: in Java 1.6.0_10, right-click activates the console, and the # console has a menubar menu item "Jmol" that is the pop-up menu. # new feature: applet console has "help" menu item, which includes several hundred items. # ----------------------------------------------------------------------------- #version=11.6.RC1 # bug fix: D3h point group # bug fix: LOAD "..." nn loading of model numbers for PDB files should read real model number, not sequentially. # new feature: write/show pointgroup gives counts and tab-separated listing; # new feature: write pointgroup draw delivers draw commands # new feature: better draw pointgroup # new feature: no saving of point group -- just recalculated each time # bug fix: measures were messed up # new feature: echo myecho IMAGE "filename" # -- reads a JPG, GIF, or PNG image and displays it the # same as text is displayed. # new feature: echo myecho DEPTH xx # -- sets the depth in percent (0% far back, 100% front) for the placement of the image # -- note that images can be placed in 3D, just as for text. # -- setting "background echo xxx" then specifies the color # that is to be designated as the background color (the color that should be omitted). # -- using "background echo none" specifies that the first pixel # of the image specifies the color that should be omitted. # bug fix: 11.5.52 may have lost "true" as a keyword # new feature: pointgroups with vibration vectors # bug fix: more testing with pointgroups # new feature: spacefill/dots/geosurface/cartoon/trace/etc. ONLY # -- show only this rendering type # -- same as restrict not selected; spacefill ON # bug fix: application rubberband selecting inappropriately selects atoms not visible # new feature: wildcard at beginning for draw/pmesh/isosurface/etc. *xxx on/off/delete allowed # bug fix: in draw pointGroup -- height of cylinder was too small # bug fix: longstanding exception: isosurface fullylit --> isosurface backlit --> isosurface frontlit # ----------------------------------------------------------------------------- #version=11.5.52 # new feature: calculate pointGroup # new feature: draw pointGroup # new feature: write pointGroup # including x = script("write pointGroup") # new feature: webexport now compresses data files over 512 MB # new feature: calculate pointGroup -- preliminary only -- untested # ----------------------------------------------------------------------------- #version=11.5.51 # bug fix: 11.5.49 and 11.5.50 broken for ".max" # new feature: PRELIMINARY aniso_beta for cif files -- has not been checked for correct Ortep type -- set to 0 for now # new feature: application select button reinstated # new feature: application pick button reinstated # new feature: application measure button tied to picking style # new feature: application [>|] button # bug fix: ramachandran/quaternion "reset" not decoupled from model decouple # code: model orientation saved with model. # bug fix: set axesOrientationRasmol finally correctly implemented # new feature: axes labels change subtly for set axesMolecular and setAxesOrientationRasmol # bug fix: JmolViewer interface deprecated "rotateTo..." methods changed to "rotate..." # because that's what they really do. # bug fix: set defaults jmol/rasmol must do reset(). # new feature: webexport now cleans up scratch files on deletion of instances and program exit. # ----------------------------------------------------------------------------- #version=11.5.50 # bug fix: vibration thread not closing down for applet destroy when applet is off-screen # bug fix: was reading server path for local path from history in Webexport # bug fix: $ptx[2] notation broken in 11.5.49 # code: various cleaning/simplifying # code: way cleaner quaternion derivative calculation code # ----------------------------------------------------------------------------- #version=11.5.49 # bug fix: strange "scripted: ?" message with measurements removed # bug fix: extra values in measure reporting, and wrong format # bug fix: 11.5.48 is broken for scripts with array definitions such as # p = array(); p[pt] = .... # code: simplification/unification of statement length checking AFTER allowing for variable substitution # code: removal of unnecessary/inflexible compilation step involving color parameters # code: major refactoring/simplification of Token # code: refactoring/simplification of Compiler # code: compiler flags for allowed number of parameters removed (not consistent with Jmol math) # (defaultON and noArgs remain) # new feature: dipole/draw/ellipsoid/isosurface/pmesh/mo/lcaocartoon ID keyword optional # but without ID, one is restricted to words that are simple text and not Jmol entities. # with ID, the next quantity can be anything. # new feature: $"xxx" quotations or $@{...} allows variable definition of object id reference # new feature: draw {point} PLANE [plane def, including xy, yz, x, etc.] # ----------------------------------------------------------------------------- #version=11.5.48 # new feature: mol file bond type 8 as partial # code: compiler error reporting improved # bug fix: PDB site definition does not ignore empty site definitions # bug fix: DEFINE can cause compiling error, e.g. "[2MO]" in 1tmo # bug fix: quaternion derivative DRAW arrows placed on residue i+1 instead of residue i # bug fix: connect aromatic auto; select connected([bond type],...) # bug fix: queue thread termination when applets are off screen # bug fix : sheetsmoothing not consistent among structures in multi-chain systems # bug fix: messages not sent to messageCallback # code: simpler matrix-->quaternion code # bug fix: 11.5.47 shows oddly sized arrow for very first rendering # bug fix: quaternion frame "n" after rotationSelected does not reset NH hydrogen positions # new feature: // at beginning of a line marks comments # ----------------------------------------------------------------------------- #version=11.5.47 # bug fix: Removed stray semicolons from header script comments in webexport templates. They # were causing WYSIWG web editors to corrupt the code scripts. # bug fix: 11.5.46 broke standard "spin x 30" (b) # new feature: draw ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # new feature: draw ARROW ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # # draws a circular arc or arrow around an axis defined by {pt1} and {pt2} # using {ptref} as a starting point (looking down the axis, angles # are measured in a clockwise manner, starting with the projected position # of {ptref} in a plane perpendicular to the axis. This is similar (but opposite) # to the way dihedral angles are indicated. # theta0 is the the offset angle from 0 # nDegrees is the number of degrees of arc to draw # fractionalOffset is the fraction of the distance from {pt1} to {pt2} for the # plane containing the arc. # # new feature: draw RAMACHANDRAN # draws phi and psi angles in the form of draw ARROW ARC # new feature: write RAMACHANDRAN draw # ----------------------------------------------------------------------------- #version=11.5.46 # bug fix: remove the skipping of semicolons if parentheses or braces have been closed. (11.5.43 bug) # bug fix: set picking on broken in 11.5.39 # # new feature: measure {atomExpression or point} {atomExpression or point} ... # measurements to POINTS, including using the mouse (set drawPicking on) # will persist and can be saved in the state (11.5.38 did not allow this) # for example: # measure {0 0 0} {atomno=3} {atomno=5} # measure $point2 {atomno=3} $line[1] # # new feature: rotate branch {atom1} {atom2} ... # new feature: select within(branch, {atom1}, {atom2}) # new feature: Jmol math within("branch", {atom1}, {atom2}) # code: refactoring of getAtomsWithin() and getAtomBits() # # bug fix: array size limited # new feature: quaternion({atom expression}) -- returns calculated # frame based on quaternionFrame setting. # bug fix: drawhover not in state # bug fix: ramachandran for systems including nucleic acids when quaternionFrame = 'n' # new feature: isosurface functionXY can be used for mapping. # new feature: spacegroup/symmetry for CML files with tags # # bug fix: 11.5.39 could break isosurface/pmesh save/write state in certain cases. # bug fix: Popin.png in WebExport replaced, was too large, causing dialog box to default to too big on small screens. # bug fix: zap 2.1 for quaternion frame causes exception # bug fix: quaternion r derivative2 nonfunctional in 11.5.45 # bug fix: isosurface functionXY not working # bug fix for 11.5.45: application not returning echos and status messages to console # ----------------------------------------------------------------------------- #version=11.5.45 # new feature: show rotation aka show orientation rotation # new feature: show translation aka show orientation translation # code: mouse manager refactoring # bug fix: picking off structure did not clear picking for set picking spin # bug fix: jmolScriptWait() improperly reporting to applet console # bug fix: too many messages to applet console # # Note: planes, axisAngles, and quaternions are all saved as Token.point4f # axisAngle() and quaternion() are both processed to quaternion format # {x y z w} where w = cos(theta/2) and {x y z} = sin(theta/2)*unitNormal # quaternions are always fixed so that cos(theta/2) > 0 -- that is, so that # the reported theta (q %-2) is in the range [0, 180] # This is important. One can also get a directed theta based on a # specified axis using q % {x y z w}. w is ignored; x y z is the # axis to dot with the quaternion normal in order to switch the # sign of theta if that value is negative. # # new feature: show atom(s) # new feature: show group(s) # new feature: show selected # new feature: draw {point} {plane} # new feature: draw vector {point} {plane} # new feature: draw arrow {point} {plane} # new feature: q = axisAngle({x y z}, theta) # new feature: q = axisAngle(x, y, z, theta) # new feature: q = axisAngle("{x y x theta}") # new feature: q = quaternion("{x y z w}") # new feature: rotate @{quaternion(....)} # new feature: rotate @{axisAngle(....)} # new feature: rotate quaternion {x y z w} # new feature: rotate axisAngle {x y z theta} # new feature: {point1} == {point2} if distance < 0.000001 # new feature: {quaternion} == {quaternion2} if distance < 0.000001 # new feature: float1 == float2 if |float1 - float2| < 0.000001 # code: refactoring and simplification of rotate/spin # code: threads named # bug fix: hover will find atom in hidden frame. # bug fix: ellipsoid translucency not saved in state. # bug fix: local assignment var x = array() followed by x[n] = ... does not work # bug fix: f(x[i],x[j]) selects only x[j], not both x[i] and x[j] # bug fix: quaternion frame "n" recognizes file-based H atoms on N for frame definition # ----------------------------------------------------------------------------- #version=11.5.44 # bug fix: Java exception with write(quaternion) instead of write("quaternion") # bug fix: set picking spin did not enable draw spin/picking # bug fix: _applet variable not initializing properly # bug fix: math calculation .xyz, .color averages broken in 11.5.42 # bug fix: select @x broken in 11.5.43 # bug fix: integer addition not remaining integer # ----------------------------------------------------------------------------- #version=11.5.43 # bug fix -- if last helix is last atom, SHOW STRUCTURE fails to identify it. # # new feature/feature change: # # selectX is no longer necessary. Simply use # # select {atomExpression} (property expression) # # with no "x." An implied variable "_x" can be used explicitly: # # select {*} (straightness < 0.995) # does not round # select {*.ca} (atomY < atomX) # select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi)) # # new feature: quaterion % point4f --- "thetaDirected" -- # point4f is {x, y, z, w} (w ignored), where {x y z} is a # preferred direction. # Returns a point4f angle-Axis equivalent with x, y, z the normal for the quaternion # rotation and w = theta for the rotation, where the normal and theta are chosen # to be directed with a positive dot product between the input {x y z} # vector and the output {x y z}. # # thus, because the negative angle switches the normal: # # print quaternion({1 0 0}, -20) % 1 ==> {-1 0 0}; %1 ==> 20 # # but % {1 0 0 0} forces the angle associated with {1 0 0} to be reported # # print quaternion({1 0 0}, -20) % {1 0 0 0} ==> {1 0 0 20} # # bug fix: POV-RAY output of quadrilaterals. # new feature: Ramachandran "r" --- includes third (Z) axis quaternion r difference2 X component equivalent # bug fix: quaternion definition with dot-product check not effective -- removed # bug fix: quaternion construction from matrix error # # new feature: _applet boolean # # new feature: extended quaternion math # # q = quaternion({x y z}, angleDegrees) # q = quaternion(q0, q1, q2,q3) # q = {qx, qy, qz, qw} # # returning component values: # # q.x, q.y, q.z, q.w # # note that the Point4f equivalent stores w LAST, even though it is "q0" # because the Java Quat4f() and Point4f() both do that as well. We're just # being consistent with other Java use. # # Modulus operator for extended information retrieval: # # (q%0) -- q0 (w) # (q%1) -- q1 (x) # (q%2) -- q2 (y) # (q%3) -- q3 (z) # (q%-1) -- the vector {q1, q2, q3} # (q%-2) -- theta # (q%-3) -- equivalent rotational frame X-axis # (q%-4) -- equivalent rotational frame Y-axis # (q%-5) -- equivalent rotational frame Z-axis # (q%{x y z}) -- rotational transform of a point or vector based on a quaternion # # thus, for example, (q%{1 0 0}) is the same as (q%-3) # # (!q) -- quaternion inverse # # # Quaternion right division (difference "dq"): # # q2 / q1 = q2 * (!q1) # # Quaternion left division (relative difference n): # # q2 \ q1 = (!q1) * q2 # # Examples: # # q = quaternion({1 1 1},120) # print "" + (q%{1 0 0}) + " " + (q%{0 1 0}) + " " + (q%{0 0 1}) # # {0 1.0 0} {0 0 1.0} {1.0 0 0} # # new feature: Numerical left division (integer divide) # # 3.6 \ 2 = 1 # 3.6 \ 1.3 = 2 # # new feature: sqrt(x) # # bug fix: load trajectory for cases with different atom counts. # # experimental: "straightness" defined as 1 - 2 * acos(normal(dq[i]%-1) dot normal(dq[i+1])) / PI # giving a measure proportional to the difference in local helical axis angle # and ranging from -1 (opposite direction) to 1 (same direction) for proteins # -- a work in progress. See # # load =1d66 # calculate straightness;color straightness # ----------------------------------------------------------------------------- #version=11.5.42 # code: modified Jmol encoded PDB data output # bug fix: color of NaN float values changed from "center of color scheme" to GRAY # bug fix: connect "_1" was inadvertently dropped in 11.5.26. # bug fix: state script fails to save data for atoms created using the quaternion command # bug fix: axes/boundbox/unitcell dotted not working since 11.5.6 # bug fix: spin thread not stopped for applet destroy() # bug fix: quaternion derivative for i/i+1 assigned to i+1 instead of i; now assigned to i # bug fix: quaternion calculation using published algorithms was giving inverted quaternions # # new feature: set PICKLABEL "xxx" -- allows customized pick reports # # for example: set pickLabel "%n x = %x, y = %y, z = %z" # # new feature: "quaternion derivative" --> "quaternion difference", which is more # appropriate, we think, with "absolute" and "relative" qualifiers: # # quaternion absolute difference # in the molecular frame # quaternion relative difference # in the (local) frame of first quaternion: # # dq_absolute = q2 * q1_inverse # dq_relative = q1_inverse * q2 # # absolute involves un-doing q1's rotation (making it the reference frame), then applying q2. # relative involves applying q2 (maintaining the original reference frame), then undoing q1. # # new feature: quaternion [w|x|y|z|a|r] [difference][2] [draw] # new feature: draw quaternion [w|x|y|z|a|r] [difference][2] # new feature: write quaternion [w|x|y|z|a|r] [difference][2] [draw] # and with that: write("quaternion" [,"w"|"x"|"y"|"z"|"a"|"r"][,"difference"|"difference2"][,"draw"]) # # new feature: set quaternionFrame "N" -- for solid state NMR PISEMA 15N chemical shift frame # using alpha = 0 and beta = 17 degrees. # # new feature: select whatever; quaternion draw # draws x,y,z and n vectors for a quaternion center # # new feature: straightness, defined as: # # straightness = 2*|n(dq1).dot(n(dq2))| - 1 # # where q1 and q2 are quaternions defined generally as: # # q = frame{ vA, (vC x vA), vC } # # using quaternionFrame "p", which I define as # # protein: # # vA = C--CA # vB = C--N[i+1] # # purine: # # vA = N9--C4 # vB = N9--C8 # # pyrimidine: # # vA = N1--C2 # vB = N1--C6 # # Differences dq1 and dq2 are absolute quaternion differences # on the two sides of a residue: # # dq1 === q[i] * q[i-1]_inverse # dq2 === q[i+1] * q[i]_inverse # # and n(dq) = the normal vector associated with this quaternion. # Range is from -1 to 1 # # applications (note that CALCULATE must be invoked first): # # calculate straightness # must be invoked first; # color straightness; # select straightness < 0.70; # rounds to nearest hundredth # selectX {*} x.straightness < 0.995 # does not round # # new feature: "%T" label format for straightness # ----------------------------------------------------------------------------- #version=11.5.41 # new feature: xyz reader reads partial charge in 5th field # bug fix: carbohydrate popup menu script incorrect # new feature: "load" of Jmol state scripts works same as "script" command # (file recognized as SPT type and read as a script instead) # bug fix: Jmol Embedded scripts containing script comments /* */ # new feature: getproperty menu current # bug fix: 11.5.40 cannot read most state scripts. # ----------------------------------------------------------------------------- #version=11.5.40 # (with corrected 40_dev draw scale) # new feature: new command: # # selectX {atomExpression} booleanEvaluation # # same as select() function, but simpler to implement # # new feature: full math on individual atom properties using # a new function: # # select(x;{atomexpression};booleanEvaluation) # # for example: # # x = select(x;{*};x.distance({atomno=3}) / 3 > x.distance({atomno=2})) # x = select(x;{*.ca};x.phi < select(y; {*.ca}; y.resno = x.resno + 1).phi) # # bug fix: H1 and H3 in DNA are NOT backbone # new feature: quaternion derivative2 (2nd derivative) and quaternion e derivative [experimental] # new feature: draw Vector [x y] or [x y %] {x' y' z'} # new feature: draw [x y] or [x y %] can be incorporated into lines, curves, arrows # bug fix: set picking center should not zoom -- just too annoying # new feature: set echo myecho [x y] and set echo myecho [x y %] # new feature: axes position [x y] and axes position [x y %] # sets the axes to the x y screen position or percent indicated. # bug fix: echos with active script and a model designation # and multiple models select even if not displayed because it is not their model # that is displayed. # bug fix: missing echocallback, scriptcallback, measurecallback "set"able variables # bug fix: "set picking identify" should be equivalent to "set picking ident" # bug fix: popup menu had stereo reversed # # new feature: signed applet shows frank "Jmol-S" which is NOT removable. # possibly to come: signed applet will send confirmation first time it reads a local file? # bug fix: reading .mmol (biological unit) files such as # http://pqs.ebi.ac.uk/pqs-doc/macmol/1j7n_1.mmol # new feature: frank appears RED in signed applet, and popup about menu identifies the applet as signed. # code: better handling of twin script manager threads # new feature: /*SPLIT*/ in a command string allows it to be processed by # the two independent processors. (just to isolate javascript from load commands # for the signed applet # ----------------------------------------------------------------------------- #version=11.5.39 # new feature: --threaded option for command processor uses # a watcher thread to monitor a Vector, allowing the signed applet to open any file # the signed applet uses this automatically unless there is a # jmolSetCallback("useCommandThread", "false") # which overrides the default behavior and disallows reading of files from # JavaScript. # # NOTE a limitation: scripts intended for the signed applet that # contain both load/script commands or the load() function # CANNOT be combined with the JAVASCRIPT command. This is because # in that environment, the JAVASCRIPT command must run on the browser's # JavaScript thread, and the load command -- if crossing server boundaries -- # must NOT run on that thread. I have configured the ScriptManager to # detect the presence of the word "javascript" followed by a space (exactly that case) # and if found, use the JavaScript thread instead of the applet thread. # # Because it might be useful to combine LOAD and JAVASCRIPT (for the equivalent of a # "file loaded" callback (but see set LoadStructCallback), if a script contains # the phrase /*SPLIT*/ in upper case, exactly like that, it will be split and then run # correctly as two independent scripts. # # new feature: _signedApplet boolean is available: # # print _signedApplet # if(_signedApplet); # javascript alert("you are using the signed applet"); # end if; # # bug fix: JmolSimpleViewer caused null pointer exception -- needed setAppletContext() # bug fix: model-based drawing in multiple-model mode using an # array of points to load causes null pointer exception: # load cyclohexane_movie.xyz;pts = {C5}.split();print pts;draw @{pts.xyz.sub({1 0 0})} "X" # bug fix: quaternion derivative multiplication order # bug fix: 3D echo text not centering properly with set ECHO myEcho CENTER # bug fix: select _Xx; select unknown # bug fix: better reporting of script commands and comments # new feature: reading COMPND and HEADER records of PDB file # new features for Protein Explorer: # new feature: set messageStyleChime # -- No atoms selected! # -- atoms selected! # -- atom picking: # Atom: xxx Group: xxx Chain: xxx Model: xxx Coordinates: x y z # -- script # -- Chime script completed. # new features: # show info # show residue(s) # show chain(s) # show sequence # show orientation moveto # just the moveTo; no comments # set pdbGetHeader TRUE # to get the header when loading (for Protein Explorer) # new feature: jmolSetCallback("evalCallback", "someFunction") # -- overrides _jmol.noEval # -- canNOT be set using "set evalCallback" # -- was necessary for Protein Explorer javascript callbacks # ----------------------------------------------------------------------------- #version=11.5.38 # bug fix: lcaoCartoon naming for multiple centers # bug fix: pm rounding to integer value # bug fix: scaling of draw object for multimodel environment can cause null pointer exception # bug fix: scaling of VECTOR was from center, not origin # bug fix: select n-m:c chain selection inappropriately case sensitive # bug fix: draw ARROW {atom center} {xyz} draws arrow the wrong way # bug fix: draw CIRCLE for multiple models # bug fix: application -- "make crystal..." menu item does nothing -- removed # bug fix: zap of quaternion also zaps model inappropriately # bug fix: zap to one model assigns -1 to currentModelIndex instead of 0 # new feature: draw CIRCLE [FILL | MESH NOFILL] more intuitive open/filling syntax # new feature: draw VECTOR {atom center} {dx dy dz} # new feature: draw with mixed types processes them in order # (11.4 does {x,y,z}, then $xxx, then {atomExpression}, then @{{atoms}.split()}) # new feature: draw .... ">xxx" first character of title ">" forces title to # last point, not first # new feature: set quaternionFrame "c" "p" "q" # - "c" -- CA-C and CA-N, as per Andy Hanson # - "q" -- peptide plane CA-C and N'-CA' as per J.R.Quine # - "p" -- peptide plane CA-C and C-N' # new feature: random(a), random(a,b) where a is lower bound and b is upper bound # new feature: cross(a,b) # new feature: sin(x), cos(x) # new feature: set pdbSequential (default FALSE) for custom PDB files # -- bypasses inter-group bonding check when creating polymers # new feature: set drawPicking now enables measuring among atoms and DRAW points # -- not saved -- just transient measurements (see 11.5.46) # new feature: CIF reading of B factors for thermal ellipsoids # new feature: [draw|pmesh|isosurface] xxx* [on|off|delete] # -- turns on, turns off, or deletes all objects of the type starting with "xxx" # code: refactoring of biopolyer resolver # ----------------------------------------------------------------------------- #version=11.5.37 # code: faster ellipsoid rendering with precalc radius factors # bug fix: spacefill ADPMIN/ADPMAX using probability ellipsoids # and ellipsoid size setting (Note -- ellipsoid command # must be run once prior to setting spacefill # bug fix: reading output from "set showscript 1" # bug fix: ellipsoids for Uiso atoms uses simple r = sqrt(value) # bug fix: ellipsoids for applied symmetry causes odd shapes (s8.cif) # bug fix: security for no mayscript may cause problem with measure callback # bug fix: rocket positions after translateselected # ----------------------------------------------------------------------------- #version=11.5.36 # bug fix: frame titles not positioning correctly for antialiased display # bug fix: quaternions created with extraneous atom lines # bug fix: select symop not behaving intuitively # code: meshrenderer debug line not removed # new feature: (popup menu) Biomolecules submenu added within title menu # ----------------------------------------------------------------------------- #version=11.5.35 # bug fix: proper thermal ellipsoid probability measures # code: better garbage collection in relation to JmolAdapter class # bug fix: load FILTER not saved in state # bug fix: application -- undo/redo buttons not disabling # new feature: ZAP clears undo stack # ----------------------------------------------------------------------------- #version=11.5.34 # bug fix: biomolecule really works this time! # ----------------------------------------------------------------------------- #version=11.5.33 # bug fix: modelLoader was assigning too much array space for chains # new feature: more load FILTER options: # # #i a specific BIOMT transformation # !#i not a specific BIOMT transformation # [XXX] a specific group ID # ![XXX] not a specific group ID (e.g. ![HOH]) # *.XX an atom name, such as .CA # !.XX not a specific atom name # *:X a chain ID # !:X not a specific chain ID # # Between types, or involving NOT, options are AND'd together # Within a type not involving NOT, options are OR'd together # Within a type, a single ! implies all are NOT # Within a type, a single * implies all are ANY # new feature: load [file info] FILTER "BIOMOLECULE n;NOSYMMETRY" # FILTER "BIOMOLECULE 1" by default now reads the symmetry; # use load FILTER "BIOMOLECULE 1;NOSYMMETRY" to not read symmetry # # bug fix: ellipsoids for navigation mode and perspective depth # bug fix: PDB biomolecule for many-BIOMT system # ----------------------------------------------------------------------------- #version=11.5.32 # bug fix: load FILTER "BIOMOLECULE 1;APPLY SYMMETRY" does not read second line of chain list # bug fix: added connections do not save properly in state # # application only: command undo disabled automatically if saving takes more than one second # flag is "set undo TRUE/FALSE" # # new feature: load [file info] FILTER "[filter string]" # new feature: load [file info] FILTER "BIOMOLECULE n" # new feature: load [file info] FILTER "[filter string];BIOMOLECULE n" # # The first format loads only those atoms matching a specific filter or set of # filter terms -- only a crude filter here, only for PDB and mmCIF files: # # *.XX an atom name, such as .CA # *:X a chain ID # # multiple matches are allowed -- implied AND: # # load "1sva.pdb" FILTER "*.CA" # # the match IS CASE SENSITIVE; * IS required # # also, "BIOMOLECULE 1" automatically selects for the chains listed for biomolecule 1 # in REMARK 350, and APPLY SYMMETRY applies the symmetry as described in those REMARKS # # new feature: isosurface ELLIPSOID id # AXES {ix iy iz} {jx jy jz} {kx ky kz} # CENTER {x y z} # SCALE n.m # COLOR [translucent [x.y] |opaque] [color] # ON|OFF # # id is a REQUIRED field. AXES is required if a new ellipsoid is being defined # these axes must be perpendicular # all other parameters are optional # # bug fix: isosurface ELLIPSOID was disabled # bug fix: Vector4f in Sphere3D causes applet failure, as it includes # an implicit Vector4d call # bug fix: stronger wireframe for antialiased display and generator (POV-ray) # default change: ellipsoids ball only, no axes # code: better ellipsoid fill method # default change: ellipsoids ball only, no axes # Hungarian translation # ----------------------------------------------------------------------------- #version=11.5.31 # bug fix: set picking measure distance not doing callback (from 11.5.23) # bug fix: picking echos not working with set antialiasdisplay # default change: ellipsoids are so fast now, can use default "set ellipsoidBall true" # bug fix: set ellipsoidAxisDiameter [int] sets the diameter in milliAngstroms # bug fix: sequence range for missing sequence numbers returns 0 # # code: fast ellipsoid ball+fill - axis idea; no luck with POV-ray fill # code: ellipsoid equation/axes conversion in Sphere3D; # code: POV-Ray ellipsoid generation # code: better ellipsoid ball rendering using Shade3D.calcIntensity() # code: 2-fold improvement in rendering ellipsoids by not using getNormix() # code: 4-fold improvement in rendering ellipsoids by using Miguel's no-mesh idea # code: 2-fold improvement in rendering ellipsoids by using 40x40x40 shade cache # code: overall 20-fold improvement in rendering over mesh/normix; # code: full POV-ray support for ellipsoids # code: proper partial derivative normalization of ellipsoid shading # code: refactoring of static quadric surface methods into their own class # ----------------------------------------------------------------------------- #version=11.5.30 # bug fix: measurement labels for angles do not appear in slab mode (goes WAY back before 10.0) # bug fix: U_iso_or_equiv fields not read in CIF # bug fix: (application) writeTip GT string not defined. # bug fix: (forwared compatibility) invalid state setting (due to later version) now ignored. # bug fix: state for draw arrow in multimodel context delivers wrong coordinates # # new feature: ellipsoid ball rendering tied to "set wireframerotation" option # new feature: set ellipsoidAxisDiameter x.y # # code: better ellipsoid arc rendering using Hermite fill # code: CifReader cleanup # ----------------------------------------------------------------------------- #version=11.5.29 # new features for ellipsoid rendering: # # set ellipsoidAxes [true] # set ellipsoidArcs [true] # set ellipsoidFill [false] # set ellipsoidDots [false] # set ellipsoidBall [false] # set ellipsoidDotCount [200] # # [dots|stars|spacefill] ADPMIN [percent] # [dots|stars|spacefill] ADPMAX [percent] # # /* general logic: # * # * # * 1) octant and DOTS are incompatible; octant preferred over dots # * 2) If not BALL, ARCS, or DOTS, the rendering defaults to AXES # * 3) If DOTS, then turn off ARCS and FILL # * # * note that FILL serves to provide a cut-out for BALL and a # * filling for ARCS # */ # ----------------------------------------------------------------------------- #version=11.5.28 # bug fix: state "set measures angstroms" does not include "select *" # bug fix: labels can change size in returning from antialiasdisplay=true to antialiasdisplay=false # ELLIPSOID command -- with symmetry and crude footballs, including PDB files # note that for now PDB file reading of ANISOU requires using {x y z} in load # command, but you can use {1 1 0} to load ANISOU without applying symmetry # # Italian translation # ----------------------------------------------------------------------------- #version=11.5.27 # bug fix: data CLEAR command nonfunctional # bug fix: "....".trim("xyz") function not properly trimming ANY x,y,z # bug fix: draw OFFSET not working properly # bug fix: PovRAY output of draw objects -- cylinder end caps not considered # bug fix: draw width 0.05 {...} {...} -- line does not properly render # bug fix: data "model"...end "model" saves state without first line if first line is empty # bug fix: "show data types" putting comma in wrong location # new feature: DATA "data2d_xxxxx"..... end "data2d_xxxxx" # new feature: isosurface FunctionXY "data2d_xxxxx" {origin} {ni x 0 0} {nj 0 y 0} {nk 0 0 z} # allows setting isosurface Z values using a block of data (ni rows by nj columns) # new feature: isosurface FunctionXY "data2d_xyz_xxxx" {origin} {ni x 0 0} {nj 0 y 0} {nk 0 0 z} # allows setting isosurface values using a block of x y z data, all points for which should be # on the surface. # new feature: GamessUK reader # new feature: reset VARIABLES (replaces "reset ALL") # ----------------------------------------------------------------------------- #version=11.5.26 # bug fix: draw adds extra circle in 11.5.25 # bug fix: minimization out-of-plane energy calculation error # bug fix: better initial minimization parameters # bug fix: (applet) script termination callback should not be sent to message queue # bug fix: hover appears when a load script leaves an atom very close to (0,0) in the window # bug fix: draw width -1 or draw mesh nofill with very short cylinders creates odd jumpy effect # bug fix: draw CIRCLE for multiple model sets # # # new feature: draw CYLINDER # # Korean translation # ----------------------------------------------------------------------------- #version=11.5.25 # new feature: draw CIRCLE # # A circle is a 2D object that behaves like a halo, always appearing circular # # draw circle {molecule=1} mesh nofill # around specified atoms # draw diameter 2.0 circle {atomno=3} mesh nofill # 2.0 angstroms; scales # draw diameter 100 circle {_O}[1] mesh nofill # 100 pixels (doesn't scale) # draw circle {*} fill # a solid plane in the shape of a circle # ----------------------------------------------------------------------------- #version=11.5.24 # new feature: minimization CONSTRAINTS {xx} {xx} [{xx} [{xx}]] x.y # new feature: minimization FIX {atom expression} # # multiple constraints can be present; one per line input # minimization CLEAR releases constraints and fixed atoms # also, minimize ENERGY saves a detailed listing, which can be # displayed using one of the two following commands: # # new feature: show minimization # new feature: x = getProperty("minimizationInfo") # # to dump the info to a file: # minimize # var x = getProperty("minimizationInfo") # write VAR x "myfile.out" # # new feature: isosurface MAXSET n # removes larger fragment sets # new feature: isosurface DOWNSAMPLE n # down-factors the number of points in a CUBE file by a factor of n # ----------------------------------------------------------------------------- #version=11.5.23 # new feature: minimize ENERGY # no stepping # new feature: minimize STEPS n # new feature: minimize CRITERION x.y # new feature: minimize CLEAR # flushes logged info and saved atom info # # new feature: echoCallback # new feature: measureCallback # new feature: minimizationCallback # new feature: scriptCallback # new feature: save/restore coordinates # new feature: getProperty minimizationInfo # # code: more efficient minimize calculation setup; better logging # code: "notify" methods in JmolStatusListener consolidated # code: Tokens organized # # ----------------------------------------------------------------------------- #version=11.5.22 # bug fix: UFF torsion calculation incorrect # bug fix: UFF.prm not properly recognizing sp2 N in N-oxides # bug fix: minimizer for compounds containing isotopes D and T # # code: eval/compiler error processing update # ----------------------------------------------------------------------------- #version=11.5.21 # new feature: minimize command -- mostly untested # # set minimizationSteps 100 # set minimizationRefresh true # set minimizationCriterion 0.001 # set loglevel 4 # for a very minimal report # set loglevel 5 # for a summary report # set loglevel 6 # for a detailed report # minimize # minimize stop # minimize cancel # # # for example: # # load caffeine.xyz # minimizationSteps = 80 # minimizationRefresh = true # set loglevel 4 # select connected(2) or connected(3) or oxygen and connected(1) # connect aromatic modify # calculate aromatic # set measurementunits pm # measure {_O}[1] {_O}[2] # color measure red # minimize # # new feature: set loglevel 6 allows a "debugHigh" setting # # bug fix: load unitcell {a b c alpha beta gamma} not working (since 11.5.8) # ----------------------------------------------------------------------------- #version=11.5.20 # bug fix: zap file > 2 multiple models do not properly delete # ----------------------------------------------------------------------------- #version=11.5.19 # bug fix: null surfaceGenerator causes MO exception # bug fix: isosurface reading/writing JVXL files having insideout keyword # ----------------------------------------------------------------------------- #version=11.5.18 # bug fix: zap x.y additional work -- connections, isosurfaces # bug fix: zap x.y not correcting Eval variables # bug fix: isosurface user VolumeData not properly loading # ----------------------------------------------------------------------------- #version=11.5.17 # new feature: delete {atom expression} NEEDS TESTING # bug fix: zap x.y for dots # bug fix: zap {atom expression} for not including all atoms in a model in the selection # ----------------------------------------------------------------------------- #version=11.5.16 # new feature: zap {atom expression} # zaps models associated with given atoms. # use "show models" to see what models are present, then zap them with their # file.model number: # # zap 1.1,2.1 # these two models deleted # zap atomIndex=0 # ALL ATOMS IN FIRST MODEL deleted # # Note that file.model numbers do not change after this. # So if initially there were two files loaded # # zap 1.1 # # removes the first model and leaves the second as "2.1" # # NEEDS THOROUGH TESTING, particularly in regard to saving/restoring the state # bug fix: atomChooser not updated for zap # bug fix: isosurface model keyword does not carry on to saved state # bug fix: lcaocartoons do not color properly or get restored from state properly # bug fix: popup menu selection of groups and symmetry operations does not work # menu: internationalization of "Monomer" and "Shapely" # bug fix: mol2 reader cannot read files with single-line comments # ----------------------------------------------------------------------------- #version=11.5.15 # bug fix: CAChe CSF reader not reading partial charges # bug fix: WebExport with http:// files fails to save file # bug fix: WebExport with local . directory fails to save JmolApplet.jar and Jmol.js # code: refactoring of jmol.app.webexport: adding html subdirectory # bug fix: state saving with rotateSelected spinning spins entire model # bug fix: getproperty("chaininfo") for non-biological model causes null pointer exception # ----------------------------------------------------------------------------- #version=11.5.14 # bug fix: rotateSelected INTERNAL not adjusting for internal rotation center # bug fix: .max/.min not allowed in context: "select resno=@{{visible}.resno.max}" # bug fix: Parser: "3xxx" read as 3 instead of 0; "3.5xxx" read as 3.5 instead of NaN # application menu: Write state moved to main export menu; Export PDF to image writing # new feature: MODEL/ENDMDL records in write PDB (still no TER records) # bug fix: write PDB format incorrectly writes atoms with 4-length names # bug fix: Spartan SMOL directory reader doesn't assign bonds # new feature: Spartan archive reader now reads aromatic bonding # ----------------------------------------------------------------------------- #version=11.5.13 BROKEN FOR XYZ READER # bug fix: Parser: "3xxx" read as 3 instead of 0; "3.5xxx" read as 3.5 instead of NaN # application menu: Write state moved to main export menu; Export PDF to image writing # new feature: MODEL/ENDMDL records in write PDB (still no TER records) # bug fix: write PDB format incorrectly writes atoms with 4-length names # bug fix: Spartan SMOL directory reader doesn't assign bonds # new feature: Spartan archive reader now reads aromatic bonding # ----------------------------------------------------------------------------- #version=11.5.12 # new feature: four optional defaults for Van der Waals radii: # # set defaultVDW jmol # set defaultVDW rasmol # set defaultVDW babel # set defaultVDW user # # To set the user variety, first set one of the other sets as a basis # Then add a DATA statement to include the specific elements you want to give # new radii to: # # set defaultVDW babel; # DATA "element_vdw" 6 1.7 END "element_vdw"; # DATA "element_vdw" 6 1.7; 7 1.8 END "element_vdw"; # separate using semicolons or new lines # # For full state compatibility, these commands should be given prior to # model loading, as they affect all calculations involving Van der Waals # radii -- except default zoom. # # Now select the user set: # # set defaultVDW user # spacefill on # # To delete all user entries: # # reset VDW # # If user vdw radii are currently set, then this resets the defaults to Jmol. # # new feature: show vdw shows a listing of the currently set VDW radii # # new feature: integration of star, halo, and spacefill code so all behave the same. # # stars 1.0 # set to a specific angstrom radius # spacefill 100% # percent of CURRENT vdw set # stars 100%Jmol # percent of Jmol standard # stars 50%Babel # percent of Babel standard # spacefill 5%Rasmol # percent of Rasmol standard # spacefill 30%User # percent of User-defined values (or CURRENT if not defined) # spacefill +1.2 # angstroms added to current vdw scheme # halos 50%Jmol # -- halos also have an added bit to make sure they are visible # spacefill 250 # RasMol 250 units/Angstrom units still # spacefill -20 # neg numbers same as percentages: 20% here, using current vdw set # stars @{x+0.1} # math OK # spacefill @x% # make sure x comes out integer, otherwise % is ignored # # note that dots do not have a %Jmol option: # # dots 30 # syntax already assumes percent for dots using an integer # # # # see src/org/jmol/_documents/vdw_comparison.xls # ----------------------------------------------------------------------------- #version=11.5.11 # bug fix: save/restore of atom data incorrect when user has set propertyAtomNumberField or propertyDataField # bug fix: functions, save/restore state were disabled by bug in 1.5.8 # bug fix: command "test()" where test() is a user-defined function causes array-out-of-bounds error # bug fix: undocumented .vdw atom property was equivalent to .valence # bug fix: GAMESS reading of F orbital order incorrect # new feature: settable Van der Waals radius using {carbon}.vanderwaals = 1.7 # or using DATA "property_vanderwaals" # new feature: DATA "property_x i j" .... END "property_x i j" # overrides default propertyAtomNumberField (i) and propertyDataField (j) # new feature: State save of property_xxx now in easily readable Jmol Data Format # ----------------------------------------------------------------------------- #version=11.5.10 # NOTE: REMOVED FROM SERVICE -- see 11.5.11 # bug fix: ISOSURFACE LIST command requires current isosurface # bug fix: JVXL writing does not properly save pocket cavities or minsets # bug fix: DATA command assigning property to last atom in structure fails # ----------------------------------------------------------------------------- #version=11.5.9 # NOTE: REMOVED FROM SERVICE -- see 11.5.11 # bug fix: Gaussian reader not considering possibility of cartesian D and spherical F # bug fix: ADF reader not reading coordinates for newer ADF output # ----------------------------------------------------------------------------- #version=11.5.8 # NOTE: REMOVED FROM SERVICE -- see 11.5.11 # bug fix: lines starting with @{ redefine "{" # bug fix: echo offsets do not correct for window position # bug fix: menu reports too many chains # new feature: menu includes all standard color scheme options # new feature: inline math @{x+3} extended to all commands # new feature: .sub(), .add(), .mul(), .div() extended to all operand types # ----------------------------------------------------------------------------- #version=11.5.7 # bug fix: explicit "SELECT NONE" must be given for label defaults to be set # bug fix: menu select element missing SELECT command # bug fix: for delayed font scaling animation using the font command and antialias display # ----------------------------------------------------------------------------- #version=11.5.6 # bug fix: HETATM atoms not automatically bonded to nearby ATOM atoms # bug fix: setParameterValue("perspectiveDepth",perspectiveDepth); # bug fix: sets offset based on imageFontScaling, not overall font scaling # bug fix: multiline labels not positioned properly with offset 0 0 # bug fix: labels not scaling properly # new feature: label "scaleReference" if > 5.0 is taken to be a reference zoom setting # saying "make the font size X at a zoom of Y" # bug fix: labels not scaling properly when in script with file load # bug fix: labels not appearing in contrast when given same color as background # bug fix: fixes applet memory leak in relation to consoles # ----------------------------------------------------------------------------- #version=11.5.5 # bug fix: fixes applet memory leak due to # platform objects/delay threads not being destroyed # new feature -- syncCallback -- intercepts messages that would otherwise go to applets for syncing # when syncCallback is set to a JavaScript function name, that function # intercepts the sync message and can pass it on (by returning it), # consume it (by returning an empty string ""), or modify it as desired. # this allows, for example, monitoring of orientation information so that # zoom sliders and such can accurately portray their values # ----------------------------------------------------------------------------- #version=11.5.4 # bug fixes -- font scaling # new feature: Spartan input files read as Odyssey format # # new feature: set delayMaximumMs sets the maximum delay that scripts will use, primarily for testing scripts # new feature: set fontScaling TRUE/FALSE # new feature: font [type] [size] [face] [weight] [scaleReference (Angstroms per pixel)] # atom labels and 3D echos then scale properly. # note that the current zoom affects the label size. # bug fix: image writing does not scale fonts properly. # bug fix: antialias of images not functionally independent of antialias for display # bug fix: label offset doubled for multiline labels with left/right/center alignment not specified # bug fix: default label offsets mangled by default Front/Group # new feature: getProperty("appletInfo") includes a key "registry" for which # the value is the static Hashtable htRegistry # //note that the following JavaScript retrieves the registry: # var registry = jmolGetPropertyAsJavaObject("appletInfo").get("registry") # // and the following code then retrieves an array of applets: # var AppletNames = registry.keySet().toArray() # // and the following sends commands to an applet in the registry: # registry.get(AppletNames[0]).script("background white") # new feature: reading of Spartan spinput files (uses Odyssey reader) # bug fix: PDB files with missing amino acid carbonyl O cause exception # ----------------------------------------------------------------------------- #version=11.5.3 # bug fix: check if the file is CIF before PDB # bug fix: color hbonds translucent # bug fix: state: calculate hbonds not saved # bug fix: state: calculate surfaceDistance WITHIN (({....})) # missing outermost parentheses # bug fix: state: selection state "end function" missing semicolon # bug fix: isosurface lcaoCartoon "pz" translucent not setting both lobes translucent # bug fix: color isosurface when isosurface is an lcaoCartoon only colors one lobe # bug fix: save state for "color SelectionHalos" # ----------------------------------------------------------------------------- #version=11.5.2 # Translation update: Estonian # new feature: "getProperty FILECONTENTS ." in the context of # a zip directory defaultDirectory # new feature: zip file reading extended to write FILE # # bug fix: unclosed InputStream readers in zip file accessing # # new feature: allows zip files to be designated as default directoriesusing # set defaultDirectory "myfile.zip" # and then using a filename # bug fix: unclosed readers in Pmesh, FileManager, Jvxl # new feature: pmesh BINARY "filename" # BINARY keyword is optional, but recommended for efficiency # # * 4 bytes: P M \1 \0 # * 1 byte: \0 for bigEndian # * 3 bytes: reserved # * 4 bytes: (int) vertexCount # * 4 bytes: (int) polygonCount # * 64 bytes: reserved # * ------------------------------ # * float[vertexCount*3]vertices {x,y,z} # * [polygonCount] polygons # * --each polygon-- # * 4 bytes: (int)nVertices (1,2,3, or 4) # * [4 bytes * nVertices] int[nVertices] # * # * note that there is NO redundant extra vertex in this format # # see little-endian example at http://chemapps.stolaf.edu/jmol/docs/misc/pmesh.bin # and http://chemapps.stolaf.edu/jmol/docs/misc/pmesh.bin.txt # ----------------------------------------------------------------------------- #version=11.5.1 # bug fix: quaternion for nucleic acids # code: inefficiencies in Quaternion code # new feature: within(structure,atom_expression) # for proteins, just the helix or turn or sheet containing those atoms; # for nucleic acids, just the chain # bug fix: wing vectors for biopolymers # not containing O improperly drawn for sheets # and, in the case of set traceAlpha TRUE (the default), helixes # bug fix: translateSelected/rotateSelected does not move cartoons # bug fix: tainted occupancy not saved in state # bug fix: biopolymers have wrong wing vectors (from 11.3.62) # bug fix: restore of state does not reset user-defined atom properties # code: refactoring Atom and AtomCollection # ----------------------------------------------------------------------------- #version=11.3.66 # bug fix: CIF reader not skipping loops with load of a specific model of a model set # bug fix: explicit format LOAD "XXX::whatever" extended to XML variants # code: adapter/readers/more/JmolDataReader.java removed. # code: adapter/smarter/Resolver.java cleaned up in relation to XML and DOM options # ----------------------------------------------------------------------------- #version=11.3.65 # full run of monster_script.spt # bug fix: pmesh test1 "inline" "1 {2. 0. 0.} 0" disallowed, but that should be OK # bug fix: isosurface gridpoints "ch3cl_map.jvxl" -- gridpoints for jvxl files that are already mapped # bug fix: isosurface lcaoCartoon "type" {atomExpression} # files: JUnitTest for scripts -- # monster script in run directory tests scripts now uses # files at http://chemapps.stolaf.edu # all monster scripts made the same # tests/scripts/check_performance removed. # # bug fix: better checking of scripts involving full run of all scripts # bug fix: defaultDirectory for Jmol application not usable for http:// protocols # bug fix: load "files" not properly loading zip files or files involving default directory # ----------------------------------------------------------------------------- #version=11.3.64 # bug fix: version integer missing sometimes # bug fix: isosurface with trajectories # interesting that if 1.1 and 1.2 are trajectories you can do # frame 1.2; isosurface select(*/1.1) sasurface # this creates an isosurface for model 1.2 that uses the atomic coordinates of model 1.1! # # bug fix: isosurface MEP mapped to plane not exactly reproduced in JVXL # bug fix: isosurface COLOR RANGE by itself does nothing -- changed to use full range # new feature: isosurface COLOR RANGE ALL added as an equivalent to COLOR RANGE with no numbers # ----------------------------------------------------------------------------- #version=11.3.63 # -- all functionality in new.htm, new2.htm, and new0.htm tested -- # bug fix: draw/isosurface/etc. on/off/delete should operate on all objects # bug fix: display within(plane...) # bug fix: select site=n broken # bug fix: quaternion/ramachandran/model can show up together if user issues FRAME ALL # bug fix: frame 1.2 when file 1 only has one model displaying all files # bug fix: quaternion x reports wrong frame number # bug fix: selectionHalo status and color not in state # bug fix: color selectionHalos none # bug fix: polyhedra .... translucent 0.3 green # bug fix: moveto alternative format missing necessary 0 rotationRadius requirement # moveTo ...... {atomExpression} 0 [zoomOrZoomFactor] # where [zoomOrZoomFactor] is n, +n, -n, *n, /n, or 0 (to indicate fill screen) # bug fix: subsets not properly handling restrict # bug fix: models with turns crash jmol if not first model loaded # bug fix: quaternion command by itself not switching to most recent quaternion # bug fix: background color off when not white and ends in "FF" # bug fix: print {atomSet}.color -- .color returning bounding box! # bug fix: multiframe draw with labels different for each frame not properly saved in state # bug fix: within upgrade for boundbox: within(boundbox), within(boundbox,atomExpression) # ----------------------------------------------------------------------------- #version=11.3.62 # bug fix: calculate hbonds for trajectories # code: distinction between file-derived or connected hbonds and calculated hydrogen bonds # bug fix: calculate hbonds broken in 11.3.58 (missing model field in BioPolymer) # bug fix: Jmol not putting structures in for all models in a PDB file # bug fix: calculate polymers (never documented) not necessary -- calculate structure suffices # bug fix: calculate structure updated for ignoring jmolDataFrames and using currently selected atoms # webexport help instructions fix to be consistent for local testing. # ----------------------------------------------------------------------------- #version=11.3.61 # bug fix: multifile cartoons improperly rendering in all frames # bug fix: dipoleScale not saved in state # bug fix: quaternions broken in 11.3.58 # code: Closest class deleted # code: Quaternion class moved to modelsetbio # code: dipoles moved to shapespecial # bug fix: select 1.5 in trajectory context should switch to that set of coordinates # bug fix: draw not colored # bug fix: mousewheel too low power # bug fix: select */4 when "4" is inappropriate returns all instead of none # bug fix: memory leak in applet due to mouse/hoverwatcher listeners # bug fix: applets not self-destroying when window containing them close # bug fix: rotate commands not sent to other applets when set syncScript if OFF # ----------------------------------------------------------------------------- #version=11.3.60 # bug fix: more work on trajectories in a multimodel context # bug fix: quick fix for disabling popup menu under Java 7 where permissions are not granted # bug fix: load trajectory extended to multifile context # in which case "select 1.3", if file 1 is a trajectory, not only # selects that file, but also sets the trajectory to 1.3. # So a "select" of a trajectory also affects the display. # This makes "select" in a trajectory context similar to "display" # but doesn't require listing of all the models. # ----------------------------------------------------------------------------- #version=11.3.59 # bug fix: load append not saved in state properly # code: trajectory command (never documented) removed # bug fix: draw ... nofill mesh properties not processed # bug fix: draw DIAMETER N not properly functioning for curves or arrows # new feature: draw DIAMETER X.Y allows setting diameter of points, lines, curves, and arrows to Angstroms # bug fix: 11.3.58 can't set bond diameters # bug fix: with set syncMouse, target applet sets syncMouse off inappropriately # ----------------------------------------------------------------------------- #version=11.3.58 # bug fix: set mouseSync with sync * ON disabling sync but not reenabling it # bug fix: spin on missing in final state function. # bug fix: select within (3.3, {-1 1 1}) does not work with negative integer coordinate # bug fix: trajectories were not fully implemented # code: refactoring of ModelSet and related classes for trajectories # code: trajectories implemented as independent models # code: debug comments in AppletRegistry # new feature: trajectory command no longer necessary -- deprecated (was in 11.2) # ----------------------------------------------------------------------------- #version=11.3.57 # bug fix: revised sync commands # new feature: set syncScript; set syncMouse # sync ON; set syncMouse false; set syncScript false Tracks orientation only # sync ON; set syncMouse true; set syncScript false Sends mouse events only # sync ON; set syncMouse false; set syncScript true Sends script commands only # sync ON; set syncMouse true; set syncScript true Sends both mouse events and script commands # # bug fix: "load trajectory" broken # ----------------------------------------------------------------------------- #version=11.3.56 # bug fix: isosurface map of properties lost in 11.3.54 # new feature: set c? -- displays all Jmol parameters starting with "c" or "_c" # set _? -- displays all read-only variables (starting with "_") # new feature: formatted gOpenMol formatted plt volume data reader. # new Jmol.js for 11.4 # ----------------------------------------------------------------------------- #version=11.3.55 # bug fix: axes/unitcell improperly slabbing on internal slab # bug fix: XOR returning OR when not a bitset # bug fix: unary minus for planes and points # FEATURE CHANGE: slab REFERENCE removed -- no longer necessary # new feature: set wireframeRotation # code: simplified Logger.debugging flag # bug fix: slab/depth planes not properly constructed # new feature: _slabPlane, _depthPlane variables # code: MUCH simpler slab plane code # bug fix: applet.loadInline(String[] models) messes up # this involves the fact that Safari will deliver null pointer when it # mistakenly matches a String[] signature to a String, or vice-versa. # The solution is to use # # applet.loadInlineString(String model, String script, boolean isAppend) # # and # # applet.loadInlineArray(String[] model_or_models, String script, boolean isAppend) # # explicitly # code: refactoring loadInline and interfaces WrappedApplet and JmolAppletInterface # bug fix: scroll wheel with synchronization does not track properly # ----------------------------------------------------------------------------- #version=11.3.54 # bug fix: JVXL writing/reading of simple plane writes precision color flag # new feature: (isosurface) reading of XPLOR ascii electron density map data # bug fix: reinstating "insideout" isosurface option # bug fix: JVXL writing of lobe, sphere, ellipsoid, hydrogenOrbital # bug fix: loadInline not properly autobonding -- causes null pointer error # bug fix: data ... end model instead of end "model" causes null pointer exception # ----------------------------------------------------------------------------- #version=11.3.53 # bug fix: symop=0NNN not returning all atoms with translation NNN # code: optimization of algorithm used for load RANGE # modification for load RANGE -x.x (within x.x Angstroms of symop=1555) to be within x.x of the # box containing symop=1555, not the atoms themselves. # code: cleanup of readers. # bug fix: no special atom checks for PDB symmetry files # bug fix: HallInfo --- Hall term miscalculation OUCH! -- mistken commenting out of code in 11.1.28 March, 29, 2007. revision 7243 # bug fix: set measures 0.1 --- solid line does not move. # bug fix: completion of set parameter clean up # ----------------------------------------------------------------------------- #version=11.3.52 # bug fix: set of many more (but not all) parameters can accept mathematical expressions # bug fix; set strandCount not properly handled # new feature: set strandCountForStrands # new feature: set strandCountForMeshRibbon # note --- set strandCount sets BOTH, but now each is independent # bug fix: quaternion not including chain designation # bug fix: default connections include proper PDB CONECT records # new feature: connect PDB # just does PDB CONECT connections # new feature: connect PDB AUTO # PDB CONECT and autobonding # ----------------------------------------------------------------------------- #version=11.3.51 # bug fix: write FILE not handling binary file formats properly # bug fix: PDB CONECT records not creating bonds for ALL models # bug fix: load =xxxx broken in 11.3.50 # bug fix: amino not a subset of protein # bug fix: proteins with just C CA N not recognized as such # code: minor refactoring in org/jmol/util # code: minor refactoring in org/jmol/jvxl # code: minor refactoring in org/jmol/adapter # ----------------------------------------------------------------------------- #version=11.3.50 # new feature: MOL isotope column read; interpreted for D, T, 11C, 13C, 15N (for now) # bug fix: WebExport not properly accessing files in more complicated situations (pmesh, isosurface, multiple files, etc.) # bug fix: WebExport not allowing variety of local location options # bug fix: return command not allowed in simple context # bug fix: setting perspective model resets unit cell on # bug fix: debug comment in TransformManager # bug fix: hideNotSelected not in state. # ----------------------------------------------------------------------------- #version=11.3.49 # bug fix: set perspectiveDepth off broken in 11.3.48 # bug fix: set scaleAngstromsPerInch not turning off perspectiveDepth # bug fix: scaleAngstromsPerInch not in state # bug fix: _firstFrame/_lastFrame variables mess up state # bug fix: calculate surfaceDistance broken for 11.3.48 # new feature: direct reading of MAC Spartan06 directories. # ----------------------------------------------------------------------------- #version=11.3.48 # # new feature: script "myfile.zip|xxx.spt" # # bug fix: scale3D not working # # new feature: load "myfile.zip|CH3CL.MOL" # loads a given named model from within a zip file. # # new feature: load "myfile.zip|myfile2.zip|CH3CL.MOL" # loads a given named model from within a zip file within a zip file. # # these selections override any manifest that might be in a ZIP file. # new feature: print getProperty("fileContents","zipFileName", "subfile", "subFile",...) # getProperty now allows drilling down through a ZIP file. If no subfile is shown, # then the directory listing is given: # # print getProperty("fileContents", "data/test.zip") # # CH3CL.MOL # CH3CL~1.MOL # CH3F~1.MOL # CH3OH~1.MOL # CH4~1.MOL # BENZEN~1.ZIP # ENALSP~1.ZIP # WATERV~1.ZIP # JmolManifest # # print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP") # # benzenevib.spardir/ # benzenevib.spardir/_locked # benzenevib.spardir/_spartandir # benzenevib.spardir/Document # benzenevib.spardir/M0001/ # benzenevib.spardir/M0001/_spartan # benzenevib.spardir/M0001/archive # ... # benzenevib.spardir/SpreadSheet/ # benzenevib.spardir/SpreadSheet/SheetData # print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP","benzenevib.spardir/M0001/") # # benzenevib.spardir/M0001/ # benzenevib.spardir/M0001/_spartan # benzenevib.spardir/M0001/archive # benzenevib.spardir/M0001/Calculations # benzenevib.spardir/M0001/Commands # benzenevib.spardir/M0001/Geometry # benzenevib.spardir/M0001/input # benzenevib.spardir/M0001/log # benzenevib.spardir/M0001/Molecule # benzenevib.spardir/M0001/output # benzenevib.spardir/M0001/parchive # benzenevib.spardir/M0001/proparc # benzenevib.spardir/M0001/ret_code # benzenevib.spardir/M0001/voutput # # print getProperty("fileContents", "data/test.zip", "BENZEN~1.ZIP","benzenevib.spardir/M0001/Commands") # # # Verbose Mode: 1 # # version: MacSPARTAN '06 129 129 x86/Darwin # # rootKeys: 'OPT' 'HF' '3-21G(*)' '' '' # # new Keys: 'OPT HF 3-21G(*) FREQ ' # # ...etc.... # # new feature: load "myfile.zip" MANIFEST "...." # new feature: JmolManifest in a zip file directs which files to load and in what order # JmolManifest is simply a list of files, one per line. # # Rules include: # # 1) blank lines and lines beginning with # are ignored. # 2) file names are case-sensitive and must be complete, with full path within the ZIP file # 3) files must be on separate lines or separated by vertical bar | marks; no whitespace around names # 4) files may be ZIP files themselves. # 5) some comments are special: # IGNORE_ERRORS --- process the file and do not stop if some files are not valid model files # IGNORE_MANIFEST --- (on the load command line) indicates that the internal ZIP file manifest should be ignored # EXCEPT_FILES --- process all files EXCEPT those given # # new feature: show spacegroup "X,Y,Z;-X,Y,Z;..." finds space group associated with specific operations # bug fix: multimodel files could have connected atoms between different models. # bug fix: application animation frame button reset always goes to frame 1 # new feature: load xxx.zip n # where n is the desired file, starting with 1 # new feature: Spartan06 file format reader # new feature: ZIP file reading for multiple models # bug fix: antialiasDisplay changes during spinning (or any rendering) causes null pointer error # ----------------------------------------------------------------------------- #version=11.3.47 # coding efficiencies in atom iterators # vast speed up of smoothed isosurface map properties # deprecated: calculate surface (equates to surfaceDistance WITHIN) # deprecated: calculate surface {...} (equates to surfaceDistance FROM) # new feature: calculate surfaceDistance FROM {atomExpression} # new feature: calculate surfaceDistance WITHIN {atomExpression} # ----------------------------------------------------------------------------- #version=11.3.46 # new feature: calculate surface {atomExpression} # new feature: set isosurfacePropertySmoothing # default TRUE # smooths the coloring for isosurface ... map property ... # bug fix: "isosurface select() map property xxxx" array out of bounds error # bug fix: color bonds CPK not working # new feature: calculate polymers # allows recalculation of polymers after connections are made/broken # bug fix: tRNA, rRNA with abnormal distances do not connect biopolymers # bug fix: Jmol math getProperty() doesn't pass parameter in some cases # code: refactoring,optimizing Escape.toJSON() and Escape.toReadable() # bug fix: isosurface CAP not turned off prior to map sasurface # bug fix: adjustable boundbox in multimodel context not specific to model of selected atoms # bug fix: Jmol math (x[2])[3] indistinguishable from x[2][3] # ----------------------------------------------------------------------------- #version=11.3.45 # bug fix: new boundbox command with small numbers of atoms # bug fix: state not saved for coloring elements # bug fix: state not properly representing deleted bonds # bug fix: setColix not clearing shading in certain cases # new feature: Jmol math {atomset}.boundbox returns list of center, vector, corner0, corner1 for this set of atoms # code: ModelSet.BoxInfo abstraction/refactoring # ----------------------------------------------------------------------------- #version=11.3.44 # new feature: Jmol math getProperty() function # allows FULL math access to ALL getProperty types # # syntax: getProperty(propertyType, qualifier, item, item, item,...) # # examples: # # print getProperty("modelInfo") # print getProperty("boundboxInfo") # print getProperty("boundboxInfo", "center") # print getProperty("boundboxInfo", "vector") # print getProperty("atomInfo",{atomno=3}) # print getproperty("bondInfo",{*},2,"atom1") # print getProperty() # displays list of possibilities # print getproperty("polymerinfo",{*},"models",2,"polymers",1,"monomers",39,"atomIndex2") # # For many property types, the qualifier is an atom set # If the atom set is not given, those properties default to {visible} # For "stateInfo", the qualifier is string: "fileState", "modelState", etc. # Items may be integers or string-based keys # Integer items follow the rules of Jmol math selectors: # 1 first item, 0 last item, -1 next to last item, etc. # code: set instead of = in measures and labels state # bug fix: POVRAY and other buttons aren't enabled when there are no atoms but instead draw objects and isosurfaces # bug fix: new label fonts not loaded when labels resized # bug fix: nuisance "render mesh error" console report # new feature: boundbox {atomExpression} [on|off] # sets the bound box around the specified atom expression # default ON/OFF is to NOT change current setting # new feature: boundbox {point or expression} {vector to corner} [on|off] # sets the bound box to be centered with a given size based on a vector to a corner # new feature: boundbox corners {point or expression} {point or expression} [on|off] # sets the bound box to encompass the two corner points # strangely enough this allows setting the boundbox to a 2D or 1D box # new feature: show boundbox gives valid boundbox commands and volume # bug fix for bioshapes visible outside of current visible frame set # bug fix for selecting atoms of atomsets using [-n] or [0] # isosurface POINTSPERANGSTROM synonym for RESOLUTION # also reported in show isosurface # bug fix: more natural mouse SHIFT-RIGHT behavior. # new feature: isosurface CAP [plane definition] # caps the isosurface at the designated plane. # Specifically for molecular/solvent-type isosurface. # [plane definition] can be {x y z w} or any combination of # three {x y z} points, draw point references, or atom expressions # ----------------------------------------------------------------------------- #version=11.3.43 # bug fix: select statement comparisons of negative decimal properties to "-1" (not "-1.0") causes none found # new feature: Back to "SET" for state definitions of Jmol parameters. # bug fix: Strings too long in state can cause Eclipse "infinite loop" bug # # solution is a new feature: # new feature: "\" at the end of a line marks a continuation of that line # bug fix: assigning a negative value to a dataAtomNumberField value caused BitSet.set() exception # bug fix: Jmol parameter setting syntax too loose # The following statement was allowed: # pickCallback = myfunction # OK, so that might look good, but it evaluates to # # pickCallback = "" # # since the VARIABLE myfunction has not been defined. # # Solution: Don't allow the syntax # # [jmolParameter] = [Token.identifier] # # the following is OK: # # [jmolParameter] = "some string" # # the following is preferred: # # SET [jmolParameter] [value] # # bug fix: antialias with translucent but antialiasTranslucent = false; labels, text, echos, hover, picking, out of alignment # bug fix: negative formal charges # new feature: set drawPicking TRUE # then reports picking of draw objects as a JavaScript array: # [ "draw","[drawID]",[modelIndex],[vertexIndex],[x],[y],[z] ] # this goes to the pickCallback function as the second parameter, # with the first parameter (normally the atomIndex) being -2. # bug fix: write coord mol not working # new feature: connect (...) (...) aromatic auto # similar to calculate aromatic, except it's isolated to this set of connections; implicit modifyOnly # can be used in place of # select *; calculate aromatic # # code: refactoring of BondCollection.makeConnections # # bug fix: connect (..) (..) # with implicit "single" causes state to use "partial 0" # new feature: shadows can be activated again via noShadows parameter in .pov file # ----------------------------------------------------------------------------- #version=11.3.42 # bug fix: new frame title and state # new feature: set echo [echoID] MODEL [model number] # bug fix: select by itself not working; oy. Since at least 11.0 # bug fix: ramachandran/quaternion fix for assignment of structure # bug fix: isosurfaces not taking their default name properly # new feature: frame title "this a title for THIS frame only" # bug fix: small fix for povray cap at back side # bug fix: overly long titles now again substringed in the popup menu. # bug fix: memory leak in merge -- models[i].modelSet causes modelSet to not finalize. # bug fix: quaternion # bug fix: set xxxCallback not allowed # new feature: **** Jmol Embedded Script **** recognized in /* ... */ comments and /** ... **/ super-comment blocks # if found, ONLY this text is processed and all other text in the file is ignored. # ----------------------------------------------------------------------------- #version=11.3.41 # bug fix: math operations with bond bitsets; % and + operating on arrays # bug fix: _set variable definition removed # new feature: .type math function # new feature: Jmol math allows direct string replacement in select atom expressions: # x = "atomno=3" # select @x # or select @{x} # select @{x + 3} # selects atomno=33 # x = array("atomno<10","atomno>20") # select @x # OR of the list elements # select @{x[2]} # just element 2 of x (atomno>20) # select @x[2] # same as {@x}[2] # new feature: set atom properties using an array instead of a DATA statement: # (was introduced in 11.3.29, but not fully articulated) # {*}.x = array(2,3,4,5,6); # {atomno<=3}.color = array("red","green","blue") # {*}.property_mydata = array(1.0,5.5,4.4,3.3); # {atomno < 4}.xyz = array({3 4 5},{4 5 6},{5 6 7}) # if the array is shorter than the number of atoms selected, then # only that number of atoms are affected # new feature: set atom properties from space-separated string: # {atomno < 5}.property_mydata = "1.0 5.5 4.4 3.3"; # ----------------------------------------------------------------------------- #version=11.3.40 # new feature: Ramachandran/Model commands switch between plot and model # -- one Ramachandran plot per model # -- axes labels and special hover label for Ramachandran plots # -- Ramachandran saved in state # bug fix: Overlapping CPK at a slab now correct for up to 10.000 clipped atoms. # bug fix: @{} for within(1.0,point,@{....}) # new feature: set xxxx where xxxx is not a Jmol variable causes ERROR # code: privatized Token to avoid null value problem in Eval.statementAsString() # POV-Ray clipping coding minor tweak # POV-Ray fix for number formatting width > 999 # new feature: model-based parallel array calculations: # x = {atomno=3}.split() # a list, one element for each model # draw @{x.xyz.sub({1 0 0})} # a set of points, one per model # new feature: point3f in array(): # xlist = array({1,2,3}, {1,1,0});print xlist[1]+{1 0 0}; # bug fix: draw @{x - {1 0 0}} # bug fix: antialias with set picking draw # bug fix: draw object text not selective for frame # new feature: draw object title line number corresponds to model number for multi-model draw objects # new feature: matte finish for isosurfaces # remark: matte finish replaced by adaptable translucent finish (see below) # bug fix: noninteger MO occupancies # bug fix: antialias labels not fully bitmapped # bug fix: RPN processor too limited in nesting level # bug fix: MO processing for Gaussian and PSI3 errors # new feature: MoldenReader (Matthew Zwier ) # new feature: MO calculations for spherical orbital basis (Matthew Zwier ) # bug fix: slabbed atoms are now capped in povray output. # Note: In CPK mode atoms overlap, but are capped at the same height. # there is a priority in Jmol, but not yet clear to me which. The current priority # in povray is based on the signed distance from the slab to the atom center. # bug fix: povray output of translucent objects now have reduced glare, for # clarity of the representation and better compatibility with the Jmol viewer. # ----------------------------------------------------------------------------- #version=11.3.39 # bug fix: antialias causing image to be partial size. # bug fix: hover state not properly showing specific-atom hover labels. # new feature: write FILE (text-files only) #new feature webexport: automatic usage of a different path to the applet for local files to allow testing # only works for Pop-In template at present. Required updates to JmolPopin.js and templates. #webexport instruction updated to reflect new feature. # bug fix: antialias adjustments for hover text and background box # bug fix: antialias fix for text color same as background and in front of translucent surface appearing transparent # bug fix: antialias fix for applet # webexport instruction updates. # bug fix: webexport scriptbutton template had erroneous script names. # ----------------------------------------------------------------------------- #version=11.3.38 # bug fix: antialiasing with translucent/POV-ray # new feature: set antialiasTranslucent TRUE/FALSE # along with antialiasDisplay and antialiasImages # determines the extent of antialiasing. Requires # antialiasDisplay or antialiasimages TRUE. # ----------------------------------------------------------------------------- #version=11.3.37 # new feature: @{mathExpression} for echos, select, etc. where @x can be used. # select atomno=@{x*2}; # xlist = array("red", "green", "blue"); # n = 2; # color atoms @{xlist[n]}; # new feature: {atomExpression}.color = "red" (or "[xff0000]" or {255,0,0} # new feature: helixes as barrels in cartoons or rockets using # rocketBarrels = true # bug fix: -- adds antialiasing for translucent objects # bug fix: error in state for connect DELETE # bug fix: 0-diameter atoms displayed as single pixels when perspectiveDepth = false # ----------------------------------------------------------------------------- #version=11.3.36 # antialias better dots # bug fix: inline loading not working # POV-Ray dialog update # set antialiasDisplay T/F (false by default) # set antialiasImages T/F (true by default) # ----------------------------------------------------------------------------- #version=11.3.35 # POV-Ray slab/depth # POV-Ray text -- ALL text (echos, labels, axes, etc.) # POV-Ray cleaner for Molecular Orbitals # bug fix: getproperty atominfo returning string to Integer() # PDB remediated atom name upgrade -- NEEDS CAREFUL CHECKING # ----------------------------------------------------------------------------- #version=11.3.34 # write povray [width] [height] filename # POV-Ray for mapped isosurfaces # POV-Ray embeds Jmol script # POV-Ray .pov files created by Jmol can be loaded as scripts # code: cleaning of JmolConstants specialAtomNames # code: cleaning of TextFormat.simpleReplace # bug fix: select [SET] or [2MO] or [DB'] # bug fix: app -c flag errors not going to Logger.Error # bug fix: no partial charges! # bug fix: 11.3.14+ does not write colormapped JVXL files # bug fix: Using isosurface within 1.0 @pt1 where pt1 is a draw point save state cannot be restored # ----------------------------------------------------------------------------- #version=11.3.33 # code: PovRay tweaks -- multiple bonds # code: PovRay output uses BufferedWriter # adds support for "xx'" atom designations in PDB and variable names # bug fix: insertion codes stored incorrectly in 11.3.32 # new feature: inline scripting allows math # # script INLINE "select " + site_list[2] # new feature: site_ support for PDB and CIF # # loading of PDB and CIF files containing site information # automatically defines variables site_xxx and defines selections site_xxx and site_n # where xxx is the site identifier and n is the site number. # These settings are reset each time a file is loaded. # They do not carry over from one file to the next. # adds "OP1" and "OP2" as backbone designators (new PDB designation) # _PovrayExporter adds draw, halos, stars, dipoles, vectors, polyhedra, # backbone, cartoons, meshRibbon, ribbon, rockets, strands, trace, # dots, geosurface, molecular orbitals, LCAO cartoons, pmesh, # single-color isosurfaces # Web Export Dialog changes: new intro tab, new minilog at bottom, instructions converted to # buttons which open the info in the standard Jmol Help Dialog. # bug fix: rockets color incorrect for head groups # ----------------------------------------------------------------------------- #version=11.3.32 # bug fix: vibration disabled in 11.3.31 # bug fix: zoomto cancels slabbing # bug fix: zoomto (atomExpression) 0 # zooms to 2x # new feature: getproperty stateinfo TYPE # where TYPE is one of: # # colorState # dataState # fileState # frameState # modelState # perspectiveState # selectionState # variableState # windowState # # bug fix: backbone not in state # code(I): Mmset merged into ModelSet; # Viewer accesses ModelSet methods directly # ModelManager streamlined substantially # # This basically removes two full layers of abstraction. # All the atoms, bonds, and models are now in ModelSet. # # code(II): ModelSet extends ModelCollection extends BondCollection extends AtomCollection # # bug fix: dipoles moved back into shape from shapespecial # bug fix: semi missing in show orientation message, second part (zyz text) # bug fix: select 0 selects all instead of PDB group 0 # bug fix: write t.xxx # ----------------------------------------------------------------------------- #version=11.3.31 # bug fix: calculate aromatic for N and O refined # new feature: valence -- sum of bond orders # print {atomno=3}.valence # {atomno=1}.valence = 3 # select (carbon and valence != 4) # new feature: settable atom properties (preliminary): # .x, .y. .z, .xyz, # .fx, .fy, .fz, .fxyz, # .vx, .vy, .vz, .vxyz, # .formalcharge, .occupancy, .partialcharge # .temperature, .valence # for example: # a = {atomno=30} # a.xyz = {1.0, 2.0, 2.3} # a.temperature = 3.0 # a.formalcharge = 2 # new feature: set atom properties using {xxxx}.x = # # {atomno=3}.x = 3 # {(*)[2]}.xyz = {1 2 3} # for(var i = 1; i < 3; i = i + 1); {(*)[i]}.x = 5;end for; # {atomno=3}.property_whatever = 2.0 # new feature: set atom properties using an array instead of a DATA statement: # {*}.property_mydata = array(1.0,5.5,4.4,3.3); # {*}.property_mydata = "3 4 5 6 7 8"; # {atomno < 4}.xyz = array({3 4 5},{4 5 6},{5 6 7}) # code optimization for within() and setAtomBits() # more export generator classes # bug fix: unitcell missing some lines when axes turned off # ----------------------------------------------------------------------------- #version=11.3.30 # new feature: adds H/Br/Cl/I/C logic to aromatic bond assignments # new feature: adds Oxygen/Sulfur logic to aromatic bond assignments # new feature: adds Nitrogen logic to aromatic bond assignments # bug fix: menu for UNITCELL # new feature: PovrayExporter (pim schravendijk ) # ----------------------------------------------------------------------------- #version=11.3.29 # new feature: aromaticSingle and aromaticDouble bond order options # new feature: "smartaromatic" bonds # turned off with "smartAromatic = false" # new feature: calculate aromatic # calculates reasonable aromatic double/single alternation. # new feature: reset aromatic # sets all aromaticDouble and aromaticSingle back to aromatic # new feature: select ISAROMATIC # selects aromatic atoms # new feature: MOL reader recognizes bond types 4,5,6,7 # new feature: isosurface/mo "squared" # new feature: fully generalized bond order "partial n.m" # n = number of lines, up to 5 # m = binary mask for dottedness, up to 31 (0x1F) # 00001 first line of bond dotted # 00010 second line of bond dotted # 00011 first and second line of bond dotted, etc. # new feature: connect may use numeric bond orders, including "partial n.m" # new feature: preliminary work on functionalized state # new feature: global/local functions (to applet, for instance # in general, functions are global -- common to all applets. # first-character "_" indicates this function is a LOCAL function, private to this applet. # ----------------------------------------------------------------------------- #version=11.3.28 # critical bug fix for color command not coloring objects properly # new feature: bondOrders 2.5 and -2.5 PartialTriple and partialTriple2 # ----------------------------------------------------------------------------- #version=11.3.27 # critical bug fix for functions not returning values # bug fix for atomarray[i] not selecting properly # bug fix for write not working with VAR # bug fix for application not accepting pastes into the # console consisting of multiple lines # bug fix for bondOrder command not properly treating 4.0 or 0.5 # bug fix for decimals not represented properly in error messages # ----------------------------------------------------------------------------- #version=11.3.26 # new feature: _1 parameter for "first atom" in second expression of connect: # connect 3.0 (_H and connected(_N) (_O and not within(chain,_1)) hbond # new feature: better reporting of PMESH file format errors # code cleanup: pmesh moved to shapespecial; privatized # bug fix within(chain,xxx) not working # bug fix for() as first command in script or line # bug fix we were not exporting error free xhtml 1.1. # bug fix for WebPageMaker not writing files # bug fix for PAUSE causes app to hang -- this is a reversion of use of SwingUtilities.invokeLater(), # which actually will not work in ScriptWindow. We need the direct execution in # order to avoid the event queue from stopping itself. # ----------------------------------------------------------------------------- #version=11.3.25 # bug fix compiler not recognizing "axes =" or "measures = " # bug fix for WebPageMaker creating uncompressed PNG # bug fix for WebPageMaker not stripping \ in load file names # ----------------------------------------------------------------------------- #version=11.3.24 # critical bug fix for 11.3.23 compiler not recognizing line endings # bug fix for show state for draw in multi-model environment # bug fix? for background model not available for multiple frame range (e.g. frame 2.0) or after invalid frame number # # new feature: within(distance,isWithinAllModels,atomExpression) # # allows finding atoms within a specified distance of other atoms in OTHER models: # # select within(5.0,true,model=2.1) # TRUE indicates we should check all models # select within(5.0,false,model=2.1) # FALSE -- only model 2.1 # select within(5.0,model=2.1) # default is FALSE # ----------------------------------------------------------------------------- #version=11.3.23 # VERSION full script flow control support: # if / else if / else / end if # for / end for # while / end while # # var i = 4 # if (i = 3) # print "i=3" # else if (i = 4) # print "i=4" # else if (i = 5) # print "i=5" # end if # # var i = 5 # while ( i > 0) # print "atom " + i + " " + {atomno=i}.ident + " is at " + {atomno=i}.xyz # i = i - 1 # end while # # n = {*}.size # for (i = 1; i <= n; i = i + 1) # for (j = i + 1;j <= n; j = j + 1) # # var dist = {atomno=i}.distance({atomno=j}) # # if (dist < 1.77) # print "i-j: " + i + "," + j + " " + dist%2 # measure {atomno=i} {atomno=j} # endif # # end for # end for # # var i = 4 # while ( i > 0) # print "in while: i="+i # if (i = 2);print "i is 2";endif # i = i - 1 # end while # # # ----------------------------------------------------------------------------- #version=11.3.22 # Changes to webexport package only # New Features: textboxes for entry of author name and title for browser window # persistence across launches of authorname and applet size # automatic gzip of large structure/quantum files. # Bug? fix: update the page templates to XHTML 1.1 # Minor fixes to instruction .html files. # tweak: using "var" keyword prevents display of global variable value # ----------------------------------------------------------------------------- #version=11.3.21 # # bug fix: isosurface of MOs not properly displaying color in saved state # bug fix: state saving of @ definitions has extra = sign. # # new feature: fully functional user-defined functions: # # MACROS (no parameters) # # function mymacro # background red # color atoms blue # end function # # function mymacro2 # background black # color atoms cpk # end function # # background white # delay 2 # # mymacro # # delay 2 # # mymacro2 # # # SUBROUTINES (parameters, but no return) # # function drawline(id,a,b) # var x = script("draw line"+ id + " {atomno=" + a + "} {atomno=" + b + "}") # end function # # drawline(1,3,5) # drawline(2,10,12) # # # FUNCTIONS (parameters and returns) # # function d(a,b) # return a.distance(b) # end function # # x = d({atomno=3},{atomno=4}) # print x # # SHOW AND WRITE: # # show functions # # write functions macros.spt # # ----------------------------------------------------------------------------- #version=11.3.20 # bug fix for arrows way too fat (introduced in 11.3.19) :( # ----------------------------------------------------------------------------- #version=11.3.19 # bug fix: critical arrow fix of 11.3.17 for 2-point arrows # bug fix: write PNG default was 0 compression. -q flag was OK for setting 0-9 # bug fix: ragged arrow tip # ----------------------------------------------------------------------------- #version=11.3.18 # critical bug fix for 11.3.17 in regard to serialization of arrays # also introduces # # reset ALL # resets all user-created variables # # also "exitJmol" typed into the script window for the application does that. # # ----------------------------------------------------------------------------- #version=11.3.17 # bug fix: problem with unescaping comma-separated point strings "{1,2,3}" as a point. # bug fix: drawn arrows scale improperly when zooming; arrow heads off-kilter # new feature: set defaultDrawArrowScale # 0.5 initially # Drawn arrows now have a head size that can be set and a dimension that # scales with the model, so arrow head:atom size ratio remains constant # # new feature: setting Jmol,Rasmol,Shapely,Amino,Roygb,Rwb # color schemes makes those colors the default colors for these schemes. # rename byResidue_jmol --> byResidue_shapely # rename byResidue_rasmol --> byResidue_amino # new feature: array variables saved as arrays # prior to 11.3.17, you could not do: # # x = "this is a test".split(" ") # y = x[3] # # because x was only saved as a string, not an array # now x is saved as an array, so this is no problem. # # new feature Jmol math point(x,y,z) function # # point(a,b,c) or point("{x,y,z}") # # x = point(y[3], y[6], y[2]) # x = point("{2,3,5}") # # needed because, with simple numbers, just # # x = {3.0,4.0,5.0} # # works, but # # x = {r,g,b} # # does(did) not. # # new feature: Jmol math array element assignment: # # a = "2,3,4,5".split(",") # # a[3] = "now the 4 becomes this phrase" # a[a[2]] = "not any more; now it's this" # a[0] = "setting the final element" # a[6] = "expanding the array" # print a # # 2 # 3 # not any more; now it's this # setting the final element # # expanding the array # # works with strings as well: # # a = "this is a test" # a[8] = " not" # print a # >> a = "this is not a test" # # new feature: Jmol math x = array(a,b,,,,) # # x = array(3,4,5,6) # print x[3] # >> 5 # # new feature: Jmol math plane(x,y,z,w) function # # plane(a,b,c,d) or plane("{x,y,z,w}") # or through three points: # plane({atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint}) # or through three points with a reference point # plane({atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint},{atomExprOrPoint}) # # x = plane(y[3], y[6], y[2], 3.0) # x = plane("{2,3,5,4}") # x = plane({_H}[1],{_H}[2],{_H}[3],{_C}[1]) # new feature: print command prints a variable expression # # print x # print x * 3 # print x[4] + x[3] # print x.split(" ")[2][0] # new feature: aPlane.distance({some atoms}) # new feature: someArray.add("string") adds string to right of each item # new feature: someArray.sub("string") adds string to left of each item # colorManager clean-up # ----------------------------------------------------------------------------- #version=11.3.16 # bug fix: Eval RPN processor for list[n] addition operator not doing selection # new feature: MOPAC mgf file UHF orbital reading -- preliminary only # new feature: byElement and byResidue color schemes allow # customized element and residue coloring schemes. # built-in include: byElement_Jmol, byElement_Rasmol, # byResidue_Jmol (shapely) and byResidue_Rasmol (amino) # with abbreviations byElement == byElementJmol; byResidue == byResidue_Jmol # color atoms "byresidue_Jmol" # # Users can set up their own byElement and byResidue color schemes # simply by preficing a name with "byElement" or "byResidue": # # color "byElement_Mine=[x......] [x......] [x......] ..." # 0(unknown) 1(H) 2(He) ... # # then: # # color atoms "byElement_Mine" # # RANGE min and max are ignored for byElement and byResidue schemes, # and there is no scaling done ever, so effectively these prefixes # make the correlated value a simple index into the array. # This is what one would want for something that should be a given # for a specific element or residue # # Residue indexes in order correspond to the groupID of an atom: # # 0 noGroup, # 1 ALA, ARG, ASN, ASP, CYS, # 6 GLN, GLU, GLY, HIS, ILE, # 11 LEU, LYS, MET, PHE, PRO, # 16 SER, THR, TRP, TYR, VAL, # 21 ASX, GLX, UNK, # 24 A, +A, G, +G, I, +I, # 30 C, +C, T, +T, U, +U # # so this opens the door to user-created residue coloring schemes. # # color "byResidue_Mine=[x......] [x......]..." # nogroup ALA ... # # then # # color cartoons "byResidue_Mine" # ----------------------------------------------------------------------------- #version=11.3.15 # new feature: fully customizable popup menu -- see file jmol.mnu # # load menu jmol.mnu # # applet parameter param=menuFile value="jmol.mnu" # # application parameter -m filename # # mostly untested # # new feature: show menu # new feature: getProperty menu # # These deliver the current menu (as translated) in jmol.mnu format # ----------------------------------------------------------------------------- #version=11.3.14 # new feature: fully customizable popup menu -- see file jmol.mnu # # load menu jmol.mnu # # applet parameter param=menuFile value="jmol.mnu" # # largely untested # bug fix: HDO not recognized as "water" # bug fix: rotateSelected MOLECULAR not around {0 0 0} # bug fix: -g ignored on -n option, even if -w is present # bug fix: unknown color palette could cause error # new feature: %l atomic element number # new feature: APPLICATION -q (quality) option # new feature: lcaoCartoon, mo, isosurface, pmesh: color [translucent [n]|opaque] [colors...] # adjustment: setting JPG default quality to 75, not 100 # new feature: {r,g,b} can be used in place of [r,g,b] for indicating color, # allowing programmatic color definition: # # r = 255; g = 255; b = 0; # background {@r,@g,@b} # new feature: expanded color command for properties # # color atoms property partialcharge "rwb" range -1.0 1.0 # # and reverse with range inverted: # # color atoms property partialcharge "rwb" range 1.0 -1.0 # new feature: unlimited user-defined color schemes: # # select none; # color "myname=[xff00ff] [xffff00] [xff00ff]" # # colors must be [xRRGGBB] format for this one # new feature: fully remappable isosurface using COLOR command: # # isosurface s1 molecular map mep # color $s1 "bwr" # color $s1 "rwb" range -0.2 0.2 # APPLICATION adjustment to console window scaling/size # ----------------------------------------------------------------------------- #version=11.3.13 # this version introduces fully customizable color schemes # # new feature: .color for numbers and points delivers the # color associated with a given value in the current # coloring or propertyColorScheme. # (some number).color gives a color triple as a point {x y z} # {x y z}.color gives a hexadecimal string [xRRGGBB] # # # select atomno=3;color yellow # x = {atomno=3}.color # gives {255.0, 255.0, 0.0} # x = {atomno=3}.color.color # gives "[xFFFF00]" # # set propertyColorScheme "bwr" # x = {atomno=3}.partialcharge.color # # new feature: color ["schemeName"] RANGE [min] [max] # allows setting of color range and scheme so that color # values can be determined. This would be used for making # a color key using positionable ECHO text boxes: # # color "bwr" absolute -0.1 0.1 # x = (0.01).color # gives the point-color associated with that number # set echo myecho 100 100 # position # echo " " # just some space # color echo @x; background echo @x # color this bar the color of 0.01 # # new feature: show colorscheme "schemeName" # delivers "colorscheme = " followed by a string of color values. # without the scheme name, returns the current colorscheme listing # For example: show colorscheme "low" delivers: # # colorscheme = [xff0000] [xff2000] [xff4000] [xff6000] [xff8000] [xffa000] [xffc000] [xffe000] [xfff000] [xffff00] [xf0f000] # # setting an array variable to the color values: # # list = script("show colorscheme \"low\"")[15][0].split(" ") # # new feature: set userColorScheme [list of color names] # creates a colorscheme referred to as "user" and its reverse, "resu" # based on a list of color values: # # set userColorScheme red green [x00FFFF] blue # color atoms property partialcharge "user" range -1.0 1.0 # ----------------------------------------------------------------------------- #version=11.3.12 # bug fix: zoomTo 100% # bug fix: set language fr needs quotes but should not # bug fix: load multiple files inline causes null pointer exception # # new feature: APPLICATION: File|Export...|Export to Web Page # ----------------------------------------------------------------------------- #version=11.3.11 # bug fix: lcaoCartoon for sp center requires "sp2" not "sp" # bug fix: mo not showing titles # # new feature: lcaoCartoon rotate [x|y|z] degrees create "px" # new feature: adds Jaguar PLT plot file reader for isosurface # isosurface sign red blue "myfile.plt" # ----------------------------------------------------------------------------- #version=11.3.10 # bug fix: script window using swing thread start not from event queue # bug fix: state of multi-polymer protein cannot be restored # bug fix: dots nn% not operational # bug fix: molecular dipole and multiple frames # # new feature: molecular dipole for Gaussian files # # new feature: simple calculation of approximate dipole moment from charge distributions. # dipole molecular # from file value if provided # dipole calculate molecular # from "center of gravity" of charges calculation # # new feature: show frame # based on models in the current frame set, displays information about frames # # new feature: application option for web page export # # new feature: write JPG n "filename" # where n is the quality (<=100) # ----------------------------------------------------------------------------- #version=11.3.9 # bug fix for isosurface mapping of planes by MEP (see 11.3.2) # new feature: symmetryRange: load "someFile" {mmm nnn 1|0} range x.x where x.x is a maximum distance away from closest atom in the base cell # new feature: synchronization of applets using JavaScript # new feature: synchronization of applets using Jmol scripts: # # synchronize .|>|*|appletId[syncId] ON|OFF|SLAVE|command # # The synchronize (sync) command allows two or more applets to be synchronized in # terms of orientation. Move one with the mouse, and the other moves as well. # In addition, the sync command allows ANY command to be sent to one or more # other applets directly, without the intervention of JavaScript. # # Applets are identified by appletId (jmolApplet0, for instance) # along with an optional bracketed sync group identifier -- generally a random # number that identifies the page containing the controlling applet. If the # syncId is not given, then the ID for the page containing the controlling applet # is used. This feature is important for cross-frame synchronization only. # # # . this applet only # > all applets except this one # * all applets # appletId id of a specific applet # [syncId] (optional) a unique string of digits -- brackets included # # ON sync as driver (default) # OFF turn sync off # SLAVE turn sync on, but not as driver # command command to send # # for example: # # sync * # synchronize all applets as drivers # sync jmolApplet1 #syncs this applet with jmolApplet1 both as drivers # sync > "set echo top left;echo OK" # sends OK to top left of all OTHER applets # sync jmolApplet2[254678942] OFF # turns sync off for an applet ON A DIFFERENT PAGE # # or in a different FRAME # sync . OFF # turns sync off for this applet # # new Jmol.js feature: jmolGetSyncId(); jmolSetSyncId(id); # allows control over the sync ID via javascript. jmolSetSyncId(id) # should be called prior to jmolApplet() and should incorporate some sort of # random digits and no space characters. (A number is good.) # This should only be necessary for multi-frame pages. # ----------------------------------------------------------------------------- #version=11.3.8 # bug fix: isosurface color -- not operating for some isosurface types # bug fix: isosurface "xxxx.cube" -- not assigning proper default colors # bug fix: gamess reader MO fix # bug fix: state save of STRUCTURE misplaced # feature: adds adjustable scale for unitcell axes # ----------------------------------------------------------------------------- #version=11.3.7 # bug fix: reading of JVXL files for orbitals loses phase information # bug fix: ACD/Labs nonstandard cml "builtin" property reader # bug fix: isosurface interior cavity was not setting meshdata surfaceSet null # bug fix: select dna can select rna if chain is mixed hybrid dna+rna # ----------------------------------------------------------------------------- #version=11.3.6 # bug fix: inappropriate draw pick spinning for single point # bug fix: dots not available in multimodel mode # bug fix: multiple isosurface cavities incorrect in a multimodel environment # bug fix: isosurface cavity not filled completely # bug fix: nested ifs can cause last endif to throw error # bug fix: compiler bug working with very small real numbers # bug fix: Support for mol2 files with blank line after comments. # ----------------------------------------------------------------------------- #version=11.3.5 # bug fix: ACD/Labs nonstandard cml "builtin" property reader # note that xmlReader (SAX reader) is now set to ignore all DOCTYPE declarations # bug fix: odydata fix for files with \r\n for line ending # bug fix for PDB remediated T/DT difference of C5M/C7 # bug fix: set spin X was case-selective # bug fix: echo text not re-orienting on resize of applet or application # bug fix: multiple isosurface cavities in a multimodel environment # bug fix: missing set picking ident in popup window # bug fix: popup menu set picking label not working # ----------------------------------------------------------------------------- #version=11.3.4 # rough export of VRML using # # write VRML "myfile.wrl" # # includes colored balls and sticks; uncolored isosurfaces # ----------------------------------------------------------------------------- #version=11.3.3 # bug fix pmesh not working # bug fix for state after calculate surface, calculate hbonds, configuration, dynamic variable definition in multimodel environment (ModelSet::addStateScript) # NEW FEATURES from the 2007 Gordon Research Conference on Visualization in Science and Education: # # internal dataFrame concept # # new command: ramachandran # # new command: quaternion [w x y z] [derivative] # # TODO: frame menu # TODO: write VMRL # preliminary Maya export -- sets the stage for any number of export frameworks. # ----------------------------------------------------------------------------- #version=11.3.2 # bug fix: set picking label # bug fix: minus-sign "fix" in 11.3.1 broke all {x -y z} notation # bug fix: state for phased atomic orbitals does not preserve red/blue color # bug fix: mo opaque causing "invalid argument" when no MOs # bug fix: isosurface cavity molecular caused exception # feature: adds isosurface capability to map MO and MEP data onto planes # ----------------------------------------------------------------------------- #version=11.3.1 # bug fix: debugscript on;center 3-5; "-" missing # bug fix: zoomTo (5-7) read as "5 to -7" # bug fix: move with time < 0.03 seconds causes molecule to disappear # bug fix: hover interruption # bug fix: image offsets in creating JPG image if model has been moved by CTRL-ALT-LEFT drag # ----------------------------------------------------------------------------- #version=11.3.0 # perspectiveModel 11 default # bug fix for 3D text echo staying in window # bug fix for draw text+translucency # bug fix for draw text not hovering for points # bug fix for multiple draw objects in show state # bug fix for spin save reversed direction # bug fix for CdkAdapter not having auxiliaryInfo data # # adds the ability to find the coordinate of a specific # draw object vertex using $objName[vertexId] as in # draw p perp plane (atomno=1) (atomno=2) # x = $p[3] # draw pt1 $p[1] # ----------------------------------------------------------------------------- #version=11.1.49 # bug fix for Gaussian file reader fix for very large negative MO coefficients # bug fix for move not releasing isInMotion # bug fix for x = "testing"[0], x = "testing"[-1], "testing".split("t")[0], and "testing".split("t")[-1] # bug fix for select {*}[0], {*}[-1], etc., which now counts from the end back # adds proper indents on debugscript for if/else/endif # allows "jmolscript:" for embedded scripts and callbacks # ----------------------------------------------------------------------------- #version=11.1.48 # bug fix for gamess reader MO fix # bug fix for mopac GRAPHF file fix (resolver thought MOL) # bug fix for lcaocartoon "lp" fix for AX3E and AX2E # ----------------------------------------------------------------------------- #version=11.1.47 # bug fix for compound document reader not reading enough short segment pointers # bug fix for Spartan reader not recognizing 5D orbital problem # bug fix for animation skipping frames # ----------------------------------------------------------------------------- #version=11.1.46 # bug fix for Jvxl.jar standalone application not having complete set of class files (jvxl) # adds inline help support for Jmol application running under Java 6 (Java 1.6.xx) # bug fix for inappropriate pre-JVM12 menu items not disabled # ----------------------------------------------------------------------------- #version=11.1.45 # bug fix for animFrameCallback not indicating animation direction # bug fix for help not working and help URL not displaying (app) # bug fix for app not writing state from File...Export menu (app) # bug fix for retaining the last-saved file type selected for Image export (app) # bug fix for "wait" not recognizing if it is just a syntax check (app) # ----------------------------------------------------------------------------- #version=11.1.44 # bug fix for inability to specify fractional coordinates: adds fx, fy, fz as # select fx < 0.5 and fy < 0.5 and fz < 0.5 # aveFracX = {molecule=1}.fx # bug fix for inability to use x,y,z,fx,fy,fz with cartesian points # bug fix for select BONDS ({...}) not preserved in state # bug fix for geosurface not always restored from saved state # bug fix for strandcount saved explicitly forces bioshape load # ----------------------------------------------------------------------------- #version=11.1.43 # bug fix for labels mysteriously disappearing. Also probably taking up HUGE amounts of hashtable space. # bug fix for hydrogen bond calculation with incomplete nucleic acid definitions. # bug fix for "set picking draw" crashing Jmol # bug fix for strandCount not carrying over to meshRibbon # bug fix for geosurface/dots save/restore state exception # bug fix for save state using "measurements off" instead of "set measurements off" # ----------------------------------------------------------------------------- #version=11.1.42 # bug fix for lack of updating of certain variable predefined expressions # bug fix for smiles nonfunctional # bug fix for load append and structure commands # bug fix for load files losing structure and cartoons # bug fix for multiple frames displayed does not show Select...Elements menu # bug fix for select @x not functioning where x = {atom expression} or x = "atom expression" # bug fix for {atom expression}.ident nonfunctional # code refactoring Frame --> ModelSet and ModelLoader # code refactoring modelframe --> modelset package # code refactoring shapebio --> shapebio + molsetbio packages # code refactoring dissociates Mps.MpsShape from Mps as BioShape # code refactoring removes Mps.Mpsmodel # code refactoring Mps --> BioShapeCollection # code refactoring greatly simplifies BioShapeCollection subclasses # ----------------------------------------------------------------------------- #version=11.1.41 # bug fix for load with explicit spacegroup not respecting normalization choice # bug fix for symop=nijk selecting base atoms when not appropriate # bug fix for select specialposition non-functional # bug fix for adding atoms but mads[] going stale # slight redefinition of "special position" # bug fix for structure loss on load append. (structure is supposed to be recalculated). # adds language switching for Open / Save dialog boxes and full menuing system in Jmol application # adds "structure" command -- structure [helix|sheet|turn|none] (atom expression) # adds "save/restore structure" command # ----------------------------------------------------------------------------- #version=11.1.40 # bug fix for backgroundModel and save state # bug fix for load append with spacegroups causing atoms to be repositioned # bug fix for anim playrev in loop mode causing animation to stall # ----------------------------------------------------------------------------- #version=11.1.39 # several bug fixes: # # bug fix for mo data misreading in smol files # bug fix for lcaoCartoon "s" giving incomplete spheres # bug fix for select symop=3555 not giving proper atoms when load "" {444 666 0} # bug fix for PDB files not supplying information about residues for the popup menu. # bug fix in frame range 1.0 when file 1 has only one model. # ----------------------------------------------------------------------------- #version=11.1.38 # bug fix for opaque triangles missing one pixel on right side when translucent objects are present. # bug fix for label alignments sometimes not being saved properly in the state # bug fix for animFrameCallback giving multiple callbacks -- still there, but identified now # in terms of whether animation is on or not in the 7th parameter being 1 or 0: # # function animFrameCallback(app,frame,fileno,modelno,firstno,lastno,isRunning){...} # ----------------------------------------------------------------------------- #version=11.1.37 # fixes bugs in draw and unicode label state definitions # adds simplistic to text, including echo, label, hover, etc. # fixes popup menu to better deal with multiple file context # update of Turkish translation # ----------------------------------------------------------------------------- #version=11.1.36 # build: renames applet files JmolApplet0*.jar and JmolAppletSigned0*.jar # # bug fixes for isosurface in multi-file environment # # bug fix and additional work in relation to translations # # zoomTo (atom expression) 0 # # with options # # zoomTo (atom expression) 0+n # zoomTo (atom expression) 0-n # zoomTo (atom expression) 0*n # zoomTo (atom expression) 0/n # # also # # moveTo timeSec {x y z w} (atom expression) 0 [zoom factor] # and # moveTo timeSec {x y z w} 0 transX transY (atom expression) 0 [zoom factor] # # where [zoom factor] is x, where x > 0 # or # [0] [[+ | - | * | /] x] # # # app fix for Edit...preferences not properly refreshing for axes and boundbox # ----------------------------------------------------------------------------- #version=11.1.35 # fix for x = {...}.resno and {...}.groupID # fix for select resno=-1 # first version of pt_BR translation # ----------------------------------------------------------------------------- #version=11.1.34 # language submenu # ----------------------------------------------------------------------------- #version=11.1.33 # bug fixes -- draw state, menu not updating, language submenu # ----------------------------------------------------------------------------- #version=11.1.32 # adds capability to define a property for selected atoms: # # select xxx # property_x = n.m # ----------------------------------------------------------------------------- #version=11.1.31 # adds capability to read data from selected fields (white-space delimited columns) in a file # # propertyDataField = 0 # no fields -- just read tokens # propertyDataField = 2 # data are in field 2 (second from the left) # propertyAtomNumberField = 1 # data must match atomNo in field 1 and will be in # the field specified by propertyDataField # ----------------------------------------------------------------------------- #version=11.1.30 # full support for switching languages, including a new "language" menu item # # Jmol.js: # # jmolSetCallback("language", "de") # # Jmol scripting: # # language = "de" # # Menu: # # new language submenu with checkboxes. # # allows for efficient specific file reader options for the applet (particularly) # # adds _spinning variable # # adds LOAD xxx::myfile xxx indicating file type xyz, mol, etc. # # not important generally. # # adds PQR reader option, at least for PDB2PQR generated output # # better spin control during zoomTo and moveTo # spinning now detects that a zoomTo or moveTo operation is occurring # or the user is manipulating the model with the mouse, and pauses 1 second # for that operation to complete before resuming spinning # # hover now is turned off during spinning or user manipulation of the model # # zoomTo and moveTo the same location changed to no time delay # ----------------------------------------------------------------------------- #version=11.1.29 # code: totally reorganized isosurface code; new org/jmol/jvxl packages # # adds (1) isosurface functionxy "file:data.dat" ... # adds (2) isosurface functionxy "functionName" {x0 y0 z0} {-ni ...} ... # adds (3) isosurface functionxy "functionName" {x0 y0 z0} {-ni ...}{-nj ...} ... # # (1) "file:" allows reading of xy data from files for graphing f(x,y) # (2) ni<0 indicates JavaScript functionName will return a single string that # should be parsed for numeric data. # (3) ni<0, nj<0 indicates that JavaScript will fill the fourth parameter # of the function with an array of f[nX][nY] data values: # # Jmol: # # isosurface s1 functionXY "xyData" {-2 -2 -2} {21 0.1 0 0} {21 0 0.1 0} {21 0 0 0.1} # # JavaScript: (slow) # # function xyData(app, x, y) { # return func(x, y) # } # # Jmol: # # isosurface s2 functionXY "xyDataAsString" {-2 -2 -2} {-21 0.1 0 0} {21 0 0.1 0} {21 0 0 0.1} # # JavaScript: (much faster) # # function xyDataAsString(app, nX, nY) { # var s # for (var i = 0; i < nX; i++) # for (var j = 0; j < nY; j++) # s += "x_"+i+"\ty_"+j+"\t"+func(i,j)+"\n" # # //non-numeric formatting allowed but not necessary # # return s # } # # Jmol: # # isosurface s3 functionXY "xyDataAsArray" {-2 -2 -2} {-21 0.1 0 0} {-21 0 0.1 0} {21 0 0 0.1} # # JavaScript: (very fast) # # function xyDataAsArray(app, nX, nY, fxy) { # for (var i = 0; i < nX; i++) # for (var j = 0; j < nY; j++) # fxy[i][j] = func(i,j) # } # # (2) and (3) are very fast; (1) is the original method, but it is slow. # # MAYSCRIPT expanded # # for the Wiki or any application where absolutely no JavaScript # is to be allowed, simply remove the MAYSCRIPT parameter, which # now covers all aspects of JavaScript interaction from within Jmol # # # adds applySymmetryToBonds (default: FALSE) # # applySymmetryToBonds # # When set TRUE, this flag instructs Jmol when applying symmetry # to atoms, as in "load xxx.cif {1 1 1}", to also apply symmetry # to the bonds indicated in the file. The flag is useful when # normal Jmol autobonding would not properly connect atoms, but # the model is "molecular" -- the base atom coordinates are correct # for whole molecules. The flag should NOT be used in cases where # the application of symmetry operations creates new bonds that # were not present in the original set, as for quartz.cif, where # there is only one bond initially, and after applying symmetry # new bonds are created that are between atoms that were created # using two different symmetry operations. # # adds isosurface HOMO/LUMO [+/- n] # # better isosurface plane rendering, especially in regard to meshes # bug fix in isosurface contour -n going WAY back to before 10.9.60 # refactoring of all isosurface-related classes # support for Spartan MO HOMO # # adds isosurface POCKET [cavity] sasurface # adds isosurface INTERIOR [cavity] sasurface # # adds load TRAJECTORY -- for a single file with multiple models all with # the same number of atoms. Atom locations can also be updated on the # fly using the data statement. # # adds TRAJECTORY n command -- like FRAME or MODEL, but never more # than one model at a time displayed, because there is only one set # of atoms. # # adds script: option for callbacks set from within Jmol. That is, callbacks # can either be to host page JavaScript functions or to Jmol scripts. This # will allow interactive sessions without external JavaScript. # # set pickcallback "script: script doCallback.spt" # # adds resizeCallback because certain positioning of echos and sizing of the # structure may require method intervention after the resizing # # adds translucency for echo and hover, both text and backgrounds # # adds echo script to defined state # # adds hourglass cursor during MO/Isosurface operations # # fixes inoperative "set pickingstyle measures on" # ----------------------------------------------------------------------------- #version=11.1.28 # adds # # a = script("some script command") # a = javascript("some javascript") # # putting output into a from commands such as "show" or "getProperty", for instance. # # reinstates tempManager properly. # # adds support for CAChe CSF files with MOPAC (AM1, PM3, etc.), # Density Functional, and Extended Huckel Gaussian/Slater-based molecular orbitals. # # CHANGES DEFAULT RENDERING FOR MOLECULAR ORBITALS TO: MESH NOFILL FRONTONLY # # adds MOPAC 2007 graphf output reader (gpt2 files, MOPAC molecular orbitals) # based on the VERY latest version (not released yet), which includes # "MOPAC-Graphical data" on the first line, character index 6. # # adds # # mo HOMO [+/- n] # mo LUMO [+/- n] # # fixes bugs found by FindBugs: # # labels: default z setting for labels (set labelFront, set labelGroup, set labelAtom) # was not being recorded properly # move: with slab or zoom was doing integer math # GhemicalMMReader -- was incorrectly assigning aromatic to bond type 4 via fall-through of switch # # adds xodydata reading of "boundary" as unitcell # enhances default axis rendering for axes unitcell # # adds expanded isosurface-related commands: # # draw list # isosurface list # lcaocartoon list # (mo list) -- not particularly useful # pmesh list # # Listing gives id, number of vertices, number of polygons, visibility, # and title (usually the command that was given that created this isosurface) # # CHANGED BEHAVIOR FOR ISOSURFACE COMMAND WITHOUT ID INDICATED: # # Now if no ID is indicated, the previous ID is used for all commands # EXCEPT "isosurface delete", which deletes all isosurfaces. # # This is a change from Jmol 10.2 and 11.0, where if you leave # off the ID, a new isosurface is created. # # This was a needed change to prevent unwanted multiple isosurfaces. # # CHANGED BEHAVIOR FOR ISOSURFACE DEFAULT COLOR # # The default isosurface color no longer changes shade among 5 possible shades. # That was necessary only because it was easy to mistakenly make multiple # isosurfaces that otherwise would look the same. # ----------------------------------------------------------------------------- #version=11.1.27 # fixes two state bugs: # 1) dots/geosurface not being saved properly in state # 2) animation parameters not being saved properly in state # ----------------------------------------------------------------------------- #version=11.1.26 # fixes two nasty bugs relating to isosurfaces and JVXL files. # -- JVXL files created from molecular orbitals will show up with no color # in 11.1.0 - 11.1.25 because of a missing number in the definition line :( # -- JVXL files created from molecular orbitals will show unwanted cross-over # surfaces from + to -. # ----------------------------------------------------------------------------- #version=11.1.25 # --fully dissociates geosurface from dots; # --allows coloring and transparency of geosurface # similarly to the way stars are colored # ----------------------------------------------------------------------------- #version=11.1.24 # refactored Geodesic3D, Dots, DotsRenderer # independent dots/geosurface # # isosurface CAVITY # ----------------------------------------------------------------------------- #version=11.1.23 # fixes a number of bugs, some critical # # adds isosurface CAVITY x.xx -- a new way to depict the cavities of # a molecule in terms of color. # ----------------------------------------------------------------------------- #version=11.1.21/22 # adds # # load file "=xxxx" and set loadFormat "http://....../%FILE..... # load files ..... # just a cleaner version of loading multiple files. # load append ..... # APPENDS the file(s) or model(s) as new frames onto the current set. # data append ..... # same thing, but inline # # isosurface MODEL n # pmesh MODEL n # isosurface within x.x (what) # # Introduces "real" color translucency # # color xxxx translucent N # # where N is -1 to 9. # # OR OR # translucent -1 same as Jmol 10.2 # translucent 0.0 opaque # through # translucent 1.0 transparent (invisible) # # translucent 2 0.125 32 1/8 translucency (slightly translucent) # translucent 3 0.25 64 2/8 translucency # translucent 4 0.375 96 3/8 translucency # translucent 5 0.5 128 4/8 translucency (default) # translucent 6 0.625 160 5/8 translucency # translucent 7 0.75 192 6/8 translucency # translucent 8 0.825 224 7/8 translucency (very sheer) # translucent 9 1.00 255 8/8 transparent (invisible) # ----------------------------------------------------------------------------- #version=11.1.20 # cleans up axes/boundbox/unitcell business # # allows for individually colored axes: # # color axis1 ... # color axis2 ... # color axis3 ... # color axes ... (of course) # # and these objects are considered more like background -- # colors and sizes persist past file load # # to turn on and off without messing with size, just use # # showAxes = true # showBoundBox = true # # etc. # ----------------------------------------------------------------------------- #version=11.1.19 # allows comparison of user-defined atom properties in SELECT: # # select property_myprop < 1e-5; # # and # # x = {carbon}[5].property_test # x = {carbon}.property_test.min # x = {carbon}.property_test.max # # etc. # # This is it! :) # ----------------------------------------------------------------------------- #version=11.1.18 # introduces user-definable atom properties that can be used # to color isosurfaces: # # x = load("file.dat"); # isosurface variable x # simple 100% vdw radius mapping # # select 1.3 # data "property_myprop @x" # isosurface property_myprop # # allows isosurface mapping of general atom properties: # # isosurface sasurface colorscheme bwr map property temperature # # adds "bwr" colorscheme as opposed to "rwb", which I think is backward. # # isosurface -- now supports APBS ( ) # molecular electrostatic potential output files # # write -- modified to allow unquoted filename in # write isosurface file.name # # jvxl 1.0 -- adds ANGSTROMS flag on line with # of atoms (line 3) # ----------------------------------------------------------------------------- #version=11.1.17 # deprecation of SET # ------------------ # # The "SET" command is no longer necessary. Anything that could have # been set using "SET x .... " can now be set using # # x = .... # # This allows for a much cleaner interface because we simply make # settings in a normal sort of way: # # axes on # axes = molecular # # measures = angstroms # # It will take a bit more to make it all consistent, but the idea # is that there are then some special reserved variables that # mean something special when set, like "bondmode" # # This build allows for the applet to be "bare-bones" -- only the # essential classes included in the Jar file; others never included # or possibly in accompanying jar files, such as, perhaps, JmolPopupMenu.jar, # JmolNavigation.jar, JmolBio.jar, Jm olSurface.jar, JmolXtal.jar, etc. # # Then a developer can slim down the download. The minimum is 697K, # about 58% of the full package. All that gets you is atoms, bonds, # and measures. # ----------------------------------------------------------------------------- #version=11.1.16: # First incompatibility found: # # set echo myecho (atomno=3) or (atomno=5) # 1) adds two new modifiers: # .min # .max # # as in: # # x = {*}.bonds.length.max #the longest bond length # x = {*}.atoms.max #the last atom # # 2) extends find() to sets of lines. For example: # # longLine={*}.bonds.label("%=, %LENGTH").lines.find({*}.bonds.length.max) # message @longLine # longest = longLine%(longLine.find(",")-1) # b = {*}.bonds[longest] # select b_set;color bonds yellow # # NOTE: _set removed in 11.3.41: # select @b;color bonds yellow # # ----------------------------------------------------------------------------- #version=11.1.15: # APPLICATION: adds undo/redo to a fixed depth of 50 commands # # TYPE CONVERSION # # We have eight different variable types now: # boolean True/False # integer 0, 1, 2, .... # decimal 3.5, 3.25E-3 # string "test" "3.5" # point {2.3 3.4 5.6} {0 1/2 1} # plane {0 1 1 0} # atomset {oxygen} # bondset {oxygen}.bonds # plane and bondset are new; arithmetic operations are not fully developed. # These can be mixed and matched to good effect. Certain relatively # intuitive rules apply. Usually the operand on the left sets # the overall type, allowing for easy type conversion depending upon # operand order: # int + float: # 0 + 3.6 ==> 3 (int on left rounds float on right) # 3.6 + 0 ==> 3.6 (float on left sets result) # # int/float + string: # 0.0 + "3.5" ==> 3.5 (string converted to float) # 0 + "3.5" ==> 3 (string converted to float, then int) # "3.5" + 0 ==> "3.50" (integer converted to string) # "3.5" + 0.0 ==> "3.50.0" (float converted to string) # # 1.0 + {carbon}.xyz ==> 1 + distance from {0 0 0} to {carbon} center # {carbon}.xyz + 1 ==> {carbon} center point offset by {1 1 1} # # x = {carbon}.xyz * {1 0 0} ==> (dot product) # # Now x is the average x coordinate of carbon # # Boolean expressions are a bit different in that the operators # AND, OR, XOR, and NOT all require conversion to boolean UNLESS both # operands are atom expressions, in which case these operate directly on the # atom sets and return a new atom set, just like in SELECT. # # 3 and 0.5 ==> TRUE (both are nonzero) # false OR 2.0 ==> true (2.0 is not 0, so it is TRUE) # {oxygen} and {molecule=1} ==> all oxygen atoms in the first molecule # # x = ({oxygen} and {molecule=1}).xyz # # x is now the center point of all oxygen atoms in the first molecule # # In standard math, boolean TRUE evaluates to 1.0; FALSE evaluates to 0.0 # # true + 2.0 ==> 3.0 ("TRUE" evaluates to 1.0 in math operations) # 2 + true ==> 3 ("TRUE" evaluates to 1.0 and is then turned into an integer) # # # ATOM EXPRESSION AUTOMATIC DEFINE # # When you set a variable to a value, and that value is a point, plane, or atom expression, # then Jmol automatically registers the result as follows: # # points: # x = "{x y z}" # # planes: # x = "{x y z w}" # # atom expressions: # x = n # x_set = "({i j k ...})" # # NOTE: "set x" removed in 11.3.40: # NOTE: _set removed in 11.3.41: # # x = {oxygen}.xyz # y = {carbon}.xyz # draw @x # draw @y # draw line1 @x @y # # and # # x = {carbon}[3][5] # select @x # color green # x = {carbon}[3][5] # select @x # color green # # x = {carbon or oxygen}.bonds # select BONDS @x # color bonds green # # DATA() function and variable option for DATA command # # x = data({atomno < 10},"xyz") # x = data({atomno < 10},"mol") # x = data({atomno < 10},"pdb") # # data "model @x" # # write data t.xyz # write data t.mol # write data t.pdb # # # Better BITSET implementation # # CHANGE: default string value for a bitset is now the ({n:m}) # string format, which can be used in numerous commands. # # To get the count within a string context, just use .size: # # x = "number selected is " + {selected}.size # # or force integer math: # # x = "number selected is " + (0 + {selected}) # # merges math functions within(), connected(), substructure() into molecular math # # adds connected() both for finding atoms and for identifying bonds: # xAtoms = connected(3, {carbon}) # xBonds = connected(1.3,2.5,"single", {carbon} {oxygen}) # # adds # x.atoms # to go along with x.bonds # # adds distance({carbon},{oxygen}) # adds angle({carbon}[4],{oxygen}[3], {nitrogen}[2]) # # angle function accepts from three or four # atom expressions or XYZ coordinates and returns a decimal number for # the distance, angle, or dihedral relating these points. # When more than one atom is involved, average positions are used. # # Note that when more than one atom is involved in a set, # the following are different: # # x1 = {molecule=1}.distance{molecule=2} # x2 = {molecule=1}.xyz - {molecule=2}.xyz # # x1 is a NUMBER that is the "average distance measured # from each molecule 1 atom to the average molecule 2 position" # x2 is a point representing the VECTOR from the "average position of molecule 2" # to the "average position of molecule 1" # # The following are all equivalent: # # x3 = {molecule=1}.xyz.distance{molecule=2} # x4 = 0.0 + ({molecule=1}.xyz - {molecule=2}.xyz) # x5 = ({molecule=1}.xyz - {molecule=2}.xyz).distance{0 0 0} # x6 = distance({molecule=1} {molecule=2}) # # They are all the distance from the center of molecule 1 # to the center of molecule 2 # # # x = load("filename") # # The string data in the file are loaded into the string. # If the file does not exist, then the string contains the error message. # # # Implements ({i j:k m n}) bitset option across all commands # # RESET varName # # reset varName # clears that variable definition # # # "UNSPECIFIED" and "QUADRUPLE" BOND TYPES # # An additional bond type is now avaiable: "UNSPECIFIED". # This shows up in the MOL2 reader and may be selected for and modified using, for example: # # select connected(unspecified) # color bonds red # # or # # select connected(unspecified) # connect (selected) single modify # # In addition, we now can depict quadruple bonds. # ----------------------------------------------------------------------------- #version=11.1.14: # DYNAMIC MEASUREMENTS # # Now that we can move atoms so easily, we don't want those measurements getting stale. # # set dynamicMeasurements # # allows measurements to be recalculated on the fly. # # # MEASUREMENT FORMAT STRINGS # # Measurement format strings can be set using # # measure "format string..." # # where the format string may have the following keys: # # %= 1-based index # %VALUE the value of the measurement # %UNITS the units for the measurement # %x1 atom property "x" for atom 1 # %x2 atom property "x" for atom 2 # %x3 atom property "x" for atom 3 # %x4 atom property "x" for atom 4 # # for example: # # measure "%a1 -- %VALUE %UNITS --- %a2" # # # MATH OPERATOR PRECEDENCE AND PARENTHESES # # Jmol 11.1.14 supports full standard operator precedence and parentheses # in IF, SET, and %{} expressions # # degUnsat = ({carbon} * 2 + {nitrogen} + 2 - {hydrogen}) / 2 # # # BRACES INDICATE ATOM EXPRESSIONS # # Use {} in IF, SET and %{} for designating atom expressions. # We are still using () for "embedded expressions" in all other commands. # # nOxygen = {oxygen} # xOxygen = {oxygen}.x # ptOxygen = {oxygen.xyz} # # a = {oxygen}.temperature # message %{{carbon}.x} # if {O22}.bondCount > 2;goto ... # # but # # draw line1 (atomno=2) (atomno=3) # # # ATOM EXPRESSION ITEM SELECTOR [n] # # In SET, IF, and %{ } in MESSAGE and ECHO you can now specify a subset of the # atom expression. # # x = {carbon}[3] # the third carbon atom # x = {carbon}[3][5] # the third through fifth carbon atoms # x = {carbon}[3][0] # the third through last carbon atoms # # This also works in standard select expressions, but using () instead: # # select (carbon)[3] # the third carbon atom # # and anywhere an embedded expression might be found: # # measure ((_C)[1]) ((_C)[2]) # # # POINTS IN IF, SET, and %{} # # Points in IF, SET, and %{} can be designated using the standard {x y z} # notation WITHOUT commas. This is because we have to distinguish between # atom expressions {1,2,3} and coordinates {x y z}, and this seems to me the # simplest way to do it. (Comma means "or" in atom expressions.) In all other # instances, the commas are fine, including "SET UNITCELL" and "SET DEFAULTLATTICE". # # x = {1 1 0} + {oxygen}.xyz # # { }.distance ATOM PROPERTY FOR SET, IF, and %{} # # d = {oxygen and * /1}.distance{oxygen and * /2} # set echo top left # echo the O-O distance is %{{oxygen and * /1}.distance{oxygen and * /2}} # # message %{{atomno=3}.distance{atomno=4}} # message %{{atomno=3}.distance{1/2 1/2 1/2}} # # # { }.label "xxxx" ATOM PROPERTY FOR IF, SET, and %{} # # The .label format provides a convenient means of delivering a wide range of # atom-based data back to the user with whatever formatting is desired. # # x2 = {atomno=3).label("atom %a\t" + (atomno=3).xyz) # xyzFile = "" + {selected}.size + "\n\n" + {selected}.label("%a %x %y %z") # # # "....".lines # # The .lines operator splits a string into an array based on line termination. # # WRITE VAR "filename" (application only) # # pdbAtomData = {selected and not hetero}.label("ATOM %5i %-4a%1A%3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e%2C") # pdbHeteroData = {selected and hetero}.label("HETATM%5i %-4a%1A%3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e%2C") # pdbFile = pdbAtomData + pdbHeteroData # write VAR pdbFile "test.pdb" # # molFileData = "line1\nline2\nline3\n"+(""+{selected}.size)%-3+(""+{selected}.bonds.size)%-3+" 0 0 0\n"+{selected}.labels("%-10.4x%-10.4y%-10.4z %2e 0 0 0 0 0")+{selected}.bonds.labels("%3D1%3D2%3ORDER 0 0 0") # # # GETPROPERTY "evaluate" # # You can now use getProperty to get expression information directly: # # getproperty "evaluate" "{*}.xyz" # # or on a web page the following returns a valid XYZ file for molecule 1: # # var info = jmolGetPropertyAsJavaObject("evaluate", '"" + {molecule=1} + "\n\n" + {molecule=1}.label("%a %x %y %z")') # # # SELECTED ATOMS FROM ATOM EXPRESSIONS # # You can select atoms from an atom expression using [n]. # "[0]" means "and everything after". # # x = {atom expression}[3].ident # x = {atom expression}[3][0].xyz # 3 and after (average position) # x = {atom expression}[3][5].x # 3-5 (average x) # # # SELECTED BONDS FROM EXPRESSIONS # # You can select bonds from an atom expression # # x = {atom expression}.bonds.ident # x = {atom expression}.bonds[3].ident # # # BOND INFORMATION # # You can specify how to label a set of bonds using format strings. # Numbers are currently in Angstroms. Keys are # # %# sequential number # %= file 1-based index # %ORDER the bond order # %TYPE the bond type # %LENGTH the bond length # %x1 atom property "x" for atom 1 # %x2 atom property "x" for atom 2 # # The special atom properties %D1 and %D2 give sequential numbers for the # atoms FOR THIS SET OF BONDS. This is so that a proper subfile of type MOL # could be generated. # # x = {atom expression}.bonds[3].label("%# %3ORDER %TYPE %a1 %a2 %6.3LENGTH") # # # EXPANDED MODULUS % OPERATOR IN IF, SET, AND %{} # # Usually modulus is reserved for integer math, so we # extend that here to add some useful "modulus-like" capability: # # string modulus for trimming and padding # "test" %3 ==> left trim: "tes" # "test" %6 ==> right pad: "test " # "test" %-3 ==> right trim: "est" # "test" %-6 ==> left pad: " test" # # float modulus for rounding and scientific notation # 3.5456 %3 ==> "3.546" (STRING!) # 3545.6 %-3 ==> "3.55E+3" (STRING!) # # 0.0 + 3.5456 %3 ==> 3.546 (float) # 0.0 + 3545.6 %-3 ==> 3550.0 # # point modulus for getting base unit cell equivalent position # {3/2 1/2 1/1} % 0 ==> {1/2 1/2 0} # ----------------------------------------------------------------------------- #version=11.1.13: # DATA "coord set" # invertSelected POINT .... # invertSelected PLANE .... # invertSelected HKL ...... # rotateSelected .... # rotateSelected spin .... # full state support for "tainting" atom positions using translateSelected or invertSelected # # set allowRotateSelected # then use ALT-LEFT for rotating just the selected molecule # # this all definitely needs some work and discussion in terms of user interface via mouse # # # write coords xxxx.spt # load xxxx.spt # minimal -- just coord. # script xxxx.spt # this is the full state load # # x = (some atom expression).atomProperty -- takes an average if more than one atom # for example: # # x = (* /1).temperature # x = (C5).bondcount # # note that you can even say: # set echo top left # echo average position= {%{(selected).x},%{(selected).y},%{(selected).z}} # # and it will AUTOMATICALLY update with new values as you select different atoms. # ----------------------------------------------------------------------------- #version=11.1.12: # app fix for console entry messing up cursor position; # allows for scripting during pause or interrupt of running script using ! as first character of script # new: within(x.x,plane,$plane1) # fix for "draw off" not recorded in save state # fix for within(integer,...) bug using RasMol units # fix for _modelnumber showing up as 2001 # reconfigures _modelNumber as x.y for single models; x.x - y.y for range # adds _currentFileNumber # adds _currentModelNumberInFile # disallows user setting of variables with _ as first character # adds @variableName in any command # adds frame x.x - y.y # adds frame 0.0 # adds frame range x.x - y.y # adds file command # adds select file= # tunes select model=