# mirtorch.linear.mri.NuSenseGram

class mirtorch.linear.mri.NuSenseGram(smaps: Tensor, traj: Tensor, norm='ortho', batchmode=True, numpoints: Union[int, Sequence[int]] = 6, grid_size: float = 2)

Gram operator (A’A) of the Non-Cartesian sense operator: “SENSE: Sensitivity encoding for fast MRI” The implementation calls Matthew Muckley’s Torchkbnufft toolbox: https://github.com/mmuckley/torchkbnufft The input/ourput size depends on the sensitivity maps. If we use the batch dimension, the input/output dimension is [nbatch, 1, nx, ny, (nz)]. Otherwise, the input/output dimension is [nx, ny, (nz)].

traj

tensor with dimension [(batch), ndim, nshot*npoints]. Note that traj can have no batch dimension even x have. ref: https://github.com/mmuckley/torchkbnufft/pull/24

sensitivity maps

tensor with dimension [(batch), ncoil, nx, ny, (nz)]. On the same device with traj.

norm

normalization of the fft (‘ortho’ or None)

numpoints

int, number of interpolation points in gridding.

grid_size

float, oversampling ratio (>1)

batchmode

bool, determining if there exist batch and channel dimension (should always be 1).

__init__(smaps: Tensor, traj: Tensor, norm='ortho', batchmode=True, numpoints: Union[int, Sequence[int]] = 6, grid_size: float = 2)

Initiate the linear operator.

Methods

 `__init__`(smaps, traj[, norm, batchmode, ...]) Initiate the linear operator. `adjoint`(x) Apply the adjoint operator `apply`(x) Apply the forward operator `to`(*args, **kwargs) Copy to different devices

Attributes

 `H` Apply the (Hermitian) transpose