Skip to main content

MRI Non-Cartesian Fourier Operators with multiple computation backends.

Project description

https://github.com/mind-inria/mri-nufft/raw/master/docs/_static/logos/mri-nufft.png

Docs PyPI JOSS Coverage CI CD Style

Doing non-Cartesian MR Imaging has never been so easy

Introduction

MRI-NUFFT is an open-source Python library that provides state-of-the-art non-Cartesian MRI tools: trajectories, data loading and fast and memory-efficient operators to be used on laptops, clusters, and MRI consoles.

In particular, it provides a unified interface for computing Non-Uniform Fast Fourier Transform (NUFFT), using the specialized backend of your choice ((cu)finufft, gpunufft, torchkbnufft, … ), and with integrated MRI-specific features such as:

MRI-nufft is a nice and polite piece of software, that will return the same type of array (e.g numpy, cupy, torch) provided at input, without extra copies for conversions.

On top of that we ship a variety of non-Cartesian trajectories commonly used by the MRI community, and even tools to helps you develop new ones.

https://github.com/mind-inria/mri-nufft/raw/master/docs/_static/mri-nufft-scheme.png

Modularity and Integration of MRI-nufft with the python computing libraries.

Usage

from scipy.datasets import face # For demo
import numpy as np
import mrinufft

# Create 2D Radial trajectories for demo
samples_loc = mrinufft.initialize_2D_radial(Nc=100, Ns=500)
# Get a 2D image for the demo (512x512)
image = np.complex64(face(gray=True)[256:768, 256:768])

## The real deal starts here ##
# Choose your NUFFT backend (installed independently from the package)
# pip install mri-nufft[finufft] will be just fine here
nufft =  mrinufft.get_operator("finufft",
    samples_loc, shape=image.shape, density="voronoi", n_coils=1
)

kspace_data = nufft.op(image)  # Image -> Kspace
image2 = nufft.adj_op(kspace_data)  # Kspace -> Image

pinv = nufft.pinv_solver(kspace_data) # get a Pseudo inverse (least square minimization)

For improved image quality, embed these steps in a more complex reconstruction pipeline (for instance using PySAP).

Want to see more ?

Installation

MRI-nufft is available on PyPi and can be installed with:

pip install mri-nufft

Additionally, you will have to install at least one NUFFT computation backend. See the Documentation for more guidance. Typically we recommend:

pip install mri-nufft[finufft]
pip install mri-nufft[cufinufft] # if you have a NVIDIA GPU and CUDA>=12

Benchmark

A benchmark of NUFFT backend for MRI applications is available in https://github.com/mind-inria/mri-nufft-benchmark

Who is using MRI-NUFFT?

Here are several project that rely on MRI-NUFFT:

Add yours by opening a PR or an issue, let us know how you use MRI-nufft !

How to cite MRI-NUFFT

We published MRI-NUFFT at JOSS

Comby et al., (2025). MRI-NUFFT: Doing non-Cartesian MRI has never been easier. Journal of Open Source Software, 10(108), 7743, https://doi.org/10.21105/joss.07743
@article{Comby2025, doi = {10.21105/joss.07743},
    author = {Comby, Pierre-Antoine and Daval-Frérot, Guillaume and Pan, Caini and Tanabene, Asma and Oudjman, Léna and Cencini, Matteo and Ciuciu, Philippe and GR, Chaithya},
    title = {MRI-NUFFT: Doing non-Cartesian MRI has never been easier}, journal = {Journal of Open Source Software},
    url = {https://doi.org/10.21105/joss.07743},
    year = {2025},
    publisher = {The Open Journal},
    volume = {10},
    number = {108},
    pages = {7743},
}

Contributing

We warmly welcome contributions ! Check out our guidelines , Don’t hesitate to look for unsolved issues

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

mri_nufft-1.4.0.tar.gz (3.6 MB view details)

Uploaded Source

Built Distribution

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

mri_nufft-1.4.0-py3-none-any.whl (167.5 kB view details)

Uploaded Python 3

File details

Details for the file mri_nufft-1.4.0.tar.gz.

File metadata

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

File hashes

Hashes for mri_nufft-1.4.0.tar.gz
Algorithm Hash digest
SHA256 1da5f88f35f56ce4059e2466c69fe838bc4478c3300d3f0e65d3dcf9f52184cf
MD5 f23f806ad30e044ffa1e95b8827856f2
BLAKE2b-256 1bd93ee5a2860aaf2dcd81a57c218445789bc78b3ee4b48f582fa51539bfbb06

See more details on using hashes here.

Provenance

The following attestation bundles were made for mri_nufft-1.4.0.tar.gz:

Publisher: tags-release.yml on mind-inria/mri-nufft

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

File details

Details for the file mri_nufft-1.4.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for mri_nufft-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ff6bfa4224c2fb5e008f019bac684f7033918f23b5c734f4fcf3ae2cf89526f7
MD5 db07e0009fa87288daa6625f53368de7
BLAKE2b-256 9b0a27dd5308e35f9d991920c2a7e316049577c64dc2d44d6e14e28c0070a791

See more details on using hashes here.

Provenance

The following attestation bundles were made for mri_nufft-1.4.0-py3-none-any.whl:

Publisher: tags-release.yml on mind-inria/mri-nufft

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