#!/usr/bin/perl $dir="D:/cagenome/consig/package"; #directory $output="Final_ConSigScore.xls"; #output file $mutationconsig="CGC_Mutation_2008-11-05.id.ConsigScore"; #file for mutation consig score $fusionconsig="Mitelman2008.all.id.ConsigScore"; #file for fusion consig score $k=1.67; open (A,"$dir/$mutationconsig"); while () { chomp; my @l=split(/\t/); $d{"$l[1]"}="$l[3]"; $kd{"$l[1]"}="$l[2]"; } open (A,"$dir/$fusionconsig"); while () { chomp; my @l=split(/\t/); $r{"$l[1]"}="$l[3]"; $kr{"$l[1]"}="$l[2]"; } open (RE,">$dir/$output"); print RE "GeneSym\tGeneID\tKnown_Fusion\tFusion_ConSig\tKnown_Mutation\tMutation_ConSig\trConSig\tdConSig\n"; open (A,"$dir/genesym2id.hs"); while () { chomp; my @l=split(/\t/); if ($r{$l[1]}<$d{$l[1]}*$k) { $distance=-distance($d{$l[1]},$r{$l[1]},$k); } elsif ($r{$l[1]}>=$d{$l[1]}*$k) { $distance=1*distance($d{$l[1]},$r{$l[1]},$k); } print RE "$_\t",$kr{"$l[1]"},"\t",$r{"$l[1]"},"\t",$kd{"$l[1]"},"\t",$d{"$l[1]"},"\t",($d{$l[1]}**2+$r{$l[1]}**2)**0.5,"\t",$distance,"\n"; } print "done"; #calculate the distance between point (x,y) to the line y=kx sub distance { my $x=$_[0]; my $y=$_[1]; my $k=$_[2]; my $d=abs($k*$x-$y)/($k**2+1)**0.5; return $d; }