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 directly from GitHub using uv (recommended) or pip:

# Using uv
uv add git+https://github.com/oscarvanderheide/qmricolors.git

# Using pip
pip install git+https://github.com/oscarvanderheide/qmricolors.git

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.1.tar.gz (38.5 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.1-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qmricolors-0.1.1.tar.gz
  • Upload date:
  • Size: 38.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for qmricolors-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d3fc9c8cfcf04f963e8f0180caf7032770c3eabcf8d91d29e4587a57377e04dc
MD5 56bbfce63d63a1913c1c408bedb5c792
BLAKE2b-256 5863df02b664f19dc965781f0360009cc21490e99f4d2275c1d8d9b979df9bb1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qmricolors-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for qmricolors-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d5d38789a31fc3198781829ca9283d78a93ca42597b19458191903d36144bcef
MD5 2ca537931af236add861f67608b5415d
BLAKE2b-256 ed6e21bea961933595519b44786e839b4cacd5687c95b4fdb39a6ab5f895cbc6

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