#!/usr/bin/perl -w

use strict;
use warnings;

# El programa en perl ha estat elaborat per: Clara Ribas, Núria Isern, Andrea Martínez i Paula Galiana.
# Aquest script analitza si la query donada es troba dins del genoma de Miichthys miiuy.
# Per qualsevol dubte, poseu-vos en contacte amb alguna membre del grup. 


print "Introdueix nom de la proteina:";
my $proteina = <STDIN>;
chomp ($proteina);


my $carpeta = "./$proteina";
system ("mkdir $carpeta");

print "S'ha creat la carpeta $proteina\n\n";

system ("sed 's/U/X/g' $proteina\_hs.aa.fa.txt > $proteina\_hs.aa.fa.canviat "); # canviem les U per X!

print "S'estan fent els blasts\n\n";

# BLAST 

system ("tblastn -evalue 0.05 -query $proteina\_hs.aa.fa.canviat -db /cursos/20428/BI/genomes/2016/Miichthys_miiuy/genome.fa -out $proteina.blast.txt  ");

system ("emacs $proteina.blast.txt &");


# BLAST TABULAT: Fem un blast amb un format amb columnes tabulades 

system ("tblastn -outfmt 7 -evalue 0.05 -query $proteina\_hs.aa.fa.canviat -db /cursos/20428/BI/genomes/2016/Miichthys_miiuy/genome.fa -out $proteina.blast.tabulat.txt");

system ("more $proteina.blast.tabulat.txt");

print "Fes click a enter per seguir";
<> ;


# FASTAFETCH

print "Introdueix el nom del scaffold:";
my $sca = <STDIN>;
chomp ($sca);

my $scaffold = "./$proteina/$sca";
system ("mkdir $scaffold"); # creem carpeta amb el nom del scaffold triat

    system ("fastafetch /cursos/20428/BI/genomes/2016/Miichthys_miiuy/genome.fa /cursos/20428/BI/genomes/2016/Miichthys_miiuy/genome.index $sca > $proteina\_$sca.fa");
 

print "S'ha fet el fastafetch!\n\n";


# FASTASUBSEQ

print "Introdueix start:";
my $start = <STDIN>;
chomp ($start);

$start = $start - 50000;
print "L'inici es $start\n";

if ($start < 0) { 	
    print "S'ha de començar per 1!\n";
    $start = 1;
}

print "Introdueix el nombre final del hit:";
my $final = <STDIN>;
chomp ($final);

$final = $final + 50000;

print "L'extensio final es $final \n";


print "Mira que la prediccio no sigui mes llarga que la llargada del scaffold i apreta enter\n";
<>; 

print "Vols canviar el valor inicial? ";
my $canvi = <STDIN>;
chomp ($canvi);

	if ($canvi eq 'si') {

	print "Introdueix el nombre inicial JA RESTAT!:";

	$start = <STDIN>;
	chomp ($start);
	}

print "Vols canviar el valor final? ";

$canvi = <STDIN>;
chomp ($canvi);

	if ($canvi eq 'si') {

	print "Introdueix el nombre final JA SUMAT!:";

	$final = <STDIN>;
	chomp ($final);
}

my $lenght = $final - $start;



system ("fastasubseq $proteina\_$sca.fa $start $lenght > genome$proteina\_$sca.fa");

print "S'ha fet el fastasubseq!\n";


# EXONERATE 

system ("exonerate -m p2g --showtargetgff -q $proteina\_hs.aa.fa.canviat -t genome$proteina\_$sca.fa > $proteina\_$sca.exonerate.txt");

system (" egrep -w exon $proteina\_$sca.exonerate.txt  > $proteina\_$sca.exonerate.gff.txt");

print "S'ha fet l'exonerate!\n";

# FASTASEQFROMGFF

system ("fastaseqfromGFF.pl genome$proteina\_$sca.fa $proteina\_$sca.exonerate.gff.txt >  $proteina\_$sca.nt.fa");
print "S'ha fet el fastasqfromgff!\n";

# FASTATRANSLATE 

system ("fastatranslate -f $proteina\_$sca.nt.fa -F 1 > $proteina\_hs_$sca.predicted.fa");
print "S'ha fet el fastatranslate!\n";


system ("sed 's/\*/X/g' $proteina\_hs_$sca.predicted.fa > $proteina\_hs_$sca.predicted.canviat.fa "); # canviem els * per X abans de fer el tcoffee

print "S'han canviat els * per X!\n"; 

# TCOFFEE  

system ("t_coffee $proteina\_hs.aa.fa.canviat $proteina\_hs_$sca.predicted.canviat.fa > $proteina\_$sca.final.txt");

print "S'Ha fet el tcoffee!\n\n\n\n\n\n";


system ("mv $proteina\_$sca.fa $scaffold");
system ("mv genome$proteina\_$sca.fa $scaffold");
system ("mv $proteina\_$sca.exonerate.txt $scaffold");
system ("mv $proteina\_$sca.exonerate.gff.txt $scaffold");
system ("mv $proteina\_$sca.nt.fa $scaffold");
system ("mv $proteina\_hs_$sca.predicted.fa $scaffold");
system ("mv $proteina\_hs_$sca.predicted.canviat.fa $scaffold");
system ("mv $proteina\_$sca.final.txt $scaffold");
system ("mv $proteina\_hs.aa.fa.aln $scaffold");
system ("mv $proteina\_hs.aa.fa.html $scaffold");

print "Ja s'han passat tots els fitxer a la la carpeta $sca!\n";


############################# si volem analitzar un altre scaffold en la mateixa proteina 

print "Vols analitzar un altre scaffold? ";
my $repeat = <STDIN>;
chomp ($repeat);

while ($repeat eq 'si') {     #torna-ho a fer tot, tants cops com scaffolds vulguis analitzar
 
system ("more $proteina.blast.tabulat.txt");

print "Introdueix el nom del scaffold: ";
my $sca = <STDIN>;
chomp ($sca);

my $scaffold = "./$proteina/$sca";
system ("mkdir $scaffold");

    system ("fastafetch /cursos/20428/BI/genomes/2016/Miichthys_miiuy/genome.fa /cursos/20428/BI/genomes/2016/Miichthys_miiuy/genome.index $sca > $proteina\_$sca.fa");
 

print "S'ha fet el fastafetch!!!!!!!!!!\n";


###  FASTASUBSEQ ####

print "Introdueix start: ";
my $start = <STDIN>;
chomp ($start);

$start = $start - 50000;
print "L'inici es $start\n";

if ($start < 0) {
    print "S'ha de començar per 1!\n";
    $start = 1;
}

print "Introdueix el nombre final del hit: ";
my $final = <STDIN>;
chomp ($final);

$final = $final + 50000;

print "El final de la prediccio es $final \n";

print "Mira que la prediccio no sigui mes llarga que la llargada de l'scaffold i apreta enter\n";
<>;

print "Vols canviar el valor inicial? ";
$canvi = <STDIN>;
chomp ($canvi);

	if ($canvi eq 'si') {

	print "Introdueix el nombre inicial JA RESTAT!:";

	$start = <STDIN>;
	chomp ($start);

	}


print "Vols canviar el valor final? ";
$canvi = <STDIN>;
chomp ($canvi);

	if ($canvi eq 'si') {


	print "Introdueix el nombre final JA SUMAT!:";

	$final = <STDIN>;
	chomp ($final);

	}

$lenght = $final - $start;


system ("fastasubseq $proteina\_$sca.fa $start $lenght > genome$proteina\_$sca.fa");

print "S'ha fet el fastasubseq!\n";


# EXONERATE 

system ("exonerate -m p2g --showtargetgff -q $proteina\_hs.aa.fa.canviat -t genome$proteina\_$sca.fa > $proteina\_$sca.exonerate.txt");

system (" egrep -w exon $proteina\_$sca.exonerate.txt  > $proteina\_$sca.exonerate.gff.txt");

print "S'ha fet l'exonerate!\n";

# FASTASEQFROMGFF 

system ("fastaseqfromGFF.pl genome$proteina\_$sca.fa $proteina\_$sca.exonerate.gff.txt >  $proteina\_$sca.nt.fa");
print "S'ha fet el fastasqfromgff!\n";

# FASTATRANSLATE 

system ("fastatranslate -f $proteina\_$sca.nt.fa -F 1 > $proteina\_hs_$sca.predicted.fa");
print "S'ha fet el fastatranslate!\n";


system ("sed 's/\*/X/g' $proteina\_hs_$sca.predicted.fa > $proteina\_hs_$sca.predicted.canviat.fa ");

print "S'ha canviat el * per una X!\n"; 

#TCOFFEE 

system ("t_coffee $proteina\_hs.aa.fa.canviat $proteina\_hs_$sca.predicted.canviat.fa > $proteina\_$sca.final.txt");

print "Ha fet el tcoffee!\n\n\n\n\n\n";


system ("mv $proteina\_$sca.fa $scaffold");
system ("mv genome$proteina\_$sca.fa $scaffold");
system ("mv $proteina\_$sca.exonerate.txt $scaffold");
system ("mv $proteina\_$sca.exonerate.gff.txt $scaffold");
system ("mv $proteina\_$sca.nt.fa $scaffold");
system ("mv $proteina\_hs_$sca.predicted.fa $scaffold");
system ("mv $proteina\_hs_$sca.predicted.canviat.fa $scaffold");
system ("mv $proteina\_$sca.final.txt $scaffold");
system ("mv $proteina\_hs.aa.fa.aln $scaffold");
system ("mv $proteina\_hs.aa.fa.html $scaffold");

print "S'han copiat els arxius a $sca\n";



print "Vols analitzar un altre scaffold? ";
$repeat = <STDIN>;
chomp ($repeat);
 
} 								################ si no ho vols fer per mes scaffolds 

										
#acabem de moure els fitxer comuns per tots els scaffolds dins de la carpeta de la proteina 

system ("mv $proteina\_hs.aa.fa.txt $carpeta");
system ("mv $proteina\_hs.aa.fa.canviat $carpeta");
system ("mv $proteina.blast.txt $carpeta");
system ("mv scaffolds_$proteina.txt $carpeta");
system ("mv $proteina.blast.tabulat.txt $carpeta");


print "FIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIN!!!!!!\n\n\n\n";




 

