Bonjour,
j'ai un souci de parsage
Voiçi le type de fichier que j'ai (séparation par tabulation)
essai1 gene transcript 2048 2134 S00000002001
essai1 gene seq 2048 2049 S00000002001
essai1 gene seq 2056 2065 S00000002001
essai1 gene seq 2103 2134 S00000002001
J'aimerais avoir au final (7 champs)
S00000002001 essai 2048 2134 3 2048,2056,2103 2049,2065,2134
champ 5 indique le nombre de ligne pour lequel on a seq (en champ3)
champ6 indique position initiales correspondant séparé par des virgules
champ6 indique position finales correspondant séparé par des virgules
Mon problème est au niveau de l'obtention du champ 7. En effet,
j'obtiens 2134,2049,2065,2134 et je n'arrive pas à voir ou se situe ma faute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 my @tab=(); my $nb=0; my $nb_cds=0; my $debut; my $fin; while( my $ligne=<ALL>){ if($ligne =~ /(.+)\tgene\ttranscript\t([0-9]+)\t([0-9]+)\t(.+)$/){ $nb++; $tab[$nb][1]=$6; $tab[$nb][2]=$1; $tab[$nb][3]=$2; $tab[$nb][4]=$3; $debut=$2; $fin=$3; $nb_cds=0; } elsif($ligne =~ /(.+)\tfgenesh\tseq\t([0-9]+)\t([0-9]+)\t(.+)$/){ $nb_cds++; $tab[$nb][5]=$nb_cds; if($debut eq $2){ $debut=$2; $tab[$nb][6]=$debut; } else{ $debut=$debut .",".$2; $tab[$nb][6]=$debut; } if($fin eq $3){ $fin=$3; $tab[$nb][7]=$fin; } else{ $fin=$fin .",".$3; $tab[$nb][7]=$fin; } } for(my $i=1; $i<=$nb; $i++){ print("$tab[$i][1]\t$tab[$i][2]\t$tab[$i][3]\t$tab[$i][4]\t$tab[$i][5]\t$tab[$i][4]\t$tab[$i][5]\t$tab[$i][6]\t$tab[$i][7]\n"); } print("\n\n\n");
Pourrait-on m'aider, svp
merci
Partager