Bonjour,
Je dispose d'un fichier tabulé pour lequel pour chaque gène j'ai le nom de l'exon et la position de début et de fin de l'exon
fchier
Je souhaiterai obtenir un fichier intermédiaire avec pour chaque exon d'un gène donnée, la taille totale de l'exon en colonne 5 (fin exon - début exon +1) et pour chaque intron du gène sa positionENSG20 exon5 8 18
ENSG20 exon4 30 40
ENSG79 exon42 7 14
ENSG79 exon13 28 78
ENSG79 exon9 100 110
de début (fin de l'exon n) et de fin (début exon n+1) et la taille totale de l'intron (fin intron - début intron+1). Les positions de début et de fin de l'intron sont déduite de la position des exons
fichier final
ENSG20 exon5 8 18 11
ENSG20 exon4 30 40 11
ENSG 20 intron 18 30 13
ENSG79 exon42 7 14 8
ENSG79 exon13 28 78 51
ENSG79 exon9 100 110 11
ENSG79 intron 14 28 15
ENSG79 intron 78 100 23
Je procède étape par étape. Mon problème est que je n'arrive pas à afficher mon hash pour toute les lignes de mon fichier!
Voiçi mon code :
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 my %new=(); my @liste; my $p=0; open OLA, "fichier" or die $!; while(my $ligne = <OLA>){ chomp $ligne; $p++; my ($gene,$exon,$deb,$fin) = split /\t/, $ligne; %new = ( $gene => { $exon => [$deb,$fin] } ); @liste = @{$new{$gene}{$exon}}; } print "\n"; foreach my $t (keys %new){ foreach (keys %{$new{$t}}) { print ("$t=>$_ => @liste\n"); } }Résultat obtenue:
ENSG79=>exon9 => 100 110
Partager