fabio
FabIO is an I/O library for images produced by 2D X-ray detectors and written in Python
Decision gist · record as of 2026-08-14
Yes, if you work with 2D X-ray detector images from synchrotron or laboratory diffraction systems. The library is actively maintained, permissively licensed (MIT primary), and eliminates format-specific parsing code. Medium install friction from compiled dependencies is acceptable for the breadth of format support. Not relevant for general image processing; consider only if your workflow involves detector formats like CBF, EDF, or Eiger.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires h5py and hdf5plugin for HDF5/Eiger format support; gzip and bzip2 modules needed for transparent compressed file handling.
- Medium install friction due to 6 runtime dependencies (numpy, h5py, hdf5plugin, lxml, pillow, filelock) and compiled C/Cython components.
- Actively maintained with recent release 56 days ago and ongoing repository activity.
License · maintenance · safety
permissive license (permissive) — Primarily MIT-licensed with permissive treatment. Some components use LGPL-3.0+ and GPL-2.0+; verify compatibility if redistributing or modifying for proprietary use.
last release 2026-06-19 (56 days) · last repo commit 2026-07-28 · 66 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 96,074 downloads/mo, #13,233 on PyPI
Alternatives
Verify before relying
import fabio
obj = fabio.open("mydata0000.edf")
print(obj.data.shape)
print(obj.header["Omega"])- Whether all 30 file formats are equally well-tested or if some are rarely used
- Performance characteristics for large detector images or batch processing
- Exact Python version support floor (requires >=3.11 but earliest tested version unclear)
What it is and what it does
FabIO is a Python I/O library for reading and writing detector images from 2D X-ray diffraction experiments. It abstracts over 30 file formats from a dozen detector manufacturers into a unified interface: each image becomes a numpy array (data) plus an ordered dictionary of header metadata. The library handles formats ranging from simple TIFF and EDF to vendor-specific compressed formats like CBF and Pilatus, and supports HDF5-based formats like Eiger through h5py integration.
Typically used in synchrotron beamline software, crystallography pipelines, and scientific data processing workflows where detector images need to be read, inspected, and written without format-specific boilerplate. It includes convenience methods for statistics (min, max, mean, stddev), rebinning, and transparent decompression of gzip/bzip2 files. The package depends on numpy for array operations, h5py for HDF5 support, pillow for TIFF/image handling, lxml for XML formats, and filelock for concurrent access.
Use it for
- Load CBF or EDF detector frames and access pixel data and experimental parameters via a uniform interface.
- Batch convert detector images between formats without writing format-specific code.
- Read HDF5-based Eiger detector stacks and extract 2D slices as numpy arrays for analysis.
- Build a data pipeline that accepts images from multiple detector types and processes them uniformly.
- Inspect detector image headers and statistics quickly without loading the full array into memory.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you work with 2D X-ray detector images from synchrotron or laboratory diffraction systems.
The library is actively maintained, permissively licensed (MIT primary), and eliminates format-specific parsing code. Medium install friction from compiled dependencies is acceptable for the breadth of format support. Not relevant for general image processing; consider only if your workflow involves detector formats like CBF, EDF, or Eiger.
Install
fabio on PyPI
Before you install
Medium install friction due to 6 runtime dependencies (numpy, h5py, hdf5plugin, lxml, pillow, filelock) and compiled C/Cython components. Actively maintained with recent release 56 days ago and ongoing repository activity.
Requires h5py and hdf5plugin for HDF5/Eiger format support; gzip and bzip2 modules needed for transparent compressed file handling.
License in practice
Primarily MIT-licensed with permissive treatment. Some components use LGPL-3.0+ and GPL-2.0+; verify compatibility if redistributing or modifying for proprietary use.
Quickstart
import fabio
obj = fabio.open("mydata0000.edf")
print(obj.data.shape)
print(obj.header["Omega"])
Verify before relying
- Whether all 30 file formats are equally well-tested or if some are rarely used
- Performance characteristics for large detector images or batch processing
- Exact Python version support floor (requires >=3.11 but earliest tested version unclear)
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.11 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 6 packagesnumpyh5pyhdf5pluginlxmlpillowfilelock |
| Maintenance | Actively maintained 56 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 96,074 / month, #13,233 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: ConsoleIntended Audience :: DevelopersIntended Audience :: End Users/DesktopIntended Audience :: Science/ResearchLicense :: OSI Approved :: MIT LicenseOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: POSIXProgramming Language :: CProgramming Language :: CythonProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: Implementation :: CPythonTopic :: Scientific/Engineering :: Bio-InformaticsTopic :: Scientific/Engineering :: ChemistryTopic :: Scientific/Engineering :: PhysicsTopic :: Scientific/Engineering :: VisualizationTopic :: Software Development :: Libraries :: Python Modules |
Evidence: fabio-2026.6.0-cp311-cp311-macosx_10_9_x86_64.whl; fabio-2026.6.0-cp311-cp311-macosx_11_0_arm64.whl; fabio-2026.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; fabio-2026.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl; fabio-2026.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; fabio-2026.6.0-cp311-cp311-win_amd64.whl; fabio-2026.6.0-cp312-cp312-macosx_10_13_x86_64.whl; fabio-2026.6.0-cp312-cp312-macosx_11_0_arm64.whl; fabio-2026.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; fabio-2026.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl; fabio-2026.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; fabio-2026.6.0-cp312-cp312-win_amd64.whl; fabio-2026.6.0-cp313-cp313-macosx_10_13_x86_64.whl; fabio-2026.6.0-cp313-cp313-macosx_11_0_arm64.whl; fabio-2026.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; fabio-2026.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl; fabio-2026.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; fabio-2026.6.0-cp313-cp313-win_amd64.whl; fabio-2026.6.0-cp314-cp314-macosx_11_0_arm64.whl; fabio-2026.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “x-ray detector image io”
- fabioFabIO reads and writes 2D X-ray detector images in 30 different…
- opentelemetry-sdk-extension-awsProvides OpenTelemetry SDK components to make distributed traces…
- torchxrayvisionTorchXRayVision provides pre-trained deep learning models and unified…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also pydicom · silx · tifffile · cmcrameri · edfio · rosettasciio · RoffIO · ImageIO · pyEDFlib · roifile