leoliuf / MRiLab

A Numerical Magnetic Resonance Imaging (MRI) Simulation Platform
https://leoliuf.github.io/MRiLab/
BSD 2-Clause "Simplified" License
201 stars 63 forks source link

Slice thickness not working properly? #41

Open 777Beta opened 3 years ago

777Beta commented 3 years ago

Hi,

I'm confused about how slice selection is implemented in MRiLab. I tried an experiment like this: loaded built-in PSD_SPGR3D sequence. Slice thickness was 88mm. Examined sequence details in SeqDesignPanel: RF pulse: duration 0.3ms, TBP = 4. GzSS: same duration, amplitude = 10^-4 T/m. This RF pulse and SS gradient combination actually produced slice thickness of ~3m and can be confirmed with rfDesignPanel. Furthermore, if I changed slice thickness RF pulse and GzSS parameters did not change. Could you please provide some insights on this?

Thanks much!

leoliuf commented 3 years ago

Thank you for your feedback. In this current version v1.3, most of the default sequences assume a whole body excitation, which doesn't use the slab selection gradient. If there is a slab selection gradient (e.g., GzSelective) in the pulse waveform, the whole body excitation is also implemented with a default gradient value that can produce a very thick slab.

To produce an actual slab excitation matching the RF design, you can simply modify the GzSelective.m

.... % GzAmp=p.GzAmp; bw = Pulse_TBP / (t2End-t2Start); % Pulse_TBP here is the pulse time-bandwidth product, which is pulse type specific GzAmp = bw / ((VObj.Gyro/(2pi)) VCtl.FOVSlice); % slice-select gradient amplitude ....

I didn't implement this in v1.3 because I am working on a newer version with a wide range of 2D and 3D sequences which will have a more advanced and accurate excitation profile for sequence simulation.

Thanks.