Skip to content

Commit 2f88dc0

Browse files
paper : better description of the GUI panels
1 parent 42ecc30 commit 2f88dc0

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

paper/paper.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ bibliography: paper.bib
3434
Why ? Because here is a **lot** of them ! Some pulses are designed to selectivly excite a specific volume, like a thin slice of matter, while other are called "non-selective" and will excite the whole volume, without spatial selectivity. Why are they so different from each other ? How to compare them ? Which one to choose ? The [main objective]{.ul} of this toolbox is to answer these questions, using a **G**raphical **U**ser **I**nterface (GUI) or pragramaticaly, or both.
3535

3636
# Statement of need
37-
An RF pulse is _complex_ curve. It can be associated with a magnetic gradient curve which is _real_. Modern MRI scanners do use this complex RF curve : you provide the _magnitude_ and the _phase_ of the pulse. To simulate the pulse response, we can solve the Bloch equations [@Bloch:1946] that describe the evolution of a magnitisation vector under a magnetic field. Depending on different starting conditions, we can evaluate, for example, the slice profile of a slice-selective RF pulse.
37+
An RF pulse $B1(t)$ is _complex_ curve. It can be associated with a magnetic gradient curve $G(t)$ which is _real_. Modern MRI scanners do use this complex RF curve : you provide the _magnitude_ $|B1(t)|$ and the _phase_ $\angle B1(t)$ of the pulse. To simulate the pulse response of the pulse, we can solve the Bloch equations [@Bloch:1946] that describe the evolution of a magnitisation vector $M_{xyz}(t)$ under a magnetic field $B1(t) + G(t)$. Depending on different starting conditions, we can evaluate, for example, the slice profile of a slice-selective RF pulse.
3838

3939
# Key features
4040

@@ -43,19 +43,28 @@ Open the GUI and click on a pulse in the library list. The pulse is loaded with
4343

4444
![GUI panel for Pulse definition. \label{fig:gui_pulse_definition}](gui_pulse_definition.png){width="60%"}
4545

46+
In \autoref{fig:gui_pulse_definition}, you can see the selected pulse from the library, it's editable parameters, then the corresponding curves. Since the $B1(t)$ is _complex_, in the literature you can see the pulse described as _real(t)_ + _imaginary(t)_ or _magnitude(t)_ + _phase(t)_. Here, the 4 curves are drawn. Also, articles can present pulses with a "frequency modulation" (FM), as the derivative of the _phase(t)_. This FM curve is also shown. The last curve is the magnetic gradient : some pulses use constant magnetic gradient, other use a time-varying one.
47+
4648
Simulation parameters, such as magnetic field strength, can be edited :
4749

4850
![GUI panel for Simulation parameters. \label{fig:gui_simulation_parameters}](gui_simulation_parameters.png){width="60%"}
4951

52+
All editable fields, checkboxs, etc in \autoref{fig:gui_simulation_parameters} can be manipulated programmatically.
53+
5054
By default, the simulation is automatically triggered, and the results plotted :
5155

5256
![GUI panel for Simulation results. \label{fig:gui_simulation_results}](gui_simulation_results.png){width="100%"}
5357

58+
In \autoref{fig:gui_simulation_results} several subplots :
59+
- $M_{xyz}(t)$ is represented in a 1D-plot and with a 3D-plot to visualize the vector trajectory in space.
60+
- $SliceProfile(position)$ can evaluated at different $frequency\_offcet$ using a slider
61+
- $ChemicalShift(frequency\_offcet)$ can be evaluated at different $position$ using a slider
62+
5463
Changing a parameter such as the pulse duration, in the GUI or programaticaly, will update the pulse, re-plot it's curves, and the simulation updated.
5564
All UI parameters possess an _update_ mechanism, mostly used to trigger the simulation with the fresh value.
5665

5766
## Usage
58-
As mentioned, the package was designed to work with both GUI and scripting. The GUI allows fast pulse exploration, since the simulation is updated if any parameter changes. Meanwhile, when you need to optimize pragramatically a pulse, or if you need to compare two pulses, coding should be a better choice. This is why there are many analysis scripts bundeled. These scripts use the full API provided by this package and take advantage of the MATLAB easy vector computation and plotting system.
67+
As mentioned, the package was designed to work with both GUI and scripting. The GUI allows fast pulse exploration, since the simulation is updated if any parameter changes. Meanwhile, when you need to optimize pragramatically a pulse, or if you need to compare two pulses, coding should be a better choice. This is why there are many analysis scripts bundled. These scripts use the full API provided by this package and take advantage of the MATLAB easy vector computation and plotting system.
5968

6069
The user can use it's on pulses by:
6170
- Selecting the `USER_DEFINED` pulse in the GUI (see the top left of \autoref{fig:gui_pulse_definition}), then fill in the curves, and finally trigger the simulation.

0 commit comments

Comments
 (0)