PyQMRI is a Python based toolbox for quantitative Magnetic Resonance Imaging (MRI). Utilizing _PyOpenCL and a double-buffering scheme, it enables the accelerated reconsruction and fitting of arbitrary large datasets on memory limited GPUs. Currently, PyQMRI supports the processing of 3D Cartesian and non-Cartesian (stack-of-) data.
Examples include T1 quantification from variable flip angle or inversion-recovery Look-Locker data, T2 quantification using a mono-exponential fit, or Diffusion Tensor quantification.
In addition, a Genereal Model exists that can be invoced using a text file containing the analytical signal equation.
For a real world usage example have a look at the Quickstart Guide.
The example can also be run interactively using
.
Installation and usage guides, as well as API documentaiton, can be found in the Documentation
In-vivo datasets used in the original publication (doi: [10.1002/mrm.27502]) can be found at zenodo. If you use the sample data with the recent release of PyQMRI please delete the "Coils" entry in the .h5 to force a recomputation of the receive coil sensitivities as the orientation does not match the data.
Development and code contributions should be done at our GitLab site to facilitate the CI integration and GPU availability there.
If you want to contribute please make sure that all tests pass and adhere to our Code of Conduct.
Prior to running the tests it is necessary to start an ipcluster.
An exemplary workflow would be:
ipcluster start &
followed by typing
pytest test
in the PyQMRI root folder. It is advised to run unit and integration tests after each other as OUT_OF_MEMORY exceptions can occur if both are in one session, e.g.:
pytest test/unittests
pytest test/integrationtests
For more detailed instructions on how to contribute have a look at contributing.
Currently runs only on GPUs due to having only basic CPU support for the clfft.
Please cite "Oliver Maier, Matthias Schloegl, Kristian Bredies, and Rudolf Stollberger; 3D Model-Based Parameter Quantification on Resource Constrained Hardware using Double-Buffering. Proceedings of the 27th meeting of the ISMRM, 2019, Montreal, Canada" if using the software or parts of it, specifically the PyOpenCL based NUFFT, in your work.
You can find the code for
at [v0.1.0]