Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example for Basics and Cartesian reconstruction #562

Merged
merged 10 commits into from
Jan 6, 2025
Merged

Conversation

ckolbPTB
Copy link
Collaborator

This example shows some basics features of MRpro and then a step by step guide to reconstruct fully sampled Cartesian scan, Cartesian scan with partial echo and partial Fourier and Cartesian scan with regular undersampling and self-calibrated csm calculation.

probably supersedes #233
closes #518

Copy link
Contributor

github-actions bot commented Nov 27, 2024

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/mrpro/algorithms/csm
   inati.py24196%44
   walsh.py16194%34
src/mrpro/algorithms/dcf
   dcf_voronoi.py53492%15, 48–49, 76
src/mrpro/algorithms/optimizers
   adam.py20195%69
src/mrpro/algorithms/reconstruction
   DirectReconstruction.py281643%51–71, 85
   IterativeSENSEReconstruction.py13192%76
   Reconstruction.py502256%42, 54–56, 80–87, 104–113
   RegularizedIterativeSENSEReconstruction.py411759%96–100, 114–139
src/mrpro/data
   AcqInfo.py128398%26, 169, 207
   CsmData.py29390%15, 82–84
   DcfData.py45882%18, 66, 78–83
   IData.py67987%119, 125, 129, 159–167
   IHeader.py75791%75, 109, 127–131
   KHeader.py1531789%25, 119–123, 150, 199, 210, 217–218, 221, 228, 260–271
   KNoise.py311552%39–52, 56–61
   KTrajectory.py811285%108–113, 116–118, 203–207
   MoveDataMixin.py1401887%15, 113, 129, 143–145, 207, 323–325, 338, 417, 437–438, 440, 455–456, 458
   QData.py39782%42, 65–73
   Rotation.py6743595%100, 198, 335, 433, 477, 495, 581, 583, 592, 626, 628, 691, 768, 773, 776, 791, 808, 813, 889, 1077, 1082, 1085, 1109, 1113, 1240, 1242, 1250–1251, 1315, 1397, 1690, 1846, 1881, 1885, 1996
   SpatialDimension.py2322191%34, 104, 141, 148, 154, 274–276, 289–291, 325, 343, 356, 369, 382, 395, 404–405, 420, 429
   acq_filters.py12192%47
src/mrpro/data/_kdata
   KData.py1341887%109–110, 125, 132, 142, 150, 204–205, 243, 248–249, 268–279
   KDataRemoveOsMixin.py29293%44, 46
   KDataSelectMixin.py19289%48, 63
   KDataSplitMixin.py48394%53, 84, 93
src/mrpro/data/traj_calculators
   KTrajectoryCalculator.py25292%23, 45
   KTrajectoryIsmrmrd.py13285%41, 50
   KTrajectoryPulseq.py23196%55
src/mrpro/operators
   CartesianSamplingOp.py89397%118, 157, 280
   ConstraintsOp.py60297%46, 48
   EndomorphOperator.py65297%228, 234
   FiniteDifferenceOp.py27293%40, 105
   FourierOp.py158398%263, 381, 386
   Functional.py71593%20–22, 117, 119
   GridSamplingOp.py136993%72–73, 82–83, 90–91, 94, 96, 98
   LinearOperator.py1681094%55, 91, 190, 220, 261, 270, 278, 287, 295, 320
   LinearOperatorMatrix.py1581690%82, 119, 152, 161, 166, 175–178, 191–194, 203, 215, 304, 331, 359
   MultiIdentityOp.py13285%43, 48
   Operator.py78297%25, 74
   ProximableFunctionalSeparableSum.py39392%50, 103, 110
   SliceProjectionOp.py173895%44, 61, 63, 69, 206, 227, 260, 300
   WaveletOp.py120596%152, 170, 205, 210, 233
   ZeroPadOp.py16194%30
src/mrpro/utils
   filters.py62297%44, 49
   reshape.py60198%191
   slice_profiles.py46687%20, 36, 113–116, 149
   sliding_window.py34197%34
   split_idx.py10280%43, 47
   summarize_tensorvalues.py11918%20–29
   typing.py181139%8–23
   zero_pad_or_crop.py31681%26, 30, 54, 57, 60, 63
TOTAL493336093% 

Tests Skipped Failures Errors Time
2262 0 💤 0 ❌ 0 🔥 1m 9s ⏱️

Copy link
Contributor

github-actions bot commented Nov 27, 2024

📚 Documentation

📁 Download as zip
🔍 View online

@ckolbPTB ckolbPTB requested a review from schuenke December 9, 2024 10:35
@ckolbPTB ckolbPTB mentioned this pull request Dec 10, 2024
24 tasks
schuenke and others added 3 commits December 18, 2024 19:32
- adjust imports
- adjust code syntax
- add some further explanations
- fix grammar
- simplify phrasing
- ...
@schuenke
Copy link
Collaborator

You might wanna have a look at it again @ckolbPTB , added quite a few changes.

@ckolbPTB ckolbPTB added the pre-commit.ci autofix run autofix in this PR label Jan 6, 2025
@pre-commit-ci pre-commit-ci bot removed the pre-commit.ci autofix run autofix in this PR label Jan 6, 2025
@ckolbPTB ckolbPTB merged commit 075f1c0 into main Jan 6, 2025
22 checks passed
@ckolbPTB ckolbPTB deleted the cart_recon_example branch January 6, 2025 17:03
@fzimmermann89
Copy link
Member

Why does this use the fftop?

Shouldn't we push for using the FourierOp?
Fftop is an implementation detail.

Also, we should not demonstrate trajectory.as_tensor to get Kx.
Instead use trajectory.kx directly

@ckolbPTB
Copy link
Collaborator Author

ckolbPTB commented Jan 6, 2025

This notebook is meant to provide some background information on what is happening in MRpro. The conclusion is that FourierOp or even better one of the algorithms should be used.

@fzimmermann89
Copy link
Member

I would just not mention FastFourierOp and only use FourierOp. CartesianSampling Op and FastFourierOp are implementation details.

This notebook is now the "gold standard" recipe for manual reconstruction of cartesian data
And it only shows FastFourierOp (and the all-in-one reconstruction.)

I would never use FastFourierOp for any reconstruction.
I am willing to bet that their will be ppl using FastFourierOp in their code and not even knowing about FourierOp.
This was already an issue in the past -- fft is to "obvious" to not use it. And having this as the cartesian reco example is IMHO a bad idea.

I would have removed all the cartesian sampling op stuff, and directly used the fourierop...

@fzimmermann89 fzimmermann89 mentioned this pull request Jan 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cartesian Reconstruction example
3 participants