neuroimagen:dando_formato_a_las_resultados
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
neuroimagen:dando_formato_a_las_resultados [2020/01/05 15:11] – [MRI] osotolongo | neuroimagen:dando_formato_a_las_resultados [2020/08/04 10:58] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 123: | Line 123: | ||
F009, | F009, | ||
</ | </ | ||
+ | ==== FS output ==== | ||
+ | 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> | ||
+ | [osotolongo@detritus facehbi]$ cat info_page.csv | ||
+ | ,, | ||
+ | ,, | ||
+ | Base de datos:,O. Sotolongo-Grau, | ||
+ | Extracción de métricas:, | ||
+ | col. Externa:, | ||
+ | ,Miguel Ángel Tejero, | ||
+ | ,, | ||
+ | ,lh,left hemisphere | ||
+ | ,rh,right hemisphere | ||
+ | </ | ||
+ | Todo el output esta en el directorio //fsrecon// y hay que cargarlo en Sheets individuales. | ||
+ | <code perl fsrecon2xls.pl> | ||
+ | # | ||
+ | |||
+ | use strict; | ||
+ | use warnings; | ||
+ | use Data::Dump qw(dump); | ||
+ | use Text::CSV qw( csv ); | ||
+ | use Excel:: | ||
+ | my $guide = $ARGV[0]; | ||
+ | my $ofile = $ARGV[1]; | ||
+ | my $idir = ' | ||
+ | my $info = csv (in => " | ||
+ | $ofile =~ s/ | ||
+ | my $workbook = Excel:: | ||
+ | my $worksheet = $workbook-> | ||
+ | for my $i (0 .. $#{$info}) { | ||
+ | my $row = $info-> | ||
+ | for my $j (0 .. $#{$row}){ | ||
+ | $worksheet-> | ||
+ | } | ||
+ | } | ||
+ | opendir (DIR, $idir); | ||
+ | my @ifiles = grep(/ | ||
+ | close DIR; | ||
+ | foreach my $ifile (@ifiles){ | ||
+ | my $tmpf = ' | ||
+ | my $order = 'join -t, -1 2 -2 1 ' | ||
+ | system($order); | ||
+ | my $idata = csv (in => $tmpf); # as array of array | ||
+ | (my $shname = $ifile) =~ s/\.csv$//; | ||
+ | $worksheet = $workbook-> | ||
+ | for my $i (0 .. $#{$idata}) { | ||
+ | my $row = $idata-> | ||
+ | for my $j (0 .. $#{$row}){ | ||
+ | $worksheet-> | ||
+ | } | ||
+ | } | ||
+ | unlink $tmpf; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | El input debe ser el **archivo ya preparado con los datos genericos** del proyecto (IDs, Fechas, numero HC) y el nombre del **archivo de salida**. | ||
+ | <code bash> | ||
+ | [osotolongo@detritus facehbi]$ ./ | ||
+ | [osotolongo@detritus facehbi]$ ls -l facehbi_recon_results.xlsx | ||
+ | -rw-rw---- 1 osotolongo osotolongo 490261 Jan 5 17:07 facehbi_recon_results.xlsx | ||
+ | |||
+ | </ | ||
+ | El resultado es un // | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | **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 ' | ||
+ | [osotolongo@detritus facehbi]$ sed ' | ||
+ | </ | ||
+ | Edito la // | ||
+ | <code bash> | ||
+ | [osotolongo@detritus facehbi]$ cat info_page.csv | ||
+ | ,, | ||
+ | ,, | ||
+ | Base de datos:,O. Sotolongo-Grau, | ||
+ | Extracción de métricas:, | ||
+ | col. Externa:, | ||
+ | ,Aida Ninerola, | ||
+ | ,, | ||
+ | </ | ||
+ | Y voy y saco las fechas de cada scan, | ||
+ | <code bash> | ||
+ | [osotolongo@detritus facehbi]$ for x in / | ||
+ | [osotolongo@detritus facehbi]$ sed -i ' | ||
+ | [osotolongo@detritus facehbi]$ head dates_fbb.csv | ||
+ | PSubject, | ||
+ | F001, | ||
+ | F002, | ||
+ | F003, | ||
+ | F004, | ||
+ | F005, | ||
+ | F006, | ||
+ | F007, | ||
+ | F008, | ||
+ | F009, | ||
+ | |||
+ | </ | ||
+ | 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]$ ./ | ||
+ | [osotolongo@detritus facehbi]$ head info_fbb_proper.csv | ||
+ | PSubject, | ||
+ | F001, | ||
+ | F002, | ||
+ | F003, | ||
+ | F004, | ||
+ | F005, | ||
+ | F006, | ||
+ | F007, | ||
+ | F008, | ||
+ | F009, | ||
+ | </ | ||
+ | |||
+ | ahora tengo que dar formato a la // | ||
+ | <code bash> | ||
+ | [osotolongo@detritus facehbi]$ sed ' | ||
+ | [osotolongo@detritus facehbi]$ sed -i ' | ||
+ | [osotolongo@detritus facehbi]$ head guia_fbb.csv | ||
+ | Subject, | ||
+ | 0001,F001 | ||
+ | 0002,F002 | ||
+ | 0003,F003 | ||
+ | 0004,F004 | ||
+ | 0005,F005 | ||
+ | 0006,F006 | ||
+ | 0007,F007 | ||
+ | 0008,F008 | ||
+ | 0009,F009 | ||
+ | </ | ||
+ | |||
+ | Y ya puedo pegar todos los datos preliminares, | ||
+ | |||
+ | <code bash> | ||
+ | [osotolongo@detritus facehbi]$ head gdata_fbb.csv | ||
+ | PSubject, | ||
+ | F001, | ||
+ | F002, | ||
+ | F003, | ||
+ | F004, | ||
+ | F005, | ||
+ | F006, | ||
+ | F007, | ||
+ | F008, | ||
+ | F009, | ||
+ | </ | ||
+ | |||
+ | |||
+ | 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> | ||
+ | # | ||
+ | |||
+ | use strict; | ||
+ | use warnings; | ||
+ | use Data::Dump qw(dump); | ||
+ | use Text::CSV qw( csv ); | ||
+ | use Excel:: | ||
+ | my $num_args = $#ARGV + 1; | ||
+ | die " | ||
+ | my $idir = ' | ||
+ | my $guide = $ARGV[0]; | ||
+ | my $ofile; | ||
+ | if ($num_args == 2){ | ||
+ | $ofile = $ARGV[1]; | ||
+ | }else{ | ||
+ | $ofile = $idir.' | ||
+ | } | ||
+ | my $info = csv (in => " | ||
+ | $ofile =~ s/ | ||
+ | my $workbook = Excel:: | ||
+ | my $worksheet = $workbook-> | ||
+ | for my $i (0 .. $#{$info}) { | ||
+ | my $row = $info-> | ||
+ | for my $j (0 .. $#{$row}){ | ||
+ | $worksheet-> | ||
+ | } | ||
+ | } | ||
+ | opendir (DIR, $idir); | ||
+ | my @ifiles = grep(/ | ||
+ | close DIR; | ||
+ | foreach my $ifile (@ifiles){ | ||
+ | my $tmpf = ' | ||
+ | my $order = 'join -t, -1 2 -2 1 ' | ||
+ | system($order); | ||
+ | my $idata = csv (in => $tmpf); # as array of array | ||
+ | (my $shname = $ifile) =~ s/\.csv$//; | ||
+ | $worksheet = $workbook-> | ||
+ | for my $i (0 .. $#{$idata}) { | ||
+ | my $row = $idata-> | ||
+ | for my $j (0 .. $#{$row}){ | ||
+ | $worksheet-> | ||
+ | } | ||
+ | } | ||
+ | unlink $tmpf; | ||
+ | } | ||
+ | </ | ||
+ | Y corremos, | ||
+ | <code bash> | ||
+ | [osotolongo@detritus facehbi]$ ./ | ||
+ | [osotolongo@detritus facehbi]$ ls -lh fbb_results.xlsx | ||
+ | -rw-rw---- 1 osotolongo osotolongo 33K Jan 7 11:52 fbb_results.xlsx | ||
+ | </ | ||
+ | Y nos queda el archivo excel correcto, | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: |
neuroimagen/dando_formato_a_las_resultados.1578237065.txt.gz · Last modified: 2020/08/04 10:45 (external edit)