pulse sequence GUI: Design a simple Gradient Echo (GRE)

This tutorial will guide you through the basic steps of creating a simple Gradient Echo (GRE) pulse sequence using the Pulse Sequence Designer provided by coreMRI. Before you continue with this article, it is highly recommended to get familiar with the template of the Pulse Sequence Designer by clicking here [@@@ Action is required].

The GRE pulse sequence has the following characteristics: 

Step 1: Create a new pulse sequence and add the user-defined variables

Select the Sequence Designer from the left-side menu (Pulse Sequences -> Sequence Designer) and click on the "Create new" button (figures below - step 1). Add the name (figures below - step 2) and the description (figures below - step 3) of your pulse sequence and press the Save button (figures below - step 4 - icon of floppy disk). Once the new pulse sequence is created, select from the tree view on the left the name of the pulse sequence (figures below - step 5) and select then the "Edit object parameters" mode from the top middle menu (figures below - step 6). Then, make the following changes (figures below - red box).

The User Defined 1 holds the kspacex value, the User Defined 2 holds the kspacey value, the User Defined 3 holds the FOVx value, the User Defined 4 holds the FOVy value, the User Defined 5 holds the slice thickness value, the User Defined 6 holds the receiver bandwidth value and the User Defined 7 holds the maximum gradient strength value.  

Step 2: Create a Group of Blocks (GoB)

In this example, the GoB will work as a single repetition time (TR) which will hold the RF and gradient events for the acquisition of a single kspace line. In order to create one, right-click on the name of your pulse sequence (figure below - step 1) and select "Add group of blocks" (figure below - step 2). In the popup window, pick a name and click the save button.

Step 3: Create three different blocks within the GoB

For the design of this pulse sequence, three different blocks will be required. The first one will hold the slice selection process (across the Z axis), the second one will hold the phase-encoding (PE) process (along the Y axis), the refocusing gradient for the slice selection process (across the Z axis) and the readout prephasor gradient (across the X axis). In order to do that, perform the following:

The pulse sequence GUI should look now like the second figure below.

Step 4: Add the RF object in the "Slice Selection" block

This block will hold the RF excitation pulse and the slice selection gradient (along the Z axis). To add the RF excitation pulse, do the following:

Step 5: Add the slice selection gradient in the "Slice Selection" block

To add the slice selection gradient, do the following:

There are still two remaining tasks for this block:

  1. Define the amplitude of the gradient so as the selected RF pulse to induce a slice thickness of 0.010m. A custom expression should be added in order to update automatically the amplitude of the gradient every time the bandwidth of the RF excitation pulse or the slice thickness value changes
  2. The duration of the trapezoid to be updated automatically ("Trapezoid Flat Time (μs)") in cases we change the duration of the RF excitation pulse

In order to make these changes, select the "Edit object parameters" mode from the top middle menu. The amplitude of the gradient will be defined using the following equation:

In order to add the custom expression for the calculation of the "Peak Amplitude (Tesla/m)", click on the padlock icon (figure below - step 1) next to the label "Peak Amplitude (Tesla/m)". Once the padlock looks locked, a module will appear at the bottom of the page (figure below - step 2). Using this module, formulate the custom expression according to the formula above. Your custom expression should look like the second figure below. Once the custom expression has been defined (second figure below - step 1), click the "Use it" button (second figure below - step 2) to calculate the custom expression and update the value of the field "Peak Amplitude (Tesla/m)". The full custom expression can be seen in the dashed line box.

In order to add the custom expression for the automatic update of the duration of the trapezoid, click on the padlock icon (figure below - step 1) next to the label "Trapezoid Flat Time (μs)". Once the padlock looks locked, a module will appear at the bottom of the page (figure below - step 2). Using this module, set the custom expression to be equal to the duration of the sinc-shaped RF pulse. Once the custom expression has been defined, click the "Use it" button (figure below - step 3) to calculate the custom expression and update the value of the field "Trapezoid Flat Time (μs)". The full custom expression can be seen in the dashed line box.

Step 6: Add the phase encoding gradient in the "PE + GR_Z ref. + GR_X pref." block

Phase encoding is implemented by applying a gradient before the readout. The number of phase-encoding lines (N = kspacey) will define the total number of TRs for the selected pulse sequence. The phase encoding order of the GRE pulse sequence has been selected to be sequential. For N phase encoding steps that are acquired sequentially, the top phase-encoding line of kspace is given by:

where Δky is the phase encoding step size when moving from one TR to the next TR and is given by:

The phase-encoding k-space locations are given by:

where m = 1, 2, ..., N

The area covered by the maximal phase encoding gradient should be ky(1)/gamma. Given that we are allowed to use gradients of maximum gradient amplitude equal to 0.040T/m (User Defined 7 variable), the duration of the phase encoding gradient can be equal to:

So, the peak amplitude of the phase encoding gradient should be:

Based on the above analysis, in order to add the phase encoding gradient the following steps should be performed:

round(1000000*((((([pulseq->user_defined_2]-1)/2)/[pulseq->user_defined_4])/[pulseq->pulseq_gamma])/[pulseq->user_defined_7])) 

((((([pulseq->user_defined_2]-1)/2)-[tr->pulseq_index]+1)/[pulseq->user_defined_4])/[pulseq->pulseq_gamma])/((round(1000000*((((([pulseq->user_defined_2]-1)/2)/[pulseq->user_defined_4])/[pulseq->pulseq_gamma])/[pulseq->user_defined_7])))*0.000001)

Step 7: Add the refocusing gradient in the "PE + GR_Z ref. + GR_X pref." block

In this step we are going to add the refocusing gradient for the slice selection process (Z axis). The duration of this gradient should be equal to the duration (that is, the "Trapezoid Flat Time (μs)") of the phase encoding gradient whereas its area should be half the area of the slice selection gradient. In order to add this gradient in this block, the following steps should be performed:

Step 8: Add the readout gradient in the "Frequency Encoding" block

The magnitude of the readout gradient is given by:

whereas its duration is given by:

In order to add this gradient in this block, the following steps should be performed:

Step 9: Add the readout prephasor gradient in the "PE + GR_Z ref. + GR_X pref." block

In this step we are going to add the prephasor gradient for the readout process (X axis). The duration of this gradient should be equal to the duration (that is, the "Trapezoid Flat Time (μs)") of the phase encoding gradient whereas its area should be half the area of the readout gradient. In order to add this gradient in this block, the following steps should be performed:

The custom expression should look like the expression in the dashed line box in the second figure below (it is the negative of the half area of the readout gradient, as described in step 8). Once the custom expression has been defined, click the "Use it" button (second figure below - step 3) to calculate the custom expression and update the value of the field "Peak Amplitude (Tesla/m)". The custom expression should look like the following expression:

-((([pulseq->user_defined_6]/([pulseq->pulseq_gamma]*[pulseq->user_defined_3]))*[pulseq->user_defined_1]/[pulseq->user_defined_6])/2)/([gr_y->trap_flat]*0.000001) 

Step 10: Add an acquisition (ACQ) object in the "Frequency Encoding" block

The receiver will open during the readout process. Moreover, each kspace line should take a unique index. These indexes will be used later for reconstruction purposes. In order to do that, the following steps should be performed:

Step 11: Add a software crusher gradient in the "Frequency Encoding" block

Usually the crusher gradients are placed at the end of each TR in order to null the signal on the transverse plane. The crusher gradients are usually strong gradients that may induce artificial spurious echoes in MR simulations. For this purpose, instead of using true crusher gradients we will add software crushers at the end of each TR. In order to do this, the following steps should be performed:

The pulse sequence should look like the following figure:

Step 12: Copy the group of blocks (GoB) N times to create the entire pulse sequence

In this example, the kspace consists of 256 kspace lines. This requires the group of blocks that was developed in the previous steps to be copied 255 times. In order to do that, the following steps should be performed:

[@@@ Action is required - Add a screen capture of the entire pulse sequence]

Tags: pulse sequence pulse sequence GUI sequence Designer