Skip to main content

A Python package for easy access to the lipari and navia colormaps for quantitative MRI visualization.

Project description

qMRI Colors

A Python package providing the recommended colormaps from Fuderer et al. (2024) for quantitative MRI visualization. This package makes it easy to use the scientifically-optimized lipari and navia colormaps in both matplotlib and vispy, eliminating the need for manual colormap registration in each project.

The colormaps are based on the research presented in "Colormaps for quantitative magnetic resonance imaging" (Magnetic Resonance in Medicine, 2024) and are sourced from the colorResources repository.

WARNING At the moment this package does not comply with the recommendations because it's not adapting to the underlying image, see https://magneticresonanceimaging.github.io/QMRIColors.jl/dev/clip/ for an explanation.

Installation

Install the package using uv (recommended) or pip:

# Using uv
uv add qmricolors

# Using pip
pip install qmricolors

For development:

git clone git@github.com:oscarvanderheide/qmricolors.git
cd qmricolors
uv sync

# Install in development mode to use examples
uv pip install -e .

Usage

Simply import the package to automatically register the custom colormaps:

import qmricolors

Matplotlib Usage

import matplotlib.pyplot as plt
import numpy as np
import qmricolors

# Create sample data
data = np.random.rand(100, 100)

# Use the custom colormaps
plt.figure(figsize=(12, 5))

plt.subplot(1, 2, 1)
plt.imshow(data, cmap='lipari')
plt.title('Lipari Colormap')
plt.colorbar()

plt.subplot(1, 2, 2)
plt.imshow(data, cmap='navia')
plt.title('Navia Colormap')
plt.colorbar()

plt.show()

VisPy Usage

from vispy import app, scene
from vispy.color import get_colormap
import numpy as np
import qmricolors

# Create sample data
data = np.random.rand(100, 100)

# Get custom colormap
lipari_cmap = get_colormap('lipari')

# Create visualization
canvas = scene.SceneCanvas(keys='interactive', show=True)
view = canvas.central_widget.add_view()
image = scene.visuals.Image(data, cmap=lipari_cmap, parent=view.scene)
view.camera = scene.PanZoomCamera(aspect=1)
view.camera.set_range()

app.run()

Note: If the VisPy window doesn't appear, this may be due to GUI backend issues. Try:

  1. Installing a GUI backend: pip install PyQt5 or pip install PySide2
  2. On macOS, you may need to run Python from the terminal rather than an IDE
  3. Use the simple test script: python test_vispy_simple.py

Direct API Usage

import qmricolors

# Get colormap for specific backend
lipari_mpl = qmricolors.get_colormap('lipari', backend='matplotlib')
navia_vispy = qmricolors.get_colormap('navia', backend='vispy')

# List available colormaps
print(qmricolors.AVAILABLE_CMAPS)  # ['lipari', 'navia']

# Register colormaps manually (if needed)
qmricolors.register_all_colormaps()

Available Colormaps

  • lipari: A scientifically-optimized colormap for quantitative MRI visualization
  • navia: A scientifically-optimized colormap for quantitative MRI visualization

These colormaps were designed based on perceptual uniformity principles and extensive testing for quantitative medical imaging, as described in Fuderer et al. (2024).

Customizing Colormaps

To use your own colormap data, replace the CSV files in the package:

  1. qmricolors/lipari.csv
  2. qmricolors/navia.csv

The CSV format should contain space-separated RGB values (without headers), with values between 0 and 1:

0.011370 0.073240 0.148284
0.013965 0.079062 0.155370
0.015899 0.084718 0.162521
0.017234 0.090035 0.169728
...

Each line represents one color with three space-separated values for red, green, and blue components.

Examples

The package includes several example scripts to demonstrate usage:

General Example

Test basic colormap functionality:

uv run qmricolors/examples/example.py

Matplotlib Example

See matplotlib-specific plotting examples:

uv run qmricolors/examples/matplotlib_example.py

VisPy Example

Interactive 3D visualization with VisPy (requires GUI):

uv run qmricolors/examples/vispy_example.py

Dependencies

  • matplotlib >= 3.10.3
  • vispy >= 0.15.2
  • numpy >= 1.21.0

References

License

[Add your license information here]

Contributing

[Add contribution guidelines here]

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

qmricolors-0.1.2.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

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

qmricolors-0.1.2-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file qmricolors-0.1.2.tar.gz.

File metadata

  • Download URL: qmricolors-0.1.2.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qmricolors-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b594c0203edcd7aabf72e1058430a5c94b6be31f0ed0f1bbc01006a006f040a8
MD5 c1d0ee0d433cc86c1d777efbd3235d8c
BLAKE2b-256 c03024334b5731a94fef7a74e0c46c4dc903241163acc0cef51e733bec52f98c

See more details on using hashes here.

Provenance

The following attestation bundles were made for qmricolors-0.1.2.tar.gz:

Publisher: python-publish.yml on oscarvanderheide/qmricolors

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

File details

Details for the file qmricolors-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: qmricolors-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qmricolors-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c070a01ff7525f182cd3ee9bbf627db5a7f65e918472b2ff315dfb6e54e8cd43
MD5 94cbfd21edce9f48f712838c5f2c2e14
BLAKE2b-256 4669221b8ecc6e1e06974b3933eee49a1524e88ad04f7e1caf299a174599b871

See more details on using hashes here.

Provenance

The following attestation bundles were made for qmricolors-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on oscarvanderheide/qmricolors

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