Skip to main content

Read and Write OME-TIFFs in Python

Project description

About

pyometiff is a Python library for reading and writing OME-TIFF files that are compliant with the OME-XML specifications.

pyometiff tries to cover most of the tags in the latest OMEXML format specification, while most of the available Python conversion tools are often missing key tags like PhysicalSizeXUnit which are fundamental in any microscopy environment.

Installation

Run the following to install:

pip install pyometiff

Usage

pyometiff exposes two main classes: OMETIFFReader and OMETIFFWriter which you can use to read and write OME TIFF files.

To open a OME-TIFF image you can create an OMETIFFReaderobject and call its .read() method.

import pathlib
from pyometiff import OMETIFFReader
img_fpath = pathlib.Path("/path/to/img.ome.tiff")

reader = OMETIFFReader(fpath=img_fpath)

img_array, metadata, xml_metadata = reader.read()

similarly, to write an OME-TIFF file, we use the OMETIFFWriter class and its .write() method as in the example.

import pathlib
import numpy as np
from pyometiff import OMETIFFWriter
output_fpath = pathlib.Path.cwd().joinpath("test_out.ome.tiff")

# a template metadata dict is available at OMETIFFReader._get_metadata_template()

metadata_dict = {
    "PhysicalSizeX" : "0.88",
    "PhysicalSizeXUnit" : "µm",
    "PhysicalSizeY" : "0.88",
    "PhysicalSizeYUnit" : "µm",
    "PhysicalSizeZ" : "3.3",
    "PhysicalSizeZUnit" : "µm",
    "Channels" : {
        "405" : {
            "Name" : "405nm",
            "SamplesPerPixel": 1,
            "ExcitationWavelength": 405.,
            "ExcitationWavelengthUnit": "nm"
        },
        "488" : {
            "Name" : "488nm",
            "SamplesPerPixel": 1,
            "ExcitationWavelength": 488.,
            "ExcitationWavelengthUnit": "nm"
        },
        "638" : {
            "Name" : "638nm",
            "SamplesPerPixel": 1,
            "ExcitationWavelength": 638.,
            "ExcitationWavelengthUnit": "nm"
        },
    }
}

# our data in npy format
npy_array_data = np.random.randint(0, 255, (2, 10, 3, 512, 512), dtype=np.uint8)
# a string describing the dimension ordering
dimension_order = "ZTCYX"

writer = OMETIFFWriter(
    fpath=output_fpath,
    dimension_order=dimension_order,
    array=npy_array_data,
    metadata=metadata_dict,
    explicit_tiffdata=False)

writer.write()

Licensing

pyometiff is distributed under the GNU General Public License v3.0 (GNU GPLv3),

see the LICENSE file for more info.

This implementation is partially based on aicsimageio by the Allen Institute for Cell Science and python-bioformats by the Broad Institute, part of the CellProfiler project.

The relative licensing and copyright notices are included in the LICENSE file.

External Resources

Cite

DOI

Zenodo DOI: 10.5281/zenodo.7520378

@software{filippo_castelli_2024_10612149,
  author       = {Filippo Castelli and
                  Giacomo Mazzamuto},
  title        = {filippocastelli/pyometiff: 1.0.0},
  month        = feb,
  year         = 2024,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.10612149},
  url          = {https://doi.org/10.5281/zenodo.10612149}
}

Contacts

Author:

Filippo Maria Castelli, PhD

filippocastelli42@gmail.com

[formerly] LENS, European Laboratory for Non-linear Spectroscopy

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

pyometiff-1.1.4.tar.gz (36.2 kB view details)

Uploaded Source

Built Distribution

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

pyometiff-1.1.4-py3-none-any.whl (37.3 kB view details)

Uploaded Python 3

File details

Details for the file pyometiff-1.1.4.tar.gz.

File metadata

  • Download URL: pyometiff-1.1.4.tar.gz
  • Upload date:
  • Size: 36.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyometiff-1.1.4.tar.gz
Algorithm Hash digest
SHA256 4d2f354c971caad5b46f2ce603fccf6265d5c88f15f2d8df6e87c2118ca53869
MD5 c4d9d2fa4986ab79ccb84eda87697974
BLAKE2b-256 a5556680b4a84ef634c43154500471f26fc7f7c68017aaec41b621610a3a97df

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyometiff-1.1.4.tar.gz:

Publisher: python-publish.yml on filippocastelli/pyometiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyometiff-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: pyometiff-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 37.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyometiff-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 22bf23a22e797e99cea5e7ec30aaf1c6b3824fddf45671b15aa97e11f0f26def
MD5 24a94e4f261b6ce295a621c7000c5961
BLAKE2b-256 c2a7494396d9890f193b8088d865f756346923199b92e90ee2c1f4638ec5ca41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyometiff-1.1.4-py3-none-any.whl:

Publisher: python-publish.yml on filippocastelli/pyometiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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