Skip to main content

PixelPatrol

Image Dataset Quality Control and Exploration

Example Report | Tutorials | Documentation | Viewer | PyPI

Image datasets are rarely as clean or consistent as they appear. PixelPatrol scans your images and builds a shareable, browser-based interactive report - file and image metadata, pixel statistics, quality metrics, and per-dimension slice statistics - so you can compare conditions, catch outliers, and verify batch consistency before you use the data.

Overview mode - every widget as a tile; click one to expand it in place.


Installation

Requires Python 3.12+. We recommend uv:

uv venv --python 3.12 .venv
source .venv/bin/activate   # Windows: .venv\Scripts\Activate.ps1
uv pip install pixel-patrol

Or with pip:

pip install pixel-patrol

For a modular install (core only + selected add-ons):

uv pip install pixel-patrol-base         # includes image quality metrics
uv pip install pixel-patrol-loader-bio   # BioIO, Zarr, Tifffile loaders

Quickstart

1. Process your dataset:

pixel-patrol process path/to/images/ -o results.parquet --loader bioio

For datasets with experimental conditions:

pixel-patrol process path/to/images/ -o results.parquet --loader bioio \
  -p condition_a -p condition_b

2. Explore in the viewer:

pixel-patrol view results.parquet

Or combine both steps with --view:

pixel-patrol process path/to/images/ -o results.parquet --loader bioio --view

To use viewer parameters, run the two commands sequentially:

pixel-patrol process path/to/images/ -o results.parquet --loader bioio && pixel-patrol view results.parquet

Or use the processing dashboard for a visual interface:

pixel-patrol launch

Python API

from pixel_patrol_base import api

project = api.create_project("my-project", base_dir="path/to/images/", loader="bioio")
api.add_paths(project, ["condition_a", "condition_b"])  # optional
api.process_files(project)
api.view(project)

Example visualizations

Scatter plot of image width and height per file.

Spot inconsistent crops or resolutions.

Violin plot of a per-image metric split by group.

See per-image spread and outliers, e.g. mean intensity, across groups.

Overlaid pixel intensity histograms for each group.

Compare brightness and contrast across conditions.


Sharing PixelPatrol results

Send the .parquet file and open it in the hosted viewer - no installation needed. Or build a self-contained static viewer:

pixel-patrol build-viewer-html -o viewer.html             # light (~7 MB), loads DuckDB WASM from a CDN
pixel-patrol build-viewer-html -o viewer.html --offline   # fully self-contained, works with no network

Note: The static viewer may not load very large parquet files (e.g. 5 GB+). Use pixel-patrol view for large reports.


Extending PixelPatrol

PixelPatrol is designed to be extended with custom loaders, processors, and viewer widgets as standalone Python packages. See pixel-patrol-example-extension for a working template, and the Extensions documentation.

Metadata

Release files for pixel-patrol 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pixel-patrol 0.9.0
File Size Uploaded
pixel_patrol-0.9.0.tar.gz 13.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pixel-patrol 0.9.0
File Interpreter ABI Platform
pixel_patrol-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.6 kB

Release files / pixel_patrol-0.9.0.tar.gz

Download URL pixel_patrol-0.9.0.tar.gz
Size 13.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1db2272d53cf850828c77cd11bba6c5c1e06ab565d51c025d4d838f1f6bd1f1d
BLAKE2b-256 checksum
How to use checksums
4469aee71724b2efa6c0ed35a55056d63d6d0c979722b85c43bb7c02702b5844
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / pixel_patrol-0.9.0-py3-none-any.whl

Download URL pixel_patrol-0.9.0-py3-none-any.whl
Size 3.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ae0fc96c37fd6e742ba9f4d02324b022dd99d3ed6608023fa97151d8243d92c
BLAKE2b-256 checksum
How to use checksums
ca0d3bbdd7fc18d91d23d8f6b1354df8a2bfd0448c5684a442482b633b7bd877
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

1.0.0

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page