linop.NUFFT#
- class bartorch.linop.NUFFT#
Bases:
LinearOperatorNon-uniform FFT from images to samples along a trajectory.
- Parameters:
traj (tensor) – Trajectory
(*encoding, shots, samples, ndim)in grid units,kx, kyorkx, ky, kz, asbartorch.tools.traj()produces. Akzthat is zero everywhere makes the transform two-dimensional. The encoding axes are whatever the samples vary along besides the shots – frames, echoes, cardiac phases – in any number.image_shape (tuple of int) – Image shape
(*batches, *encoding, [z,] y, x): two spatial axes for a two-dimensional trajectory and three for a three-dimensional one. The batches – coils, slices, anything transformed alike – are whatever leads the encoding axes, and each is transformed on its own.kspace_shape (tuple of int, default=None) – Sample shape; by default
(*batches, *encoding, shots, samples).weights (tensor, default=None) – Diagonal in k-space, broadcast over
(*encoding, shots, samples), applied on the forward pass and conjugated on the adjoint.basis (tensor, default=None) – Temporal subspace basis
(coeffs, frames)over the last encoding axis, which iscoeffslong in the image andframeslong in k-space. The weights and the basis belong to the operator because its Toeplitz normal is built over both.toeplitz (bool, default=True) – Apply the normal in closed form rather than as the forward and adjoint applications: a convolution with a point spread function.
oversampling (float, default=0.0) – Grid oversampling and kernel width; zero keeps the defaults.
width (float, default=0.0) – Grid oversampling and kernel width; zero keeps the defaults.
Examples
>>> A = NUFFT(traj, image_shape=(8, 128, 128)) >>> A.adjoint(kspace).shape torch.Size([8, 128, 128])
Also has the methods and properties of LinearOperator.