VMD 1.7 Development Status

  • VMD 1.7 AIX and MacOS X distribution corrections (8/7/2001)
    • Updated the MacOS X distribution VMD startup file to avoid a potential problem with missing "VMDDIR" environment variables.
    • Fixed a problem with mismatched Tcl8.3 support scripts in the AIX distribution.
    • Fixed an out-of-date build script for the AIX version which caused Tachyon not to be packaged, and caused mismatched Tcl scripts to get put into the distribution files for AIX.
  • VMD 1.7 Released (8/1/2001)
    • Updated Windows installer files with new release notes, etc.
    • Cranked version numbers to 1.7.
    • Fixed missing NULL as last argument to Tcl_AppendResult; error messages in transvec and transvecinv would cause VMD to crash.
    • Significant updates to the VMD benchmark scripts.
    • Ramaplot now correctly deletes highlights when you change molecules.
    • Fixed bug pointed out by Sergei in lines rendering; the acceleration data structure used by draw_lines was not being updated properly when atoms were moved with the mouse.
    • Now monospaced font width is specified in pixels, looks good on all platforms. (Tried Solaris, Windows, SGI Irix)
    • Hides 'w' in namespace, fonts monospaced. Fonts look good in solaris and windows, Fonts are still a bit off, but mostly usable, in IRIX). Put back menu option for Ramaplot.
    • Check for tk before starting sequence (zoomseq) tk window.
    • Fixed ramaplot to work with different Tk 8.3 binding semantics; the "%W" field in the callback is now the actual widget, rather than its parent window.
    • Added new BioCoRE bootstrap code to vmdinit.tcl, and added new biocore script to the vmd scripts area. When the BIOCORE_URL environment variable is set, VMD will attempt to download and run a script from the server.
    • Updated Tru64 Alpha builds to use Python 2.0.1 and Tcl 8.3 (fixed a linking mismatch)
  • VMD 1.7 Beta 2 (7/25/2001)
    • Added more example molecules (dna, bpti).
    • Updated graphics drawing docs to remove nonsense comments about old bugs that have long since been fixed.
    • Added support for building VMD to work with Stanford's WireGL library. Instead of using glPushAttrib and glPopAttrib which are not supported by WireGL, we now use explicit OpenGL calls to save and restore line drawing state. It might even be a better way of doing things, since it is only saving and restoring two items of state, rather than all state.
    • Disabled Tru64 Python builds until we resolve some problems with interlinkage of Tcl and Python for the tkInter interface.
    • configure script: Made a second version of the makefile lines routine just for the lists of files, in order to make the resulting makefile less prone to problems with wimpy versions of 'vi' that can't handle really long lines. Should still easily avoid the SGI makefile problems we had in the past.
    • Fixed include ordering problems so that Python code will compile on Compaq's Tru64 Unix.
    • Eliminated use of -defaultextension in tk_getSaveFile in ramaplot and zoomseq. This option adds the default extension to every file, invisibly to the user, which is not what anyone would be expecting.
    • Fixed some not-nice behavior of tk_SaveFile stemming from the use of the -defaultextension flag.
    • Fixed a typo in an error message log.
    • Added a vmd_choose_file function to VMDApp. The function uses the Tk file chooser when available, otherwise it drops back to Fltk and then stdin. Had to edit the FilesFormsObj file extension masks since the Tk file chooser apparently doesn't do regular expressions.
    • modified HPUX11 configuration to avoid adding /usr/include to the include path since this can cause problems in some cases.
    • Disabled Python while we upgrade to Tcl 8.3.x first, we'll re-enable as soon as Tcl is upgraded.
    • Major overhaul of ramaplot. Now handles molecule deletions correctly; properly ignores Graphics molecules; disables the molecule pulldown menu when no molecules are available; prints molecule name info in the pulldown menu and on the title; handles other boundary cases more robustly. A general cleanup that eliminated replicated code within the script was nice as well.
    • PR 160: Fixed long-broken 'all' atom selection keyword. Singleword functions should 'and' their flags, not 'or' them.
    • Documentation updates
    • Fixed zoomseq bugs related to reps/deletions ('catch' had caught, but still printed error messages), now checks mol's exisistence and #reps more careully, so doesn't look for nonexistent info/array members.
  • VMD 1.7 Beta 1 (7/10/2001)
    • Minor width changes to canvas. (8 more pixels text width, 2 more pixels at right margin). Still must check with Windows fonts (and choose proper fonts).
    • Zoomseq; Added Pi-Helix (the red 'I' strip) to the secondary structure column, and the sec. struct. abbrev. table in Help. Widened columns by 5 pixels, to 85, to fit this.
    • Updated Tk installation.
    • Autoloading the RMSD widgets with vmdrmsd isn't entirely satisfactory because the scripts doesn't actually define a proc by that name. We could define a dummy proc, but then autoloading would work only once. The right thing to do is to put the rmsd code inside a proc, but for now we define a proc in vmdinit which simply resources the rmsd scripts every time.
    • Zoomseq Bug fixes. handles rep. deletion. Some slowed functions, likely from debugging.
    • Fixed typo in updateMolecules, in ramaplot.
    • The save_state script now queries the user for a filename when no filename option is given, using the Tk tk_getSaveFile widget when available. The Save Config button on the mouse form now lets the script get the filename for itself, rather than getting the filename from FLTK's get_file widget, because on Windows the Tk widget handles different drive letters and is more native-like.
    • Eliminated unused method with nasty static variable.
    • Eliminated silly static variable.
    • Moved stride_firsttime from static flag in DrawMolecule to per-instance flag in VMDApp.
    • Replaced static nextMolID counter in BaseMolecule with a per-instance counter in VMDApp.
    • Zoomseq: Fixed alignment of highlight, text, and databoxes (had scaling, older problems) Fixed bugs, including behavior when canvas is blank. Still must: change menu options, deal with rep deletion.
    • Added documentation for the "frame" atom selection method.
    • Win32; Updated startup, renamed tk subdirectory for cleaner startup behavior.
    • PR 162: Fixed a memory leak in the atom selection code (things like "x < 10").
    • PR 161: eliminated old Win32 startup paths, added explicit Tk startup path so that the optionMenu stuff works for ramaplot.
    • eliminated old tracker directory info from startup script.
    • Sequence viewer now waits until sequence window is showing to get data. (so doesn't call STRIDE until needed for display) Still needs rep management, and has odd scaling problems with selection range. Rep style is changeable, but resets at molecule change. Some bugs still left.
    • Source zoomseq.tcl (draws window, but in withdrawn state)
    • Added a "menu tk remove" command, for completeness.
    • The counters for selecting frames in the Edit form now range from 0 to the number of frames for the molecule, looping back to 0 or (numframes-1) when the counters hit the end of the valid range. The Skip counter was renamed "Step", and its range was limited to 1 or higher; "Skip" was potentially confusing, as was the ability to enter -1 or 0 for this parameter.
    • PR 163: Fixed broken animate read command; it was reading files start from the first frame regardless of settings.
    • PR 164: DrawMolecule now checks to see if a timestep is available before trying to calculate secondary structure. Fixes a bug that caused VMD to crash if secondary structure was requested through an atom selection when no coordinates were loaded.
    • Biocore code revised to work with new versions of the pub/sync interface.
    • PR 165: The tracker code now searches for .vmdsensors files correctly on the Windows platform.
    • Sped up sequence viewer significantly. Now uses tags and "scale" to stretch data/highlight rectangles, no redrawing, so spends 0.007 seconds or less with rectangles.
    • Zoomseq; Removed the Y,Z test fields (so window is narrower). Now doesn't draw any rep at startup, nor on window opo or mo change. Selection remains if withdraw window, the 'clear' method is: reselect the current mol in popup (perhaps should also add clear button)
    • Made VMD Tk windows remember their placement when turned off.
    • VMD is now built using VRPN 6.00
    • Replaced linear search in the residue lookup table with a Tcl array.
    • Fixed bug in which deleting a rep didn't cause a screen redraw by making Displayable::remove_child set _needUpdate to 1. Also added a hack to make deleting a molecule force a screen redraw as well; we need this hack because molecules have no parent so there is no one to notify when they are deleted. This suggests that we should perhaps have a top level Displayable at the root of the tree.
    • Renamed 'zoomseq' menu to 'sequence' menu, and eliminated ZoomSeqEvent.
    • MainFormsObj, Oops - put the "return TRUE" in the wrong place.
    • MainFormsObj now handles all of its lightbuttons for itself, rather than have the other FormsObj classes do it. The Sequence menu's lightbutton works now.
    • ZoomSeq Handles deletions of zoomseq molecule by displaying for the new top (if there is one) or clearing the canvas.
    • Fix for pdbload problems, found two other mol load bugs as well.
    • Oops. Forget to check argc before reading argv[1].
    • fixed a problem with multiple declaration of "i" loop variable. HP compilers treat declarations like this: for (int i=0...) the same as: int i; for (i=0;..) with the variable i in the parent scope rather than only in the for loop scope. Also rearranged some stuff to make the code easier to read.
    • Added docs on the measure command.
    • Changed "menu tk create" to "menu tk add"; the misnomer was potentially confusing. Also made the bindings in vmd_tkmenu_cb append to existing callbacks, rather than replacing them.
    • Added bindings to Map and Unmap for VMDTkMenu's so that minimizing windows notifies VMD of the event.
    • Added VMDTkMenu and associated commands, which allows a Tk widget to integrate with the rest of VMD's GUI. Once registered, the Tk widget behaves just like an FLTK widget with respect to menu commands.
    • Eliminated XForms support in VMD, we're now married to FLTK.
    • Factored the generic menu methods out of FormsObj into a new abstract class, VMDMenu. FormsObj now contains just FLTK-specific stuff, and we can subclass VMDMenu to handle things like Tk menus (e.g. Zoomseq).
    • Moved the userKeys NameList to VMDApp and made it per-instance rather than static.
    • Put documentation for the Tcl atomselect command and for atom selection objects in the Tcl Text Interface chapter. The later molecular analysis chapter now just contains examples and more advanced scripting.
    • Fixed a bug with the VMDtitle not disappearing properly. It has to be deleted _after_ a molecule is loaded, but _before_ we render again; otherwise its needUpdate flag is never seen.
    • Made future plans a section in the intro chapter rather than a chapter unto itself.
    • Moved the coloring scripts into the molecular analysis section.
    • Moved the IMD documentation into the section on the Sim form.
    • Added index entries to Python section.
    • Updates to the text interface documentation.
    • Updated Win32 installer to create registry key values for VMD install directory.
    • Updated Win32 startup code to use registry keys for finding the VMD installation directory, instead of the argv[0] explorer shell hack we had been using in the past. This allows users to start VMD from the command line with "start vmd" and such.
    • Added new -webhelper startup option for Unix versions of VMD, to allow it to be used as a web helper for netscape etc, without necessarily using the "Chemical2vmd" script. This is just a nice way of allowing PDB files and VMD scripts to work with very little user effort.
    • Moved atom_[short|full]_name methods from BaseMolecule to GeometryMol, and got rid of the static buffer.
    • Got rid of static variables in DrawMolItem.C.
    • Replaced the static Displayable::_needUpdate flag with a local flag, which is ORed with its child displayables and returned.
    • Eliminated singleton access from VMDApp. Yay.
    • Cave and FreeVR now use a set of static pointers to the display device and scene; these are set by a global function called by VMDApp.
    • Added spaceball support to HPUX builds
    • VMD startup for IRIX now uses xterms instead of winterms, and no longer needs a special font.
    • Fixed comments for the python pick_atom callback to reflect addition of shift_state item. This shouldn't break too much existing code since the additional tuple item was added at the end.
    • Eliminated source of problems with the SGI make utility. The perl code that generates the makefiles no longer attempts to make them "pretty" by splitting long lists of files onto separate lines using the "\" character followed by carriage returns and tabs. That code produced makefiles that had lines with just tabs and a "\" in cases where it was adding an empty list item to the makefile lines. This behavior caused SGI's make utility to bomb in an ugly way, so I have changed the perl code that generates the makefiles to concatenate these long strings as a long line instead of trying to make them pretty, hopefully curing the problem we've encountered with the SGI make utility once and for all.
    • Fixed errors in VMDApp's shared memory allocation code.
    • Made VMDApp::alloc and dealloc handle shared memory allocation for themselves, rather than relying on a per-instance Scene object. The Scene objects were calling global functions anyway, and it's impossible for different instances of VMD in the same process to be using different memory allocators.
    • Replaced VMDApp::VMDtempfile with a global vmd_tempfile function in utilities that does the same thing.
    • molecule_parm and ReadPARM take a VMDApp parameter so they can call VMDexit.
    • Added VMDApp parameter to OpenGLDisplayDevice, so that it can call VMDApp::VMDexit.
    • Updated docs for Python interpreter changes.
    • Tkinter GUI's now work as expected (as long as you don't call the mainloop method). Though I didn't realize it before, they used to work as long as Tcl was the active text interpreter, because the Tcl_DoOneEvent function updates _all_ Tcl interpreters, even the one internal to Tkinter (this should have been obvious from the API, since Tcl_DoOneEvent doesn't take a Tcl_Interp argument). With the new changes, Python GUI's work when the Python interpreter is handling stdin as well.
    • PythonTextInterp now calls Tkinter.tkinter.dooneevent(), similarly to how TclTextInterp calls Tcl_DoOneEvent(). This means that Python Tkinter GUI's should be able to be embedded in VMD as easily as Tk GUI's. We should be able to do away with the VMDMenu class, which will make GUI writing for Python/VMD much easier.
    • Fixed some latex errors in docs.
    • Added basic support for rendering of orthographic views in POV-Ray, and fixed DisplayDevice code so that it copies the projection state to file renderers.
    • Made static variables into member variables, migrated initialization of flags into the startup code, which allows multiple instances of VMD to run cleanly. Added a static member variable "text_message" and methods to access it. This string can hold all text intended for the outside world, which can then be retrieved and cleared by a calling/controlling application.
    • Added methods for retrieving the Tcl interpreter handle which can then be manipulated to provide a "poor man's API" to all of VMD's functionality. Fix donated by Sergei Izrailev, written in his own free spare time.
    • Replaced [f]printf calls with equivalent Inform object usage, so that all program output can more easily be redirected when VMD is used as a library within other software. Fix donated by Sergei Izrailev, written in his own free spare time.
    • Changed DPLinit static variable to be a member variable so multiple instances of the OpenGL windows may exist in harmony. Fix donated by Sergei Izrailev, written in his own spare time.
    • Replaced calls to system() with vmd_system() (defined in utilities.[Ch]) Provides a better way of redirecting output of sub-programs on platforms such as Win32. Code donated by Sergei Izrailev, written in his spare time.
    • Added orthographic support to POV3 renderer. Viewpoints are still way off and need work.
    • Added documentation for changed/new callbacks for pyhton/tcl interepeters that were made for zoomSeq. Specifically, the shift_key_state changes for atom picks.
    • Added gopython -command "foo" for running python code from Tcl.
    • Added a menubar with a File menu to ramaplot, for printing the canvas and closing the window.
    • Got rid of the ramaCanvas procedure.
    • Ramachandran points are new moved using move rather than coords.
    • Revised biocore.tcl specifically work for VMD. I've started some procedures to pop up publish and synch windows.
    • Preliminary version of the biocore.tcl script that will act as a bootstrap to open files and scripts when starting VMD, and other applications. Placed here so it can be accessed by all involved.
    • ZoomSeq now has working print dialog box, set the default filename, extension,etc. Default dir is pwd.
    • ZoomSeq now has multi-molecule functions working. Selector popup works, is radiobutton list with mol names next to buttons. When a molecule is selected, just redraws whole window. should change this, to partial redraw, current method is slow, and changes window position, plus can't use tearoff window across mol change.
  • VMD 1.7 Alpha 1 (6/19/2001)
    • Changed the vmdinit.tcl script to skip the "exist" check on gzip when GZIP_BIN is set, as the test always fails on Windows.
    • Made the vmdrmsd Tk widget get loaded through autoload, rather than creating a new proc.
    • Added ramaplot, a clickable Ramachandran diagram widget written in Tcl/Tk.
    • Updated installer info files to version 1.7
    • Added gzip binary to the windows distribution
    • Updated the code that sends filenames into the Tcl pdb web load scripts so they work on Windows.
    • Win32 starter updated to add gzip binary location and fix paths for the FTP binary needed by mol load webpdb etc.
    • Updated startup code to pass the Tcl eatable version of the FTP client path, rather than the Windows eatable program path.
    • Windows installer now picks up the "full build" version of VMD, instead of the recently outdated build which didn't include VRPN or Spaceball support.
    • Updated Windows installer with new sequence browsing script and updated the version numbers where appropriate.
    • Added better error checking and improved the destructor behavior for Win32OpenglDisplayDevice, and implemented a fallback mechanism when a half-destroyed window has its window proc called after things have already been torn down.
    • Lots of cleanup of unused variables, typecasts, etc for MSVC.
    • ZoomSeq now works within a TCL namespace, uses namespace ::zoomSeq:: A few of the advanced menu commands (about to be ripped out anyway) still not surrounded by [namespace code xxxx], Performance seems much slower, but is still acceptable.
    • Fixed incorrect comment, and deleted unused local variable in DrawMolItem.C.
    • renamed Quat.[Ch] to VMDQuat.[Ch] to avoid name conflicts on Windows.
    • renamed Quaternion code to avoid conflicts with case-insensitive platforms like Windows...
    • Added VRPN 6.00 link and include settings to the Windows VMD builds.
    • Fixed up P_VRPN source files to build with or without VRPN enabled on the new windows build configurations.
    • Added new Windows build configuration for the Spaceball and VRPN version.
    • Added Barry to commit log mail list
    • Allow the shift-key state when atoms are picked in the GL window to be sent to the TCL and python interpreters. For tcl, the variable vmd_pick_shift_state +is set to 0 or 1. For python, the pick_atom callback has a third value sent, the 0 or 1 for shift-key state. The shift test is made in DrawMolItem.c, the info is sent to the tcl and pyhton interpreters in TextEvent.C
    • Updated ZoomSeq code. Has molecule selector (lists all non-Graphics molecules). Still needs: rip out advanced menus,inform mainForm Sequence lightbutton that has closed, respond to molecule list changes, get global vars into the array ZSEQ, share via namespace and upvar.
    • Added Sequence button. Added ZoomSeqEvent
    • Fixed a bug in the atomselect get phi/psi functions that would occur if the first fragments in the molecule weren't protein fragments.
    • Atom selections can now modify psi as well as phi. Let the protein modelling begin...
    • Made the phi backbone angle setable through atom selections.
    • Oops, accidentally removed the vecsub command.
    • Implemented the transvec and transvecinv functions as C extensions; since I needed those functions in Matrix4 we might as well use them in the Tcl interface as well. It's actually better than the Tcl version because it handles the zero-vector case properly instead of bombing out.
    • Added docs for a few new atomselect keywords
    • Added phi and psi keywords (protein backbone dihedral angles) for atom selections.
    • Significantly updated the Spaceball code to implement several modes of use, in particular it now implements a maximum axis mode, scaling, and a default combined rotation/scaling mode.
    • Factored out a routine to get the current frame in AtomSel functions.
    • Factored the dihedral code out of GeometryDihedral and made it a utility function.
    • Implemented support for Spaceball 6DOF input devices in VMD.
    • Eliminated unused variable in MSMSInterface.
    • Added the zoomseq Tcl script to the core VMD scripts, will implement sequence browsing once the rest of the compnonents are written. This is also the first commit to the VMD tree by Barry. Congrats :)
    • Implemented a "material delete" command.
    • Made the NameList in MaterialList a pointer; first step to making it possible to delete materials.
    • The "draw material" command now requires a material name, rather than a numeric index; this prevents silent errors if materials get moved/deleted. The corresponding Python commands already work this way.
    • Added "light pos" commands for setting the position of the lights and restoring them to their default values. Also moved the tcl_graphics_vector command and renamed it so it could be used elsewhere.
    • Added virtual destructor, fixing small PickMode memory leak pointed out by Sergei Izrailev.
    • Made "mol pdbload" use the webpdb code for getting a pdb file from the web databank, rather than calling urlload directly. Now pdbload works again, and we don't have multiple implementations anymore either.
    • Fixed cut 'n paste error in vmdinit.tcl
    • Documented the "pinch" tool.
    • Created a vmd_pdbload script to handle downloading pdb files from the web. Compressed pdb files are decompressed using gzip, which should be installed either in VMDDIR or in the user's path.
    • Added new OpenGL ARB multisample antialising code
    • dropped old IRIX 5.x multisample code.
    • Replaced all low-level sockets code in MSMSInterface with calls to the vmdsock API. Somehow, PR20 (MSMS interface times out) is now fixed as well!
    • Draw_tube was assuming that nucleic fragments had at least one residue, and crashed when VMD accidentally produced a zero-length fragment (PR 158). It would still be nice to fix the broken structure generation, but at least we don't crash now.
    • Wrote code for and tested the Spaceball 2003, and Spaceball 4000 FLX with VRPN and VMD.
    • The bond search code now only grids selected atoms, rather than gridding everything and relying upon the inner loop to reject false pairs.
    • Made the find_minmax function take a boolean list parameter to specify which atoms should be included in the minmax calculation.
    • Eliminated deletion of the template repository directory during the normal build step, only deleted now when "make veryclean" is done.
    • Changed configure script so that Mesa builds of VMD use the new USELINEAXES #define, since Mesa is (in this case) only using software rasterization.
    • Added line-drawn axes code that can be selected at compile time with the USELINEAXES #define.
    • Added Postscript text output patch provided by Charles Schwieters, also improved comments, and cleaned up a few things.
    • added comments where we'd like to cause the VRPN force feedback code to interpolate between updates.
    • Fixed VMD Unix startup script, for 64-bit IRIX builds etc.
    • Replaced O(N^2) hydrogen-bond finding code with a call to the bond search subroutine, resulting in a 2-4x speedup and better scaling.
    • Fixed uninitialized frameStart variable in the DCD reader code, probably harmless, but who knows.
    • Added documentation and useful URL's to the .vmdsensors file
    • Added an example of a Logitech Magellan device to the .vmdsensors file
    • Reverted atom selection code to previous version.
    • Atom selection keyword lookups that operate on integer values (e.g. index) now use a hash table to accelerate keyword list processing; lists of M items for a molecule of N atoms are now processed in O(M+N) rather than O(M*N) time, which makes a huge difference in some cases.
    • Fixed unitialized variable in DCD output code, which was resulting in floating point exceptions in Alpha machines when the DCD was read back in. Also fixed byte-swapping code for opposite-endian Charmm DCD files so that the timestep in the DCD header is byte-swapped as a float before being read in as a double. (No PR assigned yet)
    • The configure script is now revved to 1.7a1
  • VMD 1.6.1 final release (April 26, 2001)

Please email any questions to vmd@ks.uiuc.edu.