mirtorch.linear.mri.NuSense

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

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 dimension is [nbatch, 1, nx, ny, (nz)], and the output is [nbatch, ncoil, npoints]. Otherwise, the input dimension is [nx, ny, (nz)], and the output is [ncoil, npoints].

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 as traj.

sequential

bool, memory saving mode

batchmode

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

norm

normalization of the fft (‘ortho’ or None)

numpoints

int, number of interpolation points in gridding.

grid_size

float, oversampling ratio (>1)

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

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