nlop.CoilSense

Contents

nlop.CoilSense#

bartorch.nlop.CoilSense()#

Product of an image and unknown coil sensitivities, through any encoding.

The general construction rather than BART’s particular model: a product of two unknowns in front of any linear operator from coil images to data – a wave encoding, a field-corrected one, a subspace one, or one of your own:

_chain(Multiply(image_shape, coil_shape), encoding.to_nonlinear())

Unlike NonlinearSense there is no Sobolev weighting on the coils: the sensitivities themselves are the unknown, and nothing constrains them to be smooth. Regularize them by chaining a smoothing operator onto the coil input, or use NonlinearSense, which carries BART’s.

Parameters:
  • encoding (LinearOperator) – From coil images to data. Its domain is the coil-image shape.

  • image_shape (tuple of int, default=None) – Where the image lives; by default the encoding’s domain with one coil.

  • coil_shape (tuple of int, default=None) – Where the sensitivities live; by default the encoding’s domain.

  • items (bool, default=False) – The encoding’s leading axis holds independent items, each with its own image and coils; the coils are the next axis. A Gauss-Newton step then applies the model to every item at once and solves each item’s inner problem on its own.

Returns:

Two inputs, the image and the coils, and one output, the data.

Return type:

NonlinearOperator

Examples

>>> E = linop.Diagonal(pattern, shape) @ linop.FFT(shape, axes=(-1, -2))
>>> F = CoilSense(E)
>>> F.ishapes
((1, 128, 128), (8, 128, 128))