PTB-MR / mrpro

MR image reconstruction and processing.
https://ptb-mr.github.io/mrpro/
Apache License 2.0
13 stars 3 forks source link

Add RegularizedIterativeSENSEReconstruction #388

Open ckolbPTB opened 3 weeks ago

ckolbPTB commented 3 weeks ago

closes #369 closes #321 closes #6

github-actions[bot] commented 3 weeks ago

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/mrpro/algorithms/csm
   inati.py24196%44
   iterative_walsh.py15193%37
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.py502354%41, 53–55, 79–86, 103–113
   RegularizedIterativeSENSEReconstruction.py411759%93–97, 111–136
src/mrpro/data
   AcqInfo.py128298%174, 214
   CsmData.py28389%14, 84–86
   DcfData.py44882%17, 65, 77–82
   IData.py67987%119, 125, 129, 159–167
   IHeader.py75791%75, 109, 127–131
   KHeader.py1641790%24, 126–130, 157, 207, 218, 225–226, 229, 236, 275–286
   KNoise.py311552%39–52, 56–61
   KTrajectory.py69593%178–182
   MoveDataMixin.py1261489%14, 109, 125, 139–141, 202, 265, 279, 358, 378–379, 396–397
   QData.py39782%42, 65–73
   SpatialDimension.py46296%64, 103
   TrajectoryDescription.py14193%23
   acq_filters.py10190%47
src/mrpro/data/_kdata
   KData.py1051685%107–108, 117, 125, 179–180, 215, 220–221, 240–251
   KDataRemoveOsMixin.py29293%43, 45
   KDataSelectMixin.py20290%46, 62
   KDataSplitMixin.py48394%49, 79, 88
src/mrpro/data/traj_calculators
   KTrajectoryCalculator.py25292%23, 45
   KTrajectoryIsmrmrd.py13285%41, 50
   KTrajectoryPulseq.py29197%54
src/mrpro/operators
   CartesianSamplingOp.py50982%49–50, 55–56, 61–62, 88, 91, 114
   ConstraintsOp.py60297%46, 48
   EndomorphOperator.py51296%209, 213
   FiniteDifferenceOp.py27293%48, 113
   FourierOp.py77199%131
   GridSamplingOp.py123993%60–61, 70–71, 78–79, 82, 84, 86
   LinearOperator.py80396%32, 131, 256
   Operator.py52198%21
   SliceProjectionOp.py166895%39, 46, 48, 54, 191, 212, 245, 285
   WaveletOp.py120596%152, 170, 205, 210, 233
   ZeroPadOp.py16194%30
src/mrpro/utils
   Rotation.py4532894%58–66, 106, 283, 368, 370, 397, 452, 457, 460, 475, 492, 497, 640, 645, 648, 664, 668, 742, 744, 752–753, 993, 1075
   filters.py62297%44, 49
   slice_profiles.py45687%18, 34, 111–114, 147
   sliding_window.py34197%34
   split_idx.py10280%43, 47
   summarize_tensorvalues.py11918%20–29
   zero_pad_or_crop.py31681%26, 30, 54, 57, 60, 63
TOTAL362828092% 

Tests Skipped Failures Errors Time
828 0 :zzz: 0 :x: 0 :fire: 1m 10s :stopwatch:
fzimmermann89 commented 3 weeks ago

Allow for a linear operator in the regularization: ... + L*(Bx-x0)^2 ? With B defaulting to identity?

ckolbPTB commented 3 weeks ago

With B defaulting to identity?

Would we then still omit an implementation of the identity operator and realise it with setting B: LinearOperator | float = 1. and making use of the OperatorTensorSum?

fzimmermann89 commented 3 weeks ago

B as float does not make sense IMHO.

I would make it LinearOperator | None with None being the identity (this also avoids creating an object as a default operator)

We can still have an explicit IdentityOperator, that can be used there (or used as a dummy linear operator)

Gesendet von Outlook für Androidhttps://aka.ms/AAb9ysg


From: Christoph Kolbitsch @.> Sent: Thursday, September 5, 2024 9:25:23 AM To: PTB-MR/mrpro @.> Cc: Felix F Zimmermann @.>; Comment @.> Subject: Re: [PTB-MR/mrpro] Add RegularizedIterativeSENSEReconstruction (PR #388)

With B defaulting to identity?

Would we then still omit an implementation of the identity operator and realise it with setting B: LinearOperator | float = 1. and making use of the OperatorTensorSum?

— Reply to this email directly, view it on GitHubhttps://github.com/PTB-MR/mrpro/pull/388#issuecomment-2330798330, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABH3DV47JR4YBFURG2LKKP3ZVABOHAVCNFSM6AAAAABNU4MUICVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZQG44TQMZTGA. You are receiving this because you commented.Message ID: @.***>

fzimmermann89 commented 5 days ago

can we jusit add the regularization example to the existing iterative sense example? these two examples seem quite redundant.

ckolbPTB commented 2 days ago

can we jusit add the regularization example to the existing iterative sense example? these two examples seem quite redundant.

yes there is sume redundancy but from a teaching perspective I think it is easier to understand to build up the complexity of the reconstruction step by step.