AUTOMATITZACIÓ
Per tal d'automatitzar els programes que havíem de fer servir, hem creat uns sèrie de programes en llenguatge bash i en llenguatge perl per tal de facilitar el processament d'un gran volum de dades. Concretament hem creat 5 programes bash i 2 programes perl:
⁃ tblastnhs.bash
⁃ classificador.pl
⁃ exoneratehs.bash
⁃ exchange.pl
⁃ genewisehs.bash
⁃ tcoffee.bash
⁃ SECIS.bashb
Per tal que algun usuari desitgi fer-los servir hem escrit un tutorial bàsic:
En primer lloc, hem de crear una carpeta al directori dels programes anomenada seqaahs, a on s'han de col·locar totes les seqüències que s'utilitzaran com a query en un arxiu diferent en format fasta (ex: DI2.fa). Per altra banda, hem de crear una variable que contingui el path fins el nostre genoma ($panda = /cursos/BI/genomes/project_2013/Ailuropoda_melanoleuca/genome.fa).Per últim, cal tenir instal·lats els programes blast, exonerate, genewise i t_coffee.
1. tblastnhs.bash: és un programa que produeix alineaments locals de seqüències tipus tBLASTn de forma automàtica. Permet comparar un conjunt de seqüències proteiques dins de la carpeta seqaahs contra la base de dades de nucelòtids previament definida (el genoma d'Ailuropoda melanoleuca) al directori cursos/BI/genomes/project_2013/Ailuropoda_melanoleuca/genome.fa.
Requereix:
· Una carpeta al directori anomenada ouput.blast, on s'enviaran els fitxers de sortida dels blasts amb el nom “query.hs.txt”.
· Una segona carpeta anomenada blast.selec: és el directori on es generarà un arxiu per a cada hit trobat amb una e-value significativa (e-value < 0,001) amb el nom "query_hit.txt".
· El programa perl “classificador.pl”.
Per visualitzar i valorar el resultat obtingut es crearà un arxiu anomenat "resultats_blast.txt" on es veuran només els hits que siguin significatius.
Codi BLAST:
#!/bin/bash #$ -o tblastn.stdout #$ -e tblastn.stderr #$ -q llicen.q #$ -N blastJob #$ -cwd source ~/.bashrc ### Creem una variable que contingui el path fins el genoma del panda panda="/cursos/BI/genomes/project_2013/Ailuropoda_melanoleuca" ### Això és per a detectar quines proteines hi ha a la carpeta seqaahs for proteines_fa in ./seqaahs/*; do { basename_fa=`basename $proteines_fa` proteina=${basename_fa%.fa} proteines=$proteines" $proteina" } done ### Programa: fem dos bucles for per tal de fer les combinaciones entre proteïnes (query) i el genoma del panda for protein in $proteines ; do { patroalfa=`cat ./seqaahs/$protein.fa | egrep ^">"` patrobeta=${patroalfa#*>} echo $patrobeta > temppatro patro=`cut -f 1 -d " " temppatro` rm temppatro echo ">${protein}:" >> resultats_blastsh.txt blastall -p tblastn -i ./seqaahs/$protein.fa -d /cursos/BI/genomes/project_2013/Ailuropoda_melanoleuca/genome.fa -m9 -o output.blast/$protein.txt x=`egrep $patro ./output.blast/$protein.txt | egrep e-` if [ "$x" != "" ]; then egrep $patro output.blast/$protein.txt | egrep e- > arxiu.temp mkdir ./blast.selec/$protein 2> error.temp ./classifica.pl $protein < arxiu.temp fi echo ${protein} fet } done } done rm ./*.temp
Codi classificador:
#!/usr/bin/perl use strict; my $contador=0; # Amb aquest programa classifica els resultats del tblastn en carpetes amb el nom de cada proteïna analitzada, col·locant dintre els hits obtinguts while () { open (fitxersortida, ">./blast.selec/$ARGV[0]/hit$contador.txt"); print fitxersortida $_; close fitxersortida; $contador++; }
2. exoneratehs.bash: Aquest programa executarà l'exonerate per als hits obtinguts amb el programa "tblastnhs.bash".
Requereix la creació de les següents carpetes en el mateix directori que el programa:
· “subseqshs” on es guardaran totes les regions extretes mitjançant fastasubseq.
· “exonerate_ouput” és el directori on s'enviaran els fitxers de sortida de l'exonerate en format gff.
· "cDNA". En aquest directori es guardaran els cDNAs de les proteïnes predites per l'exonerate (en cas que hagi estat capaç de predir-ne).
· "translations". es guardarà un arxiu amb les 6 possibles traduccions per a cada cDNA obtingut.
· El programa perl “exchange.pl”.
Per saber quins exonerates han estat capaços de predir gens es crea un arxiu anomenat "resultats_exonerate.txt" on només es mostren els exonerates que han predit gens.
Codi exoneratesh.bash:
!/bin/bash rm resultats_exonerate.txt 2> error.temp #$ -o tblastn.stdout #$ -e tblastn.stderr #$ -q llicen.q #$ -N blastJob #$ -cwd source ~/.bashrc ### Això és per poder triar si volem exonerate exhaustiu o no if [ "$1" = "-exhaustive" ]; then exhaustive="--exhaustive yes" fi ## Per cada hit de cada proteïna dintre de la carpeta blast.selec: for proteins in blast.selec/* ; do { for hit in $proteins/*; do { proteins=`basename $proteins` hit=`basename $hit` hit=${hit%.txt} echo ${proteins}_${hit}: ### Això és per a detectar l'identificador que apareix al fitxer fasta a la primera línea patro=`cut -f 2 blast.selec/$proteins/$hit.txt` ### Per emagatzemar la regió on apareix el hit fastafetch $panda panda.index $patro > $patro.fa ### Aquí definim l'inici i el final del hit en la regió inici=`cat ./blast.selec/$proteins/$hit.txt | cut -f 9` final=`cat ./blast.selec/$proteins/$hit.txt | cut -f 10` if [ "$inici" -gt "$final" ]; then inici="$final" fi start=$(( $inici - 10000 )) length="30000" ### Amb al comanda fastasubseq extraiem una regió del genoma del panda fastasubseq $patro.fa $start $length > ./subseqhs/${proteins}.${hit} 2> error_msg.temp x ### Programa exonerate per a la predicció de gens echo " Iniciant exonerate:" ./exchange.pl < ./seqaahs/$proteins.fa > ./seqaahsx/$proteins.fa exonerate -m p2g --showtargetgff -q ./seqaahsx/$proteins.fa -t ./subseqhs/${proteins}.${hit} $exhaustive > ./exonerate_output.hs/${proteins}_${hit}.exonerate 2> error_de_substitucio.temp gene=`grep gene ./exonerate_output.hs/${proteins}_${hit}.exonerate` if [ "$gene" != "" ]; then echo ${proteins}_${hit} : >> exonerate_output.hs/resultats_exonerate.txt fi echo " Exonerate acabat" ### Per extreure el cDNA i traduir-lo a proteïnes fem servir el programa fastaseqfromGFF.pl i la comanda fastatranslate echo " Preparant i executant per a t_coffee:" exon=`grep -w exon ./exonerate_output.hs/${proteins}_${hit}.exonerate` grep -w exon ./exonerate_output.hs/${proteins}_${hit}.exonerate > exonerate_output.hs/${proteins}.${hit}.gff if [ "$exon" != "" ]; then fastaseqfromGFF.pl ./subseqhs/${proteins}.${hit} exonerate_output.hs/${proteins}.${hit}.gff > ./cDNA.hs/${proteins}_${hit}.fa fastatranslate ./cDNA.hs/cDNA_${proteins}_${hit}.fa > ./translations.hs/aa_${proteins}_${hit}.fa fi echo ${proteins}_${hit} fet } done } done rm *.temp
Codi exchange.pl:
#!/usr/bin/perl use strict; my @v; my $string; my $counter = 0; # Amb aquest programa canviem les U de les proteïnes.fa per X per tal de porder realitzar el prorgama exoenrate while () { if ($counter == 0) { print $_; } if ($counter > 0) { @v=split(//,$_); while (<@v>) { if ($_ eq "U") { $string.= "X"; } else { $string.=$_; } } } $counter++; $string.="\n"; } print $string;
3. genewisehs.bash: Aquest programa executarà el genewise per als hits obtinguts amb el programa "tblastn.bash".
Requereix:
· Una carpeta al mateix directori anomenada “genewise_ouput” on s'enviïn els arxius de sortida del genewise.
Codi genewisehs.bash:
#!/bin/bash # Programa genewise per a la predicció de gens for proteins in blast.selec/* ; do { for hit in $proteins/*; do { proteins=`basename $proteins` hit=`basename $hit` hit=${hit%.txt} genewise -pep -pretty -cdna -gff -both ./seqaahsx/$proteins.fa ./subseqhs/${proteins}.${hit} > ./genewise_output.hs/${proteins}_${hit}.txt s echo ${proteins}_${hit} fet } done } done
4. tcoffee.bash: Aquest programa executarà un alineament amb T-Coffee amb els resultats de l'exonerate i el genewise amb la seva respectiva query.
Requereix la creació de les següents carpetes en el mateix directori que el programa:
· “lectures” on es trobin els marcs de lectura 1 de les proteïnes predites.
· “tcoffee.aln” i “tcoffee.html” on s'enviaran els fitxers de sortida .aln i .html respectivament.
1.
Per saber quins tcoffee s'han dut a terme es crea un arxiu anomenat “tcoffee.resultats” on nomes és mostren els noms de les querys amb els que s'ha fet el tcoffee.
Codi tcoffee.bash:
!/bin/bash # Programa t_coffee per l'alineament de proteïnes for file in lectures/* ; do { name=`basename $file` name=${name%.fa} protein=${name%.hit*} echo $name echo $protein t_coffee seqaamm/$protein.mm.fa $file > ./tcoffee.resultats/tcoffee.$name.txt 2> error.temp mv $protein.mm.aln ./tcoffee.aln/tcoffee.$name.aln mv $protein.mm.html ./tcoffee.html/tcoffee.$name.html echo $file done } done
5. SECIS.sh: Aquest programa cercarà les possibles estructures SECIS que es troben en els subseqs de les diferents proteïnes.
Requereix:
· Creació d'una carpeta en el mateix directori anomenada “secis_ouput” on s'enviaran els fitxers de sortida del programa.
Codi SECIS.sh:
#!/bin/bash #Programa per automatizar la busca d'elemets SECIS amb el programa SECIsearch; echo "A la recerca d'elements SECIS"; export PATH=/cursos/BI/bin:$PATH; for proteins in subseq/* ; do { for hit in $proteins/*; do { proteins=`basename $proteins` hit=`basename $hit` hit=${hit%.} SECISearch.pl ./subseq/${proteins}/${hit} > ./secis_output/secis_${hit}.txt echo ${hit}.secis fet } done } done