--- 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 --> ---