tableau et conception d'une algo
Bonjour,
Je ne vois pas comment concevoir mon algo, si vous pouvez m'orienter...
j'ai un fichier comme ceci séparé par des tabulations
seq1 id 2 27
seq1 h 2 11 #segment1
seq1 h 16 22 #segment2
seq1 h 25 27 #segment3
seq1 id 70 95
seq1 h 70 85 #segment1
seq1 h 90 95 #segment2
Au final, je voudrais calculer la taille entre chaque segment et obtenir le tableau en étape2
étape1:
seq1 16 12 #12=11+1
seq1 25 23 #23=22+1
seq1 70 86
seq1 90 96
étape2:
seq1 4 #16-12
seq1 2 #25-23
seq1 16
seq1 6
là ou je bloque, c'est considérer le fait que seq1 id 2 27 a 3 segments et seq1 id 70 95 a 2 segments (autrement dit c'est considérer chaque bloc de façon indépendante)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| open (FINAL, "> final") or die("Impossible d'écrire dans le fichier $!");
open(S, "< source")or die("Impossible d'ouvrir le fichier $!");
my @tab=();
my $nb=0;
while( my $ligne=<S>){
if($ligne =~ /id/){
}
else{
if($ligne =~ /^seq([0-9]+)\t(.+)\t([0-9]+)\t([0-9]+)$/){
$nb++;
my $debut=$3;
my $fin=$4+1;
$tab [$nb][1]=$1;
$tab [$nb][2]=$debut;
$tab [$nb][3]=$fin;
print(FINAL "$1\t$debut\t$fin\n");
}
}
}
close (S);
close (FINAL);
open (FINAL, "< final") or die("Impossible d'ouvrir le fichier$!");
for(my $i=1; $i<=$nb; $i++){
print("$tab[$i][1]\t $tab[$i][2]\t$tab[$i-1][3]\n");
}
close (FINAL); |