Skip to main content

A modern Python library for converting Mass Spectrometry Imaging (MSI) data into SpatialData/Zarr format - your portal to spatial omics

Project description

Thyra

Tests PyPI Python 3.10+ License: MIT Code style: black

Thyra (from Greek θύρα, meaning "door" or "portal") - A modern Python library for converting Mass Spectrometry Imaging (MSI) data into the standardized SpatialData/Zarr format, serving as your portal to spatial omics analysis workflows.

Features

  • Multiple Input Formats: ImzML, Bruker (.d directories), Waters (.raw directories)
  • SpatialData Output: Modern, cloud-ready format with Zarr backend
  • Memory Efficient: Handles large datasets (100+ GB) through streaming processing
  • Metadata Preservation: Extracts and maintains all acquisition parameters
  • 3D Support: Process volume data or treat as 2D slices
  • Cross-Platform: Windows, macOS, and Linux support

Installation

Via pip (Recommended)

pip install thyra

Via conda

conda install -c conda-forge thyra

From source

git clone https://github.com/Tomatokeftes/thyra.git
cd thyra
poetry install

Quick Start

Command Line Interface

# Basic conversion
thyra input.imzML output.zarr

# Bruker data with custom parameters
thyra data.d output.zarr --pixel-size 50 --dataset-id "experiment_001"

# Waters data
thyra data.raw output.zarr

# 3D volume processing
thyra volume.imzML output.zarr --handle-3d

Python API

from thyra import convert_msi

# Simple conversion
success = convert_msi(
    input_path="data/sample.imzML",
    output_path="output/sample.zarr",
    pixel_size_um=25.0
)

# Advanced usage with custom parameters
success = convert_msi(
    input_path="data/experiment.d",
    output_path="output/experiment.zarr",
    dataset_id="exp_001",
    pixel_size_um=10.0,
    handle_3d=True
)

Supported Formats

Input Formats

Format Extension Description Status
ImzML .imzML Open standard for MS imaging Full support
Bruker .d Bruker proprietary format Full support
Waters .raw Waters MassLynx imaging format Full support

Output Formats

Format Description Benefits
SpatialData/Zarr Modern spatial omics standard Cloud-ready, efficient, standardized

Advanced Usage

Configuration Options

# All available options
thyra input.imzML output.zarr \
    --pixel-size 25 \
    --dataset-id "my_experiment" \
    --handle-3d \
    --optimize-chunks \
    --log-level DEBUG \
    --log-file conversion.log

Batch Processing

import glob
from thyra import convert_msi

# Process multiple files
for input_file in glob.glob("data/*.imzML"):
    output_file = input_file.replace(".imzML", ".zarr")
    convert_msi(input_file, output_file)

Working with SpatialData

import spatialdata as sd

# Load converted data
sdata = sd.read_zarr("output/sample.zarr")

# Access the MSI data
msi_data = sdata.tables["msi_dataset"]
print(f"Shape: {msi_data.shape}")
print(f"Mass channels: {msi_data.var.index}")

Development

Setup Development Environment

# Clone repository
git clone https://github.com/Tomatokeftes/thyra.git
cd thyra

# Install with development dependencies
poetry install

# Install pre-commit hooks
poetry run pre-commit install

Running Tests

# Unit tests only
poetry run pytest -m "not integration"

# All tests
poetry run pytest

# With coverage
poetry run pytest --cov=thyra

Code Quality

# Format code
poetry run black .
poetry run isort .

# Run linting
poetry run flake8

# Run all checks
poetry run pre-commit run --all-files

Documentation

Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and add tests
  4. Run the test suite (poetry run pytest)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to your branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Citation

If you use Thyra in your research, please cite:

@software{thyra2024,
  title = {Thyra: Modern Mass Spectrometry Imaging Data Conversion - Portal to Spatial Omics},
  author = {Visvikis, Theodoros},
  year = {2024},
  url = {https://github.com/Tomatokeftes/thyra}
}

Acknowledgments


Thyra - Your portal from traditional MSI formats to modern spatial omics workflows

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

thyra-1.14.0.tar.gz (10.4 MB view details)

Uploaded Source

Built Distribution

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

thyra-1.14.0-py3-none-any.whl (10.5 MB view details)

Uploaded Python 3

File details

Details for the file thyra-1.14.0.tar.gz.

File metadata

  • Download URL: thyra-1.14.0.tar.gz
  • Upload date:
  • Size: 10.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for thyra-1.14.0.tar.gz
Algorithm Hash digest
SHA256 0d7c10b5def4e4f119e21f9ff51404b117e51bba3513228438ca6a8ff0602e75
MD5 db64bdd64b108e46dbadbf511944fde0
BLAKE2b-256 d5c0ce94f047b9f20998851508c70059152de999cb558418efadd82df81c7cc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for thyra-1.14.0.tar.gz:

Publisher: release.yml on M4i-Imaging-Mass-Spectrometry/thyra

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

File details

Details for the file thyra-1.14.0-py3-none-any.whl.

File metadata

  • Download URL: thyra-1.14.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for thyra-1.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a33de1861e39c3f14e66c7e8038ba024ee68a1c8ccf4d80a3238290741907f24
MD5 76f22e6d7273142bad126bdd17f824d4
BLAKE2b-256 5a2919445b8cff68d77b0d6e0d8b87fb4aa6e7708d311ed8869ccdf887473dfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for thyra-1.14.0-py3-none-any.whl:

Publisher: release.yml on M4i-Imaging-Mass-Spectrometry/thyra

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