Skill Tracer
Skills › Scientific Agent Skills › exploratory-data-analysis › microscopy_imaging_formats.md

microscopy_imaging_formats.md

198 lines · skills/exploratory-data-analysis/references/microscopy_imaging_formats.md at 5f2bc03

Open on GitHub
1# Microscopy and Scientific Imaging Formats
2
3**Reviewed:** 2026-09-30
4**Executable scope:** Metadata-only PNG/JPEG and TIFF/OME-TIFF inspection.
5Pixels are never decoded by bundled tools.
6

Microscopy and Scientific Imaging Formats

Reviewed: 2026-09-30 Executable scope: Metadata-only PNG/JPEG and TIFF/OME-TIFF inspection. Pixels are never decoded by bundled tools.

Raw lines 1 to 6
7## Exact capability matrix
8
9| Format | Bundled inspection | Depth |
10|---|---|---|
11| `.png`, `.jpg`, `.jpeg` | Optional, `pillow==12.3.0` | Width, height, mode, frame count, format, and metadata-entry count |
12| `.tif`, `.tiff` | Optional, `tifffile==2026.9.20` | Bounded pages and generic series, shape/dtype, BigTIFF/OME flags |
13| `.ome.tif`, `.ome.tiff` | Optional, `tifffile==2026.9.20` | Same structural metadata; OME-XML values are not emitted or semantically validated |
14| ND2/CZI/LIF and other vendor microscopy | No | Reference-only vendor/Bio-Formats workflow |
15| DICOM/NIfTI/MRC | No | Reference-only medical/neuro/EM workflow |
16| SVS/NDPI and other whole-slide formats | No | Reference-only WSI workflow |
17| OME-Zarr/Zarr | No | Directory/store formats are outside the regular-file boundary |
19No bundled script supports “all Pillow formats” or “all tifffile formats.”
20Only the registered suffixes above are accepted. Unknown formats fail closed.

Exact capability matrix

FormatBundled inspectionDepth
.png, .jpg, .jpegOptional, pillow==12.3.0Width, height, mode, frame count, format, and metadata-entry count
.tif, .tiffOptional, tifffile==2026.9.20Bounded pages and generic series, shape/dtype, BigTIFF/OME flags
.ome.tif, .ome.tiffOptional, tifffile==2026.9.20Same structural metadata; OME-XML values are not emitted or semantically validated
ND2/CZI/LIF and other vendor microscopyNoReference-only vendor/Bio-Formats workflow
DICOM/NIfTI/MRCNoReference-only medical/neuro/EM workflow
SVS/NDPI and other whole-slide formatsNoReference-only WSI workflow
OME-Zarr/ZarrNoDirectory/store formats are outside the regular-file boundary

No bundled script supports “all Pillow formats” or “all tifffile formats.” Only the registered suffixes above are accepted. Unknown formats fail closed.

Raw lines 7 to 21
22## Metadata-only safety model
24Images and metadata can contain protected health information, accession
25numbers, specimen labels, GPS/EXIF fields, user comments, XML, external
26references, or adversarial text. The inspectors:
28- accept only bounded local regular files inside `--root`;
29- reject URLs, traversal, symlinks, special files, and suffix/signature
30 mismatches;
31- reject declared element counts above 100,000,000 and excessive TIFF
32 pages/series;
33- make Pillow decompression-bomb warnings fatal;
34- never call `load()`, `asarray()`, `imread()`, image codecs, or thumbnail
35 generation;
36- report metadata counts and structural facts, not EXIF/tag/OME-XML values;
37- never follow metadata links or embedded instructions; and
38- do not claim full corruption, codec, or semantic validation.
40Metadata-only access reduces decompression risk but is not a sandbox. Keep
41libraries pinned and inspect untrusted images in an isolated, resource-limited
42process when risk warrants it.

Metadata-only safety model

Images and metadata can contain protected health information, accession numbers, specimen labels, GPS/EXIF fields, user comments, XML, external references, or adversarial text. The inspectors:

  • accept only bounded local regular files inside --root;
  • reject URLs, traversal, symlinks, special files, and suffix/signature mismatches;
  • reject declared element counts above 100,000,000 and excessive TIFF pages/series;
  • make Pillow decompression-bomb warnings fatal;
  • never call load(), asarray(), imread(), image codecs, or thumbnail generation;
  • report metadata counts and structural facts, not EXIF/tag/OME-XML values;
  • never follow metadata links or embedded instructions; and
  • do not claim full corruption, codec, or semantic validation.

Metadata-only access reduces decompression risk but is not a sandbox. Keep libraries pinned and inspect untrusted images in an isolated, resource-limited process when risk warrants it.

Raw lines 22 to 43
44## PNG and JPEG
46Pillow's `Image.open()` is lazy: it identifies the container and reads enough
47header information to construct an image object. The bundled inspector closes
48the object without decoding pixels.

PNG and JPEG

Pillow's Image.open() is lazy: it identifies the container and reads enough header information to construct an image object. The bundled inspector closes the object without decoding pixels.

Raw lines 44 to 49
50### Interpret carefully
52- PNG may be palette, grayscale, RGB/RGBA, 8/16-bit, multi-frame/APNG, or carry
53 textual/profile chunks.
54- JPEG is lossy and normally unsuitable as a quantitative raw measurement
55 source. Repeated saves change pixels.
56- Width/height/mode do not establish bit-depth fidelity, calibration, channel
57 identity, linearity, saturation, or acquisition settings.
58- Metadata may be stale after image processing.
60For quantitative EDA, retain the acquisition-native image and compare
61container metadata to instrument records. Do not compute intensity statistics
62from display/export JPEGs.

Interpret carefully

  • PNG may be palette, grayscale, RGB/RGBA, 8/16-bit, multi-frame/APNG, or carry textual/profile chunks.
  • JPEG is lossy and normally unsuitable as a quantitative raw measurement source. Repeated saves change pixels.
  • Width/height/mode do not establish bit-depth fidelity, calibration, channel identity, linearity, saturation, or acquisition settings.
  • Metadata may be stale after image processing.

For quantitative EDA, retain the acquisition-native image and compare container metadata to instrument records. Do not compute intensity statistics from display/export JPEGs.

Raw lines 50 to 63
64## TIFF
66TIFF is a flexible container, not a single pixel organization. It can contain
67multiple pages, tiles/strips, pyramids, SubIFDs, private/vendor tags, external
68storage, and many compression schemes. A `.tif` suffix alone does not imply
69microscopy or OME conformance.
71The bundled tifffile inspector reports:
73- main-page and generic-series counts, bounded to 1,000 and 128;
74- per-series shape, axes, element count, and dtype kind/item size;
75- classic TIFF versus BigTIFF; and
76- whether tifffile identifies OME metadata.
78The current public `tiff.series(kind="generic")` API groups local pages without
79reconstructing OME/vendor dimensions or discovering companion files. The pinned
80`_multifile=False` argument adds an upstream internal safeguard; recheck it when
81upgrading tifffile. Shape and axes describe generic page groups, not validated
82OME XYZCT dimensions. Main pages plus declared immediate SubIFDs share the
831,000-entry limit. Nested pyramids are not exhaustively validated.
85The reader necessarily parses structural tag values internally but never emits
86raw tags or OME-XML. It does not decode compressed segments, validate every IFD,
87open companion storage, or establish scientifically correct axis semantics.

TIFF

TIFF is a flexible container, not a single pixel organization. It can contain multiple pages, tiles/strips, pyramids, SubIFDs, private/vendor tags, external storage, and many compression schemes. A .tif suffix alone does not imply microscopy or OME conformance.

The bundled tifffile inspector reports:

  • main-page and generic-series counts, bounded to 1,000 and 128;
  • per-series shape, axes, element count, and dtype kind/item size;
  • classic TIFF versus BigTIFF; and
  • whether tifffile identifies OME metadata.

The current public tiff.series(kind="generic") API groups local pages without reconstructing OME/vendor dimensions or discovering companion files. The pinned _multifile=False argument adds an upstream internal safeguard; recheck it when upgrading tifffile. Shape and axes describe generic page groups, not validated OME XYZCT dimensions. Main pages plus declared immediate SubIFDs share the 1,000-entry limit. Nested pyramids are not exhaustively validated.

The reader necessarily parses structural tag values internally but never emits raw tags or OME-XML. It does not decode compressed segments, validate every IFD, open companion storage, or establish scientifically correct axis semantics.

Raw lines 64 to 88
89## OME-TIFF
91OME-TIFF stores one or more image planes in TIFF and embeds an OME-XML metadata
92block. Multi-file datasets can use UUID-based references. The OME specification
93is richer than a filename convention.
95Before quantitative analysis, use OME-aware validation to confirm:
97- OME-XML schema/version and UUID/file references;
98- dimension order and sizes for X/Y/Z/C/T;
99- `TiffData` plane-to-IFD mapping;
100- physical pixel sizes and units;
101- channel names, wavelengths, detector/objective settings, and acquisition
102 times; and
103- whether pyramids, labels, ROIs, or companion files are expected.
105The bundled inspector deliberately does not emit OME-XML because it may contain
106identifiers or prompt-like text. `is_ome_tiff=true` is not a validation result.

OME-TIFF

OME-TIFF stores one or more image planes in TIFF and embeds an OME-XML metadata block. Multi-file datasets can use UUID-based references. The OME specification is richer than a filename convention.

Before quantitative analysis, use OME-aware validation to confirm:

  • OME-XML schema/version and UUID/file references;
  • dimension order and sizes for X/Y/Z/C/T;
  • TiffData plane-to-IFD mapping;
  • physical pixel sizes and units;
  • channel names, wavelengths, detector/objective settings, and acquisition times; and
  • whether pyramids, labels, ROIs, or companion files are expected.

The bundled inspector deliberately does not emit OME-XML because it may contain identifiers or prompt-like text. is_ome_tiff=true is not a validation result.

Raw lines 89 to 107
108## Reference-only vendor microscopy
110ND2, CZI, LIF, VSI, proprietary whole-slide files, and similar formats require
111a version-aware vendor reader or Bio-Formats. Capabilities vary by library,
112native dependency, file generation version, and series type. Do not choose a
113reader only from a suffix.
115Workflow:
1171. Preserve the original and capture instrument/software versions.
1182. Open a small approved file with a pinned reader in an isolated environment.
1193. Inventory scenes/series and XYZCT axes before loading pixels.
1204. Compare dimensions, calibration, channels, stage positions, and timestamps
121 to acquisition records.
1225. Bound tile/plane reads and never eagerly materialize a whole slide or 5-D
123 image.
1246. Convert a derived copy to OME-TIFF/OME-Zarr only with provenance and
125 round-trip checks.

Reference-only vendor microscopy

ND2, CZI, LIF, VSI, proprietary whole-slide files, and similar formats require a version-aware vendor reader or Bio-Formats. Capabilities vary by library, native dependency, file generation version, and series type. Do not choose a reader only from a suffix.

Workflow:

  1. Preserve the original and capture instrument/software versions.
  2. Open a small approved file with a pinned reader in an isolated environment.
  3. Inventory scenes/series and XYZCT axes before loading pixels.
  4. Compare dimensions, calibration, channels, stage positions, and timestamps to acquisition records.
  5. Bound tile/plane reads and never eagerly materialize a whole slide or 5-D image.
  6. Convert a derived copy to OME-TIFF/OME-Zarr only with provenance and round-trip checks.
Raw lines 108 to 126
127## Reference-only medical and whole-slide imaging

Reference-only medical and whole-slide imaging

Raw lines 127 to 128
129### DICOM
131DICOM is a clinical standard with extensive metadata and possible PHI. A
132single `.dcm` may be one instance in a study/series. Use institutional policy,
133approved de-identification, and DICOM-aware tools. Do not print patient, study,
134series, accession, date, burned-in annotation, or private-tag values.

DICOM

DICOM is a clinical standard with extensive metadata and possible PHI. A single .dcm may be one instance in a study/series. Use institutional policy, approved de-identification, and DICOM-aware tools. Do not print patient, study, series, accession, date, burned-in annotation, or private-tag values.

Raw lines 129 to 135
136### NIfTI
138Validate dimensions, voxel sizes, affine/qform/sform, units, orientation,
139scaling, and time axis with neuroimaging tooling. `.nii.gz` is compressed and
140is not decompressed by bundled scripts.

NIfTI

Validate dimensions, voxel sizes, affine/qform/sform, units, orientation, scaling, and time axis with neuroimaging tooling. .nii.gz is compressed and is not decompressed by bundled scripts.

Raw lines 136 to 141
142### Whole-slide imaging
144SVS, NDPI, and related formats are large tiled pyramids and may contain label or
145macro images with identifiers. Use OpenSlide/tiffslide or a validated vendor
146reader, inspect associated images, and sample bounded tiles. Split by patient
147before tile generation to prevent leakage.

Whole-slide imaging

SVS, NDPI, and related formats are large tiled pyramids and may contain label or macro images with identifiers. Use OpenSlide/tiffslide or a validated vendor reader, inspect associated images, and sample bounded tiles. Split by patient before tile generation to prevent leakage.

Raw lines 142 to 148
149## Imaging EDA rigor
1511. Define the independent unit: pixel, object, field, well, section, specimen,
152 subject, or acquisition session.
1532. Separate biological from technical replication and avoid treating tiles or
154 cells from one specimen as independent subjects.
1553. Record calibration, units, bit depth, detector response, exposure, gain,
156 illumination, objective, channel, Z/T spacing, and processing history.
1574. Audit missing/corrupt planes, saturation, clipping, background, focus,
158 illumination, registration, segmentation, and batch/site effects.
1595. Preserve raw pixels. Do not automatically rescale, denoise, background
160 subtract, discard fields, or remove objects.
1616. Fit normalization, segmentation thresholds, feature selection, and models
162 on training specimens only; split subjects/specimens before tiling.
1637. Report object/field/specimen-level sensitivity, not only pooled pixels.
1648. Do not infer biological mechanism, diagnosis, or treatment effect from
165 descriptive image patterns.

Imaging EDA rigor

  1. Define the independent unit: pixel, object, field, well, section, specimen, subject, or acquisition session.
  2. Separate biological from technical replication and avoid treating tiles or cells from one specimen as independent subjects.
  3. Record calibration, units, bit depth, detector response, exposure, gain, illumination, objective, channel, Z/T spacing, and processing history.
  4. Audit missing/corrupt planes, saturation, clipping, background, focus, illumination, registration, segmentation, and batch/site effects.
  5. Preserve raw pixels. Do not automatically rescale, denoise, background subtract, discard fields, or remove objects.
  6. Fit normalization, segmentation thresholds, feature selection, and models on training specimens only; split subjects/specimens before tiling.
  7. Report object/field/specimen-level sensitivity, not only pooled pixels.
  8. Do not infer biological mechanism, diagnosis, or treatment effect from descriptive image patterns.
Raw lines 149 to 166
167## Pinned optional snapshot
169```bash
170uv pip install \
171 "pillow==12.3.0" \
172 "tifffile==2026.9.20" \
173 "numpy==2.5.3"
174```
176Pillow 12.3.0 was released 2026-07-01 and requires Python 3.10+.
177tifffile 2026.9.20 was released 2026-09-21 and requires Python 3.12+.
178Imagecodecs is not installed or invoked by the metadata-only inspector.

Pinned optional snapshot

uv pip install \
  "pillow==12.3.0" \
  "tifffile==2026.9.20" \
  "numpy==2.5.3"

Pillow 12.3.0 was released 2026-07-01 and requires Python 3.10+. tifffile 2026.9.20 was released 2026-09-21 and requires Python 3.12+. Imagecodecs is not installed or invoked by the metadata-only inspector.

Raw lines 167 to 179
180## Authoritative sources
182Current parser APIs and format guidance reviewed 2026-09-30. Historical
183methodology citations are retained as source context.
185- Pillow, [`Image` module and decompression-bomb protection](https://pillow.readthedocs.io/en/stable/reference/Image.html).
186- [Pillow PyPI](https://pypi.org/project/pillow/), version 12.3.0,
187 released 2026-07-01.
188- tifffile, [current API and generic-series examples](https://www.cgohlke.com/docs/tifffile/).
189- [tifffile PyPI](https://pypi.org/project/tifffile/), version 2026.9.20,
190 released 2026-09-21; upstream notes that codecs are required for decoding
191 compressed segments.
192- Library of Congress, [TIFF, Revision 6.0 format description](https://www.loc.gov/preservation/digital/formats/fdd/fdd000022.shtml)
193 and the ITU-hosted [TIFF 6.0 specification](https://www.itu.int/itudoc/itu-t/com16/tiff-fx/docs/tiff6.pdf).
194- OME, [OME-TIFF specification](https://ome-model.readthedocs.io/en/stable/ome-tiff/specification.html).
195- OME, [OME Data Model and File Formats](https://ome-model.readthedocs.io/en/stable/).
196- DICOM Standards Committee, [current DICOM standard](https://www.dicomstandard.org/current).
197- OpenSlide, [supported formats and Python API](https://openslide.org/api/python/).
198- National Academies (2019), [reproducibility and provenance](https://doi.org/10.17226/25303).

Authoritative sources

Current parser APIs and format guidance reviewed 2026-09-30. Historical methodology citations are retained as source context.

Raw lines 180 to 198