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

cMRF example #714

Open
wants to merge 5 commits into
base: next
Choose a base branch
from
Open

cMRF example #714

wants to merge 5 commits into from

Conversation

rkcatarina
Copy link
Collaborator

No description provided.

Copy link
Contributor

github-actions bot commented Mar 13, 2025

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/mrpro
   _version.py6267%7–8
src/mrpro/algorithms/csm
   inati.py24196%44
   walsh.py16194%53
src/mrpro/algorithms/dcf
   dcf_voronoi.py55493%15, 55–56, 89
src/mrpro/algorithms/optimizers
   adam.py22195%104
   pdhg.py81396%178–179, 185
   pgd.py53492%107, 152–155
src/mrpro/algorithms/reconstruction
   DirectReconstruction.py281643%59–79, 93
   IterativeSENSEReconstruction.py13192%79
   Reconstruction.py502256%42, 54–56, 80–87, 108–117
   RegularizedIterativeSENSEReconstruction.py411759%97–101, 115–140
src/mrpro/data
   AcqInfo.py145597%42, 121–122, 124, 233
   CheckDataMixin.py3444088%90, 96, 98, 115, 123, 125, 127, 160–161, 184, 193, 210, 238, 254, 302, 307, 313–318, 348, 355, 446, 448, 480, 482, 484, 488, 504, 545, 550, 627, 649–653, 685, 726–729, 754
   CsmData.py28389%13, 82–84
   DcfData.py44882%16, 64, 76–81
   EncodingLimits.py73396%33, 123, 126
   IData.py59886%118, 132, 159–167
   IHeader.py1361291%69–72, 253, 257, 261, 265, 299–303
   KData.py2012986%113–114, 129, 136, 147–157, 166, 174, 183, 217, 239–241, 277–278, 333–344, 473, 475, 545
   KHeader.py1412185%23, 108–114, 141, 189, 196–197, 200, 207, 224–231, 239–250
   KNoise.py311552%39–52, 56–61
   KTrajectory.py108397%166, 168, 188
   MoveDataMixin.py1401887%28, 126, 142, 156–158, 220, 336–338, 351, 430, 450–451, 453, 468–469, 471
   QData.py39782%42, 65–73
   ReduceRepeatMixin.py33294%51–52
   Rotation.py7193595%101, 199, 336, 434, 478, 496, 583, 585, 594, 628, 630, 693, 770, 775, 778, 793, 810, 815, 891, 1079, 1084, 1087, 1111, 1115, 1243, 1245, 1253–1254, 1318, 1400, 1703, 1855, 1890, 1894, 2084
   SpatialDimension.py2322091%34, 104, 148, 154, 274–276, 289–291, 325, 343, 356, 369, 382, 395, 404–405, 420, 429
   acq_filters.py12192%47
src/mrpro/data/traj_calculators
   KTrajectoryCalculator.py27196%84
   KTrajectoryIsmrmrd.py19195%57
src/mrpro/operators
   AveragingOp.py34294%53, 78
   CartesianSamplingOp.py96496%124, 163, 238, 305
   ConstraintsOp.py60297%46, 48
   DictionaryMatchOp.py52688%98–102, 122
   EndomorphOperator.py32294%52, 58
   FiniteDifferenceOp.py27293%40, 105
   FourierOp.py90397%185, 257, 262
   Functional.py77988%20–22, 117, 119, 226–228, 242
   GridSamplingOp.py136993%71–72, 81–82, 89–90, 93, 95, 97
   LinearOperator.py201896%107, 217, 244, 251, 292, 301, 309, 326
   LinearOperatorMatrix.py1621988%82, 119, 152, 161, 166, 175–178, 191–194, 202–203, 208–209, 221, 310, 337, 364
   MultiIdentityOp.py13285%43, 48
   NonUniformFastFourierOp.py1881095%69, 96, 206, 208, 241, 243, 319, 373, 423, 428
   Operator.py79297%32, 88
   ProximableFunctionalSeparableSum.py39392%50, 103, 110
   SliceProjectionOp.py174895%45, 62, 64, 70, 206, 227, 260, 300
   WaveletOp.py119596%151, 169, 204, 209, 232
   ZeroPadOp.py16194%30
src/mrpro/operators/models
   EPG.py2053881%88–100, 148–152, 172–175, 195–199, 245, 250, 266–268, 284–285, 290, 310, 315, 335, 340, 553, 658
   cMRF.py33197%71
src/mrpro/phantoms
   brainweb.py2753189%325–335, 371, 427–430, 452–453, 458–459, 461–462, 466, 474, 481–482, 520, 586–587, 606–609, 620, 622, 657–658, 671
src/mrpro/utils
   filters.py62297%44, 49
   getnested.py37370%3–76
   indexing.py170199%331
   reshape.py97298%112, 303
   slice_profiles.py47687%21, 37, 116–119, 152
   sliding_window.py34197%34
   split_idx.py10280%43, 47
   summarize_tensorvalues.py12375%23, 25, 27
   typing.py695520%9–235
   unit_conversion.py601477%32, 40, 42, 49, 51, 58, 60, 69, 80, 82, 101, 103, 124, 126
   zero_pad_or_crop.py31681%26, 30, 55, 58, 61, 64
TOTAL665460091% 

Tests Skipped Failures Errors Time
2799 0 💤 0 ❌ 0 🔥 1m 50s ⏱️

Copy link
Contributor

github-actions bot commented Mar 13, 2025

📚 Documentation

📁 Download as zip
🔍 View online

@fzimmermann89
Copy link
Member

Please try to upload the data and mask from one scanner (unzipped) to zenodo.

Then, use the same code as in the other notebooks to download from zenodo.

Why is the reconstruction a function?

Do you think it is possible to add a bit more high level explanation between in code? Like how you would describe it in a thesis, for example. Less practical, programming, more "use extended phase graphs (reference).." if you know what I mean.

Could we add the results of the reference scans, like what the expected t1 and t2 values are for this phantom? I would hard-code the reference results. use the mask to obtain the values from the fingerprinting measurement. And then do a plot of fingerprinting over reference in the end.

This would also be a great opportunity to add a assertion, that the cmrf results match the pre-calculated reference values.
This way, if epg ever breaks, for example, this example would fail and we would notice.

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.

2 participants