mrpro.operators.models.MOLLI

class mrpro.operators.models.MOLLI[source]

Bases: SignalModel[Tensor, Tensor, Tensor]

Signal model for Modified Look-Locker inversion recovery (MOLLI).

This model describes \(M_z(t) = a(1 - (1 + c) e^{-t / T_1^*})\) with \(T_1^* = T_1 / c\).

This is a small modification from the original MOLLI signal model [MESS2004]: \(M_z(t) = a - be^{(-t / T_1^*)}\) with \(T_1^* = T1 / (b/a - 1)\).

For a meaningful result chose \(c \in R_{>0}\), \(t \in R_{>0}\), and \(T_1 \in R_{>0}\)

[MESS2004]

Messroghli DR, Radjenovic A, Kozerke S, Higgins DM, Sivananthan MU, Ridgway JP (2004) Modified look-locker inversion recovery (MOLLI) for high-resolution T 1 mapping of the heart. MRM, 52(1). https://doi.org/10.1002/mrm.20110

__init__(ti: float | Tensor)[source]

Initialize MOLLI signal model for T1 mapping.

Parameters:

ti (float | Tensor) – inversion times with shape (time, …)

__call__(*args: Unpack) Tout[source]

Apply the forward operator.

For more information, see forward.

Note

Prefer using operator_instance(*parameters), i.e. using __call__ over using forward.

forward(a: Tensor, c: Tensor, t1: Tensor) tuple[Tensor][source]

Apply MOLLI signal model.

Parameters:
  • a (Tensor) – parameter a in MOLLI signal model with shape (*other, coils, z, y, x)

  • c (Tensor) – parameter c = b/a in MOLLI signal model with shape (*other, coils, z, y, x)

  • t1 (Tensor) – longitudinal relaxation time T1 with shape (*other, coils, z, y, x)

Returns:

signal with shape (time, *other, coils, z, y, x)

__add__(other: Operator[Unpack, Tout]) Operator[Unpack, Tout][source]
__add__(other: Tensor) Operator[Unpack, tuple[Unpack]]

Operator addition.

Returns lambda x: self(x) + other(x) if other is a operator, lambda x: self(x) + other*x if other is a tensor

__matmul__(other: Operator[Unpack, tuple[Unpack]]) Operator[Unpack, Tout][source]

Operator composition.

Returns lambda x: self(other(x))

__mul__(other: Tensor | complex) Operator[Unpack, Tout][source]

Operator multiplication with tensor.

Returns lambda x: self(x*other)

__radd__(other: Tensor) Operator[Unpack, tuple[Unpack]][source]

Operator right addition.

Returns lambda x: other*x + self(x)

__rmul__(other: Tensor | complex) Operator[Unpack, Tout][source]

Operator multiplication with tensor.

Returns lambda x: other*self(x)