Source code for deepmr._vobj.trains.phase

"""RF phase generation routines."""

__all__ = ["phase_cycling", "rf_spoiling"]

import numpy as np
import torch


[docs]def phase_cycling(length, dphi=180.0): """ Generate a linear phase cycling scheme. Parameters ---------- length : int Flip angle train length. dphi : float, optional Linear phase increment in ``[deg]``. The default is ``180.0 [deg]``. Returns ------- phase : torch.Tensor RF pulse phase for each pulse in a train. """ # generate phase phase = np.arange(length, dtype=np.float32) * dphi phase = phase % 360.0 return torch.as_tensor(phase)
[docs]def rf_spoiling(length, dphi=117.0): """ Generate a quadratic phase cycling scheme for rf spoiling or partial spoiling. Parameters ---------- length : int Flip angle train length. dphi : float, optional Quadratic phase increment in ``[deg]``. The default is ``117.0 [deg]``. Returns ------- phase : torch.Tensor RF pulse phase for each pulse in a train. """ # generate phase phase = np.zeros(length, dtype=np.float32) for n in range(length): phase[n] = (n * (n + 1) / 2.0 * dphi) % 360 return torch.as_tensor(phase)