#!/usr/bin/perl -w

use strict;

#a.campillo - UPF - l.ortet

#obrim ENCODE.txt

open(ENCODE,"< ENCODE.txt");                  

#declarem les variables de ENCODE.txt
                 
my @cromosoma;
my @inici;
my @final;
my $i = 0; 
my $notrobat = 0;   

# mentre hi hagi linies per llegir del fitxer ENCODE.txt

while (<ENCODE>){                                

  # si encaixa la linia amb l'expressio regular d'un gen anotat en format golden_path:

   $_ =~m/\A(\w+)\s+(\d+)\s+(\d+)/; 

  # capturem les variables

    $cromosoma[$i] = $1;   #capturem el cromosoma de Encode.txt               
    $inici[$i] = $2;       #capturem l'inici de transcripcio de Encode.txt           
    $final[$i] = $3;       #capturem el final de transcripcio de Encode.txt           
    

    $i = $i +1;


}

# i sortim del programa inmediatament

close(ENCODE);  

              

#declarem les variables pel fitxer en golden_path

my @id;  
my @chr;
my @stra;           
my @itrans;
my @ftrans;
my @itrad;
my @ftrad;
my @numex;
my @exon;
my $posicio = 0;  

# obrim RefSeq.txt de cada cromosoma,en l'exemple esta el cromosoma X

if (!open(CROMOSOMES,"< RefSeqX.txt")){die "arxiu incorrecte\n";}  

# mentre hi hagi linies per llegir del fitxer

while (<CROMOSOMES>){


# si encaixa la linia amb l'expressio regular d'un gen anotat en format golden_path:

 $_ =~m/(\w+)\s+(\w+)\s+([\+\-])\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+([\d+\,\s]+)/; 


    $id[$posicio]= $1;              #capturem l'identificador del gen
    $chr[$posicio] = $2;            #capturem cada cromosoma 
    $stra[$posicio] = $3;           #capturem el strand (+/-)    
    $itrans[$posicio] = $4;         #capturem inici transcripcio          
    $ftrans[$posicio] = $5;         #capturem final transcripcio
    $itrad[$posicio] = $6;          #capturem inici traduccio
    $ftrad[$posicio] = $7;          #capturem final traduccio
    $numex[$posicio] = $8;          #capturem en nombre d'exons
    @exon = $9=~m/(\d+)/g;          #capturem en un vector els diferents valors dels exons

my $i = 0; 

    while ($i<scalar(@exon)){  

	$i = $i +1;

    }              

while ($posicio < scalar(@itrans) ){

    $i=0;

    while ($i < scalar(@cromosoma)){

	# comparacio per cada cromosoma

	if($cromosoma[$i] eq 'chrX'){

	    if (($itrans[$posicio] >= $inici[$i]) && ($ftrans[$posicio] <= $final[$i])){

		print "$id[$posicio]  $chr[$posicio]  $stra[$posicio]  $itrans[$posicio]  $ftrans[$posicio]  $itrad[$posicio]  $ftrad[$posicio]  $numex[$posicio]";

		my $j = 0;

		while ($j<scalar(@exon)){
		    print " $exon[$j]";
		    if ($j!=scalar(@exon)-1){print",";}
		    $j = $j +1;
		}
		print "\n";
		
		$notrobat = $notrobat +1;

	    } #tanca el if de la comparacio

}             #tanca el if de cada cromosoma

	$i = $i + 1;

    }        #tanca el while scalar(@cromosoma)

     $posicio = $posicio + 1;

}            #tanca el while scalar(@itrans)



    $posicio = $posicio +1;

}

# i sortim del fitxer en golthen_path 

close (CROMOSOMES); 

if (!$notrobat){

    print "No s'ha trobat valors dins de ENCODE dins el RefSeq del chrX\n";
}






