---
tags: C13Lab
#{%hackmd theme-dark %}
---
{%hackmd theme-dark %}
# ratcortex-dwi-streams
:::info
Scripts to process dMRI volumes and create cortical streamlines in rat data.
:::
---
:::spoiler **Raw bruker data; how to convert to Mrtrix format.**
A partir de la carpeta de datos `bruker_data_folder` (generada por el software _Paravision_ de _Bruker_) se crean los archivos `*.mih` ([MRtrix image format header](https://mrtrix.readthedocs.io/en/latest/getting_started/image_data.html#mrtrix-image-formats-mih-mif)) de los volúmenes contenidos en dicha carpeta, con el comando:
```bash!
# pwd=output_folder
inb_bruker_recursive_convert_mih.sh bruker_data_folder prefix
```
Los archivos `*.mih` quedarán entonces dentro de la carpeta `output_folder`, donde se ejecutó el comando, con el prefijo `prefix`:
```bash!
output_folder/
├── prefix_001_1_Localizer_E1.mih
├── prefix_002_DWIzoom_E2.mih
├── prefix_003_DWIzoom.mih
└── prefix_004_T2_TurboRARE_E4.mih
```
:::warning
:warning: El prefijo `prefix` suministrado al comando `inb_bruker_recursive_convert_mih.sh` no debe incluir `/`.
:::
Los archivos `*.mih` son _headers_ que referencían a los datos en `bruker_data_folder`. Para obtener los datos íntegros en un sólo archivo se usa el commando `mrconvert` para obtener los volúmenes en formato `*.mif`. En el caso de archivos DWI podemos ejecutar:
```bash!
mrconvert prefix_002_DWIzoom_E2.mih sub-01_raw.mif -bvalue_scaling false -export_grad_mrtrix sub-01_grad_raw.b
```
La opción `-bvalue_scaling false` desactiva el escalamiento de los _b-values_ por el cuadrado de la norma del _b-vector_ correspondiente (`true` por _default_); la opción `-export_grad_mrtrix sub-01_grad_raw.b` exporta la tabla de gradientes al archivo suministrado.
:::
---
:::spoiler **Preprocessing dMRI volumes with Mrtrix**
```bash!
# noise estimation & removal
dwidenoise sub-01_raw.mif sub-01_den.mif -noise sub-01_noise.mif.gz
```
```bash!
# gibbs rings artifact remmoval
mrdegibbs $in $out -axes 0,1
```
```bash!
# eddy currents & motion artifacts correction
inb_eddy_correct_sge.sh $in ${out_folder_path}/take_on_mean.mif 0 fsl
```
```bash!
# bias-field artifact correction
mesh=10; spline=3; s=1
dwibiascorrect ants $in $out -bias $bias -mask $mask -ants.b [${mesh},${spline}] -ants.s $s
```
:::
---
## Streamline generation
**Pipeline _wrapper:_** **`nii2streams.sh`**
**`nii2streams.sh -h`** to display help:
```bash!
Usage: nii2streams.sh inline_roi outline_roi ref_image [side] [out_dir] [prefix]
Info: Generates columnar & laminar cortical streamlines within
the area between the provided ROIs.
Parameters: inline_roi - Cortical inline (nifti format)
outline_roi - Interior (nifti format)
ref_image - reference subject image to get the affine transform (nifti format)
side - hemisphere side of the given ROIs
out_dir - Output dirctory (default = 'inline_roi' directory)
prefix - string to prefix created filenames (default = prefix of 'inline_roi'
Returns: '*_out_resampled.tck' & '*_out_resampled_h.tck' streamlines files.
```
---
:::spoiler **Pipeline description**
* Para trazar ROIs _sub-voxel_ con `MRtrix` en las imágenes DWI, se crean nuevos volúmenes con rejillas sub-muestreadas coronalmente:
```bash
mrgrid -scale 2,2,1 -interp nearest $input regrid $output
```
![](https://i.imgur.com/7k53J38.png)
* Se delinea la parte exterior e interior de la corteza:
![](https://i.imgur.com/QAJ8qUI.png)
* Se crea una máscara cortical cerrando los dos segmentos anteriores:
![](https://i.imgur.com/PbY2jOk.png)
* Se dilata la máscara cortical (9 pixeles):
![](https://i.imgur.com/yzNb1G8.png)
* Con la línea inferior de la corteza, se crea una ROI proyectando los extremos de la línea vertical y horizontalmente hacia el centro del cerebro:
![](https://i.imgur.com/I5aNJOS.png)
* A esta ROI se le recortan 9 pixeles de la parte medial:
![](https://i.imgur.com/nzk9LDi.png)
* A partir de la ROI previa y la máscara cortical dilatada se crea una máscara con valores 1,2,3:
![](https://i.imgur.com/8J7RjHF.png)
* Con la máscara anterior el software `mincLaplace` crea un campo vectorial con origen en la parte exterior de la corteza y destino en la parte interior:
![](https://i.imgur.com/JKvj8Wy.png)
* Este campo vectorial es luego restringido con la máscara cortical:
![](https://i.imgur.com/W4LWOeM.png)
* Se construyen _streamlines_ con origen en el exterior de la corteza que fluyan hacia el interior bajo la influencia del campo:
![](https://i.imgur.com/Ir7Fyjo.png)
* Se muestrean valores de mapas a lo largo de los streamlines:
![](https://i.imgur.com/nXvsGN8.png)
:::
<!--
https://i.imgur.com/7k53J38.png
https://i.imgur.com/QAJ8qUI.png
https://i.imgur.com/PbY2jOk.png
https://i.imgur.com/yzNb1G8.png
https://i.imgur.com/I5aNJOS.png
https://i.imgur.com/nzk9LDi.png
https://i.imgur.com/8J7RjHF.png
https://i.imgur.com/JKvj8Wy.png
https://i.imgur.com/W4LWOeM.png
https://i.imgur.com/Ir7Fyjo.png
https://i.imgur.com/nXvsGN8.png
-->
---