EPG Operators#

sycomore.epg.operators.pulse_single_pool(angle: float, phase: float) numpy.ndarray[numpy.complex128]#

Return the row-wise matrix corresponding to the single-pool EPG pulse operator

sycomore.epg.operators.pulse_exchange(angle_a: float, phase_a: float, angle_b: float, phase_b: float) numpy.ndarray[numpy.complex128]#

Return the row-wise matrix corresponding to the two-pools exchange EPG pulse operator

sycomore.epg.operators.pulse_magnetization_transfer(angle_a: float, phase_a: float, saturation: float) Tuple[numpy.ndarray[numpy.complex128], complex]#

Return the row-wise matrix corresponding to the two-pools magnetization transfer EPG pulse operator

sycomore.epg.operators.relaxation_single_pool(R1: float, R2: float, duration: float) Tuple[float, float]#

Return the scalars associated respectively with relaxation of the \(tilde{F}\) states and \(\tilde{Z}\) states.

sycomore.epg.operators.relaxation_exchange(R1_a: float, R2_a: float, R1_b: float, R2_b: float, k_a: float, k_b: float, delta_b: float, M0_a: float, M0_b: float, duration: float) Tuple[numpy.ndarray[numpy.complex128], numpy.ndarray[numpy.float64], Annotated[List[float], FixedSize(2)]]#

Return the exchange-relaxation matrices: non-zero terms of \(\Xi_T\) (row-major), row-major \(\Xi_L\), and \((\Xi_L - I) \Lambda_L^{-1} C\)

sycomore.epg.operators.relaxation_magnetization_transfer(R1_a: float, R2_a: float, R1_b: float, k_a: float, k_b: float, M0_a: float, M0_b: float, duration: float) Tuple[float, numpy.ndarray[numpy.float64], Annotated[List[float], FixedSize(2)]]#

Return the magnetization transfer relaxation matrices: \(\Xi_T = e^{-R_{2a} \tau}\), row-major \(\Xi_L\) and \((\Xi_L - I) \Lambda_L^{-1} C\)

sycomore.epg.operators.phase_accumulation(angle: float) Tuple[complex, complex]#

Return the rotation expressed as a complex exponential associated with phase accumulation of respectively the \(\tilde{F}(k)\) and \(\tilde{F}^*(-k)\) states.