User Tools

Site Tools


neuroimagen:icv_norm

Normalizar mediciones de FreeSurfer por Intra Craneal Volume (ICV)

Según J. Becker y O. Lopez, las mediciones de volumen (y por el mismo razonamiento digo yo que las de area), deberían normalizarse por ICV para eliminar el efecto que el tamaño natural de cabeza podría introducir en los resultados.

Después de pensar un poco en como hacerlo me decidí por usar Text::CSV::Hashify,

norm_csv.pl
#!/usr/bin/perl
 
# Copyright 2013 O. Sotolongo <osotolongo@fundacioace.com>
 
use strict; use warnings;
use Text::CSV::Hashify;
use Data::Dump qw(dump);
 
my $ifile = "full_ab_mri_coma.csv";
my $ofile = "full_ab_mri_norm.csv";
 
my $fdab = hashify($ifile,'idpaciente');
my $first = 0;
foreach my $patient (sort keys %{$fdab}){
	$first = $patient unless $first;
	my $icv = $$fdab{$patient}{'IntraCranialVol_ICV'};
	foreach my $measure (sort keys %{$$fdab{$patient}}){
		if(($measure =~ /.*(Vol|Left|Right|Area|Ventricle|CC|Stem|CSF).*/) && !($measure =~ /.*ICV.*/)){
			$$fdab{$patient}{$measure}/=$icv;
		}
	}
}
 
open ODF, ">$ofile" || die "Could not open file\n";
 
print ODF "idpaciente,";
foreach my $measure (sort keys %{$$fdab{$first}}){
	unless ($measure eq 'idpaciente'){
		print ODF "$measure,"
	}
}
print ODF "\n";
 
foreach my $patient (sort {$a<=>$b}  keys %{$fdab}){
	print ODF "$patient,";
	foreach my $measure (sort keys %{$$fdab{$patient}}){
		unless ($measure eq 'idpaciente'){
			print ODF "$$fdab{$patient}{$measure},";
		}
	}
	print ODF "\n";
}
neuroimagen/icv_norm.txt · Last modified: 2020/08/04 10:58 (external edit)