# DWI General Electric, proyecto Florencia Assaneo
# Conversión de dcm a nii
dcm2niix -o . Ax_DWI_HARDI_HB3_B2500_64D_2
dcm2niix -o . Ax_DWI_HARDI_HB3_B800_64D_3
dcm2niix -o . Ax_DWI_REVPE_4
Esto produce archivos `?.{nii.gz,bvec,bval}` donde `?` está en el último campo de la carpeta. Por ejemplo, `Ax_DWI_REVPE_4` es `4`.
# Concatenación de DWIs
Dado que los dos shells quedaron en adquisiciones distintas, debemos concatenarlos y generar sus respectivos bval y bvec.
mrcat -axis 3 2.mif 3.mif - | mrconvert - -export_grad_fsl dwis.{bvec,bval,nii.gz}

Las imágenes `dwis.nii.gz` tienen los ojos alargados, porque fueron adquiridas con _EPI positive blips_ (P>>A); son muchos volúmenes (106). En cambio, las imágenes revpe (4.nii.gz) tienen negative blips y son solamente 2 volúmenes (una b=0 y una DWI).
# Pre-procesamiento
Usamos el script `inb_topup.sh` para hacernos la vida más fácil y llamar de un jalón a topop y a eddy. Recordemos que `4.nii.gz` es la adquisición _revpe_ (reversed phase encoding). Hay más información sobre esto [en la documentación de eddy en el sitio de fsl](https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/topup/TopupUsersGuide).
Nos vamos a una máquina con CUDA (por ejemplo `nyquist` y os aseguramos que tenemos fsl versión 6.0.2. No correrlo con CUDA implica varias horas de preprocesamiento.
fsl602
Y ahora sí corremos el script de preprocesamiento.
inb_topup.sh 4.{nii.gz,bval,bvec} dwis.{nii.gz,bval,bvec} dwi_preproc -cuda -keep_tmp -fixPos
Esto se tarda alrededor de 60 minutos.
Al terminar veremos que las imágenes están mucho menos distorsionadas:

# Tensor de difusión
Revisamos que todo esté en orden. Usaré mrtrix3 para generar el tensor de difusión. Me gusta el formato `.mif`, pero bien podría escribir `.nii.gz` si me diera la gana.
Primero genero una máscara:
dwi2mask -fslgrad dwi_preproc_corrected.{bvec,bval,nii} dwi_preproc_corrected_mask.nii
Ahora estimo el tensor de difusión:
dwi2tensor -fslgrad dwi_preproc_corrected.{bvec,bval,nii} -mask dwi_preproc_corrected_mask.nii dt.mif
extraigo métricas del tensor:
tensor2metric -fa fa.mif -vector v1.mif -adc adc.mif dt.mif
Y para visualizar los tensores sin que me distraigan los tensores gigantes del LCR, le pongo una máscara basada en ADC:
mrcalc adc.mif 0.001 -lt dt.mif -mul dt_masked.mif
Para finalmente visualizar:

# Tractografía
Aunque yo soy muy feliz con [mrtrix](https://www.mrtrix.org/), en este documento utilizaré [dsi-studio](https://dsi-studio.labsolver.org/) para hacer tractografía de manera automática. Existen versiones para todos los sistemas operativos. El programa es muy lógico y nos muestra el orden de los pasos que haremos. En este tutorial nos quedaremos en la creación de tractografía, y no lo llevaremos al análisis de conectividad (_connectometry_).
Empezamos cargando los datos. Primero que nada, nos aseguramos que tenemos archivos `.bvec` y `.bval` con el mismo nombre que nuestro archivo `.nii.gz`. En mi caso tenemos `dwi_preproc_corrected.nii`, `dwi_preproc_corrected.bvec`, y `dwi_preproc_corrected.bval`.


Al terminar de cargar (unos cuantos segundos), nos mostrará la _B-table_, una tabla que nos muestra los valores $b$, y la dirección del gradiente de difusión. Podemos notar que comenzamos con imágenes $b=0$ (sin vector asociado), y después muchas imágenes DWI con $b=2500 s/mm^2$, luego otras $b=0$ y finalmente unas DWIs con $b=800$

...

La parte inferior de esta tabla me pregunta dónde guardar el archivo que se generará, y con qué nombre. Este archivo contendrá toda la información de las imágenes y los bvecs y bvals.

En la pantalla principal de dsi-studio, ahora vemos el archivo que creamos (terminación `.src.gz`). Le damos doble clic para comenzar a procesar.
En la primer pestaña podemos hacer control de calidad de nuestros datos. Dando clic en cada columna de la _B-table_ podemos ver la imagen correspondiente, y cambiar rebanadas. Los botones nos permiten identificar rebanadas o volúmenes como datos a ignorar (en caso de que tengan artefactos).


En el siguiente paso generamos una máscara binaria para únicamente procesar donde hay tejido. También seleccionamos el modelo de difusión a ajustar (DTI, GQI, o QSDR). Seleccionaré GQI, y doy clic a **Run Reconstruction**. Como podemos ver, podríamos seleccionar únicamente DTI si nos interesara, pero GQI de todas maneras va a hacer DTI, así que tenemos ambos con mínimo esfuerzo.

Esto generará un archivo `.fib` en la misma carpeta donde habíamos creado el archivo `.src.gz`, y podremos encontrarlo en la pantalla principal de dsi-studio. Le damos doble clic.

Esto abrirá una nueva pantalla para todo lo relacionado a tractografía.
Agreguemos la imagen T1 para que podamos hacer un mejor registro de imágenes hacia el atlas y que la tractografía automática funcione mejor. Esto lo hacemos en **Slices** -> **Insert other images**. Y seleccionamos nuestra imagen T1 en formato `.nii.gz`. En **Slices**-->**Adjust registration** podemos ver qué tan bien o mal fusionadas están.
Ahora habilitamos _autotrack_.

Y en **Target** Podemos seleccionar el fascículo que queramos ver, y le damos **Fiber tracking**
Por ejemplo, el _Arcuate_Fasciculus_L_ :

Esto aún lo podemos editar, usando regiones de interés que dibujamos en el panel inferior izquierdo, donde pueden apreciarse los streamlines que intersectan con el plano de imagen.
Por ejemplo, vemos unos streamlines que se van demasiado inferiores en el lóbulo temporal, y queremos quitarlos:

Dibujamos una región donde intersectan, y la convertimos en **ROA** (_region of avoidance_).

Damos clic derecho a nuestro tracto _Arcuate_Fasciculus_L_ y seleccionamos **Filter Tracks by ROI/ROA/END**.

Veremos que esos streamlines desaparecen.
