2017-12-04 - Fiji + KNIP hackathon
From Monday, December 4, 2017 through Friday, December 15, 2017, the Max Planck Institute of Molecular Cell Biology and Genetics hosts ~50 developers at the Center for Systems Biology in Dresden, Germany for a hackathon to develop ImageJ2 and Fiji core infrastructure and plugins.
- 1 Voluntary hackathon calendar
- 2 Hackathon google doc
- 3 Hackathon on Twitter (#hackdd17)
- 4 Technical Discussions
- 5 Hackathon Progress
Voluntary hackathon calendar
Hackathon google doc
Hackathon on Twitter (#hackdd17)
N5, not HDF5
For more info on N5, check out the github repository here.
- feels like HDF5, but stores chunks(blocks) in separate files in the file system.
- is a Java library, but Constantin Pape already wrote a C++/python version of it: z5 (also matches "zarr" library), https://github.com/constantinpape/z5
- attributes are stored in an additional JSON file
- Discussion: should we define standard now as to how data should be stored in there to prevent an emergence of a zoo of different flavors as there is for HDF5?
- how to do time series where each timestep / angle could have different image size
- if we want a general "N5 viewer" for images, we'd have to add calibration data
- put this information around the N5 dataset, because it behaves more like a dataset within an H5 file.
- Perhaps make it versioned? Because a duck is not always a duck...
- why another file format?
- parallel writes (awesome for clusters with shared filesystem)
- there is a special type for label blocks
- blocks can have a halo
- the block grid does not need to be filled dense, some blocks could be missing
- couldn't this just be another flavor of HDF5?
- are parallel writes to the same block prevented by some kind of locks?
- the HDF5 team should be included in the discussions to learn from their mistakes - there is lots of information on parallel writing of HDF5 files out there
- Try to write a N5 dataset into a FUSE filesystem/file??? Could this be a work-around for the many-small-files issue?
- There is a fork of BigDataViewer for JavaFx. 
- BigDataViewer will be splitted into a UI independent part, and the Swing UI. This will make it possible to merge the JavaFx and Swing Version of BigDataViewer .
We discussed opportunities to improvement for the Bdv design:
- Slim the core of bdv, make it less smart and more predictable.
- Bdv handle for different UI toolkits,
- Use property pattern for settings like active source ...
- Actively add/remove views
- Update views (force cache-dropping) - for BDV add/remove views
- Access to color settings, overlap rendering, …
- Allow Grouping of views (externally is ok)
- Consider Accumulator / Composite that works with type other than ARGBType
- Make it easy to disable or replace Dialogs
- Make it easy to remove an overlay
- BdvVistools show function for converters/volatile
Matrix and Vector libraries
- Discussion notes: https://docs.google.com/document/d/12a_9AhFMJywm7y-SfZHuWB5cXwEkpCGt03Sxq8JVfMI/edit
- Compared different matrix and vector libaries: https://github.com/imglib/imglib2-matrix-shootout
- use ojAlgo for N-D matrix operations
- vector3 and vector4 is a complicated conclusion. probably use mastodon and JOML
ilastik - (Dominik Kutra, Carsten Haubold)
- developed an ImageJ2 plugin that allows to stream raw data and predictions from the work in progress ilastik processing backend: https://github.com/ilastik/org.ilastik.bdvsource
- discussed with Philipp Hanslovsky about the benefits of using the N5 format for communication
- the label block format together with the fact that datasets can be stored sparse could be a great foundation for label storage / communication
- played around with Constantin Pape's C++/Python N5 reader as available format on the ilastik server
- noticed that the only thing needed to serve a N5 dataset on the web is to serve the directory contents. Philipp wrote a N5 REST reader for BigCAT to talk to the ilastik server that way
- worked on some caching problems in the ilastik server
- discussed possible interfaces between Matthias Arzt's LabKit and ilastik-backend for interactive segmentation in ImageJ/BigDataViewer with an ilastik classifier backend
SciView - (Kyle Harrington, Ulrik Günther, Curtis Rueden)
- set up automatic deployment of Fiji update site that works on all operating sustems
- imglib2 images as textures on 3D objects
- imagej2-style logging
- public availability of SciView plugin
ImageJ server - (Curtis Rueden, Petr Bainar)
- discussed its design with respect to the ImageJ/Fiji architecture as well as its future use cases
- identified the most imminent issues, raised them on GitHub and brainstormed possible solutions
- demoed the new client to the community
- encouraged members of the community to use annotations specifying whether a SciJava plugin can run headless or not