#!/bin/perl
use warnings;
use strict;

my $inputfile=$ARGV[0];

open (INPUT_FILE,$inputfile);

open (file2,">Densities-TCstatsonTranscripts.bed") or die "$!\n";

my %matrix1;
my %matrix2;
my %matrix3;

my $temp1=0;
my $temp2=0;
my @temp2=0;
my $cnt=0;
my @temp3=0;
my $temp4=0;

my @temp5=0;

my @average=0;
my $q=0;

my $signal1=0;
my $signal2=0;
my $signal3=0;

my $var1=0;
my $var2=0;

while(my $line1=<INPUT_FILE>)  
 {   
     @{$matrix1{$temp1}}=split(/\s/,$line1);
    
     $temp1++;
 }

print file2 "${$matrix1{0}}[0]\t${$matrix1{0}}[1]\t${$matrix1{0}}[2]\t${$matrix1{0}}[3]\t${$matrix1{0}}[4]\t${$matrix1{0}}[9]\t${$matrix1{0}}[5]\n";

 for ( my $i=1; $i<$temp1; $i++)
    {  
       if  ( ( ${$matrix1{$i-1}}[3] eq ${$matrix1{$i}}[3] ) )
         {
            $temp2= ${$matrix1{$i-1}}[4]+$temp2; ## Density in bin
            $temp2[$i]=$temp2;

            if ( ${$matrix1{$i-1}}[7] ne  ${$matrix1{$i}}[7] )   
              { $temp4 = ${$matrix1{$i-1}}[9]+$temp4;
                
              }
             elsif ( ( ${$matrix1{$i-1}}[7] eq  ${$matrix1{$i}}[7] )|| ( ${$matrix1{$i-2}}[7] eq  ${$matrix1{$i}}[7] ))
               { 
                  $signal2=1;
                 
                  #$temp4=${$matrix1{$i-1}}[9]; 
                 
               } 

               
                $q++;  
                $temp3[$i]=$temp4;
               $signal1=1;

            }
              
            
       elsif  ( ( ${$matrix1{$i-1}}[3] ne ${$matrix1{$i}}[3] ) && ( ${$matrix1{$i-1}}[3] eq ${$matrix1{$i-2}}[3] ) )
          {    

              $var1=${$matrix1{$i-1}}[4];

              $var2=$temp3[$i-1]+${$matrix1{$i-1}}[9];

               if ( $signal1==1)
              {
                
                $average[$i-1]=($temp2[$i-1]+$var1)/($q+1);
                 
               $signal1=0;$signal2=0;
           print file2 "${$matrix1{$i-1}}[0]\t${$matrix1{$i-1}}[1]\t${$matrix1{$i-1}}[2]\t${$matrix1{$i-1}}[3]\t$average[$i-1]\t${$matrix1{$i-1}}[9]\t${$matrix1{$i-1}}[5]\n"; 
              $q=0;$temp4=0;$temp2=0;  
              }   

               if  ( ( ${$matrix1{$i-1}}[3] ne ${$matrix1{$i}}[3] ) && ( ${$matrix1{$i+1}}[3] ne ${$matrix1{$i}}[3] ) )

                {  
            print file2 "${$matrix1{$i}}[0]\t${$matrix1{$i}}[1]\t${$matrix1{$i}}[2]\t${$matrix1{$i}}[3]\t${$matrix1{$i}}[4]\t${$matrix1{$i}}[9]\t${$matrix1{$i}}[5]\n";
                    
                }
                       
          }

    
         
       elsif  ( ( ${$matrix1{$i-1}}[3] ne ${$matrix1{$i}}[3] ) && ( ${$matrix1{$i+1}}[3] ne ${$matrix1{$i}}[3] ) )
         {   print file2 "${$matrix1{$i}}[0]\t${$matrix1{$i}}[1]\t${$matrix1{$i}}[2]\t${$matrix1{$i}}[3]\t${$matrix1{$i}}[4]\t${$matrix1{$i}}[9]\t${$matrix1{$i}}[5]\n";
             $q=0;$temp4=0;$temp2=0;$signal1=0;

                      
         }

      
    }    
#################################################################################################################################################################################################

 close (file2);


       

