Skip to main content

A GUI tool for visualizing and annotating immunofluorescence microscopy cell images.

Project description

License: GPL v3

AnnotateEZ

A lightweight GUI tool for visualizing and annotating immunofluorescence (IF) microscopy cell images stored in HDF5 format.

Features

  • Tile-based grid view of single-cell images with configurable layout
  • Multi-class annotation with customizable label names and colors
  • Configurable RGB channel mapping with per-channel gain control
  • Optional mask boundary overlay (binary or multi-cell instance masks)
  • Click-and-drag annotation for fast bulk labeling
  • Per-page lazy image loading with background prefetch — handles large datasets without loading everything into memory
  • Sort events by any DataFrame column without modifying the underlying data
  • Undo / redo with configurable depth
  • Dark and light themes
  • Full keyboard shortcut support
  • Annotations saved back to the source HDF5 file and exported to TSV

Input Format

The tool expects an HDF5 file with the following datasets:

Key Shape dtype Description
images (N, H, W, C) uint16 Multi-channel cell images
features pandas DataFrame Per-cell features (stored via df.to_hdf)
channels (C,) string Channel names
masks (optional) (N, H, W) or (N, H, W, 1) int Binary or instance-segmentation masks

Installation

pip install annotate-ez

Usage

# bash command
annotate-ez

Keyboard Shortcuts

Shortcut Action
/ Next / previous page
Alt+0Alt+6 Switch active label
0 Switch to RGB composite view
19 Switch to single-channel grayscale view (by channel index)
Ctrl+S Save annotations
Ctrl+Z Undo last annotation change
Ctrl+Y Redo

Annotation Tips

Single-click annotation Left-click any tile to assign the currently selected label. Right-click to reset it to the background class (label 0).

Click-and-drag annotation Hold the mouse button and drag across tiles to annotate multiple cells in one motion. The entire drag gesture counts as a single undo step, so you can reverse it with one Ctrl+Z.

Batch labeling Use the All button to assign the active label to every tile on the current page, or None to reset the entire page to background. Both actions are undoable.

Sorting for faster review Use the sort panel to reorder cells by any feature column (e.g., a confidence score or size metric) before annotating. Sort order is display-only — the saved DataFrame is never reordered.

Undo depth The default undo history keeps the last 3 steps. Increase max undo steps in Settings if you want a deeper history, keeping in mind that each step stores a full copy of all labels.

Configuration

On first launch, a default configuration file is created at:

~/.config/annotate-ez/config.yml

All settings are also editable via the Settings dialog inside the app. Key options:

Setting Description
theme dark or light
tile_size Pixel size of each image tile (always kept odd)
x_size / y_size Number of columns / rows in the tile grid
max_undo_steps Maximum number of undo steps stored in memory
image_key / data_key HDF5 dataset keys for images and features
output_dir Directory where the TSV export is written

Requirements

  • Python 3.8 – 3.9 (tested)
  • PyQt5 ≥ 5.15
  • h5py ≥ 3.1
  • pandas ≥ 1.3
  • numpy ≥ 1.21
  • tables ≥ 3.8
  • PyYAML ≥ 6.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

annotate_ez-0.1.0.tar.gz (46.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

annotate_ez-0.1.0-py3-none-any.whl (46.8 kB view details)

Uploaded Python 3

File details

Details for the file annotate_ez-0.1.0.tar.gz.

File metadata

  • Download URL: annotate_ez-0.1.0.tar.gz
  • Upload date:
  • Size: 46.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for annotate_ez-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d25f8b4c8bbfa9549b44140e2ac7e62bd66f7ff3cd535f091da2a81b953b8fc0
MD5 ad9a22b5045bfbd46795bcf855dfa31c
BLAKE2b-256 6a9fb69ab0468ce0cb3dbc673dfd770a2cfccc26bc324a4985df0cc0a87fb722

See more details on using hashes here.

Provenance

The following attestation bundles were made for annotate_ez-0.1.0.tar.gz:

Publisher: publish.yml on aminnaghdloo/annotateEZ

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file annotate_ez-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: annotate_ez-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 46.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for annotate_ez-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 feacac7d72e2f017c2d6eeb84d5e529e1e9fc33bdab848257957305a235a7275
MD5 0f3952474bab99ab3c11c99405073cc0
BLAKE2b-256 985b396b9e790a6f59b723fdaf2fe53757de0a7ff7b9f88cccf4a4c5ddfe983e

See more details on using hashes here.

Provenance

The following attestation bundles were made for annotate_ez-0.1.0-py3-none-any.whl:

Publisher: publish.yml on aminnaghdloo/annotateEZ

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page