Mercurial > repos > bioitcore > splicetrap
diff bin/ApplyCutoff.jie.pl @ 1:adc0f7765d85 draft
planemo upload
author | bioitcore |
---|---|
date | Thu, 07 Sep 2017 15:06:58 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/ApplyCutoff.jie.pl Thu Sep 07 15:06:58 2017 -0400 @@ -0,0 +1,108 @@ +#apply our cuttoff hash table on the IR calculated by Jie +#Modified from Martin's code +use strict; + +use Cwd; +my $PROG = $0; +my $CUR_DIR = Cwd::abs_path(Cwd::cwd()); +my $PROG_ABS_PATH = Cwd::abs_path($PROG); +my $SrcFolder=`dirname $PROG_ABS_PATH`; +chomp($SrcFolder); + +my %cutoff; +my @Exlen; + +my $cutoff_level=$ARGV[1]; +my $JunctionCut = $ARGV[2]; +my $noirm = $ARGV[3]; + +my $cutoff_level_index=7; + + $cutoff_level_index=8 if $cutoff_level eq "H"; +$cutoff_level_index=6 if $cutoff_level eq "L"; + +open(CUT,"$SrcFolder/../cutoffs/cutoff.pair.0".$cutoff_level_index.".txt") || die "cutoff file not found $!\n"; + +while(<CUT>){ + chomp; + my @a=split(/\t/,$_); + push @Exlen,$a[0]; + $cutoff{$a[0]}=$a[1]; +} +close(CUT); + +open(IN,$ARGV[0]); + +while(<IN>){ + chomp; + my @a=split(/\t/,$_); + my $Ez='Ez=yes'; + my $print=$_; + if($a[0]=~m/#/g){next} + my $eventid=substr($a[0],0,2); + my $bir =$a[2]; + $bir =$a[1] if($noirm eq "noirm"); + my $j12 = $a[8]; + my $j23 = $a[9]; + my $j13 = $a[10]; + my $cov1=$a[11]; + my $cov2=$a[12]; + my $cov3=$a[13]; + my $siz1=$a[15]; + my $siz2=$a[16]; + my $siz3=$a[17]; + + + my $stat1='exon1='.cutoff($siz1,$cov1,\@Exlen,%cutoff); + my $stat2='exon2='.cutoff($siz2,$cov2,\@Exlen,%cutoff); + my $stat3='exon3='.cutoff($siz3,$cov3,\@Exlen,%cutoff); + if($stat1 eq "exon1=yes" and $stat3 eq "exon3=yes") + { + #$Ez="passed"; + $Ez=$eventid if $eventid eq "AA"; + $Ez=$eventid if $eventid eq "AD"; + $Ez=$eventid if $eventid eq "IR"; + if ($eventid eq "CS" or $eventid eq "CA" or $eventid eq "ME") + { + if($bir >0.9) + { + $Ez = "CS"; + } + else + { + $Ez = "CA"; + } + } + + } + else + { + #$Ez="declined"; + $Ez = "na"; + } + if( ($j12<$JunctionCut or $j23<$JunctionCut) and $j13 <$JunctionCut) + { + $Ez = "na"; + } + print $print,"\t",$stat1,"\t",$stat2,"\t",$stat3,"\t",$Ez,"\n"; +} +close(IN); +#################################################################### + +sub cutoff{ + my($s,$c,$E,%cutoff)=@_; + my @Exlen=@$E; + if($c eq 'NA'){return('NA')} + my $range=$Exlen[$#Exlen]; + foreach my $l(@Exlen){if($s<$l){$range=$l;last}} + if($c<$cutoff{$range}){return('no')} + return('yes') +} + + +sub contain{ + my ($a,@a)=@_; + foreach(@a){if($a eq $_){return(1)}} + return(0) +} +