#!/usr/bin/perl -w
use strict;

my $s;
my $i;
my $f;
my $l;
my $p;
my $c; 

#Introducció de la proteïna d'interès
print "Amb quina proteina vols treballar:";
$p = <STDIN>;
chomp ($p);

#Substitució de les U per les X
system ("sed 's/U/X/g' $p.fa > $p.aa.fa");

print "S'han canviat les U per X\n";

#Realització del BLAST i visualització del resultat del BLAST
print "S'està realitzant el Blast. Això pot portar uns minuts...\n";

system ("tblastn -query $p.aa.fa -db /mnt/NFS_UPF/bioinfo/BI/genomes/2018/Casuarius_casuarius/genome.fa -out $p.blast");

system ("cat $p.blast");

#Introducció de les dades del scaffold a analitzar
print "Introdueix l'scaffold a analitzar: ";
$s = <STDIN>;
chomp ($s);

print "Primer nucleòtid: ";
$i = <STDIN>;
chomp ($i);

print "Últim nucleòtid: ";
$f = <STDIN>;
chomp ($f);

#Realització del fastafetch y fastasubseq
system ("fastafetch /mnt/NFS_UPF/bioinfo/BI/genomes/2018/Casuarius_casuarius/genome.fa /mnt/NFS_UPF/bioinfo/BI/genomes/2018/Casuarius_casuarius/genome.index '$s' > $s.$p.fetch.fa");

#Càlcul del start i length per al fastasubseq en la frame positiva 
if ($i < $f) {
 $i = $i - 50000;
 if ($i < 0){
	$i = 1} #Amb això assegurem que l'inici no es surti de la longitud de l'scaffold
 $f = $f + 50000;
 $l = $f - $i;
 
}
#Càlcul del start i length per al fastasubseq en la frame negativa

else{
	$f = $f - 50000;
		if ($f < 0){
		$f = 1} #Amb això assegurem que l'inici no es surti de la longitud de l'scaffold
	$i = $i + 50000;
	$l = $i - $f;
}


print "Fastafech completat \n";

if ($i < $f) {
    print "La teva coordenada inicial es $i i la teva coordenada final es $f\n";
}
else {
print "La teva coordenada inicial es $f i la teva coordenada final es $i\n";   
}

print "La longitud de la sequencia es $l\n";


print "Assegura't que les coordenades són les correctes. Si es així pulsa intro: ";
$c = <STDIN>;
chomp ($c);

#Realització del fastasubseq en la frame positiva
if ($i < $f) {
 system ("fastasubseq $s.$p.fetch.fa $i $l > $s.$p.sub.fa");
}
#Realització del fastasubseq en la frame negativa
else{
 system ("fastasubseq $s.$p.fetch.fa $f $l > $s.$p.sub.fa");
}
 

print "Fastasubseq completat\n";

#Realització de l'exonerate i extracció de les coordenades dels exons
system ("exonerate -m p2g --showtargetgff -q $p.aa.fa -t $s.$p.sub.fa > $p.$s.exonerate.gff");
system ("egrep -w exon $p.$s.exonerate.gff > $p.$s.exon.gff");

print "Exonerate completat \n"; 
print "Ja tens el teu exons\n"; 

#Realització del fastaseqfromGFF i fastatranslate
system ("fastaseqfromGFF.pl $s.$p.sub.fa $p.$s.exon.gff > $p.$s.nt.fa");
system ("fastatranslate -f $p.$s.nt.fa -F 1 > $p.$s.pred.fa");

#Canvi d'* per X de la proteïna predita
system ("sed 's/*/X/g' $p.$s.pred.fa > $p.$s.predX.fa");

print "Les U de la proteina s'han canviat per X\n";

#Realització del t-coffee
system ("t_coffee $p.aa.fa $p.$s.predX.fa > $p.$s.tcoffee.fa");

print "Analisi completat\n";

#Canvi de caràcters especials per N per tal que el input sigui acceptat pel seblastian o SECISsearch3
system ("sed 's/[SMRYWKB]/N/g' $s.$p.sub.fa > $p.SECIS.fa");

print "S'han canviat els caracters especials per N\n";

#Creació d'una carpeta amb el nom de la proteïna analitzada i introducció dels arxiuys generats a la carpeta corresponent
print "S'està creant una carpeta amb el fitxers de la teva proteïna\n";
system ("mkdir $p");

system ("mv $p.aa.aln $p");
system ("mv $p.fa $p");
system ("mv $p.aa.fa $p");
system ("mv $p.blast $p");
system ("mv $p.$s.exon.gff $p");
system ("mv $p.$s.exonerate.gff $p");
system ("mv $p.$s.nt.fa $p");
system ("mv $p.$s.pred.fa $p");
system ("mv $p.$s.predX.fa $p");
system ("mv $p.$s.tcoffee.fa $p");
system ("mv $s.$p.fetch.fa $p");
system ("mv $s.$p.sub.fa $p");
system ("mv $p.aa.html $p");
system ("mv $p.SECIS.fa $p");

print "La carpeta ja s'ha creat\n";
