Skip to content

Add PEX signal model#841

Draft
fzimmermann89 wants to merge 12 commits intomainfrom
242-pex-signal-model
Draft

Add PEX signal model#841
fzimmermann89 wants to merge 12 commits intomainfrom
242-pex-signal-model

Conversation

@fzimmermann89
Copy link
Copy Markdown
Member

No description provided.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 16, 2025

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/mrpro
   _version.py6267%7–8
src/mrpro/algorithms/csm
   inati.py25196%43
src/mrpro/algorithms/dcf
   dcf_voronoi.py55493%15, 55–56, 89
src/mrpro/algorithms/optimizers
   adam.py30680%108, 125–129
   cg.py52198%139
   pdhg.py81396%178–179, 185
   pgd.py53492%107, 152–155
src/mrpro/algorithms/reconstruction
   DirectReconstruction.py28679%62, 65, 70, 77–79
   IterativeSENSEReconstruction.py13192%79
   Reconstruction.py501374%54–56, 80–87, 109, 112
   RegularizedIterativeSENSEReconstruction.py512649%104–108, 122–161
src/mrpro/data
   AcqInfo.py165796%49, 56, 134–135, 137, 243, 367
   CsmData.py43295%233–235
   Dataclass.py3122692%59, 320, 336, 402, 460–462, 475, 570, 590–591, 593, 608–609, 611, 658–659, 664–665, 852–853, 878, 885, 890–891, 893
   DcfData.py33197%62
   EncodingLimits.py97397%37, 127, 130
   IData.py138696%125, 185, 231, 244, 249, 293
   IHeader.py130795%69–72, 255, 259, 263, 267
   KData.py2282489%122–123, 138, 145, 156–167, 178, 186, 197, 236, 258–260, 304–305, 377, 543, 545, 617
   KHeader.py1761393%115–121, 148, 196, 203–204, 231–238
   KNoise.py22195%44
   KTrajectory.py95397%163, 165, 185
   QData.py32197%43
   Rotation.py7354294%104, 202, 339, 437, 481, 499, 586, 588, 597, 631, 633, 696, 773, 778, 781, 796, 813, 818, 894, 1082, 1087, 1090, 1114, 1118, 1142, 1262, 1264, 1272–1273, 1337, 1419, 1623, 1630–1632, 1691, 1787, 1939, 1974, 1978, 2154, 2175
   SpatialDimension.py1501987%34, 103, 146, 158, 278–280, 293–295, 329, 347, 360, 373, 386, 399, 408–409, 437
src/mrpro/data/traj_calculators
   KTrajectoryCalculator.py26292%84, 95
   KTrajectoryCartesian.py31487%129–132, 136
   KTrajectoryIsmrmrd.py19195%57
   KTrajectorySpiral2D.py571377%63–66, 69, 71, 73, 75, 77, 105, 107, 134–136
src/mrpro/operators
   AveragingOp.py36294%72, 113
   CartesianSamplingOp.py112496%152, 191, 266, 387
   ConjugateGradientOp.py89792%62, 64, 100, 106, 228, 230, 233
   ConstraintsOp.py85495%78, 80, 250, 255
   EndomorphOperator.py28293%71, 77
   FiniteDifferenceOp.py29293%40, 126
   FourierOp.py101694%186–187, 206, 251, 315, 320
   Functional.py70297%116, 118
   GridSamplingOp.py1651591%72–73, 82–83, 90–91, 94, 96, 98, 282, 290–291, 303, 309–310
   LinearOperator.py202697%217, 255, 296, 305, 313, 330
   LinearOperatorMatrix.py1741989%98, 135, 168, 177, 182, 191–194, 207–210, 218–219, 224–225, 237, 346, 376, 403
   MultiIdentityOp.py16288%58, 63
   NonUniformFastFourierOp.py1941095%67, 94, 216, 218, 256, 258, 335, 393, 467, 472
   Operator.py88397%82, 115, 125
   PatchOp.py49394%93, 129, 144
   ProximableFunctionalSeparableSum.py44393%117, 208, 219
   SliceProjectionOp.py1781094%45, 62, 64, 70, 154, 180, 216, 253, 290, 330
   WaveletOp.py121596%168, 186, 230, 235, 258
   ZeroPadOp.py18194%30
src/mrpro/operators/functionals
   SSIM.py73790%60–80, 82, 86, 114, 147
src/mrpro/operators/models
   EPG.py2114479%31–32, 105–120, 168–172, 192–195, 216–221, 284, 289, 305–307, 327–328, 333, 357, 362, 387, 392, 508, 609, 636
src/mrpro/phantoms
   EllipsePhantom.py43295%66, 131
   brainweb.py2974087%276, 290–294, 349–359, 398, 454–457, 479–480, 485–486, 488–489, 493, 501, 508–509, 550, 621, 624–625, 644, 653–656, 667, 669, 700–701, 715, 723
   fastmri.py1061091%50–51, 59, 65, 162, 169–171, 174–175, 189
   m4raw.py74495%58–59, 74, 76
   mdcnn.py71790%58, 62–63, 70, 82, 88, 135
src/mrpro/utils
   RandomGenerator.py1561590%23–24, 36, 38, 188, 212, 428, 446, 528, 799, 829–832, 895, 898
   filters.py62297%44, 49
   indexing.py177199%321
   pad_or_crop.py32681%27, 31, 62, 65, 68, 71
   reshape.py139994%112, 306, 418–420, 441, 443, 450, 465
   slice_profiles.py49688%21, 37, 119–122, 155
   split_idx.py10280%43, 47
   summarize.py57788%40–41, 70–73, 77, 81
   unit_conversion.py841977%34, 44, 51, 53, 62, 69, 71, 78, 80, 89, 100, 109, 111, 118, 120, 139, 141, 162, 164
TOTAL767052993% 

Tests Skipped Failures Errors Time
2991 0 💤 0 ❌ 0 🔥 2m 1s ⏱️

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 16, 2025

📚 Documentation

📁 Download as zip
🔍 View online

@fzimmermann89 fzimmermann89 force-pushed the 242-pex-signal-model branch from 75fa4d4 to 62a4701 Compare June 16, 2025 22:19
@fzimmermann89 fzimmermann89 changed the title first version, needs clean up, fit function simple for slow pex Add PEX signal model Jun 16, 2025
@fzimmermann89 fzimmermann89 requested a review from mxlutz June 16, 2025 22:21
@fzimmermann89
Copy link
Copy Markdown
Member Author

i removred the example script for now and only keep the pex signal model. i moved t1 to the forward. this allows it tbe be inuded in a dictionary for dcitionary matching.

@fzimmermann89 fzimmermann89 marked this pull request as draft July 20, 2025 14:19
@mxlutz mxlutz marked this pull request as ready for review July 31, 2025 12:19
Copy link
Copy Markdown
Collaborator

@mxlutz mxlutz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, I renamed a to b1 (as it basically is b1...) and changed the dimension of prep_delay, about this I am not sure whether it is a good idea

"""
ndim = b1.ndim
voltages = unsqueeze_right(self.voltages, ndim - self.voltages.ndim + 1) # +1 are voltages
prep_delay = unsqueeze_right(self.prep_delay, ndim - self.prep_delay.ndim + 1)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For me the test_pex_t1_recovery Test was failing due to dimension issues in the signal function (prep_delay and t1 are arrays). This is fixed with moving this to the same dimension as voltages, however I am not sure whether this is a good idea? Usually one of them should only be scalar, could add some assert statement.

@fzimmermann89 fzimmermann89 marked this pull request as draft November 5, 2025 15:25
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