Excitation#
This module contains functions defining compositions of building blocks commonly used for excitation in MRI
Functions:
|
Computes the shortest possible combination of RF-pulse and trapezoidal slice-selection gradient for the given time-bandwidth-product, flip angle and slice thickness. |
|
Define a pair of 90, 180 rf sinc pulses with slice selective gradients |
|
Defines slice selective excitation using a Sinc-RF pulse and a slice selection gradient. |
|
Modulates the waveform of a given slice selective excitation pulse using the sigpy.mri.rf.dzrf_mb implementation. |
|
Constructs a sequence for spectral-spatial excitation containing binomial sinc sub-pulses and trapezoidal slice-selection gradients. |
- optimize_slice_selection(system_specs, slice_thickness, time_bandwidth_product, min_duration=None)#
Computes the shortest possible combination of RF-pulse and trapezoidal slice-selection gradient for the given time-bandwidth-product, flip angle and slice thickness.
- Parameters:
system_specs (
SystemSpec
) – SystemSpecificationsslice_thickness (
Quantity
) – Defines the necessary gradient amplitudetime_bandwidth_product (
float
) – Used to calculate the RF bandwidth from durationmin_duration (
Optional
[Quantity
]) – Manually set minimal duration (e.g. shortest pulse duration according to peak RF power)
- Return type:
(
Quantity
,Quantity
)- Returns:
pulse_duration, gradient amplitude
- slice_selective_se_pulses(system_specs, echo_time, slice_thickness, pulse_duration, slice_orientation, time_bandwidth_product=4.0)#
Define a pair of 90, 180 rf sinc pulses with slice selective gradients
|-----------echo_time/2---------| . 90° 180° . . . . /\ /\ . . _______/\ / \ /\______________________/\ / \ /\ . . \/ \/ \/ \/ . . . . ___________ ___________ . . ____ / \ _____________/ \ . . \_____/ . . |pulse-dur| |pulse-dur| .
- Parameters:
system_specs (
SystemSpec
) – SystemSpecificationsecho_time (
Quantity
) – Quantity[Time] containing the required echo-timeslice_thickness (
Quantity
) – Quantity[Length] containing the required slice-thicknesspulse_duration (
Quantity
) – Quantity[Time] Total pulse duration (corresponds to flat_duration of the slice selection gradient)slice_orientation (
ndarray
) – np.ndarray of shape (3, ) denoting the direction of the slice-normal.time_bandwidth_product (
float
) – float - used to calculate the rf bandwidth from duration
- Return type:
- Returns:
- slice_selective_sinc_pulse(system_specs, slice_thickness, flip_angle, time_bandwidth_product=4, pulse_duration=None, delay=<Quantity(0.0, 'millisecond')>, slice_position_offset=<Quantity(0.0, 'meter')>, slice_normal=array([0., 0., 1.]))#
Defines slice selective excitation using a Sinc-RF pulse and a slice selection gradient.
. /\ . . ______/\ / \ /\______ . . \/ \/ . . . . __________ . . ____/ \ ___ . . \_____/ . . |pulse-dur| | | . . shortest possible .
- Parameters:
system_specs (
SystemSpec
) – SystemSpecificationsslice_thickness (
Quantity
) – Quantity[Length] containing the required slice-thicknessflip_angle (
Quantity
) – Quantity[Angle] containing the required flip_angletime_bandwidth_product (
float
) – float - used to calculate the rf bandwidth from durationpulse_duration (
Optional
[Quantity
]) – Quantity[Time] Optional - Total pulse duration (corresponds to flat_duration of the slice selection gradient). If not specified, the shortest possible pulse-duration within system limits is calculated.delay (
Quantity
) – Quantity[Time] added time-offsetslice_position_offset (
Quantity
) – Quantity[Length] positional offset in slice normal direction defining the frequency offset of the RF pulseslice_normal (
ndarray
) – np.ndarray of shape (3, ) denoting the direction of the slice-normal.
- Return type:
- Returns:
cmrseq.Sequence
- sms_pulse(system_specs, single_pulse, n_slices, band_gap, slice_thickness, modulation_type='quadrature')#
Modulates the waveform of a given slice selective excitation pulse using the sigpy.mri.rf.dzrf_mb implementation.
- Parameters:
system_specs (
SystemSpec
) –single_pulse (
RFPulse
) – Instance of a cmrseq RFPulse or subclassn_slices (
int
) – Number of slices to simultaneously exciteband_gap (
Quantity
) – Distance between the excited slicesslice_thickness (
Quantity
) – Thickness of the exited slicesmodulation_type (
str
) – from [amplitude, phase, quadrature]
- Return type:
- Returns:
New pulse object with multi-banded waveform
- spectral_spatial_excitation(system_specs, binomial_degree, total_flip_angle, slice_thickness, chemical_shift=3.4, time_bandwidth_product=4.5)#
Constructs a sequence for spectral-spatial excitation containing binomial sinc sub-pulses and trapezoidal slice-selection gradients. The suppressed frequency is defined as chemical shift (with B0 from the system-specification), which determines the temporal gap between the sub-pulses. Feasibility of the pulse composition is checked based on gradient limits and peak rf power.
Note
The effective rf center can be obtained as the mean of all sub-pulse rf centers
The sub-pulse duration is calculated under the assumption of max slew gradient as follows:
\[\begin{split}& \tau = 1/(2CS * B_0 \gamma *1e-6) \\ & \tau / 2 = 2 \delta + T \\ & T = tbw / (\gamma \delta s_{max} \Delta z) \\ & \rightarrow 0 =& 4 \delta^2 - \tau \delta + 2 tbw /(\gamma \Delta z s_{max}) \\ & \rightarrow \delta = \tau \pm \sqrt{\tau ^2 - 32 tbw / \gamma \Delta z s_{max}} ) / 8 \\\end{split}\]where :math:` au` is gap between sub-pulses, \(CS\) is the chemical shift in ppm, \(delta\) is the rise time of the trapezoidal gradient, \(\Delta\) is the pulse/flat top duration and \(s_{max}\) is the system limit for gradient slew-rate.
- Raises:
ValueError: if the pulse is infeasible for system-constrains / slice-thickness /
time-bandwidth-product because the minimal pulse duration + gradient ramp-times is shorter than half of the pulse gap
- Parameters:
system_specs (
SystemSpec
) –binomial_degree (
int
) – Determines the number of sub-pulses. Degree 1 corresponds to 1-1, degree 2 -> 1-2-1 and so on.total_flip_angle (
Quantity
) – Total effective flip angle for on-resonant spins for all sub-pulses combinedslice_thickness (
Quantity
) – Thickness of spatial excitation slab. For very thin slices, the targeted pulse might become infeasiblechemical_shift (
float
) – in parts per miliontime_bandwidth_product – Time bandwidth product used for all sinc sub-pulses
- Return type:
- Returns: