tfmri.linalg.LinearOperatorGramNUFFT

class LinearOperatorGramNUFFT(domain_shape, trajectory, density=None, norm='ortho', toeplitz=False, name='LinearOperatorNUFFT')[source]

Bases: tensorflow_mri.python.ops.linalg_ops.LinearOperatorNUFFT

Linear operator acting like the Gram matrix of an NUFFT operator.

If \(F\) is a tfmri.linalg.LinearOperatorNUFFT, then this operator applies \(F^H F\). This operator is self-adjoint.

Parameters
  • domain_shape – A 1D integer tf.Tensor. The domain shape of this operator. This is usually the shape of the image but may include additional dimensions.

  • trajectory

    A tf.Tensor of type float32 or float64. Contains the sampling locations or k-space trajectory. Must have shape [..., M, N], where N is the rank (number of dimensions), M is the number of samples and ... is the batch shape, which can have any number of dimensions.

  • density

    A tf.Tensor of type float32 or float64. Contains the sampling density at each point in trajectory. Must have shape [..., M], where M is the number of samples and ... is the batch shape, which can have any number of dimensions. Defaults to None, in which case the density is assumed to be 1.0 in all locations.

  • norm

    A str. The FFT normalization mode. Must be None (no normalization) or 'ortho'.

  • toeplitz – A boolean. If True, uses the Toeplitz approach [1] to compute \(F^H F x\), where \(F\) is the NUFFT operator. If False, the same operation is performed using the standard NUFFT operation. The Toeplitz approach might be faster than the direct approach but is slightly less accurate. This argument is only relevant for non-Cartesian reconstruction and will be ignored for Cartesian problems.

  • name

    An optional str. The name of this operator.

References

[1] Fessler, J. A., Lee, S., Olafsson, V. T., Shi, H. R., & Noll, D. C.

(2005). Toeplitz-based iterative image reconstruction for MRI with correction for magnetic field inhomogeneity. IEEE Transactions on Signal Processing, 53(9), 3393-3402.

Initialize the LinearOperator. (deprecated arguments)

Deprecated: SOME ARGUMENTS ARE DEPRECATED: (graph_parents). They will be removed in a future version. Instructions for updating: Do not pass graph_parents. They will no longer be used.

This is a private method for subclass use. Subclasses should copy-paste this ``__init__`` documentation.

Parameters
  • dtype – The type of the this LinearOperator. Arguments to matmul and solve will have to be this type.

  • graph_parents – (Deprecated) Python list of graph prerequisites of this LinearOperator Typically tensors that are passed during initialization

  • is_non_singular – Expect that this operator is non-singular.

  • is_self_adjoint – Expect that this operator is equal to its hermitian transpose. If dtype is real, this is equivalent to being symmetric.

  • is_positive_definite – Expect that this operator is positive definite, meaning the quadratic form x^H A x has positive real part for all nonzero x. Note that we do not require the operator to be self-adjoint to be positive-definite. See: https://en.wikipedia.org/wiki/Positive-definite_matrix#Extension_for_non-symmetric_matrices

  • is_square – Expect that this operator acts like square [batch] matrices.

  • name – A name for this LinearOperator.

  • parameters – Python dict of parameters used to instantiate this LinearOperator.

Raises
  • ValueError

    If any member of graph_parents is None or not a Tensor.

  • ValueError – If hints are set incorrectly.