You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: paper/paper.md
+11-2
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ bibliography: paper.bib
34
34
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.
35
35
36
36
# 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.
38
38
39
39
# Key features
40
40
@@ -43,19 +43,28 @@ Open the GUI and click on a pulse in the library list. The pulse is loaded with
43
43
44
44
{width="60%"}
45
45
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
+
46
48
Simulation parameters, such as magnetic field strength, can be edited :
47
49
48
50
{width="60%"}
49
51
52
+
All editable fields, checkboxs, etc in \autoref{fig:gui_simulation_parameters} can be manipulated programmatically.
53
+
50
54
By default, the simulation is automatically triggered, and the results plotted :
51
55
52
56
{width="100%"}
53
57
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
+
54
63
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.
55
64
All UI parameters possess an _update_ mechanism, mostly used to trigger the simulation with the fresh value.
56
65
57
66
## 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.
59
68
60
69
The user can use it's on pulses by:
61
70
- 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