JEMRIS  2.8.2
open-source MRI simulations
Example 1: Simulation of common MRI artifacts

This section provides the details for reproducing the results in Figure 3 of the manuscript:

Stoecker T, Vahedipour K, Pflugfelder D, Shah NJ. High Performance Computer MRI Simulations. Magnetic Resonance in Medicine. 2010, 64(1), 186 - 193.


Four different MRI artifact simulations are presented:

Remarks:


Chemical shift artifact in EPI

To start, copy the EPI sequence from the jemris installation (usually /usr/local/share/jemris/examples/epi.xml) to your favorite working directory and modify it in the following way:

This is the resulting XML code:

<Parameters FOVx="256" FOVy="256" GradMaxAmpl="2" GradSlewRate="10" Name="P" Nx="96" Ny="96" TE="100" TR="200">
<ConcatSequence Name="C1">
<AtomicSequence Name="A1">
<HARDRFPULSE Axis="RF" Duration="0.1" FlipAngle="90" Name="P1"/>
<AtomicSequence Name="A2" RotAngle="90">
<TrapGradPulse Area="0.5*a1" Axis="GX" Name="P2" Observe="P4,Area"/>
<TrapGradPulse Area="a1" Axis="GY" Name="P3" Observe="P,KMAXy"/>
<DelayAtomicSequence Delay="a1" DelayType="C2C" Name="D1" Observe="P,TE" StartSeq="A1" StopSeq="C2"/>
<ConcatSequence Name="C2" Observe="P,Ny" Repetitions="a1">
<AtomicSequence Name="A3" RotAngle="90">
<TrapGradPulse ADCs="a3" Axis="GX" FlatTopArea="2*a1*(-1)^a2" FlatTopTime="1.5" Name="P4" Observe="P,KMAXx/C2,Counter/P,Nx"/>
<AtomicSequence Name="A4" RotAngle="90">
<TrapGradPulse Area="-a1" Axis="GY" Name="P5" Observe="P,DKy/C2,Counter/C2,Repetitions"/>
<DelayAtomicSequence Delay="a1" DelayType="B2E" Name="D2" Observe="P,TR" StartSeq="A1"/>

Now start the matlab simultion GUI and change to the "brain sample"; choose "slice" 45 to get a lower slice in which more fat is present. Further, choose T2*=0 in order to neglect local spin dephasing. Running the simulation then yields the expected result:

ex_art_csepi1.jpg


Note that further increasing the spatial shift of the fat may be either achieved by a slower EPI echo train (as in reality), or simply by increasing the chemical shift in the simulation GUI.


Distortion due to a nonlinear gradient encoding field

To start, copy the GRE sequence from the jemris installation (usually /usr/local/share/jemris/examples/gre.xml) to your favorite working directory and modify it in the following way:

This is the resulting XML code:

<?xml version="1.0" encoding="utf-8"?>
<Parameters FOVx="256" FOVy="256" FOVz="1" Name="P" Nx="128" Ny="128" Nz="1" TE="10" TR="500">
<ConcatSequence Name="R">
<ConcatSequence Name="C" Observe="P,Ny" Repetitions="a1">
<ATOMICSEQUENCE Name="A1">
<HARDRFPULSE Axis="RF" Duration="0.1" FlipAngle="80" Name="P1"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1" DelayType="C2C" Name="D1" Observe="P,TE" StartSeq="A1" StopSeq="A3"/>
<ATOMICSEQUENCE Name="A2">
<TRAPGRADPULSE Area="-a1/2" Axis="GX" Name="P2" Observe="P4,Area"/>
<TRAPGRADPULSE Area="a1-a2*a3" Axis="GY" Name="P3" Observe="P,KMAXy/C,Counter/P,DKy"/>
</ATOMICSEQUENCE>
<ATOMICSEQUENCE Name="A3">
<TRAPGRADPULSE ADCs="a2" Axis="GX" FlatTopArea="-2*a1" FlatTopTime="4" NLG_field="G*X+0.0001*G*X^3" Name="P4" Observe="P,KMAXx/P,Nx"/>
<TRAPGRADPULSE Area="a1/2" Axis="GX" InitialDelay="a2" Name="P5" Observe="P4,Area/P4,EndOfFlatTop"/>
<TRAPGRADPULSE Area="-a1" Axis="GY" InitialDelay="a2" Name="P6" Observe="P3,Area/P4,EndOfFlatTop"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1" DelayType="B2E" Name="D2" Observe="P,TR" StartSeq="A1"/>

Run the simulation with the default brain slice:

ex_art_nlg_gre.jpg


Banding artifacts in a trueFISP sequence

Save the gradient echo sequence of the provious example to the new file "trufi.xml" and remove the NLG_field attribute of the readout gradient pulse (P4). To change it into a trueFISP sequence (fully balanced SSFP) several steps are needed:

Further, we modified TE,TR, and the readout length to manipulate the banding artifacts. The final XML file is:

<Parameters FOVx="256" FOVy="256" FOVz="1" GradMaxAmpl="2" GradSlewRate="10" Name="P" Nx="128" Ny="128" Nz="1" TE="6" TR="12">
<ConcatSequence Name="R">
<ConcatSequence Name="Cp" Repetitions="192">
<ATOMICSEQUENCE Name="A1p">
<HARDRFPULSE Axis="RF" Duration="0.1" FlipAngle="70" InitialPhase="90+(-1)^a1*90" Name="P1p" Observe="Cp,Counter/Cp,Repetitions"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1" DelayType="B2E" Name="D2p" Observe="P,TR" StartSeq="A1p"/>
<ConcatSequence Name="C" Observe="P,Ny" Repetitions="a1">
<ATOMICSEQUENCE Name="A1">
<HARDRFPULSE Axis="RF" Duration="0.1" FlipAngle="70" InitialPhase="90+(-1)^a1*90" Name="P1" Observe="C,Counter/C,Repetitions"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1" DelayType="C2C" Name="D1" Observe="P,TE" StartSeq="A1" StopSeq="A3"/>
<ATOMICSEQUENCE Name="A2">
<TRAPGRADPULSE Area="-a1/2" Axis="GX" Name="P2" Observe="P4,Area"/>
<TRAPGRADPULSE Area="a1-a2*a3" Axis="GY" Name="P3" Observe="P,KMAXy/C,Counter/P,DKy"/>
</ATOMICSEQUENCE>
<ATOMICSEQUENCE Name="A3">
<TRAPGRADPULSE ADCs="a2" Axis="GX" FlatTopArea="-2*a1" FlatTopTime="6" Name="P4" Observe="P,KMAXx/P,Nx" PhaseLock="1"/>
</ATOMICSEQUENCE>
<ATOMICSEQUENCE Name="A4">
<TRAPGRADPULSE Area="-a1/2" Axis="GX" Name="P5" Observe="P4,Area"/>
<TRAPGRADPULSE Area="-a1" Axis="GY" Name="P6" Observe="P3,Area"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1" DelayType="B2E" Name="D2" Observe="P,TR" StartSeq="A1"/>

Test if the sequence diagram and k-space trajectory looks as expected.

Then, use the same lower slice as in the first example, turn off CS and turn on suceptibility at 127 MHz (3 Tesla). The simualtion result looks like this:

ex_art_band_trufi.jpg


Artifacts arising from a long refocusing pulse in a spin echo sequence

As with tyhe previous example, it takes only a few steps to convert the GRE sequence into a spin echo sequence. Here, just the result is shown:

<?xml version="1.0" encoding="utf-8"?>
<Parameters FOVx="256" FOVy="256" FOVz="1" Name="P" Nx="96" Ny="96" Nz="1" TE="70" TR="400">
<ConcatSequence Name="R">
<ConcatSequence Name="C" Observe="P,Ny" Repetitions="a1">
<ATOMICSEQUENCE Name="A1">
<HARDRFPULSE Axis="RF" Duration="0.1" FlipAngle="90" Name="P1"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1/2" DelayType="C2C" Name="D1" Observe="P,TE" StartSeq="A1" StopSeq="A1b"/>
<ATOMICSEQUENCE Name="A2">
<TRAPGRADPULSE Area="a1/2" Axis="GX" Name="P2" Observe="P4,Area"/>
<TRAPGRADPULSE Area="-a1+a2*a3" Axis="GY" Name="P3" Observe="P,KMAXy/C,Counter/P,DKy"/>
</ATOMICSEQUENCE>
<ATOMICSEQUENCE Name="A1b">
<HARDRFPULSE Axis="RF" Duration="50" FlipAngle="180" Name="P1b"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1/2" DelayType="C2C" Name="D1b" Observe="P,TE" StartSeq="A1b" StopSeq="A3"/>
<ATOMICSEQUENCE Name="A3">
<TRAPGRADPULSE ADCs="a2" Axis="GX" FlatTopArea="2*a1" FlatTopTime="4" Name="P4" Observe="P,KMAXx/P,Nx"/>
<TRAPGRADPULSE Area="a1/2" Axis="GX" InitialDelay="a2" Name="P5" Observe="P4,Area/P4,EndOfFlatTop"/>
</ATOMICSEQUENCE>
<DELAYATOMICSEQUENCE Delay="a1" DelayType="B2E" Name="D2" Observe="P,TR" StartSeq="A1"/>

Note the extremely long duration of the 180 degree refocussing pulse "P1b".

Run this sequence on the default brain slice. The result displays the artefact as a center stripe.

ex_art_selongrf.jpg


-- last change 24.05.2018 | Tony Stoecker | Imprint | Data Protection --