mirtorch.linear.mri.Gmri

class mirtorch.linear.mri.Gmri(smaps: Tensor, zmap: Tensor, traj: Tensor, norm: str = 'ortho', L: int = 6, nbins: int = 20, dt: int = 0.004, numpoints: Union[int, Sequence[int]] = 6, grid_size: float = 2, T: Optional[Tensor] = None)

B0-informed mri reconstruction, the name follows MIRT. Note that the data format is a little different from NuSENSE. The input/ourput size depends on the sensitivity maps. The input dimension is [nbatch, 1, nx, ny, (nz)], and the output is [nbatch, ncoil, nshot, nfe].

norm

normalization of the fft (‘ortho’ or None)

smaps

tensor with dimension [batch, ncoil, nx, ny, (nz)] (must have a batch dimension). Sensitivity maps.

zmap

tensor with dimension [batch, nx, ny, (nz)]. Off-resonance effects in Hz. ref: DOI: 10.1109/TSP.2005.853152

traj

tensor with dimension [nbatch (or 1), ndimension, nshot, nreadout]

numpoints

int, number of interpolation points in gridding.

grid_size

float, oversampling ratio (>1)

L

int, number of segmentation

dt

float, dwell time in ms

nbins

int, granularity of exponential approximation.

T

tensor with dimension [nfe]. Descrbe the time (in ms) of readout out after excitation. When T is none,

the readout is supposed to start immediately after the excitation.

TODO: add DataParallel

__init__(smaps: Tensor, zmap: Tensor, traj: Tensor, norm: str = 'ortho', L: int = 6, nbins: int = 20, dt: int = 0.004, numpoints: Union[int, Sequence[int]] = 6, grid_size: float = 2, T: Optional[Tensor] = None)

Initiate the linear operator.

Methods

__init__(smaps, zmap, traj[, norm, L, ...])

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