mrpro.operators.CartesianSamplingOp

class mrpro.operators.CartesianSamplingOp(encoding_matrix: SpatialDimension[int], traj: KTrajectory)[source]

Bases: LinearOperator

Cartesian Sampling Operator.

Selects points on a Cartesian grid based on the k-space trajectory. Thus, the adjoint sorts the data into regular Cartesian sampled grid based on the k-space trajectory. Non-acquired points are zero-filled.

__init__(encoding_matrix: SpatialDimension[int], traj: KTrajectory) None[source]

Initialize Sampling Operator class.

Parameters:
  • encoding_matrix – shape of the encoded k-space. Only values for directions in which the trajectory is Cartesian will be used in the adjoint to determine the shape after reordering, i.e., the operator’s domain.

  • traj – the k-space trajectory describing at which frequencies data is sampled. Its broadcasted shape will be used to determine the shape after sampling, i.e., the operator’s range

adjoint(y: Tensor) tuple[Tensor][source]

Adjoint operator sorting data into the encoding_space matrix.

Parameters:

y – k-space data in acquired shape

Return type:

k-space data sorted into encoding_space matrix

forward(x: Tensor) tuple[Tensor][source]

Forward operator which selects acquired k-space data from k-space.

Parameters:

x – k-space, fully sampled (or zerofilled) and sorted in Cartesian dimensions with shape given by encoding_matrix

Return type:

selected k-space data in acquired shape (as described by the trajectory)

operator_norm(initial_value: Tensor, dim: Sequence[int] | None, max_iterations: int = 20, relative_tolerance: float = 0.0001, absolute_tolerance: float = 1e-05, callback: Callable[[Tensor], None] | None = None) Tensor

Power iteration for computing the operator norm of the linear operator.

Parameters:
  • initial_value – initial value to start the iteration; if the initial value contains a zero-vector for one of the considered problems, the function throws an value error.

  • dim – the dimensions of the tensors on which the operator operates. For example, for a matrix-vector multiplication example, a batched matrix tensor with shape (4,30,80,160), input tensors of shape (4,30,160) to be multiplied, and dim = None, it is understood that the matrix representation of the operator corresponds to a block diagonal operator (with 4*30 matrices) and thus the algorithm returns a tensor of shape (1,1,1) containing one single value. In contrast, if for example, dim=(-1,), the algorithm computes a batched operator norm and returns a tensor of shape (4,30,1) corresponding to the operator norms of the respective matrices in the diagonal of the block-diagonal operator (if considered in matrix representation). In any case, the output of the algorithm has the same number of dimensions as the elements of the domain of the considered operator (whose dimensionality is implicitly defined by choosing dim), such that the pointwise multiplication of the operator norm and elements of the domain (to be for example used in a Landweber iteration) is well-defined.

  • max_iterations – maximum number of iterations

  • relative_tolerance – absolute tolerance for the change of the operator-norm at each iteration; if set to zero, the maximal number of iterations is the only stopping criterion used to stop the power iteration

  • absolute_tolerance – absolute tolerance for the change of the operator-norm at each iteration; if set to zero, the maximal number of iterations is the only stopping criterion used to stop the power iteration

  • callback – user-provided function to be called at each iteration

Return type:

an estimaton of the operator norm

property H: LinearOperator

Adjoint operator.

property gram: CartesianSamplingGramOp

Return the Gram operator for this Cartesian Sampling Operator.

Return type:

Gram operator for this Cartesian Sampling Operator