comparison bin/ApplyCutoff.jie.pl @ 1:adc0f7765d85 draft

planemo upload
author bioitcore
date Thu, 07 Sep 2017 15:06:58 -0400
parents
children
comparison
equal deleted inserted replaced
0:d4ca551ca300 1:adc0f7765d85
1 #apply our cuttoff hash table on the IR calculated by Jie
2 #Modified from Martin's code
3 use strict;
4
5 use Cwd;
6 my $PROG = $0;
7 my $CUR_DIR = Cwd::abs_path(Cwd::cwd());
8 my $PROG_ABS_PATH = Cwd::abs_path($PROG);
9 my $SrcFolder=`dirname $PROG_ABS_PATH`;
10 chomp($SrcFolder);
11
12 my %cutoff;
13 my @Exlen;
14
15 my $cutoff_level=$ARGV[1];
16 my $JunctionCut = $ARGV[2];
17 my $noirm = $ARGV[3];
18
19 my $cutoff_level_index=7;
20
21 $cutoff_level_index=8 if $cutoff_level eq "H";
22 $cutoff_level_index=6 if $cutoff_level eq "L";
23
24 open(CUT,"$SrcFolder/../cutoffs/cutoff.pair.0".$cutoff_level_index.".txt") || die "cutoff file not found $!\n";
25
26 while(<CUT>){
27 chomp;
28 my @a=split(/\t/,$_);
29 push @Exlen,$a[0];
30 $cutoff{$a[0]}=$a[1];
31 }
32 close(CUT);
33
34 open(IN,$ARGV[0]);
35
36 while(<IN>){
37 chomp;
38 my @a=split(/\t/,$_);
39 my $Ez='Ez=yes';
40 my $print=$_;
41 if($a[0]=~m/#/g){next}
42 my $eventid=substr($a[0],0,2);
43 my $bir =$a[2];
44 $bir =$a[1] if($noirm eq "noirm");
45 my $j12 = $a[8];
46 my $j23 = $a[9];
47 my $j13 = $a[10];
48 my $cov1=$a[11];
49 my $cov2=$a[12];
50 my $cov3=$a[13];
51 my $siz1=$a[15];
52 my $siz2=$a[16];
53 my $siz3=$a[17];
54
55
56 my $stat1='exon1='.cutoff($siz1,$cov1,\@Exlen,%cutoff);
57 my $stat2='exon2='.cutoff($siz2,$cov2,\@Exlen,%cutoff);
58 my $stat3='exon3='.cutoff($siz3,$cov3,\@Exlen,%cutoff);
59 if($stat1 eq "exon1=yes" and $stat3 eq "exon3=yes")
60 {
61 #$Ez="passed";
62 $Ez=$eventid if $eventid eq "AA";
63 $Ez=$eventid if $eventid eq "AD";
64 $Ez=$eventid if $eventid eq "IR";
65 if ($eventid eq "CS" or $eventid eq "CA" or $eventid eq "ME")
66 {
67 if($bir >0.9)
68 {
69 $Ez = "CS";
70 }
71 else
72 {
73 $Ez = "CA";
74 }
75 }
76
77 }
78 else
79 {
80 #$Ez="declined";
81 $Ez = "na";
82 }
83 if( ($j12<$JunctionCut or $j23<$JunctionCut) and $j13 <$JunctionCut)
84 {
85 $Ez = "na";
86 }
87 print $print,"\t",$stat1,"\t",$stat2,"\t",$stat3,"\t",$Ez,"\n";
88 }
89 close(IN);
90 ####################################################################
91
92 sub cutoff{
93 my($s,$c,$E,%cutoff)=@_;
94 my @Exlen=@$E;
95 if($c eq 'NA'){return('NA')}
96 my $range=$Exlen[$#Exlen];
97 foreach my $l(@Exlen){if($s<$l){$range=$l;last}}
98 if($c<$cutoff{$range}){return('no')}
99 return('yes')
100 }
101
102
103 sub contain{
104 my ($a,@a)=@_;
105 foreach(@a){if($a eq $_){return(1)}}
106 return(0)
107 }
108