#!/usr/bin/perl
$dir="D:/cagenome/consig/package"; #directory of the package
$genelist="Mitelman2008.all.id"; #fusion (Mitelman2008.all.id) or point mutation (CGC_Mutation_2008-11-05.id) gene list
$concept2gene="concepts2gene_v111808.delparent"; #concept2gene mapping database
open (RE,">$dir/$genelist.ConsigScore");
open (A,"$dir/$genelist");
while ()
{
chomp;
my @l=split(/\t/);
if (exists $l[0] and $l[0]=~/\d+/)
{
$input{$l[0]}=1;
}
}
open (A,"$dir/$genelist.concepts");
while ()
{
chomp;
my @l=split(/\t/);
if ($l[4]>=1)
{
$weight{$l[0]}=log(1+$l[4]/($l[5]**0.5))/log(10);
$weightdel{$l[0]}=log(1+($l[4]-1)/($l[5]**0.5))/log(10);
}
}
open (C,"$dir/$concept2gene");
while ()
{
chomp;
my @l=split(/\t/);
$go{$l[1]}{$l[0]}=1;
}
open (S,"$dir/genesym2id.hs");
while ()
{
chomp;
my @l=split(/\t/);
$geneid{$l[0]}=$l[1];
$geneid{uc($l[0])}=$l[1];
}
open (C,"$dir/genesym2id.hs");
while ()
{
chomp;
my @l=split(/\t/);
if ($l[1]=~/\d+/)
{
my $sum=0;
my $n=0;
if (exists $input{$l[1]})
{
foreach $go(keys %{$go{$l[1]}})
{
if (exists $weightdel{$go})
{
$sum+=$weightdel{$go};
}
$n++;
}
}
else
{
foreach $go(keys %{$go{$l[1]}})
{
if (exists $weight{$go})
{
$sum+=$weight{$go};
}
$n++;
}
}
if ($n==0)
{
$score{$_}=0;
}
else
{
$score{$_}=$sum/($n**(1/2));
}
}
}
foreach $key(sort {$score{$b}<=>$score{$a}} keys %score)
{
my @gene=split(/\t/,$key);
$input{$gene[1]}="" if (not exists $input{$gene[1]});
print RE "$key\t$input{$gene[1]}\t$score{$key}\n";
}
print "done";