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.15.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.15.0-py3-none-any.whl (10.5 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: thyra-1.15.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.15.0.tar.gz
Algorithm Hash digest
SHA256 b1213b238452196e277aba905e27995cbdc3f5426a657e25e19112ff53decdf3
MD5 8792dcfc2aaeafaacd0ba69bfbfde08f
BLAKE2b-256 2cf5b4caa253891f21b63f4d143152bb4bf6e44b7d26b9c9754059546d9f94a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for thyra-1.15.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.15.0-py3-none-any.whl.

File metadata

  • Download URL: thyra-1.15.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.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f4db86d971c7bcb87c04ad9a65f7d89677484df37bb05895da110e9544ed005
MD5 90a80465f5dbd599e3e0ca639f8e0315
BLAKE2b-256 e13ed365887b56ab383cabbe0a039086aad23907698f0b512a621a1609630cae

See more details on using hashes here.

Provenance

The following attestation bundles were made for thyra-1.15.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