Skip to content

Commit b80fc95

Browse files
pdf rendering is now ok
figures needed to be separated by empty lies to be interpreted as Figure 1, Figure 2, ... and make the autoref work
1 parent d1cf7d5 commit b80fc95

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
/test
99
/html_publish_matlab
1010
+mri_rf_pulse_sim/+rf_pulse/+local
11+
/paper/paper.pdf
1112

1213
# Octave
1314
octave-workspace

paper/make_draf_pdf.sh

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
3+
docker run --rm -it \
4+
--volume $PWD:/data \
5+
--user $(id -u):$(id -g) \
6+
--env JOURNAL=joss \
7+
openjournals/inara \
8+
-o pdf paper.md

paper/paper.md

+13-10
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,9 @@ bibliography: paper.bib
2929
---
3030

3131
# Summary
32-
**M**agnetic **R**esonance **I**maging (MRI) is a non-invasive non-ionisong technique mainly used to acquire images of the human body. To do so, $MRI$ uses **R**adio**F**requency (RF) pulses to excite matter, and magnetic gradients to encode the image. This toolbox focuses on the simulation and evaluation of such RF pulses.
32+
**M**agnetic **R**esonance **I**maging (MRI) is a non-invasive non-ionisong technique mainly used to acquire images of the human body. To do so, MRI uses **R**adio**F**requency (RF) pulses to excite matter, and magnetic gradients to encode the image. This toolbox focuses on the simulation and evaluation of such RF pulses.
3333

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 in the scanner.
35-
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 Graphical User Interface (GUI) or pragramaticaly, or both.
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.
3635

3736
# Statement of need
3837
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.
@@ -41,22 +40,26 @@ An RF pulse is _complex_ curve. It can be associated with a magnetic gradient cu
4140

4241
## Interactivity
4342
Open the GUI and click on a pulse in the library list. The pulse is loaded with default parameters, which are displayed and editable, and it's curves are plotted:
43+
4444
![GUI panel for Pulse definition. \label{fig:gui_pulse_definition}](gui_pulse_definition.png){width="60%"}
4545

46-
Simulation parameters, such as magnetic field strength, can be edited :
46+
Simulation parameters, such as magnetic field strength, can be edited :
47+
4748
![GUI panel for Simulation parameters. \label{fig:gui_simulation_parameters}](gui_simulation_parameters.png){width="60%"}
4849

49-
By default, the simulation is automatically triggered, and the results plotted :
50+
By default, the simulation is automatically triggered, and the results plotted :
51+
5052
![GUI panel for Simulation results. \label{fig:gui_simulation_results}](gui_simulation_results.png){width="100%"}
5153

52-
All UI parameters possess an _update_ mechanism, mostly used to trigger the simulation with the fresh value. 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.
54+
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+
All UI parameters possess an _update_ mechanism, mostly used to trigger the simulation with the fresh value.
5356

5457
## Usage
55-
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 change. Meanwhile, when you need to optimize pragramatically a pulse, or if you need to compare two pulses, coding should is 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.
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.
5659

57-
The user can use it's on pulses :
58-
* by selecting the `USER_DEFINED` pulse in the GUI, then fill in the curves, and finally trigger the simulation.
59-
* by add it's on pulses in a dedicated directory, so they will appear in th GUI.
60+
The user can use it's on pulses by:
61+
- 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.
62+
- Adding it's on pulses in a dedicated directory, so they will appear in th GUI.
6063

6164
## Modularity
6265
Many pulses are composed using different algorithm. For example, `sinc_mb_verse` uses the Sinc as base waveform [@Bernstein:2004], then the Simultaneous Multi-slice MutliBand (mb) algorithm to excite multiple slices at once [@Barth:2016], and finally the VERSE algorithm compresses the pulse in time to achieve the same slice profile while keeping the pulse under constrains, such as the maximum RF amplitude [@Conolly:1988; @Hargreaves:2004]. The composition of `sinc_mb_verse` pulse comes from the heritage of all 3 classes : the `sinc` pulse, the `sms_mb` abstract class, and the `verse` abstract class :

0 commit comments

Comments
 (0)