Bonjour,
je vous avoue que je suis totalement néophyte en Perl, beaucoup plus habitué à travailler sous Rstudio en tant qu'écologue... (mais là devant travailler avec un ensemble de fichier lourd, j'ai peur que R ne suive pas).
Je viens à vous car, j'ai cherché, sûrement pas assez me direz vous, mais je n'ai pas encore trouvé la solution, et je n'avais pas prévus de perdre autant de temps sur ce bout de script...
Voilà mon problème:
je possède 5085 fichiers texte dans un répertoire (où 1fichiers texte représente 1pixel géographique avec des données de végétations), tous sont composés des mêmes variables (17 (16 si on part de 0)) pour 6999 lignes (1ligne équivaut à un an).
Tout d'abord je m'intéresse à mon jeu de données à partir de la ligne 1000 et je fais démarré un compteur $an à partir de là, ça c'est ok!
Ensuite, là où je bloque, c'est pour réussir à faire le moyenne de la variable 13 d'un ensemble de pixels pour chaque ligne... je ne sais pas si c'est très claire....
Voici mon script:
Dans 1 premier temps je voulais travailler qu'avec mes 2 premiers fichiers avant de lancer l'ensemble
Ensuite, une fois que cela tournera, il faudrait que je l'enregistre dans un fichier externe style outpath que j'ai mis en #
[CODE=perl][/#!/usr/bin/perl
#Faire un hash pour faire ressortir la moyenne d'une année sur l'ensemble des pixels pour la variable 13
#
#
#
#
#
for($pixel=1;$pixel<3;$pixel++)
{
$folder_in="/media/CBAE_HELY/PierreLouis/Donnees_brutes/LAI";
$filein=$folder_in.'/AFW_lai_'.$pixel.'.txt';
#$outpath="/media/CBAE_HELY/PierreLouis/Analyses";
#$fmoy = $outpath.'/Moy_par_an_LAItot_'.$an.'.txt';
print "$filein\n";
open (FLAI, $filein) || die "$filein: $!\n";
$an=1;
while (<FLAI>)
{
chomp;
@rowLAI = split(/\s+/,$_);
if (length($rowLAI[0])==0) { shift(@rowLAI); }
#print "@rowsoil\n";
$YearLAI=$rowLAI[2];
$totLAI=$rowLAI[13];
if($YearLAI>999 && $YearLAI<7000){;
$valtotLAI{$lonLAI[$pixel]}{$latLAI[$pixel]}{$an[$pixel]}=$totLAI;
if ($pixel=1&& $pixel<3) {;
for ($YearLAI=1000; $YearLAI<7000; $Year++) {;
$sumx{$totLAI}{$YearLAI}+= $line[YearLAI];
$moyx{$totLAI}{$YearLAI}=$sumx{$totLAI}{$YearLAI}/2;
}
}
print "$YearLAI $an $sumx{$totLAI}{$YearLAI} $moyx{$totLAI}{$YearLAI}\n";
$an++;
};
}
close(FLAI);
}
die;]
Je vous remercie d'avance, en espèrant que l'on trouve vite une solution à ce problème, j'en suis sûr, grossier!
Exemple de mes variables pour la ligne 1 de mon fichier 1
Lon Lat Year TrTBE TrIBE TrBR TeTBS TeMBS TeIBS TeNE TeBE C3G C4G Total percwood vegcode vegtype
-0.25 10.25 0 0.0043 0.0043 0.0043 0.0000 0.0000 0.0000 0.0000 0.0000 0.0005 0.0005 0.0138 93.48 6 DESE
(ps: j'ai essayé d'ajouter la balise code, mais je ne crois pas avoir compris comment l'utiliser pour que cela change les couleurs...)
Partager