mrisd
is a library in MATLAB
designed to draw MRI sequence diagrams.
git clone
or download the library, then addpath
on the main directory. There will be no collition between mrisd
and existing functions/objects because mrisd
is a package, creating it's own namespace. (https://fr.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html).
The library uses MATLAB
object-oriented-programming.
There are 5 (+1) logical axes :
- RF
- Gradient : Slice selection
- Gradient : Phase encoding
- Gradient : Readout
- ADC
- (annotations)
Each "gradient" is considered as a single lob, controlled using a single object : if you want to draw 2 lobs, such as SliceSelection_Setter and SliceSelection_Rewinder, they are 2 different objects.
All gradient lobs are trapezoidal : they have a rampup, flattop, and rampdown portions.
Many methods exist for intuitive placement :
SliceSelection_Setter.set_flattop_on_rf(RF_90)
SliceSelection_Rewinder.set_onset_at_elem_offset(SliceSelection_Setter);
ADC.set_middle_using_TRTE(RF_090.middle + TE);
A system of block allows easier drawing for repetitive patterns, such as EPI. See example bellow.
Most features are describes in the examples bellow.
I found the "annotations" not very pleasing. For the moment, they are considered as objects, exactly just likes the other RF, gradient, ADC, elements. Maybe there is a better strategy... I'm opened to suggestions.
- add more methods for objects placement
- change gradient objects behaviour : for the moment, there are by default defined using ratios between flattop and rampup/rampdown so they look like trapeze. An option to force flattop=0 and make them lool like triangles is to come.
- better annotation system
- more blocks (just EPI & diffusion for now)
- different RF pulse shapes (just sinc for now)
- draw a kind of rectangle arround a "block" (like EPI) to show it's a whole block
None
R2017b+