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
| while (<KEY2SIGN>) {
s/[\r\n]//g;
my($onto,$keywordID,$keyword,$sign)=split "\t";
$k2s{"$onto;$keywordID;$keyword"}{$sign}++;
}
foreach my $k1 (keys %k2s){
foreach my $k2 (keys %k2s){
if($k1 ne $k2){
$k1 =~ /(.*?);/;
my $onto1 = $1;
$k2 =~ /(.*?);/;
my $onto2 = $1;
if($onto1 != $onto2){
my @s1 = keys (%{$k2s{$k1}}); # scalar(@s1) renvoit la longueur de la liste donc le nombre de signature pr mt clé 1
my @s2 = keys (%{$k2s{$k2}});
my %hash = map{$_ => 1} (@s1, @s2);
my @tab = keys %hash;
my $intersect = @s1 + @s2 - @tab; # renvoi le nombre de signatures communes aux deux listes
if(($intersect > 0) && (($intersect==1 && scalar(@s1)!=1 ) ||( $intersect==1 && scalar(@s2)!=1)) ){
print ECRIRE $k1,"\t",$k2,"\t",$intersect, "\t", scalar(@s1),"\t",$S-scalar(@s1), "\t",scalar(@s2),"\n";
}
}
}
}
} |
Partager