bartorch.nlop.CoilSense#
- bartorch.nlop.CoilSense(encoding, image_shape=None, coil_shape=None)#
An image times unknown coils, through any linear encoding.
The recipe rather than BART’s particular model: whatever linear operator maps coil images to data – a wave encoding, a field-corrected one, a subspace one, one of your own – put in front of it a product of two unknowns. That is the whole of what makes an encoding nonlinear, and with the algebra in place it is one line:
chain(Multiply(image_shape, coil_shape), encoding.to_nonlinear())
Unlike
NonlinearSensethere is no Sobolev weighting on the coils: what is fitted is the sensitivities themselves. Regularise them by chaining a smoothing operator onto the coil input, or useNonlinearSense, which carries BART’s.- Parameters:
encoding (LinearOperator) – From coil images to data. Its domain is the coil-image shape.
image_shape (tuple of int, optional) – Where the image lives; by default the encoding’s domain with one coil.
coil_shape (tuple of int, optional) – Where the sensitivities live; by default the encoding’s domain.
- Returns:
Two inputs, the image and the coils, and one output, the data.
- Return type:
Examples
>>> E = linop.Sampling(pattern, shape) @ linop.FFT(shape, axes=(-1, -2)) >>> F = CoilSense(E) >>> F.ishapes ((1, 128, 128), (8, 128, 128))