User Tools

Site Tools


neuroimagen:md_nph

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
neuroimagen:md_nph [2021/10/15 10:29]
osotolongo [Uso]
neuroimagen:md_nph [2021/10/19 07:49]
osotolongo [Implementación]
Line 1: Line 1:
 ====== MD-NPH analisis ====== ====== MD-NPH analisis ======
  
-//Esto es una idea de Ester Esteban, asi que todo es culpa suya. //+//Esto es una idea de Ester Esteban, asi que toda la culpa es suya. //
  
  
Line 45: Line 45:
 asi que todo deberia ser sencillo. asi que todo deberia ser sencillo.
  
-Primero leo la DB del proyecto y por cada unos de las imagenes MD que he llegado procesar ejecuto el procedimiento anterior,+Ok. Pero no taaaan sencillo. :-P 
 + 
 +Antes que nada, no voy a sacar el valor medio de toda la imagen MD sino de la porcion correspondiente a la WM. Es decir, que tengo que empezar por hacer una mascara de la WM. Es to no deberia ser dificil si reutilizo el //aseg// de FS, 
 + 
 +<code bash get_wm_mask.sh> 
 +#!/bin/sh 
 +subject=$1 
 +shift 
 + 
 +tmp_dir=$1 
 +shift 
 + 
 +if [ ! -f ${tmp_dir}/register.dat ]; then 
 +        if [  ! -d ${tmp_dir} ]; then mkdir -p ${tmp_dir}; fi; 
 +        tkregister2 --mov $SUBJECTS_DIR/${subject}/mri/rawavg.mgz --noedit --s ${subject} --regheader --reg ${tmp_dir}/register.dat; 
 +fi 
 +if [ ! -f ${tmp_dir}/all_aseg.nii.gz ]; then 
 +        mri_label2vol --seg $SUBJECTS_DIR/${subject}/mri/aseg.mgz --temp $SUBJECTS_DIR/${subject}/mri/rawavg.mgz --o ${tmp_dir}/all_aseg.nii.gz --reg ${tmp_dir}/register.dat; 
 +fi 
 +${FSLDIR}/bin/fslmaths ${tmp_dir}/all_aseg.nii.gz -uthr 2  -thr 2 -div 2 ${tmp_dir}/lhwm 
 +${FSLDIR}/bin/fslmaths ${tmp_dir}/all_aseg.nii.gz -uthr 41  -thr 41 -div 41 ${tmp_dir}/rhwm 
 +${FSLDIR}/bin/fslmaths ${tmp_dir}/lhwm -add ${tmp_dir}/rhwm -bin ${tmp_dir}/wm_mask.nii.gz 
 +~                                                                                                                       
 +</code> 
 + 
 +{{ :neuroimagen:wm_mask.png?400 |}} 
 +Pero ojo, que esa mascara esta en espacio nativo T1, asi que tendria que hacer algo como, 
 + 
 +<code bash> 
 +antsApplyTransforms -d 3 -i ${tmp_dir}/wm_mask.nii.gz -r ${tmp_dir}/hifi_b0.nii.gz -t ${tmp_dir}/$subject_epi_reg_ANTS.mat -n GenericLabel -o ${tmp_dir}/wm_tmp.nii.gz 
 +</code> 
 + 
 + 
 +La mascara resultante hay que aplicarla la imagen MD, 
 + 
 +{{ :neuroimagen:wm_mask_indti.png?400 |}} 
 + 
 +y a esta ultima imagen, 
 + 
 +{{ :neuroimagen:dti_md_masked.png?400 |}} 
 + 
 +es a la que hay que sacarle el histograma.
  
 <code perl> <code perl>
-foreach my $subject (@dtis){ + 
-        my $dti_md = $w_dir.'/'.$subject.'_dti_MD.nii.gz'; +                my $order = $ENV{'FSLDIR'}.'/bin/fslstats '.$dti_md_masked.' -l 0 -u '.$up_threshold.' -h '.$nbins;
-        if($subject and -e $dti_md){ +
-                my $order = $ENV{'FSLDIR'}.'/bin/fslstats '.$dti_md.' -l 0 -u '.$up_threshold.' -h '.$nbins;+
                 my @shist = qx/$order/;                 my @shist = qx/$order/;
-                chomp @shist; 
-                push @allsums, sum(@shist); 
-                $nph{$subject} = max(@shist); 
-        } 
-} 
 </code> </code>
  
-ahora, el valor para normalizar es el medio de todas las areas,+ahora, el valor para normalizar es el numero de voxels de la mascara de WM 
 + 
 +<code perl> 
 +                $order = $ENV{'FSLDIR'}.'/bin/fslstats '.$dti_md_masked.' -V'; 
 +                my $oout =  qx/$order/; 
 +                my @gout = split ' ', $oout; 
 +                my $norm = $gout[0]; 
 + 
 +</code> 
 + 
 +y todo esto se guarda,
  
 <code perl> <code perl>
-my $norm = sum(@allsums)/scalar(@allsums);+                $nph{$subject}{'sum'= sum(@shist)
 +                $nph{$subject}{'norm'} = $norm; 
 +                $nph{$subject}{'max'} = max(@shist);
 </code> </code>
  
-y saco todo por //STDOUT//,+para escribirlo luego,
  
 <code perl> <code perl>
-print "Subject,NPH\n";+open ODF, ">$ofile"; 
 +print ODF "Subject,NPH\n";
 foreach my $subject (sort keys %nph){ foreach my $subject (sort keys %nph){
-        my $nphv = $nph{$subject}/$norm; +        my $nphv = $nph{$subject}{'max'}/$nph{$subject}{'norm'}
-        print "$subject,$nphv\n";+        print ODF "$subject,$nphv\n";
 } }
 +close ODF;
 </code> </code>
  
neuroimagen/md_nph.txt · Last modified: 2021/10/19 09:04 by osotolongo