# 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:

ImageSize = width:550 height:auto barincrement:20 PlotArea = left:25 right:25 top:15 bottom:30 TimeAxis = orientation:horizontal format:dd/mm/yyyy Colors =  id:c01 value:blue  id:c02 value:red  id:c03 value:green  id:c04 value:black  id:c05 value:magenta  id:c06 value:teal  id:c07 value:yelloworange  id:c08 value:skyblue  id:c09 value:claret  id:c10 value:oceanblue  id:c11 value:purple  id:c12 value:powderblue  id:c13 value:coral  id:c14 value:redorange  id:c15 value:kelleygreen  id:c16 value:orange  id:c17 value:lightpurple  id:c18 value:tan2  id:c19 value:gray(0.3)  id:gridLine value:gray(0.5)  id:canvas value:gray(0.8)  id:grid1  value:gray(0.4)  id:grid2  value:gray(0.2) BackgroundColors = canvas:canvas AlignBars = justify DateFormat = dd/mm/yyyy Period = from:27/01/2011 till:13/02/2011 ScaleMajor = increment:1 start:28/01/2011 unit:day grid:grid1 grid:white ScaleMinor = increment:1 start:28/01/2011 unit:day grid:grid2 grid:white 1. Legend = orientation:vertical left:35 top:130 PlotData =   align:left anchor:from fontsize:M width:15 shift:(4,-6) textcolor:black LineData =  at:27/01/2011 color:gridLine layer:back width:0.5  at:28/01/2011 color:gridLine layer:back width:0.5  at:29/01/2011 color:gridLine layer:back width:0.5  at:30/01/2011 color:gridLine layer:back width:0.5  at:31/01/2011 color:gridLine layer:back width:0.5  at:01/02/2011 color:gridLine layer:back width:0.5  at:02/02/2011 color:gridLine layer:back width:0.5  at:03/02/2011 color:gridLine layer:back width:0.5  at:04/02/2011 color:gridLine layer:back width:0.5  at:05/02/2011 color:gridLine layer:back width:0.5  at:06/02/2011 color:gridLine layer:back width:0.5  at:07/02/2011 color:gridLine layer:back width:0.5  at:08/02/2011 color:gridLine layer:back width:0.5  at:09/02/2011 color:gridLine layer:back width:0.5  at:10/02/2011 color:gridLine layer:back width:0.5  at:11/02/2011 color:gridLine layer:back width:0.5  at:12/02/2011 color:gridLine layer:back width:0.5  at:13/02/2011 color:gridLine layer:back width:0.5 BarData=  barset:Hackers PlotData=  width:15  fontsize:M  textcolor:white  align:left  anchor:from  shift:(4,-4)  color:black  barSet:Hackers  color:c01 from:06/02/2011 till:12/02/2011 text:"Larry Lindsey"  color:c02 from:06/02/2011 till:12/02/2011 text:"Luis Ibanez"  color:c03 from:04/02/2011 till:12/02/2011 text:"Ignacio Arganda-Carreras"  color:c04 from:01/02/2011 till:10/02/2011 text:"Benjamin Schmid"  color:c05 from:31/01/2011 till:07/02/2011 text:"Tobias Pietzsch"  color:c06 from:30/01/2011 till:06/02/2011 text:"Mark Longair"  color:c07 from:30/01/2011 till:05/02/2011 text:"Erwin Frise"  color:c08 from:30/01/2011 till:04/02/2011 text:"Lee Kamentsky"  color:c09 from:30/01/2011 till:04/02/2011 text:"Adam Fraser"  color:c10 from:30/01/2011 till:04/02/2011 text:"Arthur Edelstein"  color:c11 from:29/01/2011 till:05/02/2011 text:"Pavel Tomancak"  color:c12 from:28/01/2011 till:13/02/2011 text:"Johannes Schindelin"  color:c13 from:28/01/2011 till:12/02/2011 text:"Grant Harris"  color:c14 from:28/01/2011 till:07/02/2011 text:"Stephan Saalfeld"  color:c15 from:28/01/2011 till:03/02/2011 text:"Albert Cardona"  color:c16 from:27/01/2011 till:13/02/2011 text:"Madison Locals*"  color:c17 from:27/01/2011 till:09/02/2011 text:"Stephan Preibisch"  color:c18 from:27/01/2011 till:29/01/2011 text:"Mark Rowley"  color:c19 from:27/01/2011 till:29/01/2011 text:"Paul Barber"

* Madison locals include:

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

Some locals were not present at the hackathon on weekends.

 ![ link= | frame | Thanks to all participants!](/media/2011-madison-hackathon-small.jpg “ link=File:2011-madison-hackathon.jpg frame 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. http://maps.google.com/maps?q=1675+Observatory+Drive,+Madison,+WI See map

Starting Monday morning, the hackathon took place at the newly completed Wisconsin Institutes for Discovery (WID), located at 330 N. Orchard St. http://maps.google.com/maps?q=330+N.+Orchard+Street,+Madison,+WI See map

Those from out of town stayed at the Best Western InnTowner, located at 2424 University Ave. http://maps.google.com/maps?q=2424+University+Avenue,+Madison,+WI See map

## 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).