MRIStackedNUFFT#

class mrinufft.operators.stacked.MRIStackedNUFFT(samples, shape, backend, smaps, z_index='auto', n_coils=1, n_batchs=1, squeeze_dims=False, **kwargs)[source]#

Bases: FourierOperatorBase

Stacked NUFFT Operator for MRI.

The dimension of stacking is always the last one.

Parameters:
  • samples (array-like) – Sample locations in a 2D kspace

  • shape (tuple) – Shape of the image.

  • z_index (array-like) – Cartesian z index of masked plan. if “auto” the z_index is computed from the samples, if they are 3D, using the last coordinate.

  • backend (str or FourierOperatorBase) – Backend to use. If str, a NUFFT operator is initialized with str being a registered backend. If FourierOperatorBase, operator is checked for compatibility and used as is notably one should have: n_coils = self.n_coils*len(z_index), squeeze_dims=True, smaps=None

  • smaps (array-like) – Sensitivity maps.

  • n_coils (int) – Number of coils.

  • n_batchs (int) – Number of batchs.

  • **kwargs (dict) – Additional arguments to pass to the backend.

Methods

__init__

adj_op

Adjoint operator.

check_shape

Validate the shapes of the image or k-space data against operator shapes.

compute_density

Compute the density compensation weights and set it.

compute_smaps

Compute the sensitivity maps and set it.

data_consistency

Compute the gradient data consistency.

get_lipschitz_cst

Return the Lipschitz constant of the operator.

make_autograd

Make a new Operator with autodiff support.

op

Forward operator.

with_autograd

Return a Fourier operator with autograd capabilities.

with_off_resonance_correction

Return a new operator with Off Resonnance Correction.

Attributes

autograd_available

available

backend

cpx_dtype

Return complex floating precision of the operator.

density

Density compensation of the operator.

dtype

Return dtype.

interfaces

n_coils

Number of coils for the operator.

n_samples

Return number of samples.

ndim

Number of dimensions in image space of the operator.

norm_factor

Normalization factor of the operator.

samples

Return samples as a N_slice x N_samples x 3 array.

shape

Shape of the image space of the operator.

smaps

Sensitivity maps of the operator.

uses_density

Return True if the operator uses density compensation.

uses_sense

Return True if the operator uses sensitivity maps.

property dtype#

Return dtype.

property n_samples#

Return number of samples.

static _fftz(data)[source]#

Apply FFT on z-axis.

static _ifftz(data)[source]#

Apply IFFT on z-axis.

op(data, ksp=None)[source]#

Forward operator.

_op_sense(data, ksp=None)[source]#

Apply SENSE operator.

adj_op(coeffs, img=None)[source]#

Adjoint operator.

_safe_squeeze(arr)[source]#

Squeeze the first two dimensions of shape of the operator.

get_lipschitz_cst(max_iter=10)[source]#

Return the Lipschitz constant of the operator.

Parameters:
  • max_iter (int) – number of iteration to compute the lipschitz constant.

  • **kwargs – Extra arguments givent

Returns:

Spectral Radius

Return type:

float

Notes

This uses the Iterative Power Method to compute the largest singular value of a minified version of the nufft operator. No coil or B0 compensation is used, but includes any computed density.

property samples#

Return samples as a N_slice x N_samples x 3 array.

Built from the 2D samples and the z_index normalized to [-0.5, 0.5).