Hello,

J'ai un résultat de blast et je souhaiterai faire un tri query par query selon la e-value
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
Obtenir comme résultats:
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   309
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";
 
        }
}
J'obtiens le message d'erreur : Useless use of sort in scalar context at tri_evalue.pl line 22.
ce qui correspond à ma ligne my $arrayref = sort { $b <=> $a } $hash{$query}{'evalue'} je ne comprend pas