Skip to content

Commit

Permalink
Fixes for normalization issues (#214)
Browse files Browse the repository at this point in the history
* Fixes #211: Adjust normalization of density compensation coefficients. Add Cufinufft Pipe function authored by Chaithya G.R.

* black style fix

* deleting changes for cufinufft

* writing style fix

---------

Co-authored-by: Chaithya G R <[email protected]>
Co-authored-by: Asma TANABENE <[email protected]>
  • Loading branch information
3 people authored Jan 17, 2025
1 parent 0cdfef4 commit 637b3ad
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions src/mrinufft/operators/interfaces/gpunufft.py
Original file line number Diff line number Diff line change
Expand Up @@ -590,12 +590,12 @@ def pipe(
The oversampling factor the volume shape
normalize: bool
Whether to normalize the density compensation.
We normalize such that the energy of PSF = 1
"""
if GPUNUFFT_AVAILABLE is False:
raise ValueError(
"gpuNUFFT is not available, cannot " "estimate the density compensation"
)
original_shape = volume_shape
volume_shape = (np.array(volume_shape) * osf).astype(int)
grid_op = MRIGpuNUFFT(
samples=kspace_loc,
Expand All @@ -607,11 +607,10 @@ def pipe(
max_iter=num_iterations
)
if normalize:
spike = np.zeros(volume_shape)
mid_loc = tuple(v // 2 for v in volume_shape)
spike[mid_loc] = 1
psf = grid_op.adj_op(grid_op.op(spike))
density_comp /= np.linalg.norm(psf)
test_op = MRIGpuNUFFT(samples=kspace_loc, shape=original_shape, **kwargs)
test_im = np.ones(original_shape, dtype=np.complex64)
test_im_recon = test_op.adj_op(density_comp * test_op.op(test_im))
density_comp /= np.mean(np.abs(test_im_recon))
return density_comp.squeeze()

def get_lipschitz_cst(self, max_iter=10, tolerance=1e-5, **kwargs):
Expand Down

0 comments on commit 637b3ad

Please sign in to comment.