#!/usr/bin/perl -w 


print "prob best to do it from bed files\n";

@files = qw(sr_2AB_1_BC1_sorted.bed
sr_2AB_2_BC2_sorted.bed
sr_2AB_T_BC3_sorted.bed
sr_45_2_BC5_sorted.bed
sr_45a_1_BC4_sorted.bed
sr_45b_1_BC6_sorted.bed
sr_91a_1_BC7_sorted.bed
sr_91a_2_BC8_sorted.bed
sr_91b_1_BC9_sorted.bed
sr_91b_2_BC10_sorted.bed);


$color[0]= "150,50,50";
$color[1]= "50,150,50";
$color[2]= "50,50,150";
$color[3]= "150,150,50";
$color[4]= "150,50,150";
$color[5]= "50,150,150";
$color[6]= "200,30,30";
$color[7]= "30,200,30";
$color[8]= "30,30,200";
$color[9]= "50,250,250";


open(TK,">allfractracks.txt");
#print TK "track all_intron_frac
#type bigWig 
#container multiWig
#aggregate transparentOverlay
#showSubtrackColorOnUi on
#viewLimits 0:1
#";

$nn=0;
foreach $f (sort @files){
#open(IF,"$f");
@total = ();
@intron = ();
@exon= ();

#parent all_intron_frac
$short = $f;
$short =~ s/_sorted.bed//;
$short = "in_frac.".$short;

print TK "
track $short
shortLabel $short
longLabel $short
type bigWig 
bigDataUrl http://intron.ucsc.edu/jen/may2021/in_frac.$f.bw
visibility full
alwaysZero on
viewLimits 0:1
color $color[$nn]

";
$nn++;

$max=0;$min=40000;

#splRep	0	1129	0
#splRep	1129	1130	3
#splRep	1130	1131	1174
print "XXXXXXXXXXXXXXXXXXXXXXXXX\n";
print "$f\n";
open(B4,"b4.$f.bedgraph");
while($a=<B4>){
chomp($a);
@b = split(/\t/,$a);
$start = $b[1];
$end = $b[2];
$n = $b[3];
for($i=$start;$i<$end;$i++){$total[$i] = $n;}
if($start<$min){$min = $start;}
if($end>$max){$max = $end;}
}
close(B4);

open(IN,"in.$f.bedgraph");
while($a=<IN>){
chomp($a);
@b = split(/\t/,$a);
$start = $b[1];
$end = $b[2];
$n = $b[3];
for($i=$start;$i<$end;$i++){$intron[$i] = $n;}
if($start<$min){$min = $start;}
if($end>$max){$max = $end;}
}
close(IN);

open(EX,"ex.$f.bedgraph");
while($a=<EX>){
chomp($a);
@b = split(/\t/,$a);
$start = $b[1];
$end = $b[2];
$n = $b[3];
for($i=$start;$i<$end;$i++){$exon[$i] = $n;}
if($start<$min){$min = $start;}
if($end>$max){$max = $end;}
}
close(EX);

print "$min $max\n";
if($min<1){$min=1;}

open(OF,">$f.dat");
open(OFI,">in_frac.$f.wig");
print OFI "track type=wiggle_0 name=fraction_intron_$f \nfixedStep chrom=splRep start=$min  step=1\n";
open(OFE,">ex_frac.$f.wig");
print OFE "track type=wiggle_0 name=fraction_exon_$f \nfixedStep chrom=splRep start=$min  step=1\n";
for($i=$min;$i<$max;$i++){

$t = $intron[$i] + $exon[$i];
if($t>10){
$fracin = $intron[$i]/$t;
$fracex = $exon[$i]/$t;
}
else{$fracin=0;$fracex=0;}

print OF "$i $intron[$i] $exon[$i] $total[$i] $t $fracin $fracex\n";
print OFI "$fracin \n";
print OFE "$fracex \n";

}

close(OF);
close(OFI);
close(OFE);

system("wigToBigWig in_frac.$f.wig chrom.sizes in_frac.$f.bw ");
system("wigToBigWig ex_frac.$f.wig chrom.sizes ex_frac.$f.bw ");

#exit;
}








