unless(open(FILE_1, $ARGV[0])){
print "File ", $ARGV[0], " is not found.";
}
unless(open(FILE_2,$ARGV[1])){
print "File ", $ARGV[1], " is not found.";
}
$file_1_line = <FILE_1>;
$file_1_line =~ s/\x0A\x0D//g;
$file_1_line =~ tr/\x0A\x0D//d;
$file_2_line = <FILE_2>;
$file_2_line =~ s/\x0A\x0D//g;
$file_2_line =~ tr/\x0A\x0D//d;
my @file_1 = split(/\t/, $file_1_line);
my @file_2 = split(/\t/, $file_2_line);
my $sample_1 = shift @file_1;
my $sample_2 = shift @file_2;
my $n1 = 1+$#file_1;
my $n2 = 1+$#file_2;
my @file_total = (@file_1, @file_2);
my %ranking = ();
my $counter = 0;
my $prevalue = "-";
my $svalue_counter = "-";
my $accumulation_counter = 0;
foreach my $line (sort{$a<=>$b} (@file_total)){
$counter++;
if ($line == $prevalue){
$svalue_counter++;
$accumulation_counter += $counter;
$ranking{$line} = $accumulation_counter / $svalue_counter;
}else{
$svalue_counter = 1;
$accumulation_counter = $counter;
$ranking{$line} = $counter;
$prevalue = $line;
}
}
my $R1 = 0;
foreach my $line (@file_1){
$R1 += $ranking{$line};
}
print $R1, "\t";
my $R2 = 0;
foreach my $line (@file_2){
$R2 += $ranking{$line};
}
print $R2, "\r\n";
my $U1 = $n1*$n2 + $n1*($n1+1)/2 -$R1;
my $U2 = $n1*$n2 + $n2*($n2+1)/2 -$R2;
my $U0 = ();
if ($U1 < $U2){
$U0 = $U1;
}elsif($U2 <= $U1){
$U0 = $U2;
}else{
print "error";
}
print $U1, "\t";
print $U2, "\t";
print $U0;