Guanine Crystal Analysis


A plugin for the guanine crystal segmentation, classification and characterization in the zebrafish eye

License BSD-3 PyPI Python Version tests codecov napari hub

A plugin for guanine crystal segmentation and classification in the zebrafish eye. More precisely, it provides a workflow that measures on guanine crystal labels and sorts out overlaying partially segmented crystals during classification.

This napari plugin was generated with Cookiecutter using @napari's cookiecutter-napari-plugin template.


This plugin is suited for users who

  • want to derive size-, shape and intensity-based parameters from individual guanine crystals
  • struggle with partially segmented or overlapping crystals
  • want to investigate further the size and shape of these guanine crystals

This plugin is not suited for users who

  • are interested in further investigations of intensity of guanine crystals

You can find the plugin in napari under Pluginsguanine-crystal-analysis

Image Input

This plugin can be used on individual 2D slices of z-stacks as the workflow was developed on such input. Therefore, the quality of the result might differ on differing input, like crops or maximum projections.

1. Normalization

You can normalize the image selecting Normalization where you only need to specify your input image and click on the Run button.

Normalizing the image helps to adjust the intensity values and needs to be applied here because the object segmenter is only trained on normalized images.

2. Segmentation

When selecting Segmentation, you need to select the normalized image and a minimum pixel count of label images and click on the Run button again. This avoids having too small and unhelpful labels and is set by default to 50 pixels. For the training of the model, an APOC pixel classifier was used.

3. Analyze Image

Under Analyze Image, you can extract features from your image and label image by selecting them and clicking on the Run button.
The extracted features are a combination of the two libraries napari-skimage-regionprops and napari-simpleitk-image-processing. They can be devided into size-, shape-, and intensity-based parameters:

areaaspect ratiomaximum intensity
perimetermean intensity
major-axis-lengthminimum intensity

You can find a glossary with an explanation of these features in this blog post Some of the guanine crystals are not correctly segmented because of overlay or interference patterns. This problem is addressed with the help of a classification step demonstrated next

4. Classify Objects

You can divide the crystal labels into predicted (blue) and discarded (brown) crystal labels using Classify Objects. There you can choose classifiers trained on intensity-, shape- and/or size-based parameters with the help of the checkboxes. For the training of the model, an APOC object classifier was used. It is recommended to later on not measure the parameters that the classifier was trained on, but other ones.

5. Bad Label Exclusion

Now, you can get rid of the discarded (brown) labels for further analysis using Bad Label Exclusion. Select the two label images of segmentation and classification result and press the Run button again. The result is a label image with only the predicted (blue) labels which are relabeled sequentially. If you want to derive measurements on these predicted labels, you can just use Analyze Image again.

"Analyze Deluxe"

You can also do all the explained steps in one click using the Analyze Deluxe function.


You can install guanine-crystal-analysis via pip:

pip install guanine-crystal-analysis

To install latest development version :

pip install git+


Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.


This project was done in collaboration with the Rita Mateus Laboratory. The images shown in the documentation and in the demo jupyter notebooks were acquired there. This project was supported by the Deutsche Forschungsgemeinschaft under Germany’s Excellence Strategy – EXC2068 - Cluster of Excellence "Physics of Life" of TU Dresden. This project has been made possible in part by grant number 2021-240341 (Napari plugin accelerator grant) from the Chan Zuckerberg Initiative DAF, an advised fund of the Silicon Valley Community Foundation.


Distributed under the terms of the BSD-3 license, "guanine-crystal-analysis" is free and open source software


If you encounter any problems, please file an issue along with a detailed description.


  • 0.0.2

Last updated:

  • 30 May 2023

First released:

  • 26 July 2022


Supported data:

  • Information not submitted

Plugin type:

GitHub activity:

  • Stars: 1
  • Forks: 0
  • Issues + PRs: 1

Python versions supported:

Operating system:


  • numpy
  • magicgui
  • qtpy
  • apoc
  • scikit-image
  • pandas
  • napari-simpleitk-image-processing
  • napari-skimage-regionprops
  • pyclesperanto-prototype
  • scikit-learn
  • napari-workflows

Sign up to receive updates