User Tools

Site Tools


neuroimagen:facehbi

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:facehbi [2019/06/04 15:13]
osotolongo [Extract image date]
neuroimagen:facehbi [2020/08/04 10:58] (current)
Line 253: Line 253:
 Parece que funciona. Parece que funciona.
  
 +=== Encontrar los directorios erroneos en la V2 ===
 +
 +Primero lista de los directorios y fecha de los DCM,
 +<code bash>
 +[osotolongo@detritus facehbi_2]$ for y in /nas/corachan/facehbi_2/*; do for x in `find ${y} -type f | head -n 1`; do a=$(dckey -k "AcquisitionDate" ${x} 2>&1); done; s=$(echo ${y} | sed 's/.*F/0/; s/_.*//'); echo ${s} ${a} ${y}; done | grep -v repe | sed 's/ /;/g'> /home/osotolongo/facehbi/listado_mri_v2.csv
 +[osotolongo@detritus facehbi_2]$ head /home/osotolongo/facehbi/listado_mri_v2.csv
 +0001;20170124;/nas/corachan/facehbi_2/F001
 +0002;20170323;/nas/corachan/facehbi_2/F002
 +0003;20170123;/nas/corachan/facehbi_2/F003
 +0005;20170123;/nas/corachan/facehbi_2/F005
 +0006;20170124;/nas/corachan/facehbi_2/F006
 +0007;20170120;/nas/corachan/facehbi_2/F007
 +0008;20170125;/nas/corachan/facehbi_2/F008
 +0009;20170207;/nas/corachan/facehbi_2/F009
 +0010;20170208;/nas/corachan/facehbi_2/F010
 +0011;20170127;/nas/corachan/facehbi_2/F011
 +</code>
 +
 +hago un script para escoger los de menor fecha,
 +<code perl find_bad_guys.pl>
 +#!/usr/bin/perl
 +
 +use strict;
 +use warnings;
 +
 +my $ifile = '/home/osotolongo/facehbi/listado_mri_v2.csv';
 +my %imgdates;
 +
 +open IDF, "<$ifile" or die "No such file!";
 +while (<IDF>){
 + (my $subject, my $imdate, my $imdir) = /(.*);(.*);(.*)/;
 + if (exists($imgdates{$subject}) && exists($imgdates{$subject}{'date'})){
 + if ($imgdates{$subject}{'date'} > $imdate) {
 + print "$imdir; $imdate\n";
 + }else{
 + print "$imgdates{$subject}{'dir'}; $imgdates{$subject}{'date'}\n";
 + $imgdates{$subject}{'date'} = $imdate;
 + $imgdates{$subject}{'dir'} = $imdir;
 + }
 + }else{
 + $imgdates{$subject}{'date'} = $imdate;
 + $imgdates{$subject}{'dir'} = $imdir;
 + }
 +}
 +close IDF;
 +</code>
 +
 +Y vamos a comprobar cuantos directorios repetidos o de otra visita hay,
 +
 +<code bash>
 +[osotolongo@detritus facehbi]$ ./find_bad_guys.pl 
 +/nas/corachan/facehbi_2/F122_._._(1D17105595); 20171003
 +/nas/corachan/facehbi_2/F134_._._(1D15001121); 20151003
 +/nas/corachan/facehbi_2/F135_._._(1D15004700); 20151013
 +/nas/corachan/facehbi_2/F164_._(1D15028382); 20151209
 +/nas/corachan/facehbi_2/F171_._._(1D15024531); 20151128
 +/nas/corachan/facehbi_2/F173_._(1D15026521); 20151203
 +/nas/corachan/facehbi_2/F174_._._(1D15029459); 20151211
 +/nas/corachan/facehbi_2/F175_._._(1D15025918); 20151202
 +/nas/corachan/facehbi_2/F177_._(1D16000959); 20160107
 +/nas/corachan/facehbi_2/F178_._._(1D15029317); 20151211
 +/nas/corachan/facehbi_2/F179_._._(1D16002329); 20160111
 +/nas/corachan/facehbi_2/F181_._._(1D15027377); 20151205
 +/nas/corachan/facehbi_2/F182_._._(1D15032421); 20151220
 +/nas/corachan/facehbi_2/F183_._(1D15033327); 20151222
 +/nas/corachan/facehbi_2/F184_._._(1D15029736); 20151212
 +/nas/corachan/facehbi_2/F185_._._(1D15029773); 20151212
 +/nas/corachan/facehbi_2/F186_._._(1D15033618); 20151223
 +/nas/corachan/facehbi_2/F188_._._(1D15032797); 20151221
 +/nas/corachan/facehbi_2/F189_._._(1D16007077); 20160121
 +/nas/corachan/facehbi_2/F190_._._(1D15033280); 20151222
 +/nas/corachan/facehbi_2/F192_._._(1D15034692); 20151228
 +/nas/corachan/facehbi_2/F194_._._(1D15035643); 20151230
 +/nas/corachan/facehbi_2/F195_._._(1D16003897); 20160114
 +/nas/corachan/facehbi_2/F196_._._(1D16003334); 20160113
 +/nas/corachan/facehbi_2/F197_._._(2D16002969); 20160112
 +/nas/corachan/facehbi_2/F198_._._(1D16001968); 20160109
 +</code>
 +8-O
 +
 +Lo he escrito con la fecha para que me sirva de guia pero en fin,
 +
 +<code bash>
 +[osotolongo@detritus facehbi]$ ./find_bad_guys.pl | awk -F";" '{print $1}' > mover_estos.txt
 +[osotolongo@detritus facehbi]$ su -
 +Password: 
 +[root@detritus ~]# cd /nas/corachan/facehbi_2/
 +[root@detritus facehbi_2]# mkdir badguys
 +[root@detritus facehbi_2]# for x in `cat /home/osotolongo/facehbi/mover_estos.txt`; do mv ${x} badguys/; done
 +[root@detritus facehbi_2]# ls badguys/
 +F122_._._(1D17105595)  F171_._._(1D15024531)  F177_._(1D16000959)    F182_._._(1D15032421)  F186_._._(1D15033618)  F192_._._(1D15034692)  F197_._._(2D16002969)
 +F134_._._(1D15001121)  F173_._(1D15026521)    F178_._._(1D15029317)  F183_._(1D15033327)    F188_._._(1D15032797)  F194_._._(1D15035643)  F198_._._(1D16001968)
 +F135_._._(1D15004700)  F174_._._(1D15029459)  F179_._._(1D16002329)  F184_._._(1D15029736)  F189_._._(1D16007077)  F195_._._(1D16003897)
 +F164_._(1D15028382)    F175_._._(1D15025918)  F181_._._(1D15027377)  F185_._._(1D15029773)  F190_._._(1D15033280)  F196_._._(1D16003334)
 +
 +</code>
 +
 +**Y ahora viene lo bueno pues hay que arreglar y/o rehacer toda la visita 2 por los posibles errores producto de esto.**
 +
 +m( **otro problema** hay algunos drop-outs que no he conseguido identificar y estan repetidos en la visita 2. Por suerte, alguien los ha encontrado pormi ;-).
 +
 +<code bash>
 +[osotolongo@detritus f2cehbi]$ cat delete.txt
 +F172
 +F176
 +F191
 +</code>
 +Las lineas que habria que borrar,
 +<code bash>
 +[osotolongo@detritus f2cehbi]$ for x in `cat delete.txt`; do grep ${x} *.csv; done
 +dates_mri.csv:F172,20151201
 +gdata_mri.csv:F172,0143,20121341,01.12.2015
 +guia_mri.csv:0143,F172
 +ids.csv:F172,143
 +info_mri.csv:F172,20121341,20151201
 +info_mri_proper.csv:F172,20121341,01.12.2015
 +internos.csv:F172,20121341
 +dates_mri.csv:F176,20151201
 +gdata_mri.csv:F176,0147,20150810,01.12.2015
 +guia_mri.csv:0147,F176
 +ids.csv:F176,147
 +info_mri.csv:F176,20150810,20151201
 +info_mri_proper.csv:F176,20150810,01.12.2015
 +internos.csv:F176,20150810
 +dates_mri.csv:F191,20151230
 +gdata_mri.csv:F191,0160,20151116,30.12.2015
 +guia_mri.csv:0160,F191
 +ids.csv:F191,160
 +info_mri.csv:F191,20151116,20151230
 +info_mri_proper.csv:F191,20151116,30.12.2015
 +internos.csv:F191,20151116
 +</code>
 +//Not so hard//,
 +<code bash>
 +[osotolongo@detritus f2cehbi]$ for x in `cat delete.txt`; do sed -i "/${x}/d" *.csv; done
 +</code>
 +:-P
 ==== FBB ====  ==== FBB ==== 
 one random file by subject, one random file by subject,
Line 341: Line 478:
 </code> </code>
  
 +
 +
 +==== Integrar fechas con datos ====
 +<code perl join_conv.pl>
 +#!/usr/bin/perl
 +
 +use strict;
 +use warnings;
 +use Data::Dump qw(dump);
 +
 +my %fdates = ( FBBv0 => "conv_dicom_fbb_v0_date.csv",
 +        FBBv2 => "conv_dicom_fbb_v2_date.csv",
 +        MRIv0 => "conv_dicom_mri_v0_date.csv",
 +        MRIv2 => "conv_dicom_mri_v2_date.csv",
 +);
 +
 +my %ofiles = ( FBBv0 => "facehbi_fbb_v0_date_a.csv",
 +        FBBv2 => "facehbi_fbb_v2_date_a.csv",
 +        MRIv0 => "facehbi_mri_v0_date_a.csv",
 +        MRIv2 => "facehbi_mri_v2_date_a.csv",
 +);
 +
 +my $info_file = "internos.csv";
 +my %internos;
 +
 +open IIF, "<$info_file";
 +while(<IIF>){
 +        if(/(F.*);(.*)/){
 +                (my $fnumber, my $inumber) = /(F.*);(.*)/;
 +                $internos{$fnumber} = $inumber;
 +        }
 +}
 +close IIF;
 +
 +my %dates;
 +foreach my $fdate (sort keys %fdates){
 +        open IDF, "<$fdates{$fdate}" or die "NO such file!";
 +        while(<IDF>){
 +                if(/(F.*);(.*)/){
 +                        (my $fnumber, my $date) = /(F.*);(.*)/;
 +                        (my $cdate = $date) =~ s/(\d{4})(\d{2})(\d{2})/$3.$2.$1/;
 +                        $dates{$fnumber}{$fdate} = $cdate;
 +                }
 +        }
 +        close IDF;
 +        open ODF, ">$ofiles{$fdate}";
 +        print ODF "FACEHBI; Interno; Fecha\n";
 +        foreach my $fnumber (sort keys %internos){
 +                print ODF "$fnumber; ";
 +                if (exists $internos{$fnumber}){
 +                        print ODF "$internos{$fnumber}; ";
 +                        if (exists($dates{$fnumber}) && exists($dates{$fnumber}{$fdate})){
 +                                print ODF "$dates{$fnumber}{$fdate}\n";
 +                        }else{
 +                                print ODF "NA\n";
 +                        }
 +                }
 +        }
 +        close ODF;
 +}
 +              
 +</code>
 +<code>
 +osotolongo@daisy:~/Cloud/NI_ACE/facehbi> scp -P 20022 detritus.fundacioace.com:/nas/data/facehbi/facehbi_mri.csv ./
 +facehbi_mri.csv                                                                                                                                                 100%  764KB   1.5MB/  00:00    
 +osotolongo@daisy:~/Cloud/NI_ACE/facehbi> sed 's/0/F/; s/Subject/FACEHBI/' facehbi_mri.csv > facehbi_mri_v0.csv
 +osotolongo@daisy:~/Cloud/NI_ACE/facehbi> join -t";" facehbi_mri_v0_date_a.csv facehbi_mri_v0.csv > facehbi_mri_v0_data.csv
 +</code>
 +
 +jodidos problemas de permisos m(
 +<code>
 +[root@detritus ~]# chmod g+rwx /nas/data/subjects/facehbi_smc0003 -R
 +.....
 +[osotolongo@detritus facehbi]$ ls /nas/data/subjects/facehbi_smc0003/
 +bem  label  labels  morph  mpg mri
 +[osotolongo@detritus facehbi]$ cat soloeste.csv 
 +0003;smc
 +[osotolongo@detritus facehbi]$ precon.pl -cut soloeste.csv facehbi
 +</code>
 +
 +===== Reprocesamiento =====
 +
 +Primero reconvertir los que estan mal, borrar los directorios de FS, crearlos de nuevo y recalcular FS.
 +
 +<code>
 +[osotolongo@detritus facehbi]$ awk -F"/" '{print $5}' mover_estos.txt | sed 's/F/0/;s/_.*/;smc/' > /nas/data/v2MriPet/repetir.csv
 +...
 +[osotolongo@detritus v2MriPet]$ awk -F";" '{print $1}' repetir.csv | sed 's/0/F/' > mri_repetir.dir
 +[osotolongo@detritus v2MriPet]$ for x in `cat mri_repetir.dir`; do for s in /nas/corachan/facehbi_2/${x}/*; do if [[ `dckey -k "SeriesDescription" ${s}/Img00001.dcm 2>&1 | grep "t1_mprage_sag_p2_iso_1.0$"` ]]; then dcm2niix -z y -o /nas/data/v2MriPet/tmp ${s}; fi; done; mkdir /nas/data/v2MriPet/processed/${x}; mv tmp/* /nas/data/v2MriPet/processed/${x}/ ;done
 +[osotolongo@detritus v2MriPet]$ for a in `ls  processed/F*/*.nii.gz`; do b=$(echo $a | sed s'/processed\/F/\/nas\/data\/v2MriPet\/mri\/smc0/; s/\/Serie(/s000/; s/).*/.nii.gz/'); mv ${a} ${b}; done
 +[osotolongo@detritus v2MriPet]$ for x in `awk -F";" '{print $1}' repetir.csv` ; do rm -rf /nas/data/subjects/v2MriPet_smc${x}; done
 +[osotolongo@detritus v2MriPet]$ fsl2fs.pl -cut repetir.csv v2MriPet
 +[osotolongo@detritus v2MriPet]$ precon.pl -cut repetir.csv v2MriPet
 +Submitted batch job 17319
 +[osotolongo@detritus v2MriPet]$ squeue
 +             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
 +             17319     devel fs_recon osotolon PD       0:00      1 (Dependency)
 +             17293     devel fs_recon osotolon  R       0:04      1 brick03
 +             17294     devel fs_recon osotolon  R       0:04      1 brick03
 +             17295     devel fs_recon osotolon  R       0:04      1 brick03
 +             17296     devel fs_recon osotolon  R       0:04      1 brick03
 +             17297     devel fs_recon osotolon  R       0:04      1 brick03
 +             17298     devel fs_recon osotolon  R       0:04      1 brick03
 +             17299     devel fs_recon osotolon  R       0:04      1 brick03
 +             17300     devel fs_recon osotolon  R       0:04      1 brick03
 +             17301     devel fs_recon osotolon  R       0:04      1 brick03
 +             17302     devel fs_recon osotolon  R       0:04      1 brick03
 +             17303     devel fs_recon osotolon  R       0:04      1 brick03
 +             17304     devel fs_recon osotolon  R       0:04      1 brick03
 +             17305     devel fs_recon osotolon  R       0:04      1 brick03
 +             17306     devel fs_recon osotolon  R       0:04      1 brick03
 +             17307     devel fs_recon osotolon  R       0:04      1 brick03
 +             17308     devel fs_recon osotolon  R       0:04      1 brick03
 +             17309     devel fs_recon osotolon  R       0:04      1 brick03
 +             17310     devel fs_recon osotolon  R       0:04      1 brick03
 +             17311     devel fs_recon osotolon  R       0:04      1 brick03
 +             17312     devel fs_recon osotolon  R       0:04      1 brick03
 +             17313     devel fs_recon osotolon  R       0:04      1 brick03
 +             17314     devel fs_recon osotolon  R       0:04      1 brick03
 +             17315     devel fs_recon osotolon  R       0:04      1 brick03
 +             17316     devel fs_recon osotolon  R       0:04      1 brick03
 +             17317     devel fs_recon osotolon  R       0:04      1 brick03
 +             17318     devel fs_recon osotolon  R       0:04      1 brick03
 +
 +</code>
  
neuroimagen/facehbi.1559661192.txt.gz · Last modified: 2020/08/04 10:46 (external edit)