BSSFP: compenstation of slice-selection gradient results in incorrect duration
When calling the cmrseq.seqdefs.ssfp.balanced_SSFP
definition the slice selection balancing seems off in duration:
# Define MR-system specifications
system_specs = cmrseq.SystemSpec(max_grad=Quantity(50, "mT/m"), max_slew=Quantity(200., "mT/m/ms"),
grad_raster_time=Quantity(0.01, "ms"),
rf_raster_time=Quantity(0.01, "ms"))
# Define Fourier-Encoding parameters
fov = Quantity([151.5, 51.5], "mm")
res = Quantity([1.5, 1.5], "mm")
matrix_size = (fov / res).m.astype(int)
slice_thickness = Quantity(4, "mm")
pulse_duration = Quantity(1., "ms")
adc_duration=Quantity(4., "ms")
flip_angle=Quantity(np.pi/2, "rad")
seq_list = cmrseq.seqdefs.ssfp.balanced_SSFP(system_specs, matrix_size, inplane_resolution=res,
slice_thickness=slice_thickness, adc_duration=adc_duration,
flip_angle=flip_angle, pulse_duration=pulse_duration)
## split into blocks
plotseq = deepcopy(seq_list[0])
tr = plotseq.duration
rf, grad1, ro = [], [], []
for rep_idx, seq in enumerate(seq_list[1:]):
seq.shift_in_time(-tr * rep_idx)
print(seq.blocks)
rf.append(cmrseq.Sequence(system_specs=system_specs,
[seq.get_block(key) for key in ["ss_sinc_rf_0", "slice_select_0"]]))
# plotseq.concatenate(seq)
f, a = plt.subplots(1, 1)
# cmrseq.plotting.plot_sequence(seq_list[0], [a, a, a, a])
cmrseq.plotting.plot_sequence(plotseq, [a, a, a, a])
Edited by Jonathan Weine