MRISubspace#

class mrinufft.operators.subspace.MRISubspace(fourier_op, subspace_basis, use_gpu=False)[source]#

Bases: FourierOperatorBase

Fourier Operator with subspace projection.

This is a wrapper around the Fourier Operator to project data onto a low-rank subspace (e.g., dynamic and multi-contrast MRI).

Parameters:
  • fourier_op (object of class FourierBase) – the fourier operator to wrap

  • subspace_basis (np.ndarray) – Low rank subspace basis of shape (K, T), where K is the rank of the subspace and T is the number of time frames or contrasts in the original image series. Also supports Cupy arrays and Torch tensors.

  • use_gpu (bool, optional) – Whether to use the GPU. Default is False. Ignored if the Fourier operator internally use only GPU (e.g., Cupy) or CPU (e.g., Numpy)

Notes

This extension adds a new axis for both image and k-space data:

  • Image: (B, C, XYZ) -> (B, S, C, XYZ)

  • K-Space: (B, C, K) -> (B, T, C, K)

with S representing the subspace index and T representing time domain or contrast space (for dynamic and multi-contrast MR, respectively).

Similarly, k-space trajectory is expected to have the following shape: (<N_frames or N_contrasts>, N_shots, N_samples, dim). The flatten version is also accepted: (<N_frames or N_contrasts>, N_shots * N_samples, dim)

Methods

__init__

adj_op

Compute Adjoint Operation with subspace projection.

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

Compute Forward Operation time/contrast-domain backprojection.

with_autograd

Return a Fourier operator with autograd capabilities.

with_off_resonance_correction

Return a new operator with Off Resonnance Correction.

Attributes

autograd_available

cpx_dtype

Return complex floating precision of the operator.

density

Density compensation of the operator.

dtype

Return floating precision of the operator.

interfaces

n_coils

Number of coils for the operator.

n_samples

Return the number of samples used by the operator.

ndim

Number of dimensions in image space of the operator.

norm_factor

Normalization factor of the operator.

samples

Return the samples used by the operator.

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.

op(data, *args)[source]#

Compute Forward Operation time/contrast-domain backprojection.

Parameters:

data (numpy.ndarray) – N-D subspace-projected image. Also supports Cupy arrays and Torch tensors.

Returns:

Time/contrast-domain k-space data.

Return type:

numpy.ndarray

adj_op(coeffs, *args)[source]#

Compute Adjoint Operation with subspace projection.

Parameters:

coeffs (numpy.ndarray) – Time/contrast-domain k-space data. Also supports Cupy arrays and Torch tensors.

Returns:

Inverse Fourier transform of the subspace-projected k-space.

Return type:

numpy.ndarray

property n_samples#

Return the number of samples used by the operator.