Skip to main content

Read Leica image files (LIF, LOF, XLIF, XLCF, XLEF, and LIFEXT)

Project description

Liffile is a Python library to read image and metadata from Leica image files: LIF (Leica Image File), LOF (Leica Object File), XLIF (XML Image File), XLCF (XML Collection File), XLEF (XML Experiment File), and LIFEXT (Leica Image File Extension). These files are written by LAS X software to store collections of images and metadata from microscopy experiments.

Author:

Christoph Gohlke

License:

BSD-3-Clause

Version:

2026.2.15

DOI:

10.5281/zenodo.14740657

Quickstart

Install the liffile package and all dependencies from the Python Package Index:

python -m pip install -U liffile[all]

See Examples for using the programming interface.

Source code and support are available on GitHub.

Requirements

This revision was tested with the following requirements and dependencies (other versions may work):

  • CPython 3.11.9, 3.12.10, 3.13.12, 3.14.3 64-bit

  • NumPy 2.4.2

  • Imagecodecs 2026.1.14 (required for decoding TIFF, JPEG, PNG, and BMP)

  • Tifffile 2026.1.28 (required for reading multi-page TIFF)

  • Xarray 2026.2.0 (recommended)

  • Matplotlib 3.10.8 (optional)

Revisions

2026.2.15

  • Add experimental frame-based interface to LifImage.

  • Fix code review issues.

2026.1.22

  • Fix reading sequence of LifMemoryBlocks.

  • Change unknown axis code to ‘?’.

2026.1.14

  • Improve code quality.

2025.12.12

  • Remove deprecated LifFile.series and xml_element_smd properties (breaking).

  • Improve code quality.

2025.11.8

  • Add option to find other LifImageSeries attributes than path.

  • Return UniqueID in LifImage.attrs.

  • Factor out BinaryFile base class.

2025.9.28

  • Derive LifFileError from ValueError.

  • Minor fixes.

  • Drop support for Python 3.10.

2025.5.10

  • Support Python 3.14.

2025.4.12

  • Improve case_sensitive_path function.

2025.3.8

  • Support LOF files without LMSDataContainerHeader XML element.

2025.3.6

  • Support stride-aligned RGB images.

2025.2.20

  • Rename LifFileFormat to LifFileType (breaking).

  • Rename LifFile.format to LifFile.type (breaking).

2025.2.10

  • Support case-sensitive file systems.

  • Support OMETiffBlock, AiviaTiffBlock, and other memory blocks.

  • Remove LifImageSeries.items and paths methods (breaking).

  • Deprecate LifImage.xml_element_smd.

  • Fix LifImage.parent_image and child_images properties for XML files.

  • Work around reading float16 blocks from uint16 OME-TIFF files.

2025.2.8

  • Support LIFEXT files.

  • Remove asrgb parameter from LifImage.asarray (breaking).

  • Do not apply BGR correction when using memory block frames.

  • Avoid copying single frame to output array.

  • Add LifImage.parent_image and child_images properties.

  • Add LifImageSeries.find method.

2025.2.6

  • Support XLEF and XLCF files.

  • Rename LifFile.series property to images (breaking).

  • Rename imread series argument to image (breaking).

  • Remove LifImage.index property (breaking).

  • Add parent and children properties to LifFile.

  • Improve detection of XML codecs.

  • Do not keep XML files open.

2025.2.5

  • Support XLIF files.

  • Revise LifMemoryBlock (breaking).

  • Replace LifImage.is_lof property with format (breaking).

  • Require imagecodecs for decoding TIF, JPEG, PNG, and BMP frames.

2025.2.2

Refer to the CHANGES file for older revisions.

Notes

Leica Microsystems GmbH is a manufacturer of microscopes and scientific instruments for the analysis of micro and nanostructures.

This library is in its early stages of development. It is not feature-complete. Large, backwards-incompatible changes may occur between revisions.

Specifically, the following features are currently not supported: XLLF formats, image mosaics and pyramids, reading non-image data such as FLIM/TCSPC, and bit increments.

The library has been tested with a limited number of version 2 files only.

The Leica image file formats are documented at:

  • Leica Image File Formats - LIF, XLEF, XLLF, LOF. Version 3.2. Leica Microsystems GmbH. 21 September 2016.

  • Annotations to Leica Image File Formats for LAS X Version 3.x. Version 1.4. Leica Microsystems GmbH. 24 August 2016.

  • TSC SP8 FALCON File Format Description. LAS X Version 3.5.0.

Other implementations for reading Leica image files are readlif and Bio-Formats.

Examples

Read a FLIM lifetime image and metadata from a LIF file:

>>> with LifFile('tests/data/FLIM.lif') as lif:
...     for image in lif.images:
...         _ = image.name
...     image = lif.images['Fast Flim']  # by name
...     assert image.dtype == 'float16'
...     assert image.sizes == {'Y': 1024, 'X': 1024}
...     lifetimes = image.asxarray()
...
>>> lifetimes
<xarray.DataArray 'Fast Flim' (Y: 1024, X: 1024)> Size: 2MB
array([[...]],
      shape=(1024, 1024), dtype=float16)
Coordinates:
  * Y        (Y) float64... 0.0005564
  * X        (X) float64... 0.0005564
Attributes...
    path:           FLIM_testdata.lif/sample1_slice1/FLIM Compressed/Fast Flim
    UniqueID:       694efd02-95a9-436e-0fa6-f146120b1e15
    F16:            {'Name': 'F16',...
    TileScanInfo:   {'Tile': {'FieldX': 0,...
    ViewerScaling:  {'ChannelScalingInfo': {...

Iterate over selected XLEF image frames in ZTM dimension order:

>>> with LifFile('tests/data/XYZCST/XYZCST.xlef') as lif:
...     image = lif.images[0]  # by index
...     image.sizes
...     frames = image.frames(C=1, Z=slice(1, 3), T=[1, 0], M=None)
...     frames.sizes
...     for index, frame in frames.items():
...         index, frame.shape
...
{'T': 2, 'M': 4, 'C': 3, 'Z': 5, 'Y': 1200, 'X': 1600}
{'Z': 2, 'T': 2, 'M': 4, 'Y': 1200, 'X': 1600}
((0, 0, 0), (1200, 1600))
((0, 0, 1), (1200, 1600))
...
((1, 1, 2), (1200, 1600))
((1, 1, 3), (1200, 1600))

View image and metadata in a LIF file from the console:

$ python -m liffile tests/data/FLIM.lif

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

liffile-2026.2.15.tar.gz (52.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

liffile-2026.2.15-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

Details for the file liffile-2026.2.15.tar.gz.

File metadata

  • Download URL: liffile-2026.2.15.tar.gz
  • Upload date:
  • Size: 52.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for liffile-2026.2.15.tar.gz
Algorithm Hash digest
SHA256 84404f937960be32648cb5d8bd2eedde58e82117b9d011c82aa0fd5a64e4f1ac
MD5 d07da0a3a551d122e73b910bbefb7e6b
BLAKE2b-256 225404bfc34df7a6a6c166b512286369678f0340686b16755160b596f5610e71

See more details on using hashes here.

File details

Details for the file liffile-2026.2.15-py3-none-any.whl.

File metadata

  • Download URL: liffile-2026.2.15-py3-none-any.whl
  • Upload date:
  • Size: 35.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for liffile-2026.2.15-py3-none-any.whl
Algorithm Hash digest
SHA256 79dfb73bcbfca00ff1dbb394272c3e40399a7c171221f2321c81d74363c2ca43
MD5 10d7a8e57f9290515a7e1863bb6cb165
BLAKE2b-256 df62e516092e67d6f799399c8d623c9150d4bc53b2041de46e27dfbba66be134

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page