The third DAIS Learnathon will take place from June 23 until June 29 2019.
You can also view the 2017 Learnathon and the 2018 Learnathon wiki pages!
Instructors
Benjamin Wilhelm “I am currently a Working Student at KNIME working on KNIME Image Processing and KNIME Deep Learning. I did an internship in the Jug-Lab at MPI-CBG / CSBD working on a Fiji Plugin for CARE and bringing CARE to KNIME. I love Linux, Git and open-source software.”
Brian Northan “I currently work as a contract Image Processing R&D Engineer. I have helped groups develop and commercialize deconvolution and single particle localization algorithms for novel instruments. I have strong ties to the open source community, and have made several contributions to ImageJ, specifically imagej-ops and imagej-tutorials. I’ve worked with groups such as the Open Science Foundation to develop reproducible workflows using KNIME. I’m also an adjunct instructor at the Department of Informatics, University at Albany, teaching Data Analysis using Python and KNIME.”
Deborah Schmidt “I started working as a Research Software Engineer at Florian Jug’s lab, MPI-CBG, one year ago. After building interactive installations and visualizations as a freelancer I discovered the Fiji community while searching for jobs in open source development. I currently rethink the Updater, I am responsible for the CSBDeep / CARE Fiji plugin and for the IJ2 Ops part of CLIJ.”’
Florian Jug “Florian is a group leader at the Center for Systems Biology Dresden (CSBD). His research aims at pushing the boundary of what computer vision and machine learning can do for the automated and semi-automated quantification of biological image data. Florian studied Computer Science at the TU Munich and obtained a PhD in the field of Computational Neuroscience from ETH Zurich. Next to developing novel methods for the (semi-)automated analysis of biomedical image data, his team is also critically involved in maintaining and developing the image analysis platform Fiji (www.fiji.sc).”
Florian Levett “After working as an engineer in the Bordeaux Imaging Center, I am currently a researcher in the Sibarita lab at the Interdisciplinary Institute for Neuroscience in Bordeaux. I wrote several ImageJ plugins for segmenting or quantifying the apposition or the morphology of different kind of biological models. I also developed from scratch two platforms called SR-Tesseler and Coloc-Tesseler for quantifying single-molecule localization microscopy data.”
John Bogovic ‘‘I am a postdoc in the Saalfeld lab at Janelia, working on anatomical templates, and large scale, multimodal image registration. I am the author of the Bigwarp Fiji plugin, and contribute to imglib2 and bigdataviewer. There is lots of room in my heart for both the “new hotness” of deep learning and “old school” computer vision techniques.”
Matthias Arzt “I started developing for Fiji, about three years ago. I’m actively developing Labkit, a Fiji Plugin for easy but big data capable image segmentation. And I’m contributing to the core of ImageJ and Fiji. I’m a big fan of simple, powerful and working software. I’m happy to discuss: How to integrate whatever amazing tools you have into ImageJ / Fiji.
Philipp Hanslovsky ‘‘I am currently a grad student in the Saalfeld lab at Janelia. I work on neuron reconstruction from electron microscopy data with machine learning and develop proof-reading and data annotation tools. I am an ImgLib2 and recent Kotlin enthusiast and enjoy writing efficient image processing and analysis software”
Tim-Oliver Buchholz ‘‘I am a PhD student in the Jug-Lab at MPI-CBG / CSBD. I work on content-aware image restoration applications for electron microscopy data. I learned about the ImageJ-Universe via KNIME Image Processing, contributed to imagej-ops and I am a fan of BigDataViewer.”
Pavel Moravec “I am a researcher at IT4Innovations National Supercomputing Center and a member of a group working on making the ImageJ2 / Fiji run in massive parallel High-Performance Computing environments and solving issues associated with such tasks. Our group works on processing large image data, especially from light sheet microscopy data, with batch processing pipelines. For this task, we are developing the scijava-parallel library with ParallelService and an extensions to imagej-server and its clients. In future, we consider extending the ParallelService to cloud environment as well. I am also dealing with issues arising from the need to transfer data to and from the HPC environment.”
Tobias Pietzsch ‘‘I’m a postdoc in the Jug and Zechner labs at MPI-CBG / CSBD. I am the coauthor and maintainer of ImgLib2, BigDataViewer, BigVolumeViewer, Mastodon, etc.”
Robert Haase ‘‘I’m a postdoc in Myers lab at MPI CBG / CSBD. I’m the creator of CLIJ. In my actual job, I develop, run and maintain custom smart microscopes on the ClearControl platform. Analysing images after acquisition but before writing them to disc is my thing. Our microscopes are so smart, they even use twitter.”
Ulrik Günther ‘‘Hey there! I’m currently a PhD student at the Sbalzarini Lab at CSBD. I’m trying to bring VR to microscopy and systems biology in general, e.g. by enabling VR control of microscopes, or developing scenery and the new 3D viewer for ImageJ, sciview.”
Schedule
See this page!
Preparation
Knowledge
We expect the course participants to be comfortable with:
- Using the Terminal / Unix Shell.
- Using Git Versioning Tool
- Programming Java
If you didn’t use the Terminal / Unix yet. Please go through chapters 1 to 3 of this online tutorial https://swcarpentry.github.io/shell-novice/.
If you don’t know git, please have a look at this tutorial: http://swcarpentry.github.io/git-novice/.
There many beginner books for Java. If you want to be well prepared, you may also want to learn about generics in Java.
Software
Bring your Laptop and make sure you have a Terminal, Git, and a Java IDE (Eclipse or IntelliJ) installed.
Monday
9:00 - 10:00
- Welcome by Florian Jug and Pavel Tomancak.
- Scientific speed dating
10:00 - 12:00 ImageJ2 API beating
- slides
- Coding a ImageJ2 plugin template
- Coding a workflow with ImageJ2
- Translating a workflow to the GPU
13:00-14:00 Reading and Writing Images
We will now use Simplified-IO, which is, as its creator Gaby Turek sais, putting lipstick on a pig. Never the less, it is very useful if you just want to open an image from disk or from some remote source. It is also useful to save TIFF files. The sole intention of this repository is to make loading and saving simple. (Yes, there are 1000 ways to open an image in ImageJ/Fiji, and this is yet another way… but since it is only wrapping other ways to open/save images, we will attempt to keep simplified-io stable even if we change what actually happens behind the scenes.)
For this little lecture our aim is to:
- Start a new Maven project called
io-lecture
or similar. - Either use the POM from an earlier project of yours, or be inspired by this page
- If you do so, be sure that you also create folders
src/main/java
next to the new POM. Then import into your IDE (e.g. Eclipse). - Please update the version of the SciJava parent POM to the latest version. Find out what version this is by using https://maven.scijava.org/#nexus-search;quick~pom-scijava.
- You will have to add the suitable dependency to your POM in order to use Simplified-IO. The readme at https://github.com/fiji/simplified-io will tell you more…
- Now please try to open the t1-head.zip image and show it on your screen.
- How to load the image might be seen in the readme at https://github.com/fiji/simplified-io.
- Soon we will learn more about how to view images, but for now you can, for example, use
ij.ui().show( "img", loadedImage )
, which is available as soon as you started an ImageJ2 viafinal ImageJ ij = new ImageJ()
.
- Just for fun you might also want to save the image you just loaded.
14:00-14:30 Viewing Images
Please download the Learnathon repo. Or get the code here
The images are here
Unzip and place the ‘images’ directory beside the learnathon-2019/ directory
Or if you cloned the ‘viewing-images’ repository independently, place ‘images’ directory 2 levels up.
Slides can be found here
15:00-16:00 ImageJ-Ops: DoG Pyramid
Widget-Demo showing all different widgets for all available input @Parameters.
16:00 - 16:30 Image and point transform concepts
Concepts:
- pixels are not little squares
- “Forward” transforms apply to points, “inverse” transforms apply for images. Here’s why
- Image cropping does not translate/move your image - respect the origin.
- Save any transformation you apply to disk, because:
- You can retransform an image from the original image + transform,
- You can not get a transformation back from the transformed image.
Tuesday
9:00 - 12:00 ImgLib2 deep dive
The course went through these examples: https://github.com/imglib/imglib2-introductory-workshop
13:00 - 14:00 Viewers: Big Data Viewer
The course went through these examples: https://github.com/bigdataviewer/bigdataviewer-workshop
14:00 - 15:00 Viewers: sciview
https://github.com/skalarproduktraum/sciview-tutorial
15:00 - 16:00 Paintara Demo
https://github.com/fiji/learnathon-2019/tree/-/paintera
Wednesday
9:00 - 10:30 ImgLib2: Neighborhoods and Labelings
The course went through the last two examples in https://github.com/imglib/imglib2-introductory-workshop
10:50 - 12:00 ROIs in ImageJ2
Presentation & Exercises: https://github.com/maarzt/imagej-roi-course
13:30 - 15:00 Spatial transformations with imglib2
The course consisted of three examples of transforming points and images, as well as a demonstration of rendering transformed points as an image.
https://github.com/bogovicj/transforms_tutorial
Thursday
9:00 - 12:00: SciJava - Services, Plugins, Commands & Context
The presentation and exercises can be found here: https://github.com/maarzt/imagej-scijava-course
13:00 - 15:00: KNIME Introduction
Friday
9:00 - 12:00 KNIME Image Processing Basics
Material can be found here https://github.com/knime-ip/knip-course
13:00 - 14:00 Imklib, Using imglib2 from Kotlin
https://github.com/hanslovsky/imklib-tutorial
14:00 - 15:00 SciJava Parallel Demonstration
https://github.com/fiji-hpc/scijava-parallel
15:00 - 16:00 Update Sites