From Monday, January 11, 2016 through Friday, January 22, 2016, Christian Birkhold (Dietz) of the University of Konstanz hosted ~30 developers at the KNIME Konstanz Regional Office for a hackathon to develop the KNIME Image Processing extensions along with the underlying ImageJ Ops library, as well as other supporting technologies such as ImgLib2 and ClearVolume.
Timeline
The following chart illustrates when everyone was present:
Hackathon progress
Mark Hiner
- Wrote a guide for developers (Automatic Update Site Uploads) on how to automatically upload to their update site
- Proof-of-concept’d restoring the Add Imports functionality to the script editor (imagej/imagej-ui-swing#67)
- Added Renjin-flavored R scripting to ImageJ (scijava/scripting-renjin)
- Got the Fiji downloads migrated to Java 8 bundles (see Downloads)
- Furthered development of the Ops Browser (imagej/imagej-ui-swing#60), including:
- Tailored User/Developer views
- Fuzzy filtering for Ops
- Collapsible details/javadoc pane
Curtis Rueden
- Improvements
- Added ops to convert images between types (using map) (convert-images)
- Improved inplace and hybrid op interfaces (binary-inplace, special-lookups)
- Improved the help op to support filtering by more criteria (special-help)
- Improved ImageJ tutorials to facilitate community members learning ImageJ2 (1)
- Improved structure of Script Editor Templates menu, thanks to discussions with Kyle Harrington (templates-menu)
- Marked ImageJ Legacy as optional, thanks to feedback from Kevin Mader and others (imagej/imagej@e8fbfeee)
- Added a main class to Fiji, for easier launching from an IDE, thanks to a discussion with Florian Jug (1)
- Added a View marker interface to ImgLib2, to facilitate “lightweight” ops (view-marker)
- Helped clean up Tim-Oliver Buchholz’s Ops Views PR (views)
- Helped Mark Hiner a bit with the Renjin script language (1)
- Helped Florian Jug and Tobias Pietzsch establish Jenkins jobs for MPI-CBG projects
- Bugs
- Fixed equals/hashCode problems with ImgLib2 integer types (imglib/imglib2#111)
- Fixed a bug in the SJC PrefService, noticed by Kyle Harrington (long-pref-keys)
- Fixed SCIFIO bug with DICOM format, noticed by Kevin Mader (dicom-file-list-npe)
- Fixed bug when executing ops as commands, noticed by Kyle Harrington (ops-as-commands)
- Investigated SJC bug in class loading, noticed by Eike Heinz, but no solution yet (scijava/scijava-common#219)
- Fixed Eclipse configuration to run enforcer only upon initial configuration (scijava/pom-scijava@022a7bea scijava/pom-scijava@022a7bea)
- Research
- Investigated improvements to Ops generic parameter matching. The problem is complex, but a solution is in the works.
- Explored possible Ops matching performance improvements (fast-op-index)
- Improved Jenkins jobs to build SNAPSHOT javadoc for all core SciJava components (scijava, scifio, imglib2 and imagej). as requested by Stefan Helfrich (1, 2, 3)
- Pair programming bug-fixes and enhancements:
- alias-for-img (with Kyle Harrington)
- refactor-stats-ops (with Jan Eglinger)
- fix-slicewise-op (with Jan Eglinger)
Robert Haase
- Implemented continuous (Hyper-)Ellipsoids, Rectangles and Binary operators for imglib2-roi.
- Developed prototype for “Data Explorer” window for ImageJ/Fiji
- holding various data structures like images, labelings, measurements (tables) and plots. The structure is persistent, so closing windows does not delete the items from the tree. They can be reopened.
- 2D/3D/nD? data is handled equally, so selecting/deleting labels for/from further analysis according to their properties is possible more or less independent from the labels dimensionality.
- Measurements on labels is based on imagej ops()
Patrick Winter
- org.knime.cluster the abstract implementation of the cluster integration in KNIME is now open source, enabling the community to easily implement their own cluster connector
- Wrapped metanodes (aka subnodes) can now be executed in the cluster and also support split input data (which was not the case with the previous implementation of metanodes)
- Implementation of cluster connectors got simpler since we removed the differentiation of single jobs and chunked jobs with a size of 1
- Many bugfixes in the old implementation, as well as fixes in org.knime.core (mostly concerning subnodes)
Ulrik Günther
- discussed future directions and extensions for ClearVolume with Loic Royer, Florian Jug and Tobias Pietzsch.
- moved scenegraph implementation for ClearVolume to own project for re-usability.
- moved ClearGL back to pure Java
- discussed possilibities for additional renderers (e.g. software renderer) with Kyle Harrington.
- discussed implementation with Loic Royer and wrote first tests.
Tobias Pietzsch
- reviewed, augmented and merged Jean-Yves Tinevez YAML serialization for ui-behaviour.
- moved ui-behaviour to the scijava org and set up jenkins jobs with Curtis Rueden, and released 1.0.0.
- fixed memory leak in BigDataViewer ([1]).
- worked on factor graph library for tracking/segmentation formulations with Florian Jug.
- reviewed and merged imglib2 PRs [2], [3], [4], [5], [6], [7], [8].
- unified naming of “source” and “target” in imglib2 Views and RealViews [9].
- investigated imglib2 PlanarImg bug with Christian Birkhold (Dietz) and Kyle Harrington.
Stefan Helfrich
- worked on integral image-based local thresholding ops
Technical discussions
- The future of 3D in ImageJ (1)
- How to handle “lazy” ops (imagej/imagej-ops#173)
Future directions
- Kyle Harrington - Explore updating the 3D Viewer to use Ops and ClearVolume under the hood.