GradientLinearProjection#

class mrinufft.trajectories.projection.GradientLinearProjection(initial_trajectory: ndarray[tuple[int, ...], dtype[_ScalarType_co]], kinetic_op: LinearOperator, linear_projector: Callable | None = None)[source]#

Bases: object

Implements the gradient of F(q1, q2) given by Eq 11 in_[Proj].

The gradient is given by: .. math:

\nabla F(q) = - A s^*

where s^* is the projection of the primal variable \(z = c - M^H q\) onto the linear constraint set defined by A and v.

Parameters:
  • M (LinearOperator) – The kinetic operator M.

  • c (NDArray) – The initial trajectory c.

  • linear_projector (LinearProjection, optional) – An instance of the LinearProjection class to perform the projection onto the constraint set. If not provided, the projection will be performed without any constraints (i.e., s^* = z).

References

[Proj]

N. Chauffert, P. Weiss, J. Kahn and P. Ciuciu, “A Projection Algorithm for Gradient Waveforms Design in Magnetic Resonance Imaging,” in IEEE Transactions on Medical Imaging, vol. 35, no. 9, pp. 2026-2039, Sept. 2016, doi: 10.1109/TMI.2016.2544251.

Methods

__init__

get_primal_variables

Compute the primal variables z = c - M^H q.

grad

Compute the gradient of the objective function w.r.t q.

get_primal_variables(q: ndarray[tuple[int, ...], dtype[_ScalarType_co]]) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]#

Compute the primal variables z = c - M^H q.

Return type:

ndarray[tuple[int, …], dtype[_ScalarType_co]]

grad(q: ndarray[tuple[int, ...], dtype[_ScalarType_co]]) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]#

Compute the gradient of the objective function w.r.t q.

grad F(q) = - M * s_star

Return type:

ndarray[tuple[int, …], dtype[_ScalarType_co]]