Summarizes changes in IVE 3.3 dating back to March 17, 1998. Significant changes since August 28, 2000 version ------------------------------------------------- IWL library - IM library now available for Alpha Linux Bug fixes: Writing complex data when byte swapping was done or writing short data when byte swapping and no automatic conversion between float and short was done could generate invalid results. August 2000 release broke stepping by section in multiple wavelength data and broke the coupled mode for updating the current z/time indices in different waves. March 2000 release broke the C IMRtMap call (functioned as IMAlMap). Monitor - Bug fixes: Monitor could turn off the keyboard autorepeat when closed via the window manager. Priism apps - ccdcor, decon, ffilter, header, and simplex available for Alpha linux. Changed decon, ffilter, and new Fourier tools applications to use SGI's complib (FFTW is GPLed). Added an option to FindPoints to subtract the local minimum for the weights in the local center-of-mass calculation. Bug fixes: Scale had an array overrun and a memory leak. Significant changes since March 10, 2000 version ------------------------------------------------ IWL library - Added the IWAlCursor call so an application can modify the Monitor's cursor shape. Changing the depth of a multiwave scratch window clears all stored data (for a single wave, it's possible to preserve the most recently written sections). Bug fixes: Scratch files from IMOpen properly deleted when closed (introduced in the last release). IMAlMode on a window which wasn't followed by an IMAlSiz or IMAlZWT didn't work properly. Reserve a graphics ID for the scale bar so it won't be given out to applications. Changing the depth of a scratch window (especially multiwave) scratch window caused crashes. Multi-wave scratch windows are not forced to be interleaved. Newly written data for a window is alway put in the modified queue and swapped out properly. IWAttachWin would always fail opening a new scratch window. The z and time indices for different waves were not always enforced by IWAlDisSec, IWAlDisSecZWT, IWFirstImage, IWLastImage, IWNextImage, and IWPrevImage or when a wave was mapped. WM library - Added WMProcExtEvent and WMCancelExtEvent so applications could handle X Input Extension events from dials, .... iomenu generated interfaces now include an option to write the script file without executing it and will look at the QUECOM environment variables to enable more specific specification for the commands to submit a task to a queue. Bug fixes: WMGetFile always returned zero (introduced in last version). Using the window manager controls to close a dialog created by WMGetFile caused a resource leak. Deleting a mouse or Monitor event callback from within the callback itself would cause a crash when event loops were nested. Decreasing the total number of lines in a scrolled text widget will delete the appropriate number of lines from the top (previously at most one would be deleted). Removed busy waits in WMConfirm and WMPostInfo. IP library - Many internal functions that were publicly visible no longer are. IPSetNoAutoIO can now be used with 2D processing (previously this would cause a crash) though there are some ambiguities about how IPSetDataPtr is handled. Bug fixes: Appending waves to a file (provided that the waves are not interleaved in the file) now works. The scratch size option menu is not recreated each time it is displayed. Monitor - Bug fixes: Work around problems on O2s with per-window stereo so that graphics are cleared properly after switching to per-window stereo and the image display isn't blank after switching out. IWDisGrID would fail on systems with per-window stereo. The autoscaling triggered by setting the scale min and max to zero now works with complex data. Priism Apps - Volume Viewer and the related 3D Cursor were modified substantially to improve the user interface, add support for dial boxes, handle multiple waves, and include an option to erase data to facilitate visualization and modeling. decon now uses the FFTW libraries on the Alphas and x86 Linux (~2x speedup on Alphas and x86 machines) and SGI unpacked FFTS with IRIX. Added controls to the decon GUI to specify the -nomem option and the new -maxmem option added in the new version of decon. The set of filters in Filter2D was extended to include Gaussian and Laplacian of Gaussian filters. The set of filters in Filter3D was extended to be the same set as in Filter2D. Modified the algorithm in Filter3D to reduce the memory usage. Added a set of applications to replace the original set of Fourier tools. The IP interface is now used, there are more options for preprocessing and padding, and the FFTs used are significantly faster. Modified LCE to make the edge effects more gentle (simply use a reduced region for calculating the local mean). Point Values will change the wave it is working in if the wave is unmapped. Reworked the Region Min/Max/Mean interface to make it more intuitive. Added a looping option to calculate results for multiple regions with the same size. Changed the formatting of output so it would better handle large or small floating-point values. simplex is available on the Alphas. TiffMovie now captures all the images in a montage display. Bug fixes: In 3DModel, only the space bar toggles hardware stereo on/off; previously any keypress could do it. CCDCor would output incorrect z values in the plot file when the intensity is not normalized using a fit or based on the intensity header values. CutMask could exit unexpectedly when overwriting an existing file. The rolloff calculation now uses a more reliable method of determining what was masked and what was not (values not masked which are equal to the background value used to fill the masked regions are still not factored into the rolloff distance calculation correctly). EditHeader would not correctly respond to changes made to the extended header contents (introduced in the last release). The final stage of the bead alignment for EM data would fail when the data was taken to test compression and had a small range of tilt angles. The interactive version did not correctly interpret the -iref command line argument. The EM alignment and reconstruction front ends would exit when given a partial or non-existent file name. Several fixes to the interface and operation of the EM reconstruction programs to remedy problems introduced in the last release. Examine Data would show the 1s in a field of 1s and 0s as '***'. Regions touching the edges of a volume could cause a crash or erroneous width results in Region Growing (likely affected FindPoints as well). Fixes in the Merge/Reorder interface for problems modifying the dimensions of the first dataset to merge, not confirming that changes should be thrown away, and incorrectly displaying the bounds of a selection. ReduceRes adjusted the pixel size incorrectly. In Region Growing, closing the point file selection dialog would cause the application to crash. Rot3D would only output the first wave of a multi-wave dataset (introduced in the last release). SurfHarmMod would crash when using a file as a dataset (likely affected other polygon manipulating programs if they used a file as the associated dataset; introduced in the last release). Volume Builder assumed that the coordinate system origin was (0, 0, 0) when writing the dimensions to a model file. This would cause 3D Model to appear to not display anything in some cases. Significant changes since October 19, 1999 version -------------------------------------------------- IWL library - The Fortran IM layer is available as an archive library for x86 Linux. The C IM calls are now available for DEC Unix and x86 Linux. Removed the IWLCC.h header file that had been used by C++ applications and changed IWL.h header so it would work for C++. For C++ code, the prototypes for IWAlcNamedSHM, IWGrAddPts, and IWGrAddPts2D have changed so they are consistent with the C prototypes. Expanded the set of events which generate an IW_BANK_DISPLAY_CHANGE notification to functions registered with WMProcDisplayChange. Changes which now generate the notification are changes in the current section displayed, montage (matrix) mode, zoom, waves mapped, scaling, image offset, new data is written to the current section, and changing whether or not the image is displayed, Fixed the get_wtswitch call so it would correctly report if the time increment was different than one. WM library - Added a functions (WMRegMouseButton and WMUnRegMouseButton) to allow applications to disable the Monitor's handling of the middle and right mouse buttons and use their own instead. When passed IW_ALL_WINDOWS, WMAddEventHandler and WMProcDisplayChange so that the application will receive events from windows opened after the call is made. WMProcDisplayChange now supports registering different display change handlers for different windows. Removed WMFunCC.h, a header file previously used by C++ applications, and changed WMFunc.h so it would be usable in C++. The changes should be transparent for C applications, but the prototypes for WMAddOptionMenu, WMAddPulldownMenu, WMAddPullRight, and WMAddNestedPulldownMenu have been changed for C++ so they match how they've been prototyped for C. Changed the handling of WMAddDoButton so that more than one can be created by a process and to prevent the creation of zombie children. Removed the prototypes for some internal WM functions (those with names that begin with WM but otherwise are all lower case) from the public header files. Other of these functions are still present but they are likely to be removed in future releases. The iomenu library now reports a wave selection change by calling custom_ifile with iom.iparm set to -5. Output file fields now have a directory browser button rather than an ineffectual help button. IP library - ip.h was changed so it would be usable by C++ programs. Modification of the time range now generates a call to the registered new region handler. Changed the internal handling and default value for autoscaling (only affects CopyRegion or other applications that access IP internals directly). Monitor - Decoupled the montage (formerly called matrix) options from the hardware stereo controls. Fixed edge artifacts and improved performance for the interpolated zoom mode. Changed so buffered images in a scratch window are not always recalculated. When both the wave scale and section scale have fall through values (the minimum and maximum for the section scale are not both zero and the minimum for the wave scale is not equal to the maximum for the wave scale), the Monitor records the scale it chooses in the section scale. Priism Apps - Volume Viewer has been changed substantially to simplify its interface and increase the user's control over the interactive mode. Find Points was enhanced to support a batch execution mode, user preferences, and directly specifying thresholds. Changes were also made to improve its performance. 3D Model was extended to support a 3D cursor for selecting and editing models drawn to windows created by Volume Viewer. Scale was changed to simplify how the choice between section and wave scales. Added options to load the scaling stored in the scale database and to scale the current section between its minimum and maximum. Sampling artifacts in the histogram display for integer data have been reduced. A new application, mergemrc_i with a graphical interface and mergemrc with a command-line interface, to merge datasets. The AutoScl option in CopyRegion was changed so that it scales each section between its minimum and maximum. Fixed a bug in CopyRegion in which it didn't appropriately set the scale when converting to byte. Point Values now includes the option to draw horizontal and vertical profiles of the data and always displays the coordinate of the point in data (pixel) and real coordinates. It no longer displays the scaled pixel value. ImgArith extended to support operations which mix real and complex datasets. Added on option to coerce values which are less than zero to zero. Rotate3D was changed so it would preserve the type of the data unless told otherwise. Handling of multiple times and waves was improved. It now supports the user directly specifying a fill value. Many of these fixes were also applied to the command-line version, rot3d. The graphical front end to rotfast was added to the Priism menus. Resample2D was fixed so it would not shift the data when no rotation or translation was specified. Also removed the slight shearing of the data present even when the angle between the axes was left unchanged at ninety degrees. Removed a spurious test in decon that caused it to bail out on large data sets (say 960 x 960 x 100). Fixed how a scratch file was named so that two users could run large decon jobs on the same system. Fixed several problems in applycal (calibration and bad pixel filenames were incorrectly parsed for the second and higher waves, the origin was not set properly, and a bad function call could cause crashes). Fixed a problem in the front-end that would cause it to crash when editing a file name directly. Fixed problems in simplex that caused it to incorrectly output more than one aligned wavelength, refuse to write more than four output wavelengths, and to apply the background subtraction and coercion of negative values to the output data for the reference wavelength. Added an option to suppress the output of the reference wavelength. Fixed TiffMovie to correct a buffer overflow when invoking makemovie. Removed restrictions in EditHeader that artificially limited the number of entries per section that could be handled in the extended header. Significant changes since June 8, 1999 Version ---------------------------------------------- IWL library - The IM layer no longer caches the location of an image window's header to avoid corruption of the shared memory arena when another application closes and reopens the window while the first keeps the window open and later does operations on it. atbute argument in the Fortran imopen call is now treated as a character*(*). IWUnmapWave and IWAlImgColor now update the monitor's wave map state to avoid problems with graphics that become out of sync with the image when the zoom or image position is changed. Made IWAlScratchSize functional. Negative positions are now allowed in call to IWAlWinPos. WM library - Now check for imopen failure in graphical interface for batch programs. WMGetLoc call changed. Newline characters in strings passed to WMConfirm, WMConfirmError, WMShowInfo, and WMPostInfo are now recognized and the message is displayed on multiple lines. Resizing the dialog (as done when inserting or deleting widgets) now works whether or not the widgets are realized. IP library - Fixed several problems related to selecting regions including unexpected changes in the size of the selected region when panning the window. Monitor - Corrected problems with deleting or changing the depth of scratch windows. Corrected handling of color image display when configured to use per-window stereo. When multiple applications track the mouse pointer's motion, one application ceasing to track the motion does not cause the others to do so. Changed the default colors for the first three waves to not be black. Made IWMapWin and IWUnmapWin function correctly. Added Point Values, Examine Data, and AppendRes to the File menu. Priism Apps - Several fixes made to 2d_plot. Region Min/Max/Mean second output column now records the y start value. In tiffmovie, added capability to pass some options to makemovie and reduced problems with colormap flashing. Examine Data's presentation of complex data changed, and it no longer displays integer data with factors less than 1. Added an application, applycal, to perform calibration (correction for pixel-to-pixel offset and gain variations) and bad pixel editing after data collection (this is a replacement for offcorf). Corrected handling of two section stacks in ccdor and removed its restrictions on the size of the extended header per section. ccdcor was ported to DEC Unix. Fixed problem that caused monitor to crash after adding a bead in interactive bead alignment. Corrected several places that caused the interactive bead alignment or applications to choose the volume for reconstruction to not work well with windows other than window one. Changed fitting procedure in massnorm since the previous IVE 3.3 versions did not improve on the initial estimate. For the handful of cases tested, this problem had only minor effects (+/- a small number) in the image. The batch portions of the EM reconstruction (massnorm, appl_prm, ewbp, and tapir) were ported to DEC Unix. Removed restrictions on the size of the extended header per section in the EMCAT programs. Significant changes since February 8, 1999 Version -------------------------------------------------- Directories - BIN is now a link to BIN_IRIX which is for IRIX executables. LIB is now a link to LIB_IRIX which is for OSF1 executables. BIN_OSF1 and LIB_OSF1 added. IWL library - Made IWWinToData and IWDataToWin consistent with the monitor's geometry calculations. IM library's FORTRAN interface and FFT routines ported to DEC Unix. Dropped library support for automatically handling data generated on a VAX. Changed to interpret scales with interchanged first two parameters as the negative image. Changed to support scale bar length preference. WM library - Fix for problem introduced in October 1998 release which caused crashes when an info button was pressed. Fix for gradual reduction in available elements in the saved scale database. Pulldowns where the last choice is shown are constrained to be the size of the widest choice rather than changing their size to match the most recent choice. Changed to a WMUpdateGroup or WMUpdateField call is not needed to display the results of a WMChangePulldown. Multiple fixes for manipulating or saving and restoring scrolled lists and option menus. These changes introduce a incompatibilities with files generated from Save/Restore buttons in the case when the dialog contains a scrolled lists or option menu. IP library - Extended wave string field to avoid overrun with data that has four or five wavelengths. Other libraries - Utils.o now in the LIB directory as are menu configuration routines used by Priism and the monitor. Header files for both are in the INCLUDE directory. Monitor - Monitor interface modified to add section slider along left side and move many controls to the left side. Menubars configured using the same routines as Priism and made it possible for users to supply a menu configuration file. Coupled the multiple section display to the step mode and increment. Workaround for SGI bug #676369 where text drawn to the image window is offset by one pixel on XS, XZ, Elan, and Extreme graphics under 6.5. Priism Apps - Multiple changes made to FindPoints. Multiple changes made to VolumeViewer. Added a 2D plotting application which handles CURVY data. Corplot replaced by this new application. ReduceRes added for mean filtering data and then downsampling. Merged in changes to LineProfile made by Tziki Kam's group. MatToImg and ImgToMat ported from IVE 3 + MATLAB 4 to IVE 3.3 + MATLAB 5. Preferences dialog split into multiple dialogs so it fits on the screen. Scale changed to support reversing the scale. Other applications changed to be compatible. Print function in monitor changed to more closely match monitor's output with different scaling options. Movie fixed so multiple wavelength data doesn't cause erroneous entries in the Movie dialog or crashes. Movie now in the monitor menus. Fixed LCE's memory handling to fix frequent crashes. MVRegionGrowing removed. tiffmovie changed to better handle sizing of the output under a variety of zooms, window sizes, and wave offsets. decon_sgi is now just a link to decon. decon modified to support DEC Unix version. vaxmrc2mrc added to convert VAX generated IVE data into a usable form. Significant changes since October 20, 1998 Version -------------------------------------------------- IWL library - Bugs in ifixexhdr_zwt / IMFixExHdrZWt fixed Corrections for reading and writing partial sections to windows and improved support for non-zero settings of IVE_PGTHRESH (an optimization for not swapping in an entire section when only a small chunk is requested) Mentions of IWGrDisList (which didn't exist) in header files and documentation changed to IWGrDisGrList IWStop stops the monitor 0 process as well WM library - Uses SGI look and feel by default - set the environment variable IVE_OLD_LOOK to yes for close approximation to previous color and font usage Changes to support pulldowns and dialogs in the overlay planes Corrections for deleting or pasting/unpasting menu bars Corrections for sensitizing/desensitizing Restore/Save buttons IP library - Copy of ProcFunc.o, FProcFunc.o, and ipintermed.o put in LIB directory which should be the preferred location when linking against those files Monitor - Support for fast greyscale display by not adding color table offset (set the environment variable IVE_FAST_GREYSCALE to yes to invoke this behavior) Uses pulldown menus in the overlay planes when possible Corrected stereo offset for systems other than the O2 Priism - Changed to correctly respond when closed by the window manager Uses pulldown menus in the overlay planes when possible Priism Apps - VolumeViewer changed to avoid truncation of the viewed volume and to correct problems with opening too many files or writing to existing windows EditPolygon's options for propagating polygons in 3D extended Flip changed to improve performance when reading or writing to windows SurfHarmMod now supports the output of polygon data Line Profile now works with complex data Object list dialogs in 3DModel, Straight, and SurfHarmMod changed to better handle long lists EditHeader's display of the file's data type and handling of the interaction between dimensions, cell size, and pixel spacing changed Resample2D's setting of the pixel size so at least with "Keep Cell Size" off the sizes are set as expected for microscopy data Examine Data's user interface changed to work better with new WM library and added capability to vary the precision and view complex data User interface of interactive bead align changed to work better with new WM library Significant changes since June 28, 1998 Version ----------------------------------------------- IWL library - Support for wzt interleave and multiple resolutions Changes for more accurate scaling algorithm (added IWRtSclAlgorithm, IWAlSclAlgorithm, and added additional meaning to one of the arguments to IWScaleImage) and more robust scaling Changes to optimize scaling and data conversion routines Lower limit of 1/32 imposed on zoom WM library - Added WMAddNestedPulldown, WMAddPullRight, WMChangePulldown (made public), WMGetLoc Changes to make old style and Netscape help access more similar from a programming point of view, added support to specify help files outside of the IVE directory tree Monitor - Support for per-window stereo Fixes to graphics context switching Changes to optimize some parts of image display Allows direct entry of the zoom factor No longer generates zombie child processes Priism - New menubar interface, old interface still available as OldPriism Priism Apps - BlendColors enhanced to give more feedback about interactively scaling Scale interface changed to make clearer distinction between changing wave and section scales, added support for scaling complex data LineProfile added option to turn off min/max display, also calculate width for nearest peak Flip modified so pixel spacings changed rather than mapping CopyRegion had an extra array copy removed to improve efficiency EM alignment and reconstruction software modified to uniformly handle files of up to 80 characters in length, some fixes put in place for marking beads near the edges Fixed limitation in ViewFile where the input file could only be changed 10 times Many applications changed so header resolution information consistently set Significant changes since May 1, 1998 Version --------------------------------------------- IWL library - Changes for Monitor handling of multiple resolutions WM library - Changes for error and info dialog positioning Monitor - Changes for multiple resolution display Priism Apps - ProcFunc changes for some problems with interactively selecting regions in BlendColors, now heed changes in alignment between waves in tiff2mrc, rewrite to extend what TIFFs could be handled in Scale, changes to better handle when control points are close in BALIGN, changes to final fitting of bead parameters (use NAG routine, better handling of fitting problems) Significant changes since March 17th, 1998 Version -------------------------------------------------- IWL library - added support for another extended header type (om0 data) WM library - added capability to insert/delete widgets Monitor - fixed bug where switching between single and multiple wave display combined with scrolling sections caused the section number in different waves to be out of sync Priism Apps - for ProcFunc applications, added better handling when a input window is closed or overwritten while the application is waiting for user input in Region MMM, fixed memory leak in straight, added option to have the slices perpendicular to the tube axis be aligned just based on the coordinate axes rather than trying to correlate adjacent sections in FindPoints, added option to grow regions to halfway between max and background, added outputs, improved center of mass calculations in RegionGrowing fixed crash with toggling off a wave and a bug where z input values were coerced to integers in PickPoints fixed bug where z input values coerced to integers in PickToModel fixed bug where z input values coerced to integers in ccdcor, added fixes to handle small numbers of z sections by coercing the order of polynomial fits to be small enough, added support for om0 data, corrected problem with fit in bleach correction in decon, workaround to handle data with one z-section where no z pixel size set added application, AppendRes, to append low resolution data to an existing file