2011 Hackathon in Madison

The 2011 Madison Fiji/ImageJDev hackathon took place from Friday, January 28 until Friday, February 11. The topic was "Multidimensional Visualization and Analysis in Fiji."

Participants

There were 25 people participating at various times, though only a few stayed for the entire duration.

The following chart illustrates who attended, and when everyone was present:

* Madison locals include:

  • Barry DeZonia
  • Aivar Grislis
  • Mark Hiner
  • Rick Lentz
  • Melissa Linkert
  • Curtis Rueden
  • Kevin Eliceiri

Some locals were not present at the hackathon on weekends.

Thanks to all participants!

Locations

Our initial meeting place from Friday, January 28 through Sunday, January 30 was the Laboratory for Optical and Computational Instrumentation (LOCI), located at Room 271 Animal Sciences, 1675 Observatory Dr. [See map]

Starting Monday morning, the hackathon took place at the newly completed Wisconsin Institutes for Discovery (WID), located at 330 N. Orchard St. [See map]

Those from out of town stayed at the Best Western InnTowner, located at 2424 University Ave. [See map]

You can see a map of all three locations relative to each other.

Results

Here is a summary of the hackathon results, written by Johannes Schindelin, Stephan Saalfeld and Curtis Rueden. Note that there was simply too much activity to fully describe everything everyone worked on, but we have tried to summarize the most major items. Thanks to all who participated!

The most important work done is certainly the redesign of ImgLib (dubbed "ImgLib2"). Other design questions have been addressed, too:

  • How to reuse IJ2's plugin infrastructure (e.g. in the 3D Viewer)
  • How to wrap IJ1 elegantly (Javassist)
  • The strategy how to go about including IJ2 in Fiji as early as possible (even gradually)
  • How to support ROIs and annotations in the ImgLib
  • How to unify Dataset/imglib-algorithms/imglib-scripting into imglib-ops
  • How to unify the different places where per-project metadata are stored in Fiji (Maven, Updater, LICENSES, Debian packages)
  • How to integrate Micro-Manager into Fiji (multiple updater sites, preliminary work was done already in October in Berkeley, but now it is clear how we are going to do it for real)

All of these discussions benefited incredibly from the fact that all the people were in a room without telephone and other obligations.

Fiji

  • The submodules in the fiji.git repository have moved out of the top-level directory.
  • The MacOSX cross-compiler now supports PowerPC, too (Johannes Schindelin).
  • Quite a few usability enhancements for the Script Editor (Albert Cardona).
  • A long-standing bug in Script Editor's GUI handling was fixed (Albert Cardona).
  • 16-bit automatic thresholding was fixed.
  • Stephan Saalfeld's Panorama Viewer was integrated.
  • Debian packages are now built automatically every week (Mark Longair).
  • Java code can be inlined into Jython code very easily now (for more performance without leaving the high-level scripting behind) (Albert Cardona).
  • The Image Expression Parser was fixed to accomodate for a breakage in IJ1.
  • An alternative to the Tubeness algorithm which was published by Frangi was integrated into the Simple Neurite Tracer (Mark Longair).
  • Fiji allows scripts & macros to be inserted anywhere in the menu structure by putting them in the corresponding subdirectory of Fiji.app/plugins/Scripts/ (Curtis Rueden).
  • All scripts and macros inserted into the menus report that they were started, and they can be opened in the Script Editor when Shift was pressed before clicking on the respective menu entry.
  • There is now a "Scale by DPI" Javascript in the Image>Adjust menu (Curtis Rueden).
  • When Fiji was asked via the properties on MacOSX to run in 32-bit mode, it does so (Erwin Frise).
  • There is a base class for the Command Launcher of IJ1, reusable for every Swing application (and easily extended to AWT or whatever).
  • There have been too many improvements to the Advanced Trainable Segmentation (AKA WEKA Segmentation) (Ignacio Arganda-Carreras).
  • The OpenCL example from the ImageJ2 repository was ported to Fiji (and is slated to become a "scripting language") (Rick Lentz and Johannes Schindelin).
  • The Fiji Updater (multiple sites) is shaping up nicely; most importantly, there is a regression test now that is easily extended and understandable, which makes it much more straight-forward to go about extending the Updater (Johannes Schindelin).
  • Fiji Build now supports building of native code. This allows us to write plugins which link to, say, ITK.
  • Speaking of ITK, we got it to compile, and even to cross-compile (so far only one platform) in the Fiji framework (Luis Ibáñez).
  • For ITK to cross-compile, the cross-compiler needed to be fixed for C++.
  • In total, there were 390 commits to fiji.git alone, not counting any submodule.

ImgLib

  • Redesigned ImgLib core gaining the following improvements (Stephan Saalfeld, Stephan Preibisch and Tobias Pietzsch):
    • Separation of access to the domain and codomain (position vs. type-access)
    • Separation of iteration and random access
    • Separation of real and integer coordinate access
    • Virtualization of how data sets can be accessed, thus allowing generative functions, views on virtually transformed data, unevenly sampled data, and much more
    • Improved performance
    • Simplified generalized display
  • Added interactive panorama viewer as a plugin to Fiji (thanks Albert for doing the infrastructure)
  • Added integral images as a library component to the mpicbg submodule of Fiji with the following examplary applications:
    • Rapid mean filter
    • Rapid averaging downscaling
    • Rapid difference of mean filter
  • There is a basic interface design named imglib-ops which will allow a very concise formulation of new algorithms without harming performance (Barry DeZonia).

ImageJ2

  • Enabled support for IJ2-style plugins in the 3D Viewer [see r2190], which helped to further improve the plugin framework architecture. (Curtis Rueden and Bene Schmid)
  • Finalized the mechanism by which the ImageJ 1.x legacy support works, using a tool called Javassist to surgically alter IJ1 behavior where necessary [see r2175] (Curtis Rueden).
  • Improved how IJ1 plugins are called from IJ2 [see r2186] (Curtis Rueden).
  • Progress on combined spectral-lifetime visualization and analysis in IJ2 (Aivar Grislis).
  • Initial development toward a multi-resolution tiled viewer for IJ2 (Aivar Grislis).
  • Worked on making ITK available to ImageJ plugins (Luis Ibáñez).

Bio-Formats

  • ~50 commits to Bio-Formats, more than 20 tickets closed (Melissa Linkert).
  • Some issues for the new LSM 710 format were fixed (Melissa Linkert).
  • Progress toward integration of Bio-Formats with ITK (Luis Ibáñez and Mark Hiner).

TrakEM2

  • Work on a Reconstruct importer was started (Larry Lindsey).
  • MipMap generation can be disabled (Albert Cardona).
  • TrakEM2 projects can be exported to Web (Albert Cardona & Mark Longair).

3D Viewer

  • Six bugs from the bug tracker have been fixed, others marked as fixed (Benjamin Schmid).
  • The 3D Viewer supports full screen now (Benjamin Schmid).
  • The level-sets based object picker was released (Albert Cardona & Benjamin Schmid).
  • The 3D Viewer now uses Swing (Benjamin Schmid).
  • The 3D Viewer is no longer confused by ImageJ interpreting key strokes (Benjamin Schmid).
  • The 3D Viewer has a menu entry to export the current view as a new (2D) image (Benjamin Schmid).
  • The 3D Viewer now has a command launcher, too (Benjamin Schmid).

Micro-Manager

  • Plans for releases via the Fiji Updater (once it supports multiple update sites) (Arthur Edelstein).
  • Combining Micro-Manager and Fiji for automatic acquisition of insitus using a feedback loop to find the samples (Erwin Frise).