A parallel tile server for multi-channel/multi-spectrum pathology images
(multiplexed immunofluorescence, spectral imaging, multi-optical-path DICOM
whole-slide microscopy) -- a peer to caMicroscope's existing iipsrv-based tile
server (alt_iip/ca-iip), which only handles single-plane brightfield
slides.
Built on Kitware large_image (the
same library underlying the Digital Slide Archive/HistomicsTK), which already
solves pyramidal tiling math and server-side per-channel style compositing.
This repo adds the channel-semantics layer (OME-XML/DICOM-optical-path/OME-
NGFF -> a common ChannelDescriptor model) and a small Flask API on top.
docs/API.md-- endpoint reference.docs/ADR-0001-spike-findings.md-- what's confirmed-working vs. structural-only in this build, and why (read this before trusting any specific format claim).docs/INTEGRATION.md-- design spec for wiring this intocaracal/distro/camicroscope/slideloader(not yet implemented).
| Format | Status |
|---|---|
| OME-TIFF / plain TIFF | Fully implemented and verified end-to-end |
| OME-NGFF/Zarr | Implemented; not verified against a real fixture |
| Multi-optical-path DICOM | Implemented; not verified against a real fixture |
| QPTIFF, CZI, ND2, LIF | Not supported -- see ADR-0001 |
docker build -t camicroscope-mctile:dev .
# generate a synthetic multi-channel OME-TIFF fixture (already checked in at
# tests/fixtures/synthetic_multichannel.ome.tif -- rerun only if you need a
# different size/channel count)
python3 scripts/make_synthetic_ometiff.py --out tests/fixtures/synthetic_multichannel.ome.tif
# run the server against the fixtures dir
docker run --rm -p 8008:8008 \
-v "$(pwd)/tests/fixtures:/images:ro" \
camicroscope-mctile:dev
curl http://localhost:8008/healthz
curl http://localhost:8008/meta/synthetic_multichannel.ome.tifNative tile-decode (via large_image's libtiff bridge) segfaults on macOS/
arm64 with a Homebrew-installed libtiff (see ADR-0001) -- run tests inside the
project's own Linux image, not a local macOS venv:
docker run --rm -v "$(pwd):/var/www" camicroscope-mctile:dev bash -c \
"pip3 install --break-system-packages pytest && cd /var/www && python3 -m pytest -q tests/"34 tests, all passing as of this writing (18 unit + 16 integration).