The software FishInspector provides automatic feature detections in images of zebrafish embryos (body size, eye size, pigmentation). It is Matlab-based and provided as a Windows executable (no matlab installation needed).

The recent version requires images of a lateral position. It is important that the position is precise since deviation may confound with feature annotations. Images from any source can be used. However, depending on the image properties parameters may have to be adjusted. Furthermore, images obtained with normal microscope and not using an automated position system with embryos in glass capillaries require conversion using a KNIME workflow (the workflow is available as well). As a result of the analysis the software provides JSON files that contain the coordinates of the features. Coordinates are provided for eye, fish contour, notochord , otoliths, yolk sac, pericard and swimbladder. Furthermore, pigment cells in the notochord area are detected. Additional features can be manually annotated. It is the aim of the software to provide the coordinates, which may then be analysed subsequently to identify and quantify changes in the morphology of zebrafish embryos.

FishInspector Logo



This is a classical workflow for spot detection or blob like structures (vesicules, melanosomes,...)

Step 1 Laplacian of Gaussian to enhance spots . Paraeters= radius, about the average spot radius

Step 2 Detect minima (using Find Maxima with light background option to get minima). Parameter : Tolerance to Noise: to be tested, hard to predict. About the height of the enhanced feautures peaks

has topic
has function
spot detection

Creating an ImageJ plugin / command


The best way to start writing an ImageJ2 plugin (ImageJ2 developers call it command and not plugin) is to download the example command from github and modify it. There is a video tutorial on the whole workflow on how to do this on youtube.

has function

scikit-learn (sklearn)


Scikit-learn (sklearn) is a python library used for machine learning. sklearn contains simple and efficient tools for data mining and data analysis. Modules and functions include those for classification, regression, clustering, dimensionality reduction, model selection and data preprocessing. Many people have contributed to sklearn (list of authors)

has topic
scikit-learn logo.

Microscope autopilot


AutoPilot is the open source project that hosts the general algorithm for fast and robust assessment of local image quality, an automated computational method for image-based mapping of the three-dimensional light-sheet geometry inside a fluorescently labeled biological specimen, and a general algorithm for data-driven optimization of the system state of light-sheet microscopes capable of multi-color imaging with multiple illumination and detection arms.

has function

Interactive watershed


The interactive Watershed Fiji plugin provides an interactive way to explore local maxima and threshold values while a resulting label map is updated on the fly.

After the user has found a reliable parameter configuration, it is possible to apply the same parameters to other images in a headless mode, for example via ImageJ macro scripting.

Find Maxima (Python)



Maxima finding algorithm recreated from implementation in Fiji(ImageJ)

This is a re-implementation of the java plugin written by Michael Schmid and Wayne Rasband for ImageJ. The original java code source can be found in: 

This implementation remains faithful to the original implementation but is not 100% optimised. The java version is faster but this could be alleviated by compiling c code for parts of the code. This script is simply to provide the functionality of the ImageJ find maxima algorithm to individuals writing pure python script.

find maxima comparison.

2D Gaussian fitting macro (Fiji/ImageJ) for multiple signals.


This script includes a rough feature detection and then fine 2D Gaussian algorithm to fit Gaussians within detected regions. This macro is unique because the ImageJ/Fiji curve fitting API only supports 1-D curve. I get around this by linearising the equation. This implementation is for isotropic (spherical) or anistropic (longer in x/y) diagonally covariant Gaussians but not fully covariant Gaussians (anisotropic and rotated). 



SIMPLETRACKER a simple particle tracking algorithm that can deal with gaps.

Tracking , or particle linking, consist in re-building the trajectories of one or several particles as they move along time. Their position is reported at each frame, but their identity is yet unknown: we do not know what particle in one frame corresponding to a particle in the previous frame. Tracking algorithms aim at providing a solution for this problem. 

simpletracker.m is - as the name says - a simple implementation of a tracking algorithm, that can deal with gaps. A gap happens when one particle that was detected in one frame is not detected in the subsequent one. If not dealt with, this generates a track break, or a gap, in the frame where the particle disappear, and a false new track in the frame where it re-appear. 

need a thumbnail



Mean square displacement (MSD) analysis is a technique commonly used in colloidal studies and biophysics to determine what is the mode of displacement of particles followed over time. In particular, it can help determine whether the particle is:

  • freely diffusing;
  • transported;
  • bound and limited in its movement.

On top of this, it can also derive an estimate of the parameters of the movement, such as the diffusion coefficient.

@msdanalyzer is a MATLAB per-value class that helps performing this kind of analysis. The user provides several trajectories he measured, and the class can derive meaningful quantities for the determination of the movement modality, assuming that all particles follow the same movement model and sample the same environment.

has function
Examples of tracks to perform MSD analysis.