mrpro.operators.models.WASABI
- class mrpro.operators.models.WASABI[source]
Bases:
SignalModel[Tensor,Tensor,Tensor,Tensor]WASABI signal model.
- __init__(offsets: Tensor | Sequence[float] | float, rf_duration: float | Tensor = 0.005, b1_nominal: float | Tensor = 3.70e-6, gamma: float = GYROMAGNETIC_RATIO_PROTON) None[source]
Initialize WASABI signal model for mapping of B0 and B1 [SCHU2016].
This model uses a slight modification from the original published model. The parameter
acorresponds tod/cin the original model.- Parameters:
offsets (
Tensor|Sequence[float] |float) – frequency offsets [Hz] with shape(offsets, ...)rf_duration (
float|Tensor, default:0.005) – RF pulse duration [s]b1_nominal (
float|Tensor, default:3.70e-6) – nominal B1 amplitude [T]gamma (
float, default:GYROMAGNETIC_RATIO_PROTON) – gyromagnetic ratio [Hz/T]
References
[SCHU2016]Schuenke P, Zaiss M (2016) Simultaneous mapping of water shift and B1(WASABI)—Application to field-Inhomogeneity correction of CEST MRI data. MRM 77(2). https://doi.org/10.1002/mrm.26133
- __call__(b0_shift: Tensor, relative_b1: Tensor, c: Tensor, a: Tensor) tuple[Tensor][source]
Apply the WASABI (Water Shift and B1) signal model.
- Parameters:
b0_shift (
Tensor) – B0 field in homogeneity or off-resonance shift in Hz. Shape(...), for example(*other, coils, z, y, x)or(samples).relative_b1 (
Tensor) – Relative B1 amplitude scaling factor (actual B1 / nominal B1). Shape(...), for example(*other, coils, z, y, x)or(samples).c (
Tensor) – Signal amplitude parameter (related to M0). Shape(...), for example(*other, coils, z, y, x)or(samples).a (
Tensor) – Signal modulation scaling parameter, corresponds tod/cin the original model. Shape(...), for example(*other, coils, z, y, x)or(samples).
- Returns:
Signal calculated for each frequency offset. Shape
(offsets ...), for example(offsets, *other, coils, z, y, x), or(offsets, samples)whereoffsetsis the number of frequency offsets.
- forward(b0_shift: Tensor, relative_b1: Tensor, c: Tensor, a: Tensor) tuple[Tensor][source]
Apply forward of WASABI.
Note
Prefer calling the instance of the WASABI as
operator(x)over directly calling this method. See this PyTorch discussion.
- __add__(other: Operator[Unpack[Tin], Tout]) Operator[Unpack[Tin], Tout][source]
- __add__(other: Tensor | complex) Operator[Unpack[Tin], tuple[Unpack[Tin]]]
Operator addition.
Returns
lambda x: self(x) + other(x)if other is a operator,lambda x: self(x) + other*xif other is a tensor
- __matmul__(other: Operator[Unpack[Tin2], tuple[Unpack[Tin]]] | Operator[Unpack[Tin2], tuple[Tensor, ...]]) Operator[Unpack[Tin2], Tout][source]
Operator composition.
Returns
lambda x: self(other(x))
- __mul__(other: Tensor | complex) Operator[Unpack[Tin], Tout][source]
Operator multiplication with tensor.
Returns
lambda x: self(x*other)