#!/bin/perl
#use warnings;
#use strict;
#chr11	13984260	13984280	0	7:C>T,18:G>C,19:A>T	+

my $inputfile=$ARGV[0]; #transcript
my $inputfile2=$ARGV[1];
#my $inputfile3=$ARGV[2];

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

my %matrix1;
my %matrix2;
my @matrix2;
my @matrix3;
my @matrix4;
my @matrix5;
my $var1=0;
my $var2=0;
my $var3=0;
my $var4=0;
my $var7=0;
my $var5=0;
my $var6=0;
my $var8=0;
my $temp2=0;

open (INPUT_FILE,$inputfile);

while(my $line1=<INPUT_FILE>)  
 { @{$matrix1{$var1}}=split(/\s/,$line1);
   @matrix2=split(/\,/,${$matrix1{$var1}}[4]);
    $var2=scalar(@matrix2);
   
   # if ($var2<=2)
    #{
    for (my $i=0; $i<$var2; $i++)
       {   
    if ((($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:A\>C/g)&&(${$matrix1{$var1}}[5]=~/\+/))
||(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:A\>G/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:A\>T/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:C\>T/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:C\>G/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:C\>A/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:G\>C/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:G\>T/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:G\>A/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:T\>G/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i+1]=~/(\d{1,2})\:T\>A/g)&&(${$matrix1{$var1}}[5]=~/\+/)))
    { 
     @matrix3=split(/\:/,$matrix2[$i]);@matrix4=split(/\:/,$matrix2[$i+1]); 
     $var3=$matrix3[0]; $var4=$matrix4[0]; $var5=abs($var3-$var4); 
    if ($var5 >2 )
     { $var6=${$matrix1{$var1}}[1]+$var3;$var7=$var6+1;
    print file2 "${$matrix1{$var1}}[0]\t$var6\t$var7\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     } 
    }
elsif((($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:A\>C/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:A\>G/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:A\>T/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:C\>T/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:C\>G/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:C\>A/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:G\>C/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:G\>T/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:G\>A/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:T\>G/g)&&(${$matrix1{$var1}}[5]=~/\+/))||
(($matrix2[$i]=~/(\d{1,2})\:T\>C/g)&&($matrix2[$i-1]=~/(\d{1,2})\:T\>A/g)&&(${$matrix1{$var1}}[5]=~/\+/)))
 {
     @matrix3=split(/\:/,$matrix2[$i]);@matrix4=split(/\:/,$matrix2[$i-1]); 
     $var3=$matrix3[0]; $var4=$matrix4[0]; $var5=abs($var3-$var4); 
    if ($var5 >2 )
     { $var6=${$matrix1{$var1}}[1]+$var3;$var7=$var6+1;
    print file2 "${$matrix1{$var1}}[0]\t$var6\t$var7\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     } 
 }
    elsif (($matrix2[$i]=~/(\d{1,2})\:T\>C/)&&(${$matrix1{$var1}}[5]=~/\+/))
     {@matrix3=split(/\:/,$matrix2[$i]);@matrix4=split(/\:/,$matrix2[$i+1]); 
     $var3=$matrix3[0]; $var4=$matrix4[0]; $var6=${$matrix1{$var1}}[1]+$var3;$var7=$var6+1;
     print file2 "${$matrix1{$var1}}[0]\t$var6\t$var7\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     }
    #elsif (($matrix2[$i]=~/(\d{1,2})\:T\>C/)&&($matrix2[$i+1]=~/(\d{1,2})\:T\>C/)&&(${$matrix1{$var1}}[5]=~/\+/))
    # { 
     #$var2=$1;$var5=${$matrix1{$var1}}[1]+$var2;$var6=$var5+1;
     #print file2 "${$matrix1{$var1}}[0]\t$var5\t$var6\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     #$var2=$2;$var5=${$matrix1{$var1}}[1]+$var2;$var6=$var5+1;
     #print file2 "${$matrix1{$var1}}[0]\t$var5\t$var6\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     #}
    #######################################DO the same for A>G
    elsif ((($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:A\>C/)&&(${$matrix1{$var1}}[5]=~/\-/))
||(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:A\>T/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:C\>T/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:C\>A/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:C\>G/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:G\>C/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:G\>T/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:G\>A/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:T\>C/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:T\>A/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/(\d{1,2})\:T\>G/)&&(${$matrix1{$var1}}[5]=~/\-/)))
   {
     @matrix3=split(/\:/,$matrix2[$i]);@matrix4=split(/\:/,$matrix2[$i+1]); 
     $var3=$matrix3[0]; $var4=$matrix4[0]; $var5=abs($var3-$var4); 
    if ($var5 >2 )
     { $var6=${$matrix1{$var1}}[2]-$var3;$var7=$var6+1;
    print file2 "${$matrix1{$var1}}[0]\t$var6\t$var7\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     } 
 }

elsif((($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:A\>C/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:A\>T/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:C\>T/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:C\>A/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:C\>G/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:G\>C/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:G\>T/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:G\>A/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:T\>C/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:T\>A/)&&(${$matrix1{$var1}}[5]=~/\-/))||
(($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i-1]=~/(\d{1,2})\:T\>G/)&&(${$matrix1{$var1}}[5]=~/\-/)))
    {
     @matrix3=split(/\:/,$matrix2[$i]);@matrix4=split(/\:/,$matrix2[$i+1]); 
     $var3=$matrix3[0]; $var4=$matrix4[0]; $var5=abs($var3-$var4); 
    if ($var5 >2 )
     { $var6=${$matrix1{$var1}}[2]-$var3;$var7=$var6+1;
    print file2 "${$matrix1{$var1}}[0]\t$var6\t$var7\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     } 
    }
   elsif (($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&(${$matrix1{$var1}}[5]=~/\-/))
     { 
     @matrix3=split(/\:/,$matrix2[$i]);@matrix4=split(/\:/,$matrix2[$i+1]); 
     $var3=$matrix3[0]; $var4=$matrix4[0]; $var6=${$matrix1{$var1}}[2]-$var3;$var7=$var6+1;
     print file2 "${$matrix1{$var1}}[0]\t$var6\t$var7\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     }
    #elsif (($matrix2[$i]=~/(\d{1,2})\:A\>G/)&&($matrix2[$i+1]=~/\s/)&&(${$matrix1{$var1}}[5]=~/\-/))
     #{ 
     #$var2=$1;$var5=${$matrix1{$var1}}[1]+$var2;$var6=$var5+1;
     #print file2 "${$matrix1{$var1}}[0]\t$var5\t$var6\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
     #$var2=$2;$var5=${$matrix1{$var1}}[1]+$var2;$var6=$var5+1;
     #print file2 "${$matrix1{$var1}}[0]\t$var5\t$var6\t${$matrix1{$var1}}[3]\t${$matrix1{$var1}}[4]\t${$matrix1{$var1}}[5]\n";
    # }
    
      }
   #}
   }

