Comparison with other tools
How OpenReadout relates to tools you may already use. Facts about other projects come from their public documentation. If something here is out of date, please open an issue. Several of these projects are the reference readers that OpenReadout is validated against.
At a glance
| OpenReadout | Bio-Formats | bioio | czifile / nd2 / liffile | msconvert (ProteoWizard) | |
|---|---|---|---|---|---|
| What it is | command-line tool, MCP server, Rust library, Python and R packages | Java library + command-line tools (showinf, bfconvert) |
Python image-reading API with per-format plugins | one Python library per format | mass-spectrometry converter (CLI and GUI) |
| Domain | lab-instrument files across many techniques | microscopy and related imaging | microscopy and related imaging | Zeiss CZI / Nikon ND2 / Leica LIF-family | mass spectrometry |
| Formats | over 90 (Formats) | 150+ | depends on installed plugins (CZI, ND2, LIF, OME-TIFF, OME-Zarr, Bio-Formats bridge, …) | 1 each | most vendor MS formats (Thermo, Bruker, Sciex, Agilent, Waters, Shimadzu) plus open ones |
| Runtime | none: one static binary | JVM | Python; some plugins need a JVM or native libraries | Python + NumPy (+ imagecodecs for compressed data) | vendor formats need the vendor DLLs, so Windows (or the Wine-based Docker image) |
| License | MIT OR Apache-2.0 | GPL-2.0+ for the format readers (some components BSD) | BSD-3 core; plugins vary (bioio-czi and bioio-lif are GPL-3.0) | BSD-3 | Apache-2.0 for ProteoWizard’s code; vendor reader libraries under vendor licenses |
| How formats were derived | from public files and permissively licensed documentation, logged per format (clean-room policy) | long-standing community reverse engineering and vendor contributions | delegates to the plugin’s library | author’s analysis and public information | vendor SDKs (the vendor DLLs) for vendor formats |
| Machine interface | JSON with published schemas, fixed exit codes, error hints, MCP tools | Java API; CLI output is text for people | Python objects (xarray, dask, NumPy) | Python objects | files; exit status |
| Metadata | normalized OME-style model, the vendor tree, and the provenance of each field | OME-XML model + original metadata | OME model via plugins (ome_types) + standard dims/channels/pixel sizes |
format-specific structures (nd2 is especially rich) | mzML (PSI-MS controlled vocabulary) |
| Integrity check | check: structure, truncation, missing planes (exit code 4) |
not a dedicated feature | no | no | no |
| Writes | open formats such as OME-TIFF, OME-Zarr, mzML, Parquet and NWB (list); doesn’t modify the source | OME-TIFF and other open formats; OME-Zarr via bioformats2raw |
OME-TIFF, OME-Zarr, via writer plugins | no (read-only) | mzML, mzXML, MGF and others |
| Large files | header-only metadata; one plane at a time | plane/tile access through the API | lazy dask arrays | memory-mapped / lazy access varies by library | streaming conversion |
When to use which
- You use Fiji, QuPath or OMERO, or need a format OpenReadout does not read: Bio-Formats. It reads more microscopy formats than any other reader.
- You live in Python notebooks and want xarray/dask: bioio. Its
bioio-openreadoutplugin uses OpenReadout underneath without a GPL dependency, and its other plugins add more formats. - You need every detail of one format’s vendor metadata in Python: the dedicated library (
nd2in particular exposes a great deal). OpenReadout also shows the full vendor tree withinfo --view full, but the dedicated libraries offer more format-specific conveniences. - You need a scriptable reader with no dependencies, a permissive license, stable JSON, an integrity check or an MCP server: OpenReadout.
- Flow cytometry: FCS is an open standard with good readers in every language (flowCore, FlowIO, fcsparser, FlowKit). OpenReadout offers the same JSON, CSV and MCP interface and integrity checks as for its other formats, and is compared with FlowIO and fcsparser.
- Mass spectrometry: msconvert is the reference converter. OpenReadout reads Thermo
.raw, Bruker timsTOF.d, Agilent MassHunter.d, Waters.rawand Sciex.wiffwithout vendor DLLs and exports indexed mzML. The format pages list the versions it was checked on.
How OpenReadout uses them
czifile, nd2 and liffile are the main reference readers for microscopy in the validation tests. Bio-Formats (bfconvert) decides when they disagree with OpenReadout. bioio and its plugins give second opinions and check exports. We wrote OpenReadout’s parsers from files and permissively licensed documentation, not from the source code of the copyleft projects above (clean-room policy).