Þ ¤pathÙ]/home/runner/work/KomaMRI.jl/KomaMRI.jl/docs/src/tutorial/pluto/01-gradient-echo-spin-echo.jl¨metadata�«frontmatterƒ¤tags‘«educational¥titleÙ!Understanding basic MRI sequences«descriptionÙBFree Induction Decay (FID), Gradient Echo (GE), and Spin Echo (SE)¬cell_resultsÞ 0Ù$35ff3402-dc36-4b91-bec9-b4d21faf3e68Чrunning§runtimeÎ�ûØT¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$35ff3402-dc36-4b91-bec9-b4d21faf3e68¹depends_on_disabled_cells¦queued¤logs�¦output†¤bodyÚhŒ
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚµšZVóǰpersist_js_state·has_pluto_hook_featuresÂÙ$18c82ff1-0bde-4fa0-848c-d0eb73d1ac7cЧrunning§runtimeÎ0o<[¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$18c82ff1-0bde-4fa0-848c-d0eb73d1ac7c¹depends_on_disabled_cells¦queued¤logs�¦output†¤bodyÚp˜
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚµš_-³1°persist_js_state·has_pluto_hook_featuresÂÙ$2e65ae31-f50a-462b-9744-80bf6cdb388eЧrunning§runtimeÎ *–¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$2e65ae31-f50a-462b-9744-80bf6cdb388e¹depends_on_disabled_cells¦queued¤logs�¦output†¤bodyÚ$/
¤mime©text/html¬rootassignee°recon_t2_star_se²last_run_timestampËAÚµš_,R°persist_js_state·has_pluto_hook_featuresÂÙ$45952512-aaf1-43d8-a95e-c32bb2633f42Чrunning§runtimeÎ ÑÖ¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$45952512-aaf1-43d8-a95e-c32bb2633f42¹depends_on_disabled_cells¦queued¤logs�¦output†¤bodyÚ'
(4.7) Simulate using seq_se and obj_t2star
(4.8) Compare the signal obtained in (4.6) with the one at (3.5)
(4.9) Reconstruct the 1D image
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚµšN�`»°persist_js_state·has_pluto_hook_featuresÂÙ$34824db7-13c4-45e2-befa-f027b9b585c0Чrunning§runtimeÎ{Ðð¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$34824db7-13c4-45e2-befa-f027b9b585c0¹depends_on_disabled_cells¦queued¤logs�¦output†¤bodyÚ3ä
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚµš_„2/°persist_js_state·has_pluto_hook_featuresÂÙ$97104c46-e81f-444a-957f-0bbb1b02f1b8Чrunning§runtimeÎ Ù¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$97104c46-e81f-444a-957f-0bbb1b02f1b8¹depends_on_disabled_cells¦queued¤logs�¦output†¤bodyÚ
3. $T_{2}^{*}$-decay
The $T_{2}^{*}$-decay is the signal decay produced by microscopic distribution of off-resonance.
The exact distribution of off-resonance is
$$p_{\Delta w}(w) = \frac{T_2^{'}}{\pi(1+T_2^{'2} w^2)},\quad\text{with }\frac{1}{T_2^{*}} = \frac{1}{T_2} + \frac{1}{T_2^{'}}.$$
In this excercise we will simplify this distribution, but we will obtain a similar effect.
(3.1) Create a new phantom named obj_t2star with spins at the same positions as the original phantom obj, each having a linear distribution of off-resonance. To achieve this, follow these steps:
(3.1.1) Create an empty phantom called obj_t2star.
(3.1.2) Create a linear off-resonance distribution such that the range $2\pi [-10, 10]\,\mathrm{rad/s}$ is covered uniformly with $N_{\mathrm{isochromats}} = 20$ (use the function range(start, stop, length)).
(3.1.3) Iterate over the elements off of the linear distribution (for loop) and create copies of the original phantom (obj_aux = copy(obj)) and set the off-resonance of that copy to off with obj_aux.Δw .= off.
(3.1.4) Update obj_t2star by appending the modified copies obj_aux (obj_t2star += obj_aux).
(3.1.5) Finally, outside the loop, divide the proton density obj_t2star.� by $N_{\mathrm{isochromats}} = 20$ and rename the phantom obj_t2star.name = "T2 star phantom".
(3.2) Plot obj_t2star with plot_phantom_map(obj_t2star, :Δw) and verify it is correct
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚµš^¤ñÔ°persist_js_state·has_pluto_hook_featuresÂÙ$97479437-9ce3-4b33-9134-0f2af89bccb5Чrunning§runtimeÎ «âg¸depends_on_skipped_cellsµpublished_object_keys�§errored§cell_idÙ$97479437-9ce3-4b33-9134-0f2af89bccb5¹depends_on_disabled_cells¦queued¤logs“ˆ¥group¬GPUFunctions¤lineÿ£msg’Ú The GPU functionality is being called but no GPU backend is loaded
to access it. Add 'using CUDA / Metal / AMDGPU / oneAPI' to your
code. Defaulting back to the CPU. (No action is required if you want
to run on the CPU). oneAPI support is experimental.
ªtext/plain¥level¤Info¢id´KomaMRICore_991108fe§cell_idÙ$97479437-9ce3-4b33-9134-0f2af89bccb5¦kwargs�¤fileÙM/home/runner/.julia/packages/KomaMRICore/iTdyz/src/simulation/GPUFunctions.jlˆ¥groupSimulatorCore¤lineÿ£msg’Ù.Running simulation in the CPU with 4 thread(s)ªtext/plain¥level¤Info¢id´KomaMRICore_618da742§cell_idÙ$97479437-9ce3-4b33-9134-0f2af89bccb5¦kwargs•’¬koma_version’©v"0.13.0"ªtext/plain’ªsim_method’…¦prefix±KomaMRICore.Bloch¨elements�¤type¦struct¬prefix_short¥Bloch¨objectid°ffffffff967bc7f6Ù!application/vnd.pluto.tree+object’¥spins’£400ªtext/plain’«time_points’£143ªtext/plain’ªadc_points’£100ªtext/plain¤fileÙN/home/runner/.julia/packages/KomaMRICore/iTdyz/src/simulation/SimulatorCore.jlˆ¥group¦stdout¤lineÿ£msg’ÙM 0.009235 seconds (17.10 k allocations: 1.111 MiB, 72.55% compilation time)
ªtext/plain¥level®LogLevel(-555)¢id´PlutoRunner_40f9f5d1§cell_idÙ$97479437-9ce3-4b33-9134-0f2af89bccb5¦kwargs�¤fileÙP/home/runner/.julia/packages/Pluto/sRdkC/src/runner/PlutoRunner/src/io/stdout.jl¦output†¤bodyÙ