tfmri.linalg.LinearOperatorGramMRI
tfmri.linalg.LinearOperatorGramMRI¶
- class LinearOperatorGramMRI(image_shape, extra_shape=None, mask=None, trajectory=None, density=None, sensitivities=None, phase=None, fft_norm='ortho', sens_norm=True, dynamic_domain=None, toeplitz_nufft=False, dtype=tf.complex64, name='LinearOperatorGramMRI')[source]¶
Bases:
tensorflow_mri.python.ops.linalg_ops.LinearOperatorMRI
Linear operator representing an MRI encoding matrix.
If \(A\) is a tfmri.linalg.LinearOperatorMRI, then this ooperator represents the matrix \(G = A^H A\).
In certain circumstances, this operator may be able to apply the matrix \(G\) more efficiently than the composition \(G = A^H A\) using tfmri.linalg.LinearOperatorMRI objects.
- Parameters
image_shape – A tf.TensorShape or a list of
ints
. The shape of the images that this operator acts on. Must have length 2 or 3.extra_shape –
An optional tf.TensorShape or list of
ints
. Additional dimensions that should be included within the operator domain. Note thatextra_shape
is not needed to reconstruct independent batches of images. However, it is useful when this operator is used as part of a reconstruction that performs computation along non-spatial dimensions, e.g. for temporal regularization. Defaults to None.mask – An optional tf.Tensor of type
tf.bool
. The sampling mask. Must have shape[..., *S]
, whereS
is theimage_shape
and...
is the batch shape, which can have any number of dimensions. Ifmask
is passed, this operator represents an undersampled MRI operator.trajectory –
An optional tf.Tensor of type
float32
orfloat64
. Must have shape[..., M, N]
, whereN
is the rank (number of spatial dimensions),M
is the number of samples in the encoded space and...
is the batch shape, which can have any number of dimensions. Iftrajectory
is passed, this operator represents a non-Cartesian MRI operator.density –
An optional tf.Tensor of type
float32
orfloat64
. The sampling densities. Must have shape[..., M]
, whereM
is the number of samples and...
is the batch shape, which can have any number of dimensions. This input is only relevant for non-Cartesian MRI operators. If passed, the non-Cartesian operator will include sampling density compensation. If None, the operator will not perform sampling density compensation.sensitivities –
An optional tf.Tensor of type
complex64
orcomplex128
. The coil sensitivity maps. Must have shape[..., C, *S]
, whereS
is theimage_shape
,C
is the number of coils and...
is the batch shape, which can have any number of dimensions.phase –
An optional tf.Tensor of type
float32
orfloat64
. A phase estimate for the image. If provided, this operator will be phase-constrained.fft_norm –
FFT normalization mode. Must be None (no normalization) or
'ortho'
. Defaults to'ortho'
.sens_norm – A boolean. Whether to normalize coil sensitivities. Defaults to True.
dynamic_domain – A str. The domain of the dynamic dimension, if present. Must be one of
'time'
or'frequency'
. May only be provided together with a non-scalarextra_shape
. The dynamic dimension is the last dimension ofextra_shape
. The'time'
mode (default) should be used for regular dynamic reconstruction. The'frequency'
mode should be used for reconstruction in x-f space.toeplitz_nufft –
A boolean. If True, uses the Toeplitz approach [5] to compute \(F^H F x\), where \(F\) is the non-uniform Fourier 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.
dtype – A tf.dtypes.DType. The dtype of this operator. Must be
complex64
orcomplex128
. Defaults tocomplex64
.name –
An optional str. The name of this operator.
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 passgraph_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 tomatmul
andsolve
will have to be this type.graph_parents – (Deprecated) Python list of graph prerequisites of this
LinearOperator
Typically tensors that are passed during initializationis_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 nonzerox
. 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_matricesis_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.