Pulse Sequence Diagrams Using Metapost
In which I use MetaPost to generate publication quality pulse sequence diagrams...
Pulse sequences are the series of radio-frequency pulses required to generate an MR image. If you are an MR Physicist you will see these a lot and probably wondered how can I generate nice pulse sequences for my thesis, papers etc. Well handily using MetaPost and these files you can! First install Tex Live*:
sudo USE="doc dvi2tty dvipdfm extra games graphics music png pstricks science truetype X" emerge -av texlive
Then install MetaPost:
sudo emerge -av metapost
Then ensure you have all the necessary files from CTAN which aren't installed alongside metapost†:
mkdir ~/texmf
mkdir ~/texmf/metapost
cd ~/texmf/metapost
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/README
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/TEX.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/boxes.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/format.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/graph.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/marith.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/mfplain.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/mpost.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/plain.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/rboxes.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/sarith.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/string.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/texnum.mp
wget http://mirrors.ctan.org/graphics/metapost/base/texmf/metapost/base/troffnum.mp
Do this in /usr/share/texmf to allow all users to access the files. Finally, download the pulse sequence files from http://www.celos.net/comp/pulses/ to the directory you intend to run MetaPost from.
Now write your pulse sequence into a metapost file. Below is an example of a generic FLASH sequence - basically treat each part of your sequence as a line and follow the documentation in the pulse.mp file:
%FLASH sequence
beginfig(1);
input pulses.mp;
initf;
startline(rf,"RF");
xline(2);
xpulse(1,1,"");
xline(6);
startline(g0,"Gx");
xline(1);
xsquare(2,0.5);
xsquare(1,-0.5);
xline(5);
startline(g1,"Gy");
xline(3);
xtable(1,0.8,5, -1);
xline(5);
startline(g2,"Gz");
xline(3);
xsquare(2,-0.5);
xsquare(3,0.5);
xline(1);
endfig;
end;
The section below if added after the image but before endfig; will add a white background instead of a transparent one.
% save image to temp variable
picture pic;
pic := currentpicture;
% clear image currentpicture := nullpicture;
% fill a bounding pox of pic with color
fill bbox pic withcolor white;
% re-draw pic ontop
draw pic;
If you have ImageMagick installed you can easily convert the image to a png or similar for use in Windows or uploading to your blog:
convert -density 300 flash.1 flash.png
You should end up with a nice pulse sequence diagram:
*Gentoo installation shown
†Gentoo doesn't pull in these files and I found the solution here: http://tiaozhanshu.com/doc/funtoo/metapost
Tom Out!
P.S. Now a Major Github repository! https://github.com/tawilkinson/pulses
References
[1] Haase, A., et al. (1986) FLASH Imaging. Rapid NMR Imaging Using Low Flip-Angle Pulses. Journal of Magnetic Resonance, 67, pp 258-66.