﻿JIST Version History

*** DATE ***    *** CVS-TAG ***        *** Your Name ***     *** Summary of Changes (May use multiple lines. Start each lines with at least two tabs of white space.) ***
2009.May.27     Alpha_0_8_rc2        Bennett Landman     New threading update.
        Initial name change of MAPS->JIST.
        Official Beta Release (as opposed to alpha) scheduled for 1-2 week of June 2009.
        
2009.May.31 Blake Added symbolic math package that was missing from version of JSci
2009.May.31 Blake Changed MapsPreferences.loadPreferences() to PipeLibrary.loadPreferences() in CubicVolumeReader so that the preferences know where the library directory is located.
2009.May.31 Blake Added equals() method to algorithm information.
2009.May.31 Blake Added Out of Sync and Locked process statuses. (BL: Locked "removed")
2009.May.31 Blake Added progress monitor to delete directory so that process can be canceled if deletion takes too long or does not behave.
2009.May.31 Blake Added out-of-sync detection. A completed process is designated as out-of-sync if the values for parameters in the input file do not match those generated in the output directory.
2009.May.31 Blake Added reset method to execution context to handle even where output directory has been deleted, and therefore the context variables only need to be reset.
2009.May.31 Blake Added getHeader() method to PipeAlgorithm so that header parameter is cached on first access and does not need to be searched for again.
2009.May.31 Blake Added saving global parameters after a layout has been opened so that history is updated.
2009.May.31 Blake Added monitoring of last modified time for layout so parameters will be reloaded if the layout is modified by another program.
2009.May.31 Blake Added PipeLayoutRunner to automatically execute layout files and store results from assertion tests.
2009.May.31 Blake Reorganized destination modules from "Internal" / "External" categories to "Output" / "Externalize"
2009.May.31 Blake Added display of layout name in title bar for Pipeline Layout Tool.
2009.May.31 Blake Removed references to com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable
2009.May.31 Blake Fixed bug in weighted parameter panel, although it's still buggy.
2009.May.31 Blake Added dialog box for user to enter output directory if output directory for layout does not exist.
2009.May.31 Blake Fixed bug in cloning parameters in which the label for a parameter is set to be it's name.
2009.May.31 Blake Added equals() methods to parameters that require them.
2009.May.31 Blake Added progress monitors for file directory sources in the event that it takes a long time to locate files with a specified name.
2009.May.31 Blake Moved set library directory to global preferences.
2009.June.2 Blake Added equals() method to ParamNumber so that numbers are always compared using double values.
2009.June.3 Blake Optimized clean all function
2009.June.3 Blake Fixed bug when clicking cancel while a layout is loading
2009.June.4 Blake Moved loadPreferences() from CubicVolumeReaderWriter to PipeRunner so that command is not called unless needed
2009.June.4 Blake Fixed bug in PipeLibrary. loadPreferences() should return false if library directory was previously specified
2009.June.9 Bennett Changed labeling and order of buttons on about license box
2009.June.10 Bennett Removed all references to ViewUserInterface outside of MipavViewUserInterface
2009.June.10 Bennett Set MipavViewUserInterface to use the "no-checks" force flag.
2009.June.10 Bennett Removed opale src from development tree - added v1b8 jar to library
2009.June.10 Bennett Removed public .library variable from processManager -- forced pref load in PluginJISTProcessManager
2009.June 10 Bennett Removed numerous shadow copies of MipavViewUserInterface && ViewUserInterface
2009.June 10 Bennett Upgraded to MIPAV 4.2.2 Nightly 10June2009 (needed for below API)
2009.June 10 Bennett Added override exit flag to layout tool for running as a plugin: Resolves: BUG does not open a second time BUG: Exit causes system level exit
2009.June 10 Bennett Relabeled "Finish Current Only" to "Finish Queued / Stop Enqueue"
2009.June 10 Bennett Renamed MapsPreferences to JistPreferences
2009.June 10 Bennett Removed local reference to preferences in PipeLayout
2009.June 10 Bennett Moved file extensions definitions to JistPreferences maps->layout map->module
2009.June 10 Bennett Refactor all *maps*.java classes to be *jist*.java
2009.June 10 Bennett Added // TODO and stub java-doc for all classes and packages.
2009.June 11 Bennett Added confirmation dialog for layout overwrite when file exists
2009.June 11 Bennett Added silentFailure to PipeLibrary.getPreferences and JistPreferences. Piperunner now forces silentFailure
2009.June 11 Bennett Removed package edu.jhmi.* from JIST build. Removed MedicUtil as a base class for MipavController.
2009.June 11 Bennett Removed uncrop method from EmbeddedSurface - depended on CropParameters... doesn't appear to belong in infrastructure
2009.June 11 Bennett Cleaned all imports in JIST project (removed unused/invalid)
2009.June 11 Bennett Moved ImageDataMath to the NITRC (Open-Source) JHU Plugins repository (it's processing not infrastructure)
2009.June 11 Bennett Added stack trace to dialog box asking for library directory and when no directory is found
2009.June 11 Bennett Clarified "are you sure" message for exiting PM and LT
2009.June 11 Bennett Removed ptolemyII from the JHU Plugins source path. Added library to lib and lib-src folders.
2009.June 11 Bennett Removed quickhull3d from the JHU Plugins source path. Added library to lib and lib-src folders.
2009.June 12 Bennett Modified progress monitor for delete so that units of delete are consistent (# of exp directories) -- results in MUCH faster clean
2009.June 12 Bennett PipeRunner MUST load preferences QUIETLY before loading pipefile to allow forceQuiet! (fixed)
2009.June 12 Bennett Refactored JIST classes into package edu.jhu.ece.iacl.jist.
2009.June 12 Bennett Refactored microstar out of plugins into lib
2009.June 12 Bennett Refactored CAMINO into separate library
2009.June 12 Bennett Moved extra third party libraries from JIST to JHU-Plugins /lib and/lib-src
2009.June 13 Bennett Replaced xpp3 library - is needed
2009.June 13 Bennett Fixed multiple static references to resources. Must be accessed via "placeholder" classes
2009.June 13 Bennett Updated Execution Context, PipeAlgorithm, Processing Algorithm to add String[] getDefaultJVMArgs() to ProcessingAlgorithm to give programmer extra control over JVM arguments (execpt maximum memory!)
2009.June 14 Bennett Added a build script w/ ant for anonymous or read-write access
2009.June 15 Bennett Removed microstar xml from custom package (it's in PTII)
2009.June 15 Bennett Moved XPP libraries off build path.
2009.June 15 Bennett Removed xpp3 from plugins package. xpp3 is in base JIST package
2009.June 15 Bennett Replaced xstream 1.3.1 with 1.1.3 for compat. w/ pgcvs plugins
2009.June 17 Bennett Removed extra .#* files from pipeline directory
2009.June 17 Bennett BUG NOT FIXed!!!: Process manager did not flush downstream pipe before executing. Add a clean() statement in start() within ExecutionContext. the clean() statement in restart() is now redundant, so that can be removed.
2009.June 18 Bennett BUG FIX: The logical tests on ParamBoolean fail because ParamBoolean is a ParamNumber, and therefore is compared by double value. ParamBoolean needs to be handled as a special case.
2009.June 20 Bennett BUG FIX: OUT-OF-SYNC not considered "ready". User must now clean these before PM starts. Forced changes to ProcessManager.java to set correct queue, ExecutionContext to set/get status.
2009.June 20 Bennett BUG FIX: NOTE: "OUT-OF-SYNC" are treated exactly like "FAILED". The system only checks filenames/sizes/etc. It does NOT check creatation dates. So, manaul removal of some data outside of the program can lead to an inconsistent state because the system might not know that a parent has been recomputed.
2009.June 21 Bennett BUG FIX(?): "FAILED" reported for modules that use sub-modules. The fundamental problem was that the .input files were being written AFTER the plugin had a chance to change its own inputs. I see no stylistic flaw with modifying one�s own inputs, so we need to make sure that the inputs are written BEFORE the plugin starts.  After A BIT of poking around, I removed the writing of .inputs from the clean up function and created a new function with this code that gets called before the plugin�s execute method.
2009.June 24 Bennett Removed shadow copies of input/output params from ProcessingDialog and ProcessingGroupDialog
2009.June 24 Bennett Removed shadow copies of saveDirectory from ProcessingDialog and ProcessingGroupDialog
2009.June 24 Bennett Major changes to Parameters to add: getHumanReadableDataType() getXMLValue() setXMLValue(String arg)
2009.June 24 Bennett Added true "command line interface" for JIST framewok w/ self-documenting POSIX calls.
2009.June 24 Bennett "Collections" are now properly unwrapped in the CLI framework.  
2009.June 24 Bennett All parameter bounds are lightly checked. Additional validation might be warrented.
2009.June 24 Bennett Matrix, weighted vol, weighted vol collection are now supported through text processing. (non-XML)
2009.June 25 Bennett Added override option to ParamFactory (and ParamModel) so that default behavior of writing into subdirectories could be overridden and output could be directed to specific directories with the CLI.
2009.June 25 Bennett Added edu.jhu.ece.iacl.jist.cli.discover for discovery of options via the command line.
2009.June 26 Bennett Removed references to sourceforce/MAPS.
2009.June 28 Bennett added runLayout class. Modified JistCLI to parse layout parameters. Edited presentation of default syntax.
2009.June 29 Bennett Fixed bug in PipeRunner in which streams were not properly redirected.
2009.June 30 Bennett Added clean functionality to command line pipe runner and standardized output files.
2009.June 30 Bennett NOTE: There are MULTIPLE copies of the ParamModels in various locations. In the long run, these should likely be refactored so that only 1 "true" copy of each parameter is stored.
2009.July 14 Bennett Fixed a bug in the file extensions filter for when the file extension filter was null. (manifested with simulated rater framework)
2009.July 21 Bennett/Han Changed the manner in which CubicVolumeReaderWriter writes an object to ensure that any extra model images are deleted. Changed ImageDataMipav.createModelImage to ALWAYS generate a copy (WHICH MUST BE FREED)
2009.July 24 Bennett/Blake Fixed alpha/beta symbols for platforms where unicode had problems (winXP). Now states "alpha", "beta"
2009.July 24 Bennett/Blake input/output write separated for consistency with out-of-process framework. See changes to line 739 (output) and 769 (input) of ProcessingDialog.
2009.July 27 Bennett/Blake Added a warning message to explain that OUT-OF-SYNC and FAILED tasks would not be processed until the user performs a clean operation (PipeScheduler Line 1457)
2009.July 27 Bennett/Blake Added setvalue methods to param double,float,integer to fix comparison problems.
2009.July 27 Bennett/Blake Fixed icons with "MAPS". Replaced with JIST.  
2009.August 6 NONE aaron_carass Changes from John Bogovic. Chnaged files edu/jhu/ece/iacl/jist/structures/fiber/FiberCollection.java and edu/jhu/ece/iacl/jist/structures/fiber/Fiber.java.
2009.August 10 Bennett Corrected Preferences key "MAPS_Library_Directory" to "JIST_Library_Directory". Requires rebuild of module library.=======
2009.August 10 Bennett Moved "external" inputs to a "externalize." category for consistency with outputs.
2009.August 10 Bennett Added external destinations for file and file collection. NOTE: Multiple input/output externalize classes are missing and in progress.
2009.August 12 Bennett/Blake Added new external sources. Seems effective with the JISTAdapter ... nearly complete for CLI tool.
2009.August 26 Bennett Added a method to ImageHeader to copy all geometric attributes from another header. Greatly simplifies keeping consistent geometries.
2009.August 26 Bennett/Blake Added the line to the streams redirect in piperunner. outWriter = new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(System.out)));
2009.August 26 Bennett/Blake Fix for JistTestHarness - initScheduler(layout); // Fix to NITRC Bug 3934
2009.August 26 Bennett/Blake Add non-URI parseing for LayoutPreferencePanel.
2009.August 26 Bennett/Blake Added preliminary support for creating 2D ImageDataFloat. Please verify that these changes function before we roll out 2d data structures for the remainder of the datatypes.
2009.August 27 Bennett Added a stub for ImageHeader to verify geometries.
2009.September 02 Bennett/Blake Added new external sources and destinations for completeness.
2009.September 02 Bennett/Blake Fixed iterate method of ParamFileCollectionExternalDestination.
2009.September 02 Bennett/Blake Fixed CurveVtkReaderWriter (previously a stub).
2009.September 02 Bennett/Blake Improved color support for VolumeVtkReaderWriter. Note that this version is highly Beta and may have alpha-scaling issues.
2009.September 02 Bennett Flushed out remainder of 2D image constructors.
2009.September 15 Bennett (plugins) Improved support for quantitative relaxometry and RESTORE tensor fitting.
2009.September 17 Bennett Changed behavior of get for ImageDataMiapv so that .get would return 0...255 for image type == ModelImage.UBYTE
2009.October 05 Bennett Prevented selection of invalid tabs in ParameterPanel (occurs during slow initialization).
2009.October 05 Bennett Added functionality for setLoadAndSaveOnValidate(false) to ParamModel, ParamVolume, and ParamVolumeCollection.
2009.October 05 Bennett Added catch to prevent crash when writing curve vtk files with no curves.
2009.October 05 Bennett Changed ParamVolumeCollection so that names are preserved when "created".   
2009.October 14 Bennett Fixed a bug in FileReaderWriter where path separators would be lost.
2009.October 14 Bennett Major revision to the cached previews of the MIPAV image registry involving changes to ParamVolume, ParamVolume*CollectionView, etc. Prevents loading of images by JIST when said images should already be in memory. Fix for a race condition.
2009.October 14 Bennett Found severely broken call in ParamVolume to getModelImageIfOpen. Deprecated function.
2009.October 21 Bennett Massive refactor so that infrastructure uses ImageData rather than ImageDataMipav - removes memory leak.
2009.October 21 Bennett Fixed bug in status reporting where memory was off > 2x. Memory is still approximate, but it's MUCH closer (+/-10%).
2009.October 22 Bennett Repository HEAD declared UNSTABLE for development of improved "meta-module" support.
2009.October 22 Bennett Now testing with MIPAV 4.3.1
2009.October 22 Bennett Added global preference for debug level.
2009.October 22 Bennett Changed the default java to be the one used with the current version of MIPAV (unless the global preferences have been set)
2009.October 22 Bennett Fixed a bug where global preferences might not be saved.
2009.October 22 Bennett Added static methods logError, logOutput, logFlush to JistPreferences. Strongly reccomend using this framework for printing output as it respects the user's wishes for vebosity of output.
2009.October 22 Bennett Fixed a bug with volumes not properly appearing in selectors when they were loaded. Reported a bug with extra println's to Mipav.
2009.October 22 Bennett Formally adopted JistLogger. Added MANY extra prefixs to all existing System.out calls.
2009.October 22 Bennett Improved logger so that source code line is noted with debug>CONFIG and memory is logged for INTENSIVE levels.
2009.October 23 Bennett Making progress toward stablizing internal memory management for meta-modules
2009.October 28 Bennett Forced process destination to dispose of local resources after each write.
2009.October 28 Bennett Fixed MASSIVE memory leak in ImageDataMipav. Most memory issues should be resolved.
2009.October 28 Bennett Rewrote large sections of the process destination framework. Output destinations should no longer require ALL outputs in memory at once! Big bug fix!
2009.October 28 Bennett Added class ImageDataMipavWrapper to allow ModelImages to be consumed by ImageData objects. ALL other structures COPY image data when created. Much debugging is needed to reduce copying.
2009.October 28 Bennett Memory NOTES:
                0. Any call to a new ImageData object except ...Wrapper will generate a new FULL copy of the data.
                1. Any call to getModelImage() MUST be freed with a call to dispose
                2. Any call to getModelImageCache() SHOULD NOT be freed
                3. Any call to extactModelImage() DISTROYS the ImageData object and must be freed
                4. Parameter objects will maintain a cache of an imagedata object in model image format if the object is not of type modelimagemipav
                5. Parameter objects will clean up after themselves
                6. ImageData objects will clean up after themselves
2009.October 28 Bennett This behavior is now well-respected by the infrastructure. However, MAJOR changes are needed to the plugin tree to prevent massive memory leaks due to #1 above. Improper use of #0 above will not cause leaks but will waste resources for allocating and deallocating.
2009.October 29 Bennett REMOVED ModelImage fromm Params! Massive refactor. Many items sure to break. Unfortunate, but only way to consistently deal with memory issues and prevent duplicate copies of images.
2009.October 29 Bennett Refactored CubicVolumeReaderWriter to ImageDataReaderWriter... (remove legacy naming at same time as annoying refactor)
2009.October 29 Bennett Removed unused imports in all base files to ensure more clear dependences.
2009.October 29 Bennett Removed dispose from parameters and destintions. This should be seamless with the datatypes.
2009.October 29 Bennett Revised Memmory NOTES:
                0. Any call to any new ImageData object (except ...Wrapper) will generate a new FULL copy of the data.
                1. Any ModelImage may be converted into an ImageData object without copying by creating a new ImageDataMipavWrapper(). This ModelImage should NOT be freed. (The infrastructure will handle that.)
                2. Any call to getModelImageCopy() will create a �RISKY� clone of a image and must be freed by the user through disposeLocal. The infrastructure WILL NOT use this method in publicly facing code.
                3. For efficiency, ImageData objects of the subclass ImageDataMipav will expose their internal modelimage objects to the user through getModelImageDirect(). These SHOULD NEVER be freed.
                4. A ImageDataMipav object may be converted into a ModelImage through extactModelImage(). This DESTROYS the ImageData object and the resulting ModelImage MUST BE FREED by the user.
                5. Parameter objects will NO LONGER maintain a cache of an ModelImage.
                6. Parameter objects will clean up after themselves � no dispose is needed. Just set your reference to null.
                7. ImageData objects will clean up after themselves � no dispose is needed. Just set your reference to null.
                8. It will NOT be possible to get ModelImage references or lists directly from any parameter type. All outward representations will either use ImageData or ParamVolume as the base class.  
                9. All changes to ImageData headers should be made through setHeader/getHeader. It is likely that your algorithm will be called with data of the ImageDataMipav type and you MAY have direct access to a ModelImage. However, there is no guarantee that this will happen, so you MAY need to create a duplicate copy of the image data if you MUST work directly on ModelImages.
                10. The previously proposed mechanisms of instructing JIST to write outputs and free inputs will function.
2009.October 29 Bennett Fixed a bug with the logger padding.
2009.November 18 Bennett/Blake NITRC Bug 4364  ImageDataColor constructor sets slices and components incorrectly
2009.November 18 Bennett/Blake NITRC [#4353] Cannot retrieve 2D image values
2009.November 18 Bennett/Blake NITRC [#4351] Image selection components don't render in PLT
2009.November 18 Bennett ParamVolume now uses filename for name in case name is null
2009.November 18 Bennett Headers are now set using: setHeader/setName throughout the diffusion plugins
2009.November 18 Bennett Removed layer class ParamVolumeLocationCollection. Not needed. Simplified constructors for ParamVolumeCollection
2009.November 18 Bennett Removed ParamVolumeLocation. Attempting to streamline all volume access through ParamVolume.
2009.November 18 Bennett All open source infrastructure and plugins now compile.
2009.November 18 Bennett Minor tweaks. All GUI tools now start and stop without error.
2009.November 18 Bennett ParamVolumeURIInputView appears to be fixed. Images no longer close "automatically" when JIST opens.
2009.November 18 Bennett ParamVolumeCollectionURIInputView appears to be fixed.  
2009.November 18 Bennett JIST User Interface and Infrastructure Core Appear Stable. Moving on to newly developed memory tools.
2009.November 18 Bennett Current Status - Beta 1.5
* Plugin
    * PASS - Run basic test - Generated Random Volume
    * PASS - Scale an image that is currently open
    * PASS - Scale an image from disk
    * PASS - Register two images from the registry
    * PASS - MemoryDemo
* Layout Tool
    * PASS - Design basic layout - Generated Random Volume
    * PASS - Design two level layout - registered two random volumes
    * PASS - Setup layout to register two images from the registry    
    * PASS - Open/Close/Select Images from the registry
* Process Manager
    * PASS - Run basic test - Generated Random Volume
    * PASS - Design two level layout - registered two random volumes (includes process monitoring)
    * PASS - Process layout with images from registry
    * PASS - MemoryTest - FreeInputVolume
    * PASS - MemoryTest - FreeOutputVolume
    * PASS - MemoryTest - FreeOutputVolumeCollection (writeNOW)
    * PASS - MemoryTest - Test freeInput Collection
    * PASS - Process destination
2009.November 23 Bennett [Plugins] Fixed naming of dual echo T2 estimates.
2009.December 01 Bennett Added Number support back into set methods of ImageData.  Fixed 3D collection issue.
2009.December 10 Bennett/Han Extended ImageArithmetic Module.
2009.December 10 Bennett/Han Replave ImageCollectionAlgebra .
2009.December 14 Bennett/John Bug fix to fiber collection.
2009.December 15 Bennett/John Fixed support for signed bytes. Added error messages for types with limited support.
2009.December 15 Bennett Added StartJISTPlugInSelector Main class.
2009.December 15 Bennett/Blake Process Manager slow to respond when restarting a large number of experiments.
2009.December 16 Bennett/John Added methods to image header.
2010.January 05 Bennett Added proper build ID to About box.
2010.January 05 Bennett/Min Updated ModelImageReaderWriter to use the JIST preferences when called directly.
2010.January 05 Bennett/Min Default file preferneces for volumes are now cached at write time (rather than startup) so that command line options can alter default behavior.
2010.January 05 Bennett Fixed MIPAV Script Adapater. Note: Memory is handled EXACTLY like with MIPAV scripts. Input and intermediate volumes are NOT closed unless they are closed by the script.  
2010.January 06 Bennett [#4343] Bug in Volume Pins? - Collection pins now correctly grab all inputs.
2010.January 07 Bennett Replaced JIST plugin search path from all .edu to all paths noted in classes that implement JistModulesLocation located in the jist.modules package. All subpackages of these packages are searched.
2010.January 08 Bennett/Evan Wrote first pass of MIPAV plugin detection routines via ActionDiscovery interface. Bridge is functional, but some improvements are necessary for complex plugins (e.g., registration).
2010.January 19 Bennett Image file read/writes now logged at level "FINE".
To do:
1. (IACL Internal): Update all non-compiling PGCVS/CRUISE modules
2. Inspect all uses of ModelImage in the module tree
3. Revise all "File" input/output hacks to use ParamVolume with proper memeory management.
4. Memory IS still an issue for many plugins. All uses of model image should be CAREFULLY vetted.
5. Memory should report peak memory rather than final memory

Features needed:
1. Export/Import layouts in a cross-version robust syntax (do not use serialized XML)
2. Verify - Command Line Adapter
3. Verify - MIPAV Script Adapter

Style Changes
1. Replace all System.out and System.err calls with JistLogger posts at an appropriate debug level
2. Add a status reporting module to all modules so that the user can appreciate progress.
2010.January 11 Aaron/Min CLI enhancments, allows the calling of JIST modules transparently from Slicer as a Slicer CLI modules. Functionality only tested with "SPECTRE2009" module from IACL/PGCVS.
        Affected files:
        src/edu/jhu/ece/iacl/jist/cli/JistCLI.java
        src/edu/jhu/ece/iacl/jist/cli/run.java
2010.January.31 Bennett As per request, the head build of JIST 1.7 has ParamVolumes which have a ImageDataIntent field. See the get/set methods. This should be useful for CLI integration.
2010.February.01 Bennett As per request, added support to read/write .gz and .bz2 compressed images files. Input should be "seamless". Output should automatically file user preferences. Please report any plugins that ignore the output preferences.
2010.February.01 Bennett Fixed significant problems with plugins:
    ** MedicAlgorithmExtractAllComponents : Memory / bad i/o routines
    ** MedicAlgorithmFLIRTCollection : Forced outputs to be incrementally written.
    ** MedicAlgorithmEfficientFileCollectionRegistration : Removed dependence on "File" for "ImageData" objects.
    ** DWITensorEstLLMSE  : Removed dependence on "File" for "ImageData" objects.
2010.March.02 Kelsie/Bennett Fixed a bug in pipeLayout  where mipav algorithms were all generated with the same module name.
2010.March.03 Min/Bennett ParamVolume.clone now CLONES the underlying image data object.
2010.March.03 Blake/Bennett Fixed a bug where ParamVolumes could bypass validation in layout tool.
2010.March.03 Bennett Fixed a bug with creating ImageDataMipav volumes  with "." in the file name.
2010.March.04 Bennett Resolved additional issues with compression and multiple "." in the name.
2010.March.09 Bennett Removed use of MIPAV's makeImageName and setImageName functions due to incompatabilities with multiple "." in image names.
2010.March.09 Bennett Fixed a bug that caused expansion of "safe" filenames.   
2010.March.12 Updated setValue in paramfile to also set the uri. Demote "null error" in refresher to a fine info message - it's caused by an object changing asynchronously and poses little trouble except  screen flickers.
2010.March.15 Bennett /John/Aaron Round in bounds.
2010.March.23 Bennett Per request added getCurrentScheduler to ProcessManager.
2010.March.25 Bennett Fixed bug related to writing compressed XML files.
2010.March.24 Bennett Fixed bug in BinaryHeap implementations.
2010.March.15 Bennett Added a preference for layout format type (.layout versus .LayoutXML). WIP to support robust serialization of layouts.
2010.March.15 Bennett Added a xmlEncodeParam method to all parameters. Add xmlEncodeModule to PipeModules and subclasses with serializable data.
2010.March.25 Bennett Added first version of .LayoutXML file formats. See below for progress.
2010.March.25 Bennett Connections are now deserialized by module label and parameter label. Module labels are made unique to each layout. It is a programmer error to have two connectable parameters in module have the same label.
2010.March.25 Bennett Updated MedicAlgorithmExecutableAdapter for reconcileAndMerge.
2010.March.25 Bennett Finished deserialization of modules in LayoutXML.
2010.April.01 Bennett Finished serialization and deserialization of sources in LayoutXML.
2010.April.01 Bennett Finished serialization and deserialization of destinations in LayoutXML.
2010.April.01 Bennett Added bypass to source/destination merge.
2010.April.01 Bennett Bugfix in parampoint* and other param modules with null inputs.
LayoutXML Progress (as of 4/1/2010)
Serialized:
    YES - All modules (PipeAlg)
    YES - Connections
    YES - Sources
    YES - Destination
De-Serialized:
    YES - Modules (PipeAlg)
        YES - JIST
        YES - Mipav  (verifies MIPAV class exists)
        YES - script (nothing special needed - uses internal strings to store scripts)
        YES - MedicAlgorithmExecutableAdapter/loni
        YES - layout (added nested validation for layouts)
    YES - Connections
    YES - Sources
    YES - Destination
Reconcile:
    YES - Modules
    YES(bypass) - Sources
    YES(bypass) - Destinations
2010.April.01 NONE Aaron Bug fix in how the --out flags worked. Only affected file is edu/jhu/ece/iacl/jist/cli/run.java
2010.April.06 Bennett Bug fixed in XML coding of extension filters.
2010.April.06 Bennett Bug fixed in decoding of XML ParamOption (missing decode function)
2010.April.06 Bennett Bug fix - Need to force all XML Decode functions to call the same initialization steps as the constructor (for steps that depend on loaded values).
2010.April.06 Bennett Bug fix - Need to have all destinations use copy of output param located in their output rather than dual serialization.
2010.April.06 Bennett Bug fix - Need to have all souces use copy of output param located in their output rather than dual serialization.
2010.April.06 Bennett Mirrored copies of parameters in sources and destinations now set properly. Only one copy is serialized.
2010.April.07 Bennett Bug fix in ImageHeader - fixed difference in image units between JIST and MIPAV enums.
2010.April.08 Bennett Fixed a bug in ParamFileCollection's serialization.
2010.April.14 Bennett Fixed a bug with ParamFiles and no extension filter.
2010.April.14 Bennett Fixed a bug where a collection->item pin connection would not serialize WHICH item in the collection was to be used.    
2010.April.14 Bennett Fixed a bug with compressed .xml.gz or .xml.bz image files
2010.April.14 Bennett Fixed a bug with LayoutXML in which headers would not be properly deserialized.
2010.April.14 Bennett Fixed a bug with serialization of number collections.
2010.April.16 Bennett Allowed collections to have empty rows. Experiments corresponding to empty rows will show up as NOT_READY (rather than start then fail).
2010.April.16 Bennett Added debugging information to MIPAV plugin interfaces.
2010.April.20 Bennett Bug fix for large layouts and cloning optional parameters.
2010.April.22 Bennett Configured JIST to randomize temporary directories to prevent name-space conflicts during multi-process runs.   
2010.April.28 Bennett Added to ParamFileCollection protected DialogType dialogType=DialogType.DIRECTORY; (NOT SERIALIZED)
2010.April.28 Bennett Fixed a bug where nested sources were not recovered from LayoutXML format.
2010.April.29 Bennett Forced execution context to only check if the disk is out-of-state upon a reset/clean/etc. Should resolve some (most?) issues with very large layouts.
2010.May.17 Bennett/Min Fixed bug in constructor of  ImageDataUByte  that could cause wrap-around.
2010.May.18 Bennett Added addition checked to ImageData comparable headers.
2010.May.18 Bennett Added an integrated check to ImageData for comparable extents.
2010.May.19 Bennett Deprecated writeVerbose in ModelImageReaderWriter to enforce a single write-path for images regardless of run context.
2010.May.19 Bennett Altered write framework so that writeObject could report that contents were written to a different file than requested.
2010.May.19 Bennett Added deleteImageFile to ImageDataReaderWriter
2010.May.24 Bennett/John Added overloaded methods to VoxelIndexed.   
2010.June.03 Bennett Added correctForDirection to ImageHeader
2010.June.03 Bennett Bugfix in xmlDecode for ParamNumberCollection
2010.June.08 Bennett Updating to new VOI structure in nightly build
2010.June.08 Bennett Added additional error checking for building JIST module tree when invalid classes are detected or referenced
2010.June.15 Bennett super((short)0,name,dim, 0); //Added 0 to constructor for VOI
2010.June.15 Bennett Removed reference (unused) to import gov.nih.mipav.model.file.FileProject;
2010.June.23 Bennett Refactored reader/writer for static extension filters (these are static/singleton objects)
2010.June.29 Bennett Added error reporting for ExecutionContext initialization.
2010.July.13 Bennett Fixed destination save resource in PipeScheduler.
2010.July.13 Bennett Fixed many issues relating to datatypes having individual file extension filters.
2010.July.13 Bennett Resolved issues with volume conversion support. Refactored existing plugins.
2010.July.27 Bennett Resolved an issue if a parameter name was not set. =======
2010.June.29 Bennett Added error reporting for ExecutionContext initialization.
2010.July.22 Aaron Added a try catch block in ParamObject.java. Trying
to address a problem were a ParamObject is left empty because it is
not a mandatory value.
2010.August.03 Bennett Fixed a serialization issue with PipeVolumeCollectionSource.
2010.August.04 Bennett Fixed a bug in ParamNumberTextInputView where invalid values could be specified in the GUI.
2010.August.06 Bennett/Min Added support for module search (BETA).  
2010.August.09 Bennett Update to the search function. Added tooltips.
2010.August.11 Bennett Fixed to public void add(Object value) methods to prevent name clash with more strict type checking.
2010.August.13 Bennett Fixed a bug where destinations could ignore some of their inputs.
2010.August.13 Bennett Added Search support to the plugin selector (removed much LAYOUT dependence)
2010.August.13 Bennett Added CTRL-R reset support to search field.
2010.August.16 Bennett/John Fix header issues for 2D.
2010.August.17 Bennett/Blake Fixed a bug in paramsurfacecollection.
2010.August.20 Bennett/Min Bug fix for: I updated the code to assume that getAxisDirection is completely derived from getAxisOrientation and not a modifier.
2010.August.26 Bennett PipeLayout changed so that both layout formats can be used without adjusting preferences. Default changed to LayoutXML. Stated support for "pipe" removed due to issues of inconsistent pipe layouts. The parser for .pipe is still active, just not reported.
2010.September.27 Bennett [#5232] File Open Dialog and Default Preferences: I could not reproduce this bug using my current version. I suspect it is platform dependent. However, I noticed that a potential bug in line 216 of FileExtensionFilter. We now explicitly check the "null" case and this error should not appear. Please let me know if you have any continuing problems.
2010.September.27 Bennett DONE: [jist-Feature Requests][5239] I'd like to change the "Rebuild Library" call to a YES_NO_CANCEL_OPTION, instead of the YES_NO_OPTION. I seem to click "Rebuild Library" quite a bit by mistake... alternatively we could add an old geezers mode.
2010.September.29 Bennett For Debian Compliance: Removed calls to setOffscreenValid(false); Now compat. with new LGPL version of JGraph 5.12.1.2
2010.September.29 Bennett Removed broken option from layout tool menu. Added screenshot ability.
2010.September.29 Bennett Added print screen support for processmanager.
2010.October.6 Aaron Added some functionality to BinaryMinHeap, shouldn't affect old code.
2010.October.12 Bennett Fixed a bug in AlgorithmInformation where empty or null citation strings could cause modules not to run.    
2010.December.2 Bennett Fixed an error in ImageDataMipav.getMipavType with type mappings.
2010.December.2 Bennett Improved error logging for module failure.
2010.December.2 Bennett Fixed a bug in findPipePort where labels were being used instead of names for matching. (bug with LayoutXML format and script adapter plugins)
2010.December.2 Bennett Added reconcileAndMerge to MedicAlgorithmMipavAdapter to ensure ports and values properly initialized. (bug with LayoutXML format and script adapter plugins)
2010.December.8 Bennett Updated graphic resources from Vanderbilt undergraduate studio project.  
2011.January.6 Aaron Believe we fixed problem where the CLI wouldn't run if the module library hasn't been built.
2011.January.11 Aaron Slicer integration fixes.
2011.January.26 Bennett Change "Copy Files" destination to accept all types. If a non-file type is attached (e.g., number, matrix), then this is written to a ParamModel .xml file.
2011.January.27 Bennett Duplicated MipavCoordinateSystems to simul-port 5.1.1 and 5.2.0. Remove when support for 5.1.1 and 5.0.0 is no longer needed.
2011.January.31 Bennett / Natalie Fixed bug in askForLibraryDirectory which could freeze new installations.
2011.February.04 Bennett Changed buffering mechanism for VTKWriter
2011.February.09 BDewey Created MASI/VUIIS for new Modules for VUIIS
2011.February.09 BDewey Created JistMSWASSRMasked (Plugin) and MSWASSRMasked (Algorithm) in MASI/CEST - Creates a mask based on percent threshold and calculates WASSR shift
2011.February.10 Aaron Bug fixes to ArrayDoubleMtxReaderWriter.java,
ArrayDoubleTxtReaderWriter.java, and ArrayIntegerTxtReaderWriter.java.
2011.February.16 BDewey Updated JistMSWASSRMasked (Plugin) to consolidate multiple for loops
2011.February.16 BDewey Created CESTCalculation (Plugin) to calculate CEST values at the voxel level (Mask Optional)
2011.February.16 BDewey Created CESTCalc (Algorithm) to Separate Baseline Volumes from Offset Volumes
2011.February.16 BDewey Created ASYMCalculation (Plugin) to calculate asymmetry values at the voxel level (Mask Optional)
2011.February.27 Bennett Forced PipeLayout.java to use UTF-8 encoding on the base streams (for programmatically specified values).
2011.March.1 Kelsie/Bennett Added Ganymed SSH-2 for Java libraries for client-server communication.
2011.March.4 BDewey Created CESTRCalculation (replaces CESTCalculation) (Plugin) to calculate CESTR values at voxel level (Mask Optional)
2011.March.4 BDewey Created CESTShift (Plugin) to shift intensity values based on B0 map data at voxel level (Mask Optional)
2011.March.4 BDewey Created InterpMin (Plugin) to calculate shift values by finding the minimum of interpolated function (voxel level) (Creates optional mask based on % Threshold)
2011.March.4 BDewey Updated JistMSWASSRMasked based on debugging trials
2011.March.4 BDewey Updated ASYMCalculation to include optional smoothing
2011.March.4 BDewey Updated CESTCalc to inclued S0 calulations
2011.March.4 BDewey Created CESTSmooth to perform a shifting window average on intensity values
2011.March.4 BDewey Created InterpMinCalc to interpolated and find the minimum of the interpolation
2011.March.11 Bennett Update BndBox Polyhedron with code from BDewey.
2011.March.16 BDewey Updated InterpMin and JistMSWASSRMasked to use external mask volume.
2011.March.16 BDewey Created MaxThresMask to create a mask volume based on a percent of max threshold.
2011.March.16 BDewey Updated VUIIS Plugins to fix mask function (no mask is now allowed)
2011.March.24 Bennett Added support for numeric lists in MIPAV<->JIST bridge. Lists of PARAM_EXTERNAL_IMAGE and PARAM_STRING are not yet supported. Please let me know if you have an example that I could debug/test.
2011.April.05 Bennett Added first functionality to report bugs automatically to google docs.
2011.April.07 Bennett Modified Mipav plugin parser to collect all unexpected volume outputs into a default volume collection.
2011.April.08 Bennett Modified bug reports to go directly to NITRC.
2011.April.18 Bennett/Blake Fixed Volulme spelling.
2011.April.27 Bennett Flushed out GUI to generate test cases automatically.
2011.May.09 Bennett Fixed bug with modules not appearing right away. Replaced "collapse" with "insert" for jgraph call.
2011.May.30 Bennett / Blake Fixed Non-mandatory File parameters will throw a null pointer exception when running the process manager.
2011.May.30 Bennett Added error catch in edu.jhu.ece.iacl.jist.pipeline.gui.ProcessManagerTable.updateAvailableOptions(ProcessManagerTable.java:1022) for potential problems with loading output status upon refresh.   
2011.June.1 BDewey Added FLIRTRegCEST and GaussianCurve to VUIIS Folder (For FLIRT registration of CEST Volumes). Added GaussianFunction to Algorithms.
2011.June.3 BDewey Added FlattenImage and UnflattenImage to VUIIS Folder (For FLIRT registration of CEST Volumes). Updated FLIRTRegCEST, GaussianCurve and GaussianFunction.
2011.June.8 Bennett / Blake Updated Load Library preferences to default to $HOME/jist-lib if directory preferences cannot be loaded and MIPAV is not open. This should prevent some problems with errorneous dialog boxes and difficult install behavior.
2011.June.9 Bennett "I added a new option to the runLayout program for "xRunOutOfProcess". This will create a separate VM for each job (just like in the regular VM). Note that memory usage will be higher and there is some additional overhead for inter-process communication. " Also fixed some bugs with excessive logs on startup causing loops.
2011.June.13 Bennett/Blake Fix: [#5735] Pipe Summary Destination does not write out all incoming connections
2011.June.17 Bennett/Blake Bug fix to PipeParamCopyDestionation  
2011.December.9 Aaron Added Advanced Double/Integer Sweep.
2011.December.12 Bennett Added Override option for execution contexts (new Status enum type).
2011.December.15 Bennett/Blake line 777 in ProcessManager seems to work - repaint added
2011.December.15 Bennett/Blake The clone() function in ParamFile has a bug on line 193.
2011.December.15 Bennett/Blake ProcessManagerTable - fixed null assignment bug
2011.December 21 NO_TAG Aaron Added AdditionalDocURL to
AlgorithmInformation and infoButton to AlgorithmInformationDialog. If
AdditionalDocURL specifies a valid file resource in the CLASSPATH then
a button becomes available in AlgorithmInformationDialog to access the
valid file resource from the CLASSPATH, the file is displayed as
simple HTML.
2012.April.23 Bo Li change the line 653-763 and mouse function in line 1129-1145 in ProcessManager to render the volume directly.
2012.April.23 Bo Li change the line 287-307 in PipeMarqueeHandler to render the volume directly for pin in the layout panel.
2012.Sept.13 Bennett Fixed a bug in the mouse handler for ProcesManagerTable for uncaught null pointer.=======
2012.April.23 Bo Li change the line 653-763 and mouse function in line 1129-1145 in ProcessManagerTable to render the volume directly.
2012.April.23 Bo Li change the line 330-380 in PipeMarqueeHandler to render the volume directly for pin in the layout panel.
2012.April.28 Bo Li add line 698-744, and line 1254-1267 in ProcessManagerTable to show the input information, and display the input image.
2012.April.28, Bo Li changed the line 662-673 in ProcessManagerTable to show the info in the text area in oder to be able to be copied directly.
2012.April.28, Bo Li changed the line 289-352 in PipeMarqueeHandler to show the input info for the pin.
2012.April.30, Bo Li changed the line 441-495 in ProcessManager to generate the zip file for the testcase.
2012.May.8, Bo Li added line 405-622 in JISTValidationGHI to generate the test case file and zip file.
2012.May.17 NO_TAG Aaron Added Executable wrapper code.
2012.May.20,Bo Li added the CopyDirectory class in ece.iacl.io to make it easier to generate test case files for manager pane.
2012.May.20 Bo Li added line 405-647 in JISTValidationGHI to generate hierachical case file and zip file.
2012.May.22, Bo Li modified line 582-587 and 611-620 to show the relative path clearly.
2012.May.29,Bo Li add the runTest file to run the run.java to test the testcase zip file
2012.June.1, Bo Li change the algorithm to algorithm class name and remove the line 122 in ProcessManagerTable.
2012.June.7,Bo Li comment the exit(0) in run.java to make junit run.
2012.June.7, Bo Li change the output name inJISTValidationGUI in line 504.
2012.June.19,Bo Li change line 430-718 iin JISTValidationGUI to add the test type to the folder name.
2012.June.21,Bo Li change line 755-770 in JISTValidationGUI to get the test type 
2012.July.2 NO_TAG Aaron Added support for Surfaces and Mandatory tags to the GeneralScriptAdapter.
2012.August.2 NO_TAG Aaron GeneralScriptAdapter should now always match the output type given in the global preferences. Intermediate files in GeneralScriptAdapter, now get removed. GeneralScriptAdapter module folder names now match the external module name.
2012.August.2 NO_TAG Aaron PipePointDoubleSweepSource now takes n-steps, rather then taking a step of size specified as input.
2012.August.28 NO_TAG Aaron Added GlobalPreference for a JIST External Module Directory.
2012.Sept.13 Bennett Fixed a bug in the mouse handler for ProcesManagerTable for uncaught null pointer.
2012.Sept.14 Bennett xmlDecodeParam for ParamFileCollection with null filter extensions
2012.Sept.28 Andrew Added ability to save VolumeCollection to a user-specified directory
2012.Oct.22 NO_TAG Aaron Now easier to call an external script module from another external script module.
2012.Dec.31 NO_TAG Bo isis cloud
2013.Jan.02 NO_TAG Bo Initial support for cloud
2013.Jan.04 NO_TAG Bo Polish cloud-server menu
2013.Jan.04 NO_TAG Bo Add lib for Axis2
2013.Jan.04 NO_TAG Bo Run JIST on server-side
2013.Jan.04 NO_TAG Bo Exit server-side processes completely when job finished
2013.Jan.04 NO_TAG Bo stop querying server when jobs are finished.
2013.Jan.05 NO_TAG Bo Parse download URL from server response
2013.Jan.21 NO_TAG Bo Add input fields for JistCloud config (draft version)
2013.Jan.22 NO_TAG Bo Save experiment-specific configs
2013.Jan.23 NO_TAG Aaron New version of the Script Wrapper allows for better/sane handling of file names from input to output.

2013.Jan.29 Improve client-side interaction with cloud server (button needs more work)
2013.Jan.29 Post-process result (returned by cloud server) on client-side
2013.Feb.01 Enhance status of cloud job execution on client-side
2013.Feb.04 Fix job memory problem in cloud version for backward compatibility
2013.Mar.29 NO_TAG Aaron Fixed bug in constructor causing volume to be created with default header when it should have copied from the passed ImageData.
2013.Dec.1 NO_TAG Aaron Fixed PipeDoubleCollectionListSource and PipeIntegerCollectionListSource to actually work. Prior version had concatenated input to output incorrectly.
2014.Mar.31 NO_TAG Aaron Commented out some code in SurfaceVtkReaderWriter. It was causing problems in various other modules.
