#!/bin/bash

#Fem els exports necessaris per executar l'exonerate, el genewise, el fastaseqfromGFF.pl i el t_coffee.

export PATH=/cursos/BI/bin/exonerate/i386/bin:$PATH
export PATH=/cursos/BI/bin:$PATH 
export WISECONFIGDIR=/cursos/BI/soft/wise-2.2.0/wisecfg
chmod u+x canviaSTOP.pl trialamesllarga.ppl

#Generem les carpetes necessàries per emmagatzemar els arxius generats.

mkdir exonerate exonerate_gff genewise genewise_resum cDNA fastatranslate fastatranslate_F1 t_coffee_exonerate_querys  genewise_resum_seleccionat t_coffee_genewise_querys t_coffee_genewise_exonerate fastarevcomp SECISearch SECISearch_rev


#Definim les variables necessaries per dur a terme l'exonerate i el genewise: la localització dels genomes i les querys, amb els respectius noms.

for query_canviada_name in `egrep OK querys_canviades_list.tab | cut -f 1`;  do {
	query_canviada_path=`grep $query_canviada_name querys_canviades_list.tab | cut -f 2` ; 

	for genomes_subseq_name in `egrep OK genomes_subseq_list.tab | cut -f 1`; do {
		genomes_subseq_path=`grep $genomes_subseq_name genomes_subseq_list.tab | cut -f 2`; 

#Correm l'exonerate complet.

		exonerate -m p2g -q $query_canviada_path -t $genomes_subseq_path > exonerate/${query_canviada_name}.CONTRA.${genomes_subseq_name}.exonerate

#Correm l'exonerate resumit, obtenim arxius .gff
	
		exonerate -m p2g --showtargetgff -q $query_canviada_path -t $genomes_subseq_path | egrep -w exon > exonerate_gff/${query_canviada_name}.CONTRA.${genomes_subseq_name}.gff

#Correm el genewise complet.

		genewise -pep -pretty -cdna -gff -both $query_canviada_path $genomes_subseq_path > genewise/${query_canviada_name}.CONTRA.${genomes_subseq_name}.genewise


#Correm el genewise resumit, obtenim arxius que contene les proteines. 

		genewise -pep -both $query_canviada_path $genomes_subseq_path > genewise_resum/${query_canviada_name}.CONTRA.${genomes_subseq_name}.genewise 

#Fem una llista dels arxius .gff de l'exonerate per facilitar-ne el seu accés. 

		echo "${query_canviada_name}.${genomes_subseq_name}""	""exonerate_gff/${query_canviada_name}.CONTRA.${genomes_subseq_name}.gff""	""${genomes_subseq_name}""	""${genomes_subseq_path}""	""OK" >> genomes_exonerate_subseq.tab

		} done
} done

#Definim la localització i nom dels arixus exonerate .gff i dels genomes subseq, en relació amb aquests, per tal de poder córrer el fastaseqfromGFF.pl

for exonerate_gff_name in `egrep OK genomes_exonerate_subseq.tab | cut -f 1`; do {
	for genomes_subseq_path in `egrep $exonerate_gff_name genomes_exonerate_subseq.tab | cut -f 4`; do {
		for exonerate_gff_path in `egrep $exonerate_gff_name genomes_exonerate_subseq.tab | cut -f 2`; do {

#Correm el fastaseqfromGFF.pl per obtenir el cDNA. 

		fastaseqfromGFF.pl $genomes_subseq_path $exonerate_gff_path > cDNA/${exonerate_gff_name}.cdna

#Fem una llista dels arxius de cDNA obtinguts per tal de facilitar-ne la seva manipulació 

		echo "${exonerate_gff_name}""	""cDNA/${exonerate_gff_name}.cdna""	""OK" >> cDNA_list.tab

		} done
	} done
} done

#Definim la ruta d'accés i nom dels arxius de cDNA per tal d'executar el fastatranslate. 	

for cDNA_path in `egrep OK cDNA_list.tab | cut -f 2`; do {
	for cDNA_name in `grep $cDNA_path cDNA_list.tab | cut -f 1`; do {

#Correm el fastatranslate, obtenim el cDNA. 

	fastatranslate $cDNA_path > fastatranslate/${cDNA_name}.prot
	fastatranslate $cDNA_path -F 1 > fastatranslate_F1/${cDNA_name}.prot

#Fem una llista dels arxius de les proteines obtinguts per tal de facilitar-ne la seva manipulació.
	
	echo "${cDNA_name}""	""fastatranslate_F1/${cDNA_name}.prot""	""OK" >> Prot_list.tab

	} done
} done	

#Definim la ruta d'accés i el nom dels arxius de les proteines per executar el canviaSTOP.pl

for prot_path in `egrep OK Prot_list.tab | cut -f 2`; do {
	for prot_name in `egrep $prot_path Prot_list.tab | cut -f 1`; do {

#Canviem els STOPs (*) presents als arxius de les proteines per X, perquè aquests siguin alineats al t_coffee amb el canviaSTOP.pl

	./canviaSTOP.pl < $prot_path > prots_canviades/${prot_name}.fa 

	} done
} done

#Definim les variables necessaries per dur a terme el t_coffee: la localització dels genomes i les querys, amb els respectius noms.

for genomes_subseq_name in `egrep OK genomes_subseq_list.tab | cut -f 1`; do {
		genomes_subseq_path=`grep $genomes_subseq_name genomes_subseq_list.tab | cut -f 2`;

	for query_canviada_name in `egrep OK querys_canviades_list.tab | cut -f 1` ;  do {
		query_canviada_path=`grep $query_canviada_name querys_canviades_list.tab | cut -f 2` ; 

#Correm el t_coffee que compara les querys canviades amb les proteines canviades, obtingudes a partir de l'exonerate.

		t_coffee prots_canviades/${query_canviada_name}.${genomes_subseq_name}.prot TR_queryscanviades/${query_canviada_name}.fa -outfile tcoffee_exonerate_querys/${query_canviada_name}.${genomes_subseq_name}.CONTRA.${query_canviada_name}.tcoffee

#Definim la variable prot que ens obrira els arxius proteïna vàlids de genwise_resum. Sobre aquests correrem el programa trialamesllarga.pl que permetrà quedar-nos amb la cadena vàlida per dur a terme el t_coffee, la més llarga.  

		prot=`cat genewise_resum/${query_canviada_name}.CONTRA.${genomes_subseq_name}.prot`; 
		
		if [ "$prot" != "" ]; then
		
		./trialamesllarga < genewise_resum/${query_canviada_name}.CONTRA.${genomes_subseq_name}.prot > genewise_resum_seleccionat/${query_canviada_name}.CONTRA.${genomes_subseq_name}.prot
			
		fi

#Correm el t_coffee que compara les querys canviades amb les proteines genewise seleccionades.

		t_coffee genewise_resum_seleccionat/${query_canviada_name}.CONTRA.${genomes_subseq_name}.prot TR_queryscanviades/${query_canviada_name}.fa -outfile t_coffee/${query_canviada_name}.${genomes_subseq_name}.CONTRA.${query_canviada_name}.tcoffee

#Correm el t_coffee que compara les querys canviades amb les proteines genewise seleccionades amb les proteines canviades de l'exonerate.

		t_coffee genewise_resum_seleccionat/${query_canviada_name}.CONTRA.${genomes_subseq_name}.prot prots_canviades/${query_canviada_name}.${genomes_subseq_name}.prot -outfile t_coffee_genewise_exonerate/${query_canviada_name}.${genomes_subseq_name}.CONTRA.${query_canviada_name}.${genomes_subseq_name}.tcoffee


	} done
} done


