User Tools

Site Tools


neuroimagen:altcorrdti

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

neuroimagen:altcorrdti [2019/08/30 20:45]
osotolongo [Corregistro]
neuroimagen:altcorrdti [2020/08/04 10:58]
Line 1: Line 1:
-====== Nueva version de procesamiento de DTI (FACEHBI) ===== 
- 
-===== Corregistro ===== 
-El corregistro de imagenes DTI  usando ANTs en el proyecto MOPEAD funciona correctamente.  
- 
-No obstante en FACEHBI las imagenes DTI estan cortadas por el frontal y por el cerebelo. El soft de corregistro es muchas cosas pero definitivamente no es magico.  
- 
-Lo que voy a intentar es combinar los dos metodos utilizados hasta ahora, el de la vesion 0.2 del pipeline (viejo) y el de la version 0.3 del pipeline (nuevo). El primero usa //flirt// y //fnirt// y hace su trabajo pero no con demasiado lustro, el segundo usa ANTs y es espectacular poniendo la nariz en el cuello. 
- 
-El primer metodo consiste en registrar la FA a la plantilla de FA de FSL. Esto funciona mas o menos bien y nos da  una base para mover el B0 al espacio MNI y de ahi al espacio T1. Lo que voy a hacer es utilizar este B0 trasladado al espacio T1 para hacer una mascara. Aplico esta mascara al T1 y con este T1 //chopeado// :-D puedo utilizar ANTs. O sea, registro el B0 al T1 cortado.  
- 
-++++ Despues de muchas vueltas esta es la mejor aproximacion que he logrado.| 
- 
-<code bash dti_proc_x.sh> 
-#!/bin/sh 
-debug=1 
- 
-in=`${FSLDIR}/bin/remove_ext $1` 
-shift 
-t1=`${FSLDIR}/bin/remove_ext $1` 
-shift 
-b_in=$1 
-shift 
-out=`${FSLDIR}/bin/remove_ext $1` 
-shift 
-td=${out}'/.tmp_'${b_in} 
- 
-if [ ! -d "$td" ]; then 
-        mkdir $td 
-fi 
- 
-if [ ! -d "$out" ]; then 
-        mkdir $out 
-fi 
- 
-echo "DTI preproccessing begins ..." 
-echo [`date`] 
-echo 
-${FSLDIR}/bin/fslroi ${in} ${out}/${b_in}_dti_b0 0 1 
-echo "Copying files for ${b_in} to ${td}/" 
-echo 
-${FSLDIR}/bin/imcp ${in} ${td}/${b_in} 
-cp ${in}.bval ${td}/bvals 
-cp ${in}.bvec ${td}/bvecs 
-echo "Doing correction on ${td}/${b_in}" 
-echo 
-${FSLDIR}/bin/eddy_correct ${td}/${b_in} ${td}/data 0 
-echo "Doing BET on ${td}/data now" 
-echo 
-${FSLDIR}/bin/bet ${td}/data ${td}/nodif_brain -f 0.3 -g 0 -n -m 
-echo "Running dtifit on ${td}/data" 
-echo 
-${FSLDIR}/bin/dtifit --data=${td}/data --out=${td}/dti --mask=${td}/nodif_brain_mask --bvecs=${td}/bvecs --bvals=${td}/bvals 
-echo "I will copy all output files to ${out}/${b_in}_XXXXX" 
-echo 
-for x in ${td}/dti*; do ${FSLDIR}/bin/imcp ${x} ${out}/${b_in}_$(basename $x); done; 
-${FSLDIR}/bin/imcp ${td}/nodif_brain_mask ${out}/${b_in}_nodif_brain_mask 
-${FSLDIR}/bin/imcp ${td}/data ${out}/${b_in}_data 
-echo "I need the T1 image"   
-${FSLDIR}/bin/fslreorient2std ${t1} ${out}/${b_in}_t1_reoriented 
-echo "and brain extracted too" 
-$FSLDIR/bin/bet ${out}/${b_in}_t1_reoriented ${out}/${b_in}_t1_reoriented_brain 
-echo "Registering FA to FMRIB58" 
-${FSLDIR}/bin/flirt -ref ${FSLDIR}/data/standard/FMRIB58_FA_1mm.nii.gz -in ${out}/${b_in}_dti_FA.nii.gz -omat ${td}/${b_in}_dti_affine.mat 
-${FSLDIR}/bin/fnirt --in=${out}/${b_in}_dti_FA.nii.gz --aff=${td}/${b_in}_dti_affine.mat --cout=${td}/${b_in}_dti_warp --config=FA_2_FMRIB58_1mm 
-${FSLDIR}/bin/applywarp --ref=${FSLDIR}/data/standard/FMRIB58_FA_1mm.nii.gz --in=${out}/${b_in}_dti_FA.nii.gz --warp=${td}/${b_in}_dti_warp --out=${td}/${b_in}_fa_std 
-echo "Moving B0 to MNI space and making B0 mask" 
-${FSLDIR}/bin/applywarp --ref=${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz --in=${out}/${b_in}_dti_b0 --warp=${td}/${b_in}_dti_warp --out=${td}/${b_in}_b0_std 
-${FSLDIR}/bin/fslmaths ${td}/${b_in}_b0_std -bin ${td}/${b_in}_b0_std_mask 
-${FSLDIR}/bin/fslmaths ${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz -mas ${td}/${b_in}_b0_std_mask.nii.gz ${td}/${b_in}_mni_masked 
-echo "Registering MNI choped template to Native Space now ...." 
-ANTS 3 -m CC[${out}/${b_in}_t1_reoriented.nii.gz, ${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o ${td}/${b_in}_dti_mni_t1.nii.gz 
-WarpImageMultiTransform 3 ${td}/${b_in}_mni_masked.nii.gz ${td}/mni_mask_warped_tmp.nii.gz -R ${out}/${b_in}_t1_reoriented.nii.gz ${td}/${b_in}_dti_mni_t1Warp.nii.gz ${td}/${b_in}_dti_mni_t1Affine.txt 
-echo "Calculating choped T1" 
-${FSLDIR}/bin/fslmaths ${out}/${b_in}_t1_reoriented.nii.gz -mas ${td}/mni_mask_warped_tmp.nii.gz ${td}/t1_mask_warped_tmp.nii.gz 
-echo "Registering B0  to choped T1" 
-antsRegistrationSyN.sh -d 3 -f ${td}/t1_mask_warped_tmp.nii.gz -m ${td}/${b_in}_dti_b0.nii.gz -o ${out}/${b_in}_t1_dti_warp -t s -j 1 
-echo "Lets begin now" 
-########### Voy a mover el template MNI a B0 para chequear despues ############# 
-########### aunque no es necesario para el calculo ############################# 
-echo "Registering MNI template to T1" 
-antsRegistrationSyN.sh -d 3 -f ${out}/${b_in}_t1_reoriented.nii.gz -m ${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz -o ${td}/${b_in}_mni_t1_warp 
-antsApplyTransforms -d 3 -i ${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz -r ${out}/${b_in}_t1_reoriented.nii.gz -t ${td}/${b_in}_mni_t1_warp1Warp.nii.gz -t ${td}/${b_in}_mni_t1_warp0GenericAffine.mat -o ${out}/${b_in}_mni_t1_warped.nii.gz 
-echo "Registering warped MNI to B0" 
-antsApplyTransforms -d 3 -i ${out}/${b_in}_mni_t1_warped.nii.gz -r ${td}/${b_in}_dti_b0.nii.gz -t [${out}/${b_in}_t1_dti_warp0GenericAffine.mat, 1] -t ${out}/${b_in}_t1_dti_warp1InverseWarp.nii.gz -o ${out}/${b_in}_mni_to_b0.nii.gz 
-############ Ahora le toca a los atlas #################### 
-echo "Warping Atlases to B0" 
-antsApplyTransforms -d 3 -i ${FSLDIR}/data/atlases/JHU/JHU-ICBM-labels-1mm.nii.gz -r ${out}/${b_in}_t1_reoriented.nii.gz -t ${td}/${b_in}_mni_t1_warp1Warp.nii.gz -t ${td}/${b_in}_mni_t1_warp0GenericAffine.mat -o ${td}/${b_in}_JHU_labels_tmp.nii.gz 
-antsApplyTransforms -d 3 -i ${td}/${b_in}_JHU_labels_tmp.nii.gz -r ${td}/${b_in}_dti_b0.nii.gz -t [${out}/${b_in}_t1_dti_warp0GenericAffine.mat, 1] -t ${out}/${b_in}_t1_dti_warp1InverseWarp.nii.gz -n GenericLabel[Linear] -o ${out}/${b_in}_JHU_labels.nii.gz 
-antsApplyTransforms -d 3 -i ${FSLDIR}/data/atlases/JHU/JHU-ICBM-tracts-maxprob-thr25-1mm.nii.gz -r ${out}/${b_in}_t1_reoriented.nii.gz -t ${td}/${b_in}_mni_t1_warp1Warp.nii.gz -t ${td}/${b_in}_mni_t1_warp0GenericAffine.mat -o ${td}/${b_in}_JHU_tracts_tmp.nii.gz 
-antsApplyTransforms -d 3 -i ${td}/${b_in}_JHU_tracts_tmp.nii.gz -r ${td}/${b_in}_dti_b0.nii.gz -t [${out}/${b_in}_t1_dti_warp0GenericAffine.mat, 1] -t ${out}/${b_in}_t1_dti_warp1InverseWarp.nii.gz -n GenericLabel[Linear] -o ${out}/${b_in}_JHU_tracts.nii.gz 
-########################################################### 
- 
-if [ $debug = 0 ] ; then 
-        echo "Removing temporary files" 
-        echo 
-        rm -rf ${td} 
-#       rm -rf ${out}/${b_in}_tmp_* 
-fi 
- 
-exit 0 
-</code> 
-++++ 
- 
-Para meter esto en el //dti_reg// tengo que definir un modo nuevo, 
- 
-<code perl> 
-    if (/^-chop/) {$old=1; $chop=1;} 
-</code> 
- 
-y añadir el procedimiento, 
- 
-<code perl> 
-if($chop){ 
-    $order = $pipe_dir."/bin/dti_proc_x.sh ".$names[0]." ".$t1_names[0]." ".$dtis{$subject}.$subject." ".$w_dir; 
-}else{ 
-</code> 
- 
-Esta cosa funciona mas o menos.  
- 
-Ahora el report. Es muy complicado identificar un buen registro en el espacio nativo DTI dada la baja resolucion de las imagenes. Lo mejor es hacer la comprobacion en el espacio nativo T1, que es el mayor resolucion. He comprobado que la deformacion inversa funciona correctamente asi que si esta bien registrado en T1 debe quedar correcto en DTI. 
- 
-++++ Voy a hacer un report con los B0 trasladados a espacio de T1.| 
- 
-<code perl make_dti_report_x.pl> 
-#!/usr/bin/perl 
-use strict; use warnings; 
-use File::Slurp qw(read_file); 
-use File::Find::Rule; 
-use File::Basename qw(basename); 
-use Data::Dump qw(dump); 
-use File::Copy::Recursive qw(dirmove); 
- 
-use NEURO qw(load_study print_help achtung shit_done); 
- 
- 
- 
-@ARGV = ("-h") unless @ARGV; 
-while (@ARGV and $ARGV[0] =~ /^-/) { 
-    $_ = shift; 
-    last if /^--$/; 
-    if (/^-h/) { print_help $ENV{'PIPEDIR'}.'/doc/fsl2fs.hlp'; exit;} 
-} 
-my $study = shift; 
-unless ($study) { print_help $ENV{'PIPEDIR'}.'/doc/make_pet_report.hlp'; exit;} 
- 
-my %std = load_study($study); 
- 
-#Run this script ONLY on "Detritus" 
-#or change the paths to the correct ones 
- 
-my $w_dir=$std{'WORKING'}; 
-my $d_dir=$std{'DATA'}; 
- 
-# Redirect ouput to logfile (do it only when everything is fine) 
-#my $debug = "$d_dir/.debug_report.log"; 
-#open STDOUT, ">$debug" or die "Can't redirect stdout"; 
-#open STDERR, ">&STDOUT" or die "Can't dup stdout"; 
- 
-my $order = "slicesdir -o "; 
-my @names = find(file => 'name' => "*_b0_to_t1.nii.gz", in => $w_dir); 
-foreach my $name (sort @names){ 
-        (my $tmpl = $name) =~ s/_b0_to_t1/_t1_reoriented/; 
-        $order .= $name.' '.$tmpl." "; 
-} 
-chdir $w_dir; 
-system($order); 
-print "$order\n"; 
-dirmove('slicesdir', 'dtis'); 
-</code> 
- 
-Aqui estoy haciendo dos reports en uno para poder revisar mejor los resultados. 
-++++ 
- 
-Ahora vamos a probarlo, 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ dti_reg.pl -chop facehbi 
-... 
-[osotolongo@detritus facehbi]$ make_dti_report_x.pl facehbi 
-</code> 
-Tras esto toca hacer una revision visual de los regitros. Primero apunto los sujetos que he proceso, en el formato necesario para utilizar posteriormente este archivo, 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ for x in working/dtis/*reoriented.png; do y=$(echo ${x} | awk -F"_" '{print $6}'); echo $y; done | sed 's/smc\(.*\)/\1;smc/' > dti_regs.csv 
-</code> 
- 
-Ahora edito el archivo y BORRO los sujetos mal registrados. Los restante sujetos son lso suceptibles de ser tratados mediante tractografia.  
- 
-De las 198 imagenes tengo 125 correctamente registradas. No es niguna maravilla pero dados los problemas en la adquisicion es casi magico.  
- 
-**Ejemplo de imagen bien registrada,** 
- 
-{{:neuroimagen:nas_data_facehbi_working_smc0215_b0_to_t1_to_nas_data_facehbi_working_smc0215_t1_reoriented.png| dti reg OK}} 
- 
-**Ejemplo de imagen mal registrada,** 
- 
-{{:neuroimagen:nas_data_facehbi_working_smc0200_b0_to_t1_to_nas_data_facehbi_working_smc0200_t1_reoriented.png| dti reg KO}} 
- 
-**Resumen:** Debo hacer inspeccion visual del report y hacer un //csv// con los sujetos bien registrados. Para esto basta con hacer, 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ ls working/dtis/*_reoriented.png | awk -F"smc" {'print $3'} | awk -F"_" {'print $1'} | sed 's/\(.*\)/\1;smc/' > dti_reg_review.csv 
-</code> 
- 
-y despues editar el archivo //dti_reg_review.csv// para **borrar** los sujetos con registro erroneo. 
- 
-De esta manera quedaria todo preparado para las metricas, bastaria superponer los archivos, 
- 
-<code> 
-XXXX_dti_FA.nii.gz 
-XXXX_dti_MD.nii.gz 
-XXXX_JHU_labels.nii.gz 
-XXXX_JHU_tracts.nii.gz 
-</code> 
- 
-===== Tractografia ===== 
- 
-Tanto //bedpostx// como //probtrackx// funcionan en espacio nativo DTI. Esto nosha obligado a mover todo al espacio DTI  pero ya tenemos las matrices necesarias, provenientes del registro. 
- 
-Hay dos tipos de tractoggrafia que deseamos hacer. Primero, suministrando las regiones, segun la segmentacion de Freesurfer, en el archivo //dti_track.seed//. 
- 
-Aqui he escrito un nuevo procedimiento, cambiando el registro de //aseg// (mas bien //aparc//) para que use la matriz warp inversa de ANTs.  
- 
-++++ Suena raro pero en el codigo se entiende mejor | 
-<code bash dti_bedtrack_cuda_t1.sh> 
-#!/bin/sh 
- 
-Usage() { 
-    echo ""                                                                                                                                                               
-    echo "Usage: dti_bedtrack.sh  <project> <name> <working dir> <mode>"                                                                                                           
-    echo ""                                                                                                                                                               
-    echo "You must have FSL installed in order to run this script"                                                                                                        
-    echo ""                                                                                                                                                               
-    exit 1 
-} 
- 
-[ "$3" = "" ] && Usage 
-debug=1 
-prj=$1 
-shift 
-pollo=$1 
-shift 
-w_dir=$1 
-shift 
-mode=$1 
-shift 
-td=${w_dir}'/.tmp_'${pollo} 
-bd=${td}'/bedpostx' 
-list=${w_dir}'/../dti_track.seed' 
-if [ ! -d "$bd" ]; then 
-        mkdir $bd 
-fi 
-echo "Copying files" 
-${FSLDIR}/bin/imcp ${td}/data ${bd}/data 
-${FSLDIR}/bin/imcp ${td}/nodif_brain_mask ${bd}/nodif_brain_mask 
-cp ${td}/bvecs ${bd}/bvecs 
-cp ${td}/bvals ${bd}/bvals 
-echo "Making bedpostx" 
-echo [`date`] 
-${FSLDIR}/bin/bedpostx_gpu ${bd} 
-echo "So far, so good" 
-echo [`date`] 
-echo "Getting aseg" 
-${PIPEDIR}/bin/get_aparc.sh ${prj} ${pollo} ${w_dir} 
-#WarpImageMultiTransform 3 ${w_dir}/${pollo}_aseg.nii.gz ${td}/${pollo}_aseg_warped.nii.gz -R ${td}/hifi_b0.nii.gz ${td}/${pollo}_dti_t1_b0Warp.nii.gz ${td}/${pollo}_dti_t1_b0Affine.txt 
-antsApplyTransforms -d 3 -i ${w_dir}/${pollo}_aseg.nii.gz -r ${w_dir}/${pollo}_dti_b0.nii.gz -t [${w_dir}/${pollo}_t1_dti_warp0GenericAffine.mat, 1] -t ${w_dir}/${pollo}_t1_dti_warp1InverseWarp.nii.gz -n GenericLabel[Linear] -o ${td}/${pollo}_aseg_warped.nii.gz 
-########################################### 
-######## Falta calcular las mascaras ###### 
-########################################### 
-if [ ${mode} = 0 ]; then 
-        for x in `awk NF $list`; do 
-                ${FSLDIR}/bin/fslmaths ${td}/${pollo}_aseg_warped -uthr ${x} -thr ${x} -div ${x} ${td}/${pollo}_mask_${x}; 
-                echo "${td}/${pollo}_mask_${x}.nii.gz" >> ${td}/${pollo}_mask.list; 
-        done; 
-else 
-        count=0 
-        for x in `awk NF $list`; do 
-                ${FSLDIR}/bin/fslmaths ${td}/${pollo}_aseg_warped -uthr ${x} -thr ${x} -div ${x} ${td}/${pollo}_mask_${x}; 
-                if [ ${count} = 0 ]; then 
-                        ${FSLDIR}/bin/imcp ${td}/${pollo}_mask_${x} ${td}/${pollo}_mask_seed; 
-                else 
-                        ${FSLDIR}/bin/fslmaths ${td}/${pollo}_mask_seed -add ${td}/${pollo}_mask_${x} ${td}/${pollo}_mask_tmp; 
-                        ${FSLDIR}/bin/imcp ${td}/${pollo}_mask_tmp ${td}/${pollo}_mask_seed; 
-                fi; 
-                ((count++)); 
-        done; 
-        echo "${td}/${pollo}_mask_seed.nii.gz" > ${td}/${pollo}_mask.list; 
-fi 
-###########################################              
-echo "Doing probtrackx" 
-probtrackx2 --opd --forcedir -s ${bd}.bedpostX/merged -m ${td}/nodif_brain_mask -x ${td}/${pollo}_mask.list --dir=${td}/probtrack_out 
-rm ${td}/${pollo}_mask.list; 
-mv ${td}/probtrack_out ${w_dir}/${pollo}_probtrack_out 
-echo "Done" 
-echo [`date`] 
-</code> 
-++++ 
- 
-La segunda opcion es usar un atlas (por ahora el de la UofM),  
- 
-**No todas las ROI del atlas estan en el mismo formato. Hay que chequear cada ROI que se añada y en caso necesario registrarla usando 1mm o 2mm segun sea apropiado.** 
- 
-Algo asi, 
- 
-<code bash> 
-                dim1=$(fslinfo ${x} | grep "^dim1" | awk {'print $2'}); 
-                if [ ${dim1} = 91 ]; then 
-                        if [ ! -e ${td}/${pollo}_dti_mni_t121Warp.nii.gz ]; then 
-                                antsRegistrationSyNQuick.sh -d 3 -f ${w_dir}/${pollo}_t1_reoriented.nii.gz -m ${FSLDIR}/data/standard/MNI152_T1_2mm.nii.gz -o ${td}/${pollo}_dti_mni_t12 -t s; 
-                        fi; 
-                        antsApplyTransforms -d 3 -i ${x} -r ${w_dir}/${pollo}_t1_reoriented.nii.gz -t ${td}/${pollo}_dti_mni_t121Warp.nii.gz -t ${td}/${pollo}_dti_mni_t120GenericAffine.mat -o ${td}/${node}_warped.nii.gz; 
-                else 
-                        antsApplyTransforms -d 3 -i ${x} -r ${w_dir}/${pollo}_t1_reoriented.nii.gz -t ${td}/${pollo}_mni_t1_warp1Warp.nii.gz -t ${td}/${pollo}_mni_t1_warp0GenericAffine.mat -o ${td}/${node}_warped.nii.gz; 
-                fi; 
-                antsApplyTransforms -d 3 -i ${td}/${node}_warped.nii.gz -r ${td}/${pollo}_dti_b0.nii.gz -t [${w_dir}/${pollo}_t1_dti_warp0GenericAffine.mat, 1] -t ${w_dir}/${b_in}_t1_dti_warp1InverseWarp.nii.gz -n GenericLabel[Linear] -o ${td}/${pollo}_${node}.nii.gz 
- 
-</code> 
- 
-Esto tengo que añadirloal codigo nuevo pero ademas tengo que revisar el codigo anterior para asegurarme que se tiene en cuenta. 8-o (**Probado con MOPEAD OK**) ;-) 
- 
-++++ Aqui hay que hacer dos trasnformaciones | 
-<code bash> 
-#!/bin/sh 
- 
-Usage() { 
-    echo ""  
-    echo "Usage: dti_bedtrack.sh  <project> <name> <working dir> <network dir> <mode>" 
-    echo ""  
-    echo "You must have FSL installed in order to run this script" 
-    echo "" 
-    exit 1 
-} 
- 
-[ "$4" = "" ] && Usage 
-debug=1 
-prj=$1 
-shift 
-pollo=$1 
-shift 
-w_dir=$1 
-shift 
-net_dir=$1 
-shift 
-mode=$1 
-shift 
-td=${w_dir}'/.tmp_'${pollo} 
-bd=${td}'/bedpostx' 
-list=${w_dir}'/../dti_track.seed' 
-if [ ! -d "$bd" ]; then 
-mkdir $bd 
-fi 
-echo "Copying files" 
-${FSLDIR}/bin/imcp ${td}/data ${bd}/data 
-${FSLDIR}/bin/imcp ${td}/nodif_brain_mask ${bd}/nodif_brain_mask 
-cp ${td}/bvecs ${bd}/bvecs 
-cp ${td}/bvals ${bd}/bvals 
-echo "Making bedpostx" 
-echo [`date`] 
-${FSLDIR}/bin/bedpostx_gpu ${bd} 
-echo "So far, so good" 
-echo [`date`] 
-########################################### 
-echo "Getting nodes and making masks" 
-if [ ${mode} = 0 ]; then 
-        for x in `find ${net_dir} -name "*.nii"`; do 
-                node=`${FSLDIR}/bin/remove_ext $(basename ${x})`; 
-#               WarpImageMultiTransform 3 ${x} ${td}/${node}_warped.nii.gz -R ${w_dir}/${pollo}_t1_reoriented.nii.gz ${td}/${pollo}_dti_mni_t1Warp.nii.gz ${td}/${pollo}_dti_mni_t1Affine.txt; 
-#               WarpImageMultiTransform 3 ${td}/${node}_warped.nii.gz ${td}/${pollo}_${node}.nii.gz -R ${td}/hifi_b0.nii.gz ${td}/${pollo}_dti_t1_b0Warp.nii.gz ${td}/${pollo}_dti_t1_b0Affine.txt; 
-                dim1=$(fslinfo ${x} | grep "^dim1" | awk {'print $2'}); 
-                if [ ${dim1} = 91 ]; then 
-                        if [ ! -e ${td}/${pollo}_dti_mni_t121Warp.nii.gz ]; then 
-                                antsRegistrationSyNQuick.sh -d 3 -f ${w_dir}/${pollo}_t1_reoriented.nii.gz -m ${FSLDIR}/data/standard/MNI152_T1_2mm.nii.gz -o ${td}/${pollo}_dti_mni_t12 -t s; 
-                        fi; 
-                        antsApplyTransforms -d 3 -i ${x} -r ${w_dir}/${pollo}_t1_reoriented.nii.gz -t ${td}/${pollo}_dti_mni_t121Warp.nii.gz -t ${td}/${pollo}_dti_mni_t120GenericAffine.mat -o ${td}/${node}_warped.nii.gz; 
-                else 
-                        antsApplyTransforms -d 3 -i ${x} -r ${w_dir}/${pollo}_t1_reoriented.nii.gz -t ${td}/${pollo}_mni_t1_warp1Warp.nii.gz -t ${td}/${pollo}_mni_t1_warp0GenericAffine.mat -o ${td}/${node}_warped.nii.gz; 
-                fi; 
-                antsApplyTransforms -d 3 -i ${td}/${node}_warped.nii.gz -r ${td}/${pollo}_dti_b0.nii.gz -t [${w_dir}/${pollo}_t1_dti_warp0GenericAffine.mat, 1] -t ${w_dir}/${b_in}_t1_dti_warp1InverseWarp.nii.gz -n GenericLabel[Linear] -o ${td}/${pollo}_${node}.nii.gz 
- 
-                echo "${td}/${pollo}_${node}.nii.gz" >> ${td}/${pollo}_mask.list; 
-        done; 
-else 
-        count=0; 
-        for x in `find ${net_dir} -name "*.nii"`; do 
-                x=`find ${net_dir} -name "${seed}"`; 
-                node=`${FSLDIR}/bin/remove_ext $(basename ${x})`; 
-                dim1=$(fslinfo ${x} | grep "^dim1" | awk {'print $2'}); 
-                if [ ${dim1} = 91 ]; then 
-                        if [ ! -e ${td}/${pollo}_dti_mni_t121Warp.nii.gz ]; then 
-                                antsRegistrationSyNQuick.sh -d 3 -f ${w_dir}/${pollo}_t1_reoriented.nii.gz -m ${FSLDIR}/data/standard/MNI152_T1_2mm.nii.gz -o ${td}/${pollo}_dti_mni_t12 -t s; 
-                        fi; 
-                        antsApplyTransforms -d 3 -i ${x} -r ${w_dir}/${pollo}_t1_reoriented.nii.gz -t ${td}/${pollo}_dti_mni_t121Warp.nii.gz -t ${td}/${pollo}_dti_mni_t120GenericAffine.mat -o ${td}/${node}_warped.nii.gz; 
-                else 
-                        antsApplyTransforms -d 3 -i ${x} -r ${w_dir}/${pollo}_t1_reoriented.nii.gz -t ${td}/${pollo}_mni_t1_warp1Warp.nii.gz -t ${td}/${pollo}_mni_t1_warp0GenericAffine.mat -o ${td}/${node}_warped.nii.gz; 
-                fi; 
-                antsApplyTransforms -d 3 -i ${td}/${node}_warped.nii.gz -r ${td}/${pollo}_dti_b0.nii.gz -t [${w_dir}/${pollo}_t1_dti_warp0GenericAffine.mat, 1] -t ${w_dir}/${pollo}_t1_dti_warp1InverseWarp.nii.gz -n GenericLabel[Linear] -o ${td}/${pollo}_${node}.nii.gz 
-                if [ ${count} -gt 0 ]; then 
-                        ${FSLDIR}/bin/fslmaths ${td}/${pollo}_mask_seed -add ${td}/${pollo}_${node} ${td}/${pollo}_mask_tmp; 
-                        ${FSLDIR}/bin/imcp ${td}/${pollo}_mask_tmp ${td}/${pollo}_mask_seed; 
-                else 
-                        ${FSLDIR}/bin/imcp ${td}/${pollo}_${node} ${td}/${pollo}_mask_seed; 
-                fi 
-                ((count++)); 
-        done 
-        echo "${td}/${pollo}_mask_seed.nii.gz" > ${td}/${pollo}_mask.list; 
-fi 
-###########################################              
-echo "Doing probtrackx" 
-${FSLDIR}/bin/probtrackx2 --opd --forcedir -s ${bd}.bedpostX/merged -m ${td}/nodif_brain_mask -x ${td}/${pollo}_mask.list --dir=${td}/probtrack_out 
-rm ${td}/${pollo}_mask.list; 
-mv ${td}/probtrack_out ${w_dir}/${pollo}_probtrack_out 
-echo "Done" 
-echo [`date`] 
-</code> 
-++++ 
- 
-Probando la primera opcion, (**FPCustom**) 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ cat dti_track.seed  
-1003 
-1008 
-1015 
-1018 
-1020 
-1022 
-1024 
-1028 
-1029 
-1030 
-1031 
-2003 
-2008 
-2015 
-2018 
-2020 
-2022 
-2024 
-2028 
-2029 
-2030 
-2031 
-[osotolongo@detritus facehbi]$ dti_track.pl -cut test_t.csv -t1 facehbi 
-[osotolongo@detritus facehbi]$ squeue 
-             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
-             26994      cuda dti_trac osotolon PD       0:00      1 (Resources) 
-             26995     devel dti_trac osotolon PD       0:00      1 (Dependency) 
-             26991      cuda dti_trac osotolon  R       0:02      1 brick01 
-             26992      cuda dti_trac osotolon  R       0:02      1 brick01 
-             26993      cuda dti_trac osotolon  R       0:02      1 detritus 
-</code> 
- 
-{{:neuroimagen:fdpath_facehbi_example.png|}} 
- 
-**Nota:** Estas son las fibras que conectan las regiones especificadas en el archivo //dti_track.seed//. Para conocer el valor medio de FA o MD en estas fibras solo habria que hacer una mascara con ellas y aplicarla a la imagen correspondiente que ya tenemos despues del //dti_fit//. 
- 
-Aqui probando la segunda opcion, (**Atlas UofM**) 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ cat test_t.csv 
-0001;smc 
-0003;smc 
-0004;smc 
-0006;smc 
-[osotolongo@detritus facehbi]$ dti_track.pl -cut test_t.csv -t1 -uofm DMN facehbi 
-[osotolongo@detritus facehbi]$ squeue 
-             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
-             25671     devel dti_trac osotolon PD       0:00      1 (Dependency) 
-             25668      cuda dti_trac osotolon  R       0:02      1 brick01 
-             25669      cuda dti_trac osotolon  R       0:02      1 brick01 
-             25670      cuda dti_trac osotolon  R       0:02      1 detritus 
-</code> 
-===== Procedimiento individual para FACEHBI ===== 
-=== Corregistro === 
-<code bash> 
-[osotolongo@detritus facehbi]$ dti_reg.pl -chop facehbi 
-[osotolongo@detritus facehbi]$ squeue 
-             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
-             25410     devel dti_reg- osotolon PD       0:00      1 (Resources) 
-             25411     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25412     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25413     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25414     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25415     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25416     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25417     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25418     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-             25419     devel dti_reg- osotolon PD       0:00      1 (Priority) 
-              
-[osotolongo@detritus facehbi]$ make_dti_report_x.pl facehbi 
-</code> 
- 
-y revisar los corregistros visualmente. 
- 
-=== Metricas === 
-<code bash> 
-[osotolongo@detritus facehbi]$ dti_metrics_x.pl -cut dti_reg_review.csv -a1 facehbi 
-</code> 
-=== Tractografia === 
-<code bash> 
-[osotolongo@detritus bin]$ dti_track.pl -t1 -uofm DMN facehbi 
-[osotolongo@detritus bin]$ squeue 
-             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
-             25473      cuda dti_trac osotolon PD       0:00      1 (Resources) 
-             25474      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25475      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25476      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25477      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25478      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25479      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25480      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25481      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25482      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25483      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25484      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-             25485      cuda dti_trac osotolon PD       0:00      1 (Priority) 
-...... 
-</code> 
-===== Notas ===== 
-MNI -> T1 
-<code> 
-[osotolongo@detritus facehbi]$ ANTS 3 -m CC[working/smc0177_t1_reoriented.nii.gz, ${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/.tmp_smc0177/smc0177_dti_mni_t1.nii.gz 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 /usr/local/fsl/data/standard/MNI152_T1_1mm.nii.gz working/.tmp_smc0177/mni_warped_tmp.nii.gz -R working/smc0177_t1_reoriented.nii.gz working/.tmp_smc0177/smc0177_dti_mni_t1Warp.nii.gz working/.tmp_smc0177/smc0177_dti_mni_t1Affine.txt 
-</code> 
- 
-{{:neuroimagen:mni_to_t1_test.png|}} 
- 
-T1 -> DTI 
- 
-Sacar el B0, 
-<code> 
-[osotolongo@detritus facehbi]$ fslroi dti/smc0177s0020.nii.gz working/.tmp_smc0177/smc0177_b0.nii.gz 0 1  
-</code> 
- 
-Transformacion, 
-<code> 
-[osotolongo@detritus facehbi]$ ANTS 3 -m CC[working/.tmp_smc0177/smc0177_b0.nii.gz, working/smc0177_t1_reoriented.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/smc0177_dti_t1_b0.nii.gz 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 working/smc0177_t1_reoriented.nii.gz working/.tmp_smc0177/smc0177_t1_to_b0.nii.gz -R working/.tmp_smc0177/smc0177_b0.nii.gz working/.tmp_smc0177/smc0177_dti_t1_b0Warp.nii.gz working/.tmp_smc0177/smc0177_dti_t1_b0Affine.txt 
-</code> 
- 
-{{:neuroimagen:t1_to_b0_test_fail.png|}} 
- 
-** Aqui esta el problema , el T1 no se puede transformar correctamente al B0. Hay que dar una vuelta mas aqui.** 
- 
-Vamos a intentar registrar el DTI a T1 con //epi_reg// e invertir la transformación, ((Se supone que antes hice algo asi, 
-<code> 
-$FSLDIR/bin/bet ${out}/${b_in}_t1_reoriented ${out}/${b_in}_t1_reoriented_brain 
-</code>)) 
-<code> 
-[osotolongo@detritus facehbi]$ ${FSLDIR}/bin/epi_reg --epi=working/smc0177_data.nii.gz --t1=working/smc0177_t1_reoriented --t1brain=working/smc0177_t1_reoriented_brain --out=working/smc0177_tmp_diff2std 
-[osotolongo@detritus facehbi]$ convert_xfm -omat working/smc0177_tmp_std2diff.mat -inverse working/smc0177_tmp_diff2std.mat 
-[osotolongo@detritus facehbi]$ flirt -in working/smc0177_t1_reoriented.nii.gz -ref working/.tmp_smc0177/smc0177_b0.nii.gz -out working/smc0177_t12b0 -init working/smc0177_tmp_std2diff.mat -applyxfm 
-</code> 
-{{:neuroimagen:t1_to_b0_epi.png|}} 
- 
-EH! esto queda mucho mejor. A ver si se puede mejorar mas, 
-<code> 
-[osotolongo@detritus facehbi]$ ANTS 3 -m CC[working/.tmp_smc0177/smc0177_b0.nii.gz, working/smc0177_t12b0.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/smc0177_dti_t1_b0.nii.gz 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 working/smc0177_t12b0.nii.gz working/.tmp_smc0177/smc0177_t1_to_b0.nii.gz -R working/.tmp_smc0177/smc0177_b0.nii.gz working/.tmp_smc0177/smc0177_dti_t1_b0Warp.nii.gz working/.tmp_smc0177/smc0177_dti_t1_b0Affine.txt 
-</code> 
-{{:neuroimagen:t1_to_b0_ants_fail_2.png|}} 
-**AArrgH!** ANTs falla al hacer la transformacion. **La alternativa puede ser mover todo al T1 que es la imagen con mas informacion y calcular los valores de FA en el espacio nativo del T1** 
- 
-A ver que pasa si hago el warp al reves, del DTI al T1, 
- 
-<code> 
-[osotolongo@detritus facehbi]$ ANTS 3 -m CC[working/smc0177_t1_reoriented.nii.gz, working/.tmp_smc0177/smc0177_b0.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/smc0177_t1_dti_warped_one.nii.gz 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 working/.tmp_smc0177/smc0177_b0.nii.gz working/smc0177_t1_to_b0.nii.gz -R working/smc0177_t1_reoriented.nii.gz working/smc0177_t1_dti_warped_oneWarp.nii.gz working/smc0177_t1_dti_warped_oneAffine.txt 
-</code> 
- 
-{{:neuroimagen:b0_to_t1_fail.png|}} 
- 
-un desastre! 
- 
-Vamos a intentar usando primero //epi_reg//, 
-<code> 
-[osotolongo@detritus facehbi]$ ${FSLDIR}/bin/epi_reg --epi=working/smc0177_data.nii.gz --t1=working/smc0177_t1_reoriented --t1brain=working/smc0177_t1_reoriented_brain --out=working/smc0177_tmp_diff2std 
-[osotolongo@detritus facehbi]$ flirt -in working/.tmp_smc0177/smc0177_b0.nii.gz -ref working/smc0177_t1_reoriented.nii.gz -out working/smc0177_tmp_diff2std.nii.gz -init working/smc0177_tmp_diff2std.mat -applyxfm 
-</code> 
-{{:neuroimagen:b0_to_t1_flirted.png|}} 
- 
-El B0 queda bastante bien para ser una transformacion lineal, cualquiera diria que con un empujocito mas ya queda OK. 
- 
-<code> 
-[osotolongo@detritus facehbi]$ ANTS 3 -m CC[working/smc0177_t1_reoriented.nii.gz, working/smc0177_tmp_diff2std.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/smc0177_t1_dti_warped_two.nii.gz 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 working/smc0177_tmp_diff2std.nii.gz working/smc0177_b0_to_t1.nii.gz -R working/smc0177_t1_reoriented.nii.gz working/smc0177_t1_dti_warped_twoWarp.nii.gz working/smc0177_t1_dti_warped_twoAffine.txt 
-</code> 
- 
-{{:neuroimagen:b0_to_t1_flirted_warped_fail.png|}} 
- 
-Pero no!. ANTs no hace caso de la imagen inicial, solo intenta cualquier tipo de transformacion que encaje el B0 en el T1. **Este approach es tan malo como el anterior**. 
- 
-A ver que pasa con un enfoque //pure FSL// 
- 
-<code> 
-[osotolongo@detritus facehbi]$ fnirt --in=working/.tmp_smc0177/smc0177_b0.nii.gz --aff=working/smc0177_tmp_diff2std.mat --cout=working/smc0177_tmp_nonlinear_diff2std --ref=working/smc0177_t1_reoriented.nii.gz 
-[osotolongo@detritus facehbi]$ applywarp -r working/smc0177_t1_reoriented.nii.gz -i working/.tmp_smc0177/smc0177_b0.nii.gz -w working/smc0177_tmp_nonlinear_diff2std -o working/smc0177_dif2std_warped 
- 
-</code> 
- 
-{{:neuroimagen:2019-06-18-110925_grim.png|}} 
- 
-m( 
-Desastrozo. 
- 
-DTI -> T1 
- 
-La mejor opcion parece ser un corregstro lineal del DTi a espacio nativo T1, usando //epi_reg//, y medir en el espacio T1.  
- 
-<code> 
-[osotolongo@detritus facehbi]$ flirt -ref working/smc0177_t1_reoriented.nii.gz -in working/.tmp_smc0177/smc0177_b0.nii.gz -out working/smc0177_b02t1 -init working/smc0177_tmp_diff2std.mat -applyxfm 
-</code> 
- 
-{{:neuroimagen:2019-06-19-104953_grim.png|}} 
- 
-Todas las transformaciones al espacio T1 parecen funcionar apropiadamente. Se pueden pasar los atlas a espacio T1 y la imagen FA a espacio T1. 
- 
-No obstante, al hacer lo mismo con los atlas se puede ver que la cosa no funciona OK. Quedan demasiado desplazados.  
- 
-DTI -> MNI 
- 
-La mejor opcion parece ser el protocolo antiguo, 
- 
-<code> 
- 
-[osotolongo@detritus facehbi]$ flirt -ref /usr/local/fsl/data/standard/FMRIB58_FA_1mm.nii.gz -in working/smc0177_dti_FA.nii.gz -omat working/smc0177_dti_affine.mat 
-[osotolongo@detritus facehbi]$ fnirt --in=working/smc0177_dti_FA.nii.gz --aff=working/smc0177_dti_affine.mat --cout=working/smc0177_dti_warp --config=FA_2_FMRIB58_1mm 
-[osotolongo@detritus facehbi]$ applywarp --ref=/usr/local/fsl/data/standard/FMRIB58_FA_1mm.nii.gz --in=working/smc0177_dti_FA.nii.gz --warp=working/smc0177_dti_warp --out=working/smc0177_fa_std 
-</code> 
- 
-{{:neuroimagen:2019-06-20-111658_grim.png|}} 
- 
- 
-Lo que puedo hacer es llevar el B0 a espacio MNI con esta info, de ahi al T1 sin problemas,recortar el T1 segun el tamaño del B0 que me quede y registrar el B0 con ANTs a un T1 recortado, 
- 
-<code> 
-[osotolongo@detritus facehbi]$ applywarp --ref=/usr/local/fsl/data/standard/MNI152_T1_1mm.nii.gz --in=working/smc0177_dti_b0 --warp=working/smc0177_dti_warp --out=working/smc0177_b0_std 
-[osotolongo@detritus facehbi]$ fslmaths working/smc0177_b0_std -bin working/smc0177_b0_std_mask 
-[osotolongo@detritus facehbi]$ fslmaths /usr/local/fsl/data/standard/MNI152_T1_1mm.nii.gz -mas working/smc0177_b0_std_mask.nii.gz working/smc0177_mni_masked 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 working/smc0177_mni_masked.nii.gz working/.tmp_smc0177/mni_mask_warped_tmp.nii.gz -R working/smc0177_t1_reoriented.nii.gz working/.tmp_smc0177/smc0177_dti_mni_t1Warp.nii.gz working/.tmp_smc0177/smc0177_dti_mni_t1Affine.txt 
-[osotolongo@detritus facehbi]$ fslmaths working/smc0177_t1_reoriented.nii.gz -mas working/.tmp_smc0177/mni_mask_warped_tmp.nii.gz working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz 
-[osotolongo@detritus facehbi]$ ANTS 3 -m CC[working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz, working/.tmp_smc0177/smc0177_b0.nii.gz, 1, 4] -r Gauss[0,3] -t Elast[1.5] -i 30x20x10 -o working/smc0177_t1_dti_warped.nii.gz 
-[osotolongo@detritus facehbi]$ WarpImageMultiTransform 3 working/.tmp_smc0177/smc0177_b0.nii.gz working/smc0177_b0_to_t1.nii.gz -R working/smc0177_t1_reoriented.nii.gz working/smc0177_t1_dti_warpedWarp.nii.gz working/smc0177_t1_dti_warpedAffine.txt 
-</code> 
- 
-{{:neuroimagen:2019-06-21-113401_grim.png|}} 
- 
-==== intentando guardar la transformacion inversa ==== 
- 
-info aqui: https://github.com/ANTsX/ANTs/wiki/Forward-and-inverse-warps-for-warping-images,-pointsets-and-Jacobians 
- 
-Hay un problema con el procesamientoen espacio T1. Aunque las metricas usuales de FA y/o MD pueden calcularse sin problemas, la tractografia ha de hacerse en espacio DTI. por lo que las mascaras han de llevarse de espacio MNI a espacio nativo T1 a espacio nativo DTI. Y aqui tenemos un problema pues no hemos logrado obtener esta transformatcion adecuadamente.  
- 
-Voy a intentar cambiar la transformacion de ANTs, utilizando los scripts de ANTs. Intentare la mas sencilla primero. 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ antsRegistrationSyNQuick.sh -d 3 -f working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz -m working/.tmp_smc0177/smc0177_b0.nii.gz -o working/smc0177_t1_dti_warped_quick -t s 
- 
--------------------------------------------------------------------------------------- 
- Mapping parameters 
--------------------------------------------------------------------------------------- 
- ANTSPATH is /nas/usr/local/opt/bin/ants/bin 
- 
- Dimensionality:           3 
- Output name prefix:       working/smc0177_t1_dti_warped_quick 
- Fixed images:             working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz 
- Moving images:            working/.tmp_smc0177/smc0177_b0.nii.gz 
- Mask images: 
- Initial transforms: 
- Number of threads:        1 
- Spline distance:          26 
- Transform type:           s 
- MI histogram bins:        32 
- Precision:                d 
- Use histogram matching    0 
-====================================================================================== 
- antsRegistration call: 
--------------------------------------------------------------------------------------- 
-/nas/usr/local/opt/bin/ants/bin/antsRegistration --verbose 1 --dimensionality 3 --float 0 --collapse-output-transforms 1 --output [ working/smc0177_t1_dti_warped_quick,working/smc0177_t1_dti_warped_quickWarped.nii.gz,working/smc0177_t1_dti_warped_quickInverseWarped.nii.gz ] --interpolation Linear --use-histogram-matching 0 --winsorize-image-intensities [ 0.005,0.995 ] --initial-moving-transform [ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1 ] --transform Rigid[ 0.1 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32,Regular,0.25 ] --convergence [ 1000x500x250x0,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox --transform Affine[ 0.1 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32,Regular,0.25 ] --convergence [ 1000x500x250x0,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox --transform SyN[ 0.1,3,0 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32] --convergence [ 100x70x50x0,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox 
--------------------------------------------------------------------------------------- 
-All_Command_lines_OK 
- 
-..... 
-</code> 
- 
-El script nos da unas opciones de input muy simples :-) y ademas muestra cual seria el call de //antsRegistration// apropiado 8-) . en caso de necesidad podria modificarse esta linea y ejecutarla directamente. 
- 
-Los archivos de output contienen las transformaciones directas e inversas,  
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ ls working/smc0177_t1_dti_warped_quick* 
-working/smc0177_t1_dti_warped_quick0GenericAffine.mat   working/smc0177_t1_dti_warped_quick1Warp.nii.gz          working/smc0177_t1_dti_warped_quickWarped.nii.gz 
-working/smc0177_t1_dti_warped_quick1InverseWarp.nii.gz  working/smc0177_t1_dti_warped_quickInverseWarped.nii.gz 
-</code> 
- 
-Para aplicar la transformacion directa, 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ antsApplyTransforms -d 3 -i working/.tmp_smc0177/smc0177_b0.nii.gz -r working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz -t working/smc0177_t1_dti_warped_quick1Warp.nii.gz -t working/smc0177_t1_dti_warped_quick0GenericAffine.mat -o working/smc0177_b0_to_t1_quick.nii.gz 
-</code> 
- 
-{{:neuroimagen:test_1_antssyn_quick.png|}} 
- 
-o 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ antsApplyTransforms -d 3 -i working/.tmp_smc0177/smc0177_b0.nii.gz -r working/smc0177_t1_reoriented.nii.gz -t working/smc0177_t1_dti_warped_quick1Warp.nii.gz -t working/smc0177_t1_dti_warped_quick0GenericAffine.mat -o working/smc0177_b0_to_t1_quick.nii.gz 
-</code> 
- 
-{{:neuroimagen:test_2_antssyn_quick.png|}} 
- 
-que funcionan mas o menos igual. Existe una ligera deformacion en la parte superior por lo que hay que explorar las opciones del registro para mejorarlo. Voy a intentat quitar el //quick// y usar el //histogram matching//. 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ antsRegistrationSyN.sh -d 3 -f working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz -m working/.tmp_smc0177/smc0177_b0.nii.gz -o working/smc0177_t1_dti_warped_quick -t s -j 1 
- 
--------------------------------------------------------------------------------------- 
- Mapping parameters 
--------------------------------------------------------------------------------------- 
- ANTSPATH is /nas/usr/local/opt/bin/ants/bin 
- 
- Dimensionality:           3 
- Output name prefix:       working/smc0177_t1_dti_warped_quick 
- Fixed images:             working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz 
- Moving images:            working/.tmp_smc0177/smc0177_b0.nii.gz 
- Mask images: 
- Initial transforms: 
- Number of threads:        1 
- Spline distance:          26 
- Transform type:           s 
- CC radius:                4 
- Precision:                d 
- Use histogram matching    1 
-====================================================================================== 
- antsRegistration call: 
--------------------------------------------------------------------------------------- 
-/nas/usr/local/opt/bin/ants/bin/antsRegistration --verbose 1 --dimensionality 3 --float 0 --collapse-output-transforms 1 --output [ working/smc0177_t1_dti_warped_quick,working/smc0177_t 
--------------------------------------------------------------------------------------- 
- Mapping parameters 
--------------------------------------------------------------------------------------- 
- ANTSPATH is /nas/usr/local/opt/bin/ants/bin 
- 
- Dimensionality:           3 
- Output name prefix:       working/smc0177_t1_dti_warped_quick 
- Fixed images:             working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz 
- Moving images:            working/.tmp_smc0177/smc0177_b0.nii.gz 
- Mask images: 
- Initial transforms: 
- Number of threads:        1 
- Spline distance:          26 
- Transform type:           s 
- CC radius:                4 
- Precision:                d 
- Use histogram matching    1 
-====================================================================================== 
- antsRegistration call: 
--------------------------------------------------------------------------------------- 
-/nas/usr/local/opt/bin/ants/bin/antsRegistration --verbose 1 --dimensionality 3 --float 0 --collapse-output-transforms 1 --output [ working/smc0177_t1_dti_warped_quick,working/smc0177_t1_dti_warped_quickWarped.nii.gz,working/smc0177_t1_dti_warped_quickInverseWarped.nii.gz ] --interpolation Linear --use-histogram-matching 1 --winsorize-image-intensities [ 0.005,0.995 ] --initial-moving-transform [ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1 ] --transform Rigid[ 0.1 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32,Regular,0.25 ] --convergence [ 1000x500x250x100,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox --transform Affine[ 0.1 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32,Regular,0.25 ] --convergence [ 1000x500x250x100,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox --transform SyN[ 0.1,3,0 ] --metric CC[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,4 ] --convergence [ 100x70x50x20,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox 
--------------------------------------------------------------------------------------- 
-All_Command_lines_OK 
-1_dti_warped_quickWarped.nii.gz,working/smc0177_t1_dti_warped_quickInverseWarped.nii.gz ] --interpolation Linear --use-histogram-matching 1 --winsorize-image-intensities [ 0.005,0.995 ] --initial-moving-transform [ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1 ] --transform Rigid[ 0.1 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32,Regular,0.25 ] --convergence [ 1000x500x250x100,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox --transform Affine[ 0.1 ] --metric MI[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,32,Regular,0.25 ] --convergence [ 1000x500x250x100,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox --transform SyN[ 0.1,3,0 ] --metric CC[ working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz,working/.tmp_smc0177/smc0177_b0.nii.gz,1,4 ] --convergence [ 100x70x50x20,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox 
--------------------------------------------------------------------------------------- 
-All_Command_lines_OK 
- 
- 
-[osotolongo@detritus facehbi]$ antsApplyTransforms -d 3 -i working/.tmp_smc0177/smc0177_b0.nii.gz -r working/smc0177_t1_reoriented.nii.gz -t working/smc0177_t1_dti_warped_quick1Warp.nii.gz -t working/smc0177_t1_dti_warped_quick0GenericAffine.mat -o working/smc0177_b0_to_t1_quick.nii.gz 
-[osotolongo@detritus facehbi]$ ls -l working/smc0177_t1_dti_warped_quick* 
--rw-rw---- 1 osotolongo imagen       193 Aug 14 21:19 working/smc0177_t1_dti_warped_quick0GenericAffine.mat 
--rw-rw---- 1 osotolongo imagen 235516784 Aug 14 21:20 working/smc0177_t1_dti_warped_quick1InverseWarp.nii.gz 
--rw-rw---- 1 osotolongo imagen 234821906 Aug 14 21:20 working/smc0177_t1_dti_warped_quick1Warp.nii.gz 
--rw-rw---- 1 osotolongo imagen   1718930 Aug 14 21:20 working/smc0177_t1_dti_warped_quickInverseWarped.nii.gz 
--rw-rw---- 1 osotolongo imagen  37764628 Aug 14 21:20 working/smc0177_t1_dti_warped_quickWarped.nii.gz 
- 
-</code> 
- 
-{{:neuroimagen:test_1_antssyn.png|}} 
- 
-Mucho mejor. Me voy a quear con esto. Ahora tengo que aplicar la inversa a ver que pasa. 
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ antsApplyTransforms -d 3 -i working/smc0177_t1_reoriented.nii.gz -r working/.tmp_smc0177/smc0177_b0.nii.gz -t [working/smc0177_t1_dti_warped_quick0GenericAffine.mat, 1] -t working/smc0177_t1_dti_warped_quick1InverseWarp.nii.gz -o working/smc0177_t1_to_b0_quick.nii.gz 
-</code> 
- 
-{{:neuroimagen:test_1_antssyn_inverse.png|}} 
- 
-**Este es de lejos el mejor registro en espacio nativo DTI que hemos conseguido hasta ahora asi que me voy a quedar con este. Hay que cambiar todos los scripts para utilizar este metodo. ** m( 
- 
-La posibilidad de deformacion en el ajuste no parece ser necesaria para transformar el espacio nativo DTI al espacio nativo T1. A fin de cuentas es el mismo cerebro por lo que con una transformacion mas sencilla deberia, no solo bastar, sino hacer bien.  
- 
-<code bash> 
-[osotolongo@detritus facehbi]$ antsRegistrationSyN.sh -d 3 -f working/.tmp_smc0177/t1_mask_warped_tmp.nii.gz -m working/.tmp_smc0177/smc0177_b0.nii.gz -o working/smc0177_t1_dti_warped_quick -t a -j 1 
-[osotolongo@detritus facehbi]$ antsApplyTransforms -d 3 -i working/.tmp_smc0177/smc0177_b0.nii.gz -r working/smc0177_t1_reoriented.nii.gz -t working/smc0177_t1_dti_warped_quick0GenericAffine.mat -o working/smc0177_b0_to_t1_quick.nii.gz 
-</code> 
- 
-{{:neuroimagen:test_a_antssyn.png|}} 
- 
-y la inversa, (esta queda en //working/smc0177_t1_dti_warped_quickInverseWarped.nii.gz//) 
- 
-{{:neuroimagen:test_a_antssyn_inverse.png|}} 
- 
-**Nota**: solo cambia el parametro **-t** pero es mucho mas rapido ya que ahora la transformacion es //a: rigid + affine (2 stages)// en lugar de //s: rigid + affine + deformable syn (3 stages)//. Ademas,la transformacion no tiene ningun Warp, solo la matriz de //Affine//. 
  
neuroimagen/altcorrdti.txt · Last modified: 2020/08/04 10:58 (external edit)