mrpro

MR image reconstruction and processing.

https://github.com/ptb-mr/mrpro

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.3%) to scientific vocabulary

Keywords from Contributors

mesh pipeline-testing datacleaner data-profilers yolov5s optimizer interpretability exoplanet energy-system regionalization
Last synced: 6 months ago · JSON representation ·

Repository

MR image reconstruction and processing.

Basic Info
  • Host: GitHub
  • Owner: PTB-MR
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Homepage: http://mrpro.rocks
  • Size: 23 MB
Statistics
  • Stars: 34
  • Watchers: 3
  • Forks: 7
  • Open Issues: 77
  • Releases: 19
Created over 2 years ago · Last pushed 7 months ago
Metadata Files
Readme License Citation

README.md

MRpro logo


Python License Coverage Bagde DOI

MR image reconstruction and processing package specifically developed for PyTorch.

Awards

  • 2024 ISMRM QMRI Study Group Challenge, 2nd prize for Relaxometry (T2* and T1)

Main features

  • ISMRMRD support MRpro supports ismrmrd-format for MR raw data.
  • PyTorch All data containers utilize PyTorch tensors to ensure easy integration in PyTorch-based network schemes.
  • Cartesian and non-Cartesian trajectories MRpro can reconstruct data obtained with Cartesian and non-Cartesian (e.g. radial, spiral...) sapling schemes. MRpro automatically detects if FFT or nuFFT is required to reconstruct the k-space data.
  • Pulseq support If the data acquisition was carried out using a pulseq-based sequence, the seq-file can be provided to MRpro and the used trajectory is automatically calculated.
  • Signal models A range of different MR signal models are implemented (e.g. T1 recovery, WASABI).
  • Regularized image reconstruction Regularized image reconstruction algorithms including Wavelet-based compressed sensing or total variation regularized image reconstruction are available.

Examples

In the following, we show some code snippets to highlight the use of MRpro. Each code snippet only shows the main steps. A complete working notebook can be found in the provided link.

Simple reconstruction

Read the data and trajectory and reconstruct an image by applying a density compensation function and then the adjoint of the Fourier operator and the adjoint of the coil sensitivity operator.

```python

Read the trajectory from the ISMRMRD file

trajectory = mrpro.data.traj_calculators.KTrajectoryIsmrmrd()

Load in the Data from the ISMRMRD file

kdata = mrpro.data.KData.fromfile(datafile.name, trajectory)

Perform the reconstruction

reconstruction = mrpro.algorithms.reconstruction.DirectReconstruction(kdata) img = reconstruction(kdata) ```

Full example: https://github.com/PTB-MR/mrpro/blob/main/examples/scripts/direct_reconstruction.py

Estimate quantitative parameters

Quantitative parameter maps can be obtained by creating a functional to be minimized and calling a non-linear solver such as ADAM.

```python

Define signal model

model = MagnitudeOp() @ InversionRecovery(ti=idatamultiti.header.ti)

Define loss function and combine with signal model

mse = MSE(idatamultiti.data.abs()) functional = mse @ model [...]

Run optimization

paramsresult = adam(functional, [m0start, t1start], niterations=niterations, learningrate=learning_rate) ```

Full example: https://github.com/PTB-MR/mrpro/blob/main/examples/scripts/qmri_sg_challenge_2024_t1.py

Pulseq support

The trajectory can be calculated directly from a provided pulseq-file.

```python

Read raw data and calculate trajectory using KTrajectoryPulseq

kdata = KData.fromfile(datafile.name, KTrajectoryPulseq(seqpath=seqfile.name)) ```

Full example: https://github.com/PTB-MR/mrpro/blob/main/examples/scripts/comparison_trajectory_calculators.py

Contributing

We are looking forward to your contributions via "fork and pull requests". If you would like to fix a bug or add a new feature:

  1. Create your own copy of MRpro (i.e. create a fork via GitHub)
  2. Clone your forked copy of the MRpro repository
  3. Create/select a python environment (e.g. conda create -n mrpro python=3.12)
  4. Install MRpro in editable mode with developer dependencies: pip install -e ".[dev]"
  5. Setup pre-commit hook: pre-commit install
  6. Create a new branch
  7. Implement your changes to MRpro
  8. Commit and push them to GitHub
  9. Open a pull request via GitHub

You can find more information on "fork and pull requests" on the GitHub documentation

Please also look at our contributor guide for more information on the repository structure, naming conventions, and other useful information.

[!NOTE]
There are a few things which cannot be modified as "fork and pull requests" such as modifications of the docker images. If you think something needs to be changed there, please open up an issue first.

Owner

  • Name: PTB-MR
  • Login: PTB-MR
  • Kind: organization

Exciting MR research happening at PTB in Berlin

Citation (CITATION.cff)

abstract:
    <p>MRpro is a MR image reconstruction and processing framework specifically
    developed to work well with PyTorch. The data classes utilize torch tensors for
    storing data such as MR raw data or reconstructed image data. Where possible batch
    parallelisation of PyTorch is utilized to speed up image reconstruction.</p>
authors:
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Zimmermann
      given-names: Felix Frederik
      orcid: 0000-0002-0862-8973
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Schuenke
      given-names: Patrick
      orcid: 0000-0002-3179-4830
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Brahma
      given-names: Sherine
      orcid: 0000-0003-4340-6513
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Guastini
      given-names: Mara
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Hammacher
      given-names: Johannes
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Kofler
      given-names: Andreas
      orcid: 0000-0002-7416-4433
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Redshaw Kranich
      given-names: Catarina
      orcid: 0009-0008-3305-0342
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Lunin
      given-names: Leonid
      orcid: 0000-0001-6469-5532
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Martin
      given-names: Stefan
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Schote
      given-names: David
      orcid: 0000-0003-3468-0676
    - affiliation: Physikalisch-Technische Bundesanstalt
      family-names: Kolbitsch
      given-names: Christoph
      orcid: 0000-0002-4355-8368
cff-version: 1.2.0
date-released: "2024-12-17"
doi: 10.5281/zenodo.14509598
license: Apache-2.0
repository-code: https://github.com/PTB-MR/mrpro/
title: MRpro - PyTorch-based MR image reconstruction and processing package
type: software
url: https://doi.org/10.5281/zenodo.14509598

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 437
  • Total Committers: 15
  • Avg Commits per committer: 29.133
  • Development Distribution Score (DDS): 0.54
Past Year
  • Commits: 267
  • Committers: 13
  • Avg Commits per committer: 20.538
  • Development Distribution Score (DDS): 0.517
Top Committers
Name Email Commits
Felix F Zimmermann f****9@g****m 201
Christoph Kolbitsch c****h@p****e 127
Patrick Schuenke 3****e 38
Leonid Lunin l****n@p****e 20
Stefan Martin 6****n 8
pre-commit-ci[bot] 6****] 7
bernharb 1****b 6
David 4****e 6
Andreas Kofler a****r@g****t 6
Johannes Hammacher 1****1 4
dependabot[bot] 4****] 4
rkcatarina 7****a 4
Mara Guastini 1****a 3
Pierrick Bouilloux 1****k 2
SimoneHufnagel 6****l 1
Committer Domains (Top 20 + Academic)
ptb.de: 2 gmx.net: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 151
  • Total pull requests: 376
  • Average time to close issues: 5 months
  • Average time to close pull requests: 25 days
  • Total issue authors: 12
  • Total pull request authors: 16
  • Average comments per issue: 2.09
  • Average comments per pull request: 3.06
  • Merged pull requests: 215
  • Bot issues: 0
  • Bot pull requests: 15
Past Year
  • Issues: 79
  • Pull requests: 330
  • Average time to close issues: 2 months
  • Average time to close pull requests: 19 days
  • Issue authors: 9
  • Pull request authors: 14
  • Average comments per issue: 0.95
  • Average comments per pull request: 2.85
  • Merged pull requests: 184
  • Bot issues: 0
  • Bot pull requests: 15
Top Authors
Issue Authors
  • fzimmermann89 (121)
  • ckolbPTB (79)
  • koflera (13)
  • schuenke (12)
  • bernharb (8)
  • JoHa0811 (5)
  • lrlunin (3)
  • guastinimara (3)
  • mxlutz (2)
  • Stef-Martin (2)
  • rkcatarina (1)
  • Pierrickkk (1)
  • hdillinger (1)
Pull Request Authors
  • fzimmermann89 (332)
  • ckolbPTB (157)
  • schuenke (38)
  • lrlunin (34)
  • pre-commit-ci[bot] (12)
  • JoHa0811 (9)
  • Stef-Martin (9)
  • dependabot[bot] (8)
  • koflera (7)
  • bernharb (6)
  • guastinimara (6)
  • rkcatarina (5)
  • schote (2)
  • Pierrickkk (2)
  • hdillinger (1)
Top Labels
Issue Labels
enhancement (31) bug (19) CI (11) documentation (9) priority: low (9) easy (7) question (6) priority: medium (6) priority: high (5) requirement (4) help wanted (4) Agenda (1) wontfix (1)
Pull Request Labels
bug (14) dependencies (8) github_actions (5) enhancement (2) documentation (1) pytest-selfhosted (1) help wanted (1) priority: high (1) CI (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,095 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 19
  • Total maintainers: 3
pypi.org: mrpro

MR image reconstruction and processing package specifically developed for PyTorch.

  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1,095 Last month
Rankings
Dependent packages count: 7.5%
Average: 38.6%
Dependent repos count: 69.8%
Maintainers (3)
Last synced: 7 months ago

Dependencies

.github/workflows/docs.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • peaceiris/actions-gh-pages v3 composite
.github/workflows/pre-commit.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/pytest.yml actions
  • MishaKav/pytest-coverage-comment v1.1.48 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • schneegans/dynamic-badges-action v1.6.0 composite
pyproject.toml pypi
  • einops *
  • ismrmrd *
  • numpy >=1.23,<2.0
  • pydicom *
  • torch >=2.0,<3.0
  • torchio *