Hello,
J'ai un résultat de blast et je souhaiterai faire un tri query par query selon la e-value
Obtenir comme résultats:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 tata d 40.98 266 136 7 164 413 1644 1904 4e-53 192 tata c 48.33 240 123 1 178 416 2237 2476 8e-74 252 tata a 99.52 420 2 0 1 420 1 420 0.0 876 lolo g 44.53 384 196 12 54 429 50 424 2e-101 309 lolo h 99.68 1247 4 0 1 1247 1 1247 0.0 2520 lolo f 99.77 429 1 0 1 429 1 429 0.0 890
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 tata a 99.52 420 2 0 1 420 1 420 0.0 876 tata c 48.33 240 123 1 178 416 2237 2476 8e-74 252 tata d 40.98 266 136 7 164 413 1644 1904 4e-53 192 lolo h 99.68 1247 4 0 1 1247 1 1247 0.0 2520 lolo f 99.77 429 1 0 1 429 1 429 0.0 890 lolo g 44.53 384 196 12 54 429 50 424 2e-101 309J'obtiens le message d'erreur : Useless use of sort in scalar context at tri_evalue.pl line 22.
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 #!usr/local/bin/perl use strict; use warnings; my $fichier = '/home/mcorrea/Duplinet/data/Hogenom/Test/evalue_tri'; open my $fh, '<', $fichier or die "Impossible de lire le fichier $fichier\n"; my %hash=(); my $i=0; while(my $ligne = <$fh>){ $i++; chomp $ligne; my ($query,$subject,$id,$ali,$mismatches,$gap,$qstart,$qend,$sstart,$send,$evalue,$score) = split "\t", $ligne; if ( !exists $hash{$query}) { my $arrayref = sort { $b <=> $a } $hash{$query}{'evalue'};# fait le trie du plus petit au plus grand cf. ordre de $b et $a! } } foreach my $t (keys %hash){ foreach (keys %{$hash{$t}}){ print "$hash{$t}\t$hash{$t}{$_}\n"; } }
ce qui correspond à ma ligne my $arrayref = sort { $b <=> $a } $hash{$query}{'evalue'} je ne comprend pas
Partager