#!/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";