User Tools

Site Tools


neuroimagen:dando_formato_a_las_resultados

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
neuroimagen:dando_formato_a_las_resultados [2020/01/05 16:28]
osotolongo [FS output]
neuroimagen:dando_formato_a_las_resultados [2020/01/07 10:59]
osotolongo [PET]
Line 124: Line 124:
 </code> </code>
 ==== FS output ==== ==== FS output ====
-Para organizar el output en un archivo de MS Excel+Para organizar el output en un archivo de MS Excel necesito una primera pagina con info general. Esta debe ser el primer //sheet// del archivo excel.
 <code bash> <code bash>
 [osotolongo@detritus facehbi]$ cat info_page.csv [osotolongo@detritus facehbi]$ cat info_page.csv
Line 151: Line 151:
 my $idir = 'fsrecon'; my $idir = 'fsrecon';
 my $info = csv (in => "info_page.csv"); my $info = csv (in => "info_page.csv");
-$ofile =~ s/\.(\w*)?$/xlsx/;+$ofile =~ s/\.(\w*)?$/.xlsx/;
 my $workbook = Excel::Writer::XLSX->new($ofile); my $workbook = Excel::Writer::XLSX->new($ofile);
 my $worksheet = $workbook->add_worksheet('Info'); my $worksheet = $workbook->add_worksheet('Info');
Line 161: Line 161:
 } }
 opendir (DIR, $idir); opendir (DIR, $idir);
-@ifiles = grep(/\.csv/, readdir(DIR));+my @ifiles = grep(/\.csv/, readdir(DIR));
 close DIR; close DIR;
-foreach $ifile (@ifiles){+foreach my $ifile (@ifiles){
         my $tmpf = 'tmp_'.$ifile;         my $tmpf = 'tmp_'.$ifile;
-        my $order = 'join -t, -1 2 -2 1 '.$guide.' '.$ifile.' > '.$tmpf;+        my $order = 'join -t, -1 2 -2 1 '.$guide.' '.$idir.'/'.$ifile.' > '.$tmpf;
         system($order);         system($order);
         my $idata = csv (in => $tmpf); # as array of array         my $idata = csv (in => $tmpf); # as array of array
Line 191: Line 191:
 {{:neuroimagen:2020-01-05-171702_grim.png|}} {{:neuroimagen:2020-01-05-171702_grim.png|}}
  
-**Nota:** El script de conversion es facilmente exportable a otros tipos de procesamientos como DTI o PET. El archivo de informacion general es reutilizable y facil de editar. El archivo de datos generales (gdata_mri) sirve para DTI o fMRI. En el caso de PET habria que rehacerlo pero el procedimiento es el mismo.+**Nota: El script de conversion es facilmente exportable a otros tipos de procesamientos como DTI o PET. El archivo de informacion general es reutilizable y facil de editar. El archivo de datos generales (gdata_mri.csv) sirve para DTI o fMRI. En el caso de PET habria que rehacerlo pero el procedimiento es el mismo.** 
 +===== PET ===== 
 +Como quiero poner todos los resultados juntos voy a ponerlos todos en un mismo directorio y a hacer el excel de ahi, 
 +<code bash> 
 +[osotolongo@detritus facehbi]$ mkdir fbb_results 
 +[osotolongo@detritus facehbi]$ sed 's/;/,/g' facehbi_fbb_cl.csv > fbb_results/fbb_centiloid.csv 
 +[osotolongo@detritus facehbi]$ sed 's/;/,/g' facehbi_fbb_fs_suvr_rois.csv > fbb_results/fbb_landau_method.csv 
 +</code> 
 +Edito la //info_page//, 
 +<code bash> 
 +[osotolongo@detritus facehbi]$ cat info_page.csv 
 +,, 
 +,, 
 +Base de datos:,O. Sotolongo-Grau,asqwerty@gmail.com 
 +Extracción de métricas:,O. Sotolongo-Grau,asqwerty@gmail.com 
 +col. Externa:,Andrés Perissinotti,aperissi@clinic.cat 
 +,Aida Ninerola,ninerola@clinic.cat 
 +,, 
 +</code> 
 +Y voy y saco las fechas de cada scan, 
 +<code bash> 
 +[osotolongo@detritus facehbi]$ for x in /nas/clinic/facehbi/*; do f=$(find ${x} -type f | head -1); d=$(dckey -k "AcquisitionDate" ${f} 2>&1); n=$(echo $x | awk -F"/" {'print $5'} | sed 's/FACEHBI-\(.*\)B/\1/' ); echo ${n},${d}; done > dates_fbb.csv 
 +[osotolongo@detritus facehbi]$ sed -i '1iPSubject,Date' dates_fbb.csv 
 +[osotolongo@detritus facehbi]$ head dates_fbb.csv 
 +PSubject,Date 
 +F001,20141211 
 +F002,20141211 
 +F003,20141218 
 +F004,20141218 
 +F005,20150122 
 +F006,20150115 
 +F007,20150115 
 +F008,20150115 
 +F009,20150129 
 + 
 +</code> 
 +Lo pego a los codigos internos y doy formato a las fechas (con el mismo script!!!) 
 +<code bash> 
 +[osotolongo@detritus facehbi]$ join -t, internos.csv dates_fbb.csv > info_fbb.csv 
 +[osotolongo@detritus facehbi]$ ./format_date.pl info_fbb.csv 
 +[osotolongo@detritus facehbi]$ head info_fbb_proper.csv 
 +PSubject,Interno,Date 
 +F001,20090806,11.12.2014 
 +F002,20131084,11.12.2014 
 +F003,20130456,18.12.2014 
 +F004,20080130,18.12.2014 
 +F005,20141272,22.01.2015 
 +F006,20141107,15.01.2015 
 +F007,20080716,15.01.2015 
 +F008,20131483,15.01.2015 
 +F009,20141277,29.01.2015 
 +</code> 
 + 
 +ahora tengo que dar formato a la //guia_fbb//
 +<code bash> 
 +[osotolongo@detritus facehbi]$ sed 's/;/,/;s/FACEHBI-\(.*\)B/\1/' facehbi_pet.csv > guia_fbb.csv 
 +[osotolongo@detritus facehbi]$ sed -i '1iSubject,PSubject' guia_fbb.csv 
 +[osotolongo@detritus facehbi]$ head guia_fbb.csv 
 +Subject,PSubject 
 +0001,F001 
 +0002,F002 
 +0003,F003 
 +0004,F004 
 +0005,F005 
 +0006,F006 
 +0007,F007 
 +0008,F008 
 +0009,F009 
 +</code> 
 + 
 +Y ya puedo pegar todos los datos preliminares, 
 + 
 +<code bash>[osotolongo@detritus facehbi]$ join -t, -1 2 -2 1 guia_fbb.csv info_fbb_proper.csv > gdata_fbb.csv 
 +[osotolongo@detritus facehbi]$ head gdata_fbb.csv 
 +PSubject,Subject,Interno,Date 
 +F001,0001,20090806,11.12.2014 
 +F002,0002,20131084,11.12.2014 
 +F003,0003,20130456,18.12.2014 
 +F004,0004,20080130,18.12.2014 
 +F005,0005,20141272,22.01.2015 
 +F006,0006,20141107,15.01.2015 
 +F007,0007,20080716,15.01.2015 
 +F008,0008,20131483,15.01.2015 
 +F009,0009,20141277,29.01.2015 
 +</code> 
 + 
 + 
 +Voy  cambiar un poco el script de formatear los resultados de MRI, porque el metodo es muy parecido. **Nota:** De verdad que tengo que pensar como abstraer esto, 
 + 
 +<code perl fbb2xls.pl> 
 +#!/usr/bin/perl 
 + 
 +use strict; 
 +use warnings; 
 +use Data::Dump qw(dump); 
 +use Text::CSV qw( csv ); 
 +use Excel::Writer::XLSX; 
 +my $num_args = $#ARGV + 1; 
 +die "Should supply input filename!!!\n" unless $num_args; 
 +my $idir = 'fbb_results'; 
 +my $guide = $ARGV[0]; 
 +my $ofile; 
 +if ($num_args == 2){ 
 +        $ofile = $ARGV[1]; 
 +}else{ 
 +        $ofile = $idir.'.xlsx'; 
 +
 +my $info = csv (in => "info_page.csv"); 
 +$ofile =~ s/\.(\w*)?$/.xlsx/; 
 +my $workbook = Excel::Writer::XLSX->new($ofile); 
 +my $worksheet = $workbook->add_worksheet('Info'); 
 +for my $i (0 .. $#{$info}) { 
 +        my $row = $info->[$i]; 
 +        for my $j (0 .. $#{$row}){ 
 +                $worksheet->write( $i, $j, $row->[$j]); 
 +        } 
 +
 +opendir (DIR, $idir); 
 +my @ifiles = grep(/\.csv/, readdir(DIR)); 
 +close DIR; 
 +foreach my $ifile (@ifiles){ 
 +        my $tmpf = 'tmp_'.$ifile; 
 +        my $order = 'join -t, -1 2 -2 1 '.$guide.' '.$idir.'/'.$ifile.' > '.$tmpf; 
 +        system($order); 
 +        my $idata = csv (in => $tmpf); # as array of array 
 +        (my $shname = $ifile) =~ s/\.csv$//; 
 +        $worksheet = $workbook->add_worksheet($shname); 
 +        for my $i (0 .. $#{$idata}) { 
 +                my $row = $idata->[$i]; 
 +                for my $j (0 .. $#{$row}){ 
 +                        $worksheet->write( $i, $j, $row->[$j]); 
 +                } 
 +        } 
 +        unlink $tmpf; 
 +
 +</code> 
 +Y corremos, 
 +<code bash> 
 +[osotolongo@detritus facehbi]$ ./fbb2xls.pl gdata_fbb.csv fbb_results.xlsx 
 +[osotolongo@detritus facehbi]$ ls -lh fbb_results.xlsx 
 +-rw-rw---- 1 osotolongo osotolongo 33K Jan  7 11:52 fbb_results.xlsx 
 +</code> 
 +Y nos queda el archivo excel correcto, 
 +{{:neuroimagen:2020-01-07-115603_grim.png|}} 
 +{{:neuroimagen:2020-01-07-115632_grim.png|}} 
 +{{:neuroimagen:2020-01-07-115822_grim.png|}}
neuroimagen/dando_formato_a_las_resultados.txt · Last modified: 2020/08/04 10:58 (external edit)