| 12345678910111213141516171819202122232425262728293031 |
- from types import SimpleNamespace
- from typing import Tuple
- import numpy as np
- def calc_rf_center(rf: SimpleNamespace) -> Tuple[float, float]:
- """
- Calculate the time point of the effective rotation calculated as the peak of the radio-frequency amplitude for the
- shaped pulses and the center of the pulse for the block pulses. Zero padding in the radio-frequency pulse is
- considered as a part of the shape. Delay field of the radio-frequency object is not taken into account.
- Parameters
- ----------
- rf : SimpleNamespace
- Radio-frequency pulse event.
- Returns
- -------
- time_center : float
- Time point of the center of the radio-frequency pulse.
- id_center : float
- Corresponding position of `time_center` in the radio-frequency pulse's envelope.
- """
- # Detect the excitation peak; if i is a plateau take its center
- rf_max = np.max(np.abs(rf.signal))
- i_peak = np.where(np.abs(rf.signal) >= rf_max * 0.99999)[0]
- time_center = (rf.t[i_peak[0]] + rf.t[i_peak[-1]]) / 2
- id_center = i_peak[int(np.round((len(i_peak) - 1) / 2))]
- return time_center, id_center
|