Augustus Trainer Fix

En meses pasados estuve probando Augustus y al intentar usar el script “augustus-x.y.z/scripts/autoAugTrain.pl” para entrenar Augustus, y después de instalar correctamente las dependencias (yaml, blat,scipio..etc)  y ejecutar el script, solo resultaba en el mensaje:

Program aborted. Possibly “scipio” is not installed or not in your PATH at ./autoAugTrain.pl line 771

Después de hacer varias pruebas, mi teoría fue que el problema estaba en el script autoAugTrain.pl , así que revise un poco el fuente, añadí algunas funciones y elimine el problema de raíz.

1. Al descargar y descomprimir la ultima versión de scipio, tienes un script “scipio.1.4.pl” el cual si no editas su nombre del archivo como “scipio.pl”, de antemano el script “autoAugTrain.pl” no encontrara al script “scipio.pl”, lo mismo para los scripts “yaml2gff.1.4.pl” y “yaml2log.1.4.pl”, una solución rápida es crear un enlace simbólico o edita su nombre de tal forma que queden como te muestro a continuación:

scipio.pl -> scipio.1.4.pl,

yaml2gff.pl -> yaml2gff.1.4.pl,

yaml2log.pl -> yaml2log.1.4.pl

2. De cualquier manera el paso 1 no me funciono y el resultado era el mismo error del programa.

3. Despues de revisar un ratito el código, y para no entrar en tanto detalle, el script “autoAugTrain.pl” llama a otros scripts (scipio, yaml2gff.pl, scipiogff2gff.pl, gff2gbSmallDNA.pl ) para cumplir con su función principal, el detalle está en como ejecuta la llamada.

Realmente no sería necesario que la función “system($miprograma)” sea igual a 0(cero) para decidir si el programa scipio se encuentra en el PATH del sistema, en consecuencia añadí un poquito de código para resolver el problema y ahora el programa-entrenador del predictor de Augustus le puedes decir donde se encuentra el programa/script “scipio.pl” antes de ejecutarlo y entonces puedes usar el programa scipio que tu le indiques desde linea de comandos, esto supone una ventaja puesto que puedes  usar diferentes versiones de “scipio” a tu antojo, veamos un ejemplo :

Ejemplo de como debes ejecutar el comando:

./autoAugTrain.pl  – -genome=/home/jacob/Desktop/UtriculariaGenome/Training/pcap_results_ml500_1334seqs.fasta – -trainingset=/home/jacob/Desktop/UtriculariaGenome/Training/proteinsmodels_1415seqs.fasta  – -species=sname5 - -scipio=/home/jacob/Programas/scipio14/scipio.pl

observa el nuevo parámetro “- -scipio” y con un valor apuntando a la ruta absoluta donde se encuentra el script que vas a usar, aqui podrias usar cualquier versión de “scipio” y lo puedes aplicar para todos los scripts que vienen con scipio por ejemplo: “yaml2gff.1.4.pl

La salida que genera el script le hice algunos ajustes para mostrar en cual paso se encuentra tu proceso y no perder mucho tiempo pensando en que todo va de maravilla, cuando posiblemente algo ha pasado y no es el resultado que esperabas.

=====================================================

patch by Jacob, e-mail: jacobnix at gmail period com

Running Augustus Trainer using following parameters  =====================================================

directories ==> /home/jacob/Programas/testing/autoAugTrain/training/

genome ==> /home/jacob/Desktop/UtriculariaGenome/Training/pcap_results_ml500_1334seqs.fasta

trainingset ==>  /home/jacob/Desktop/UtriculariaGenome/Training/proteinsmodels_1415seqs.fasta

scipio ==> /home/jacob/Programas/scipio14/scipio.pl

Running and generating scipio YAML file….

===========================================

Convert scipio YAML file to scipio GFF file….

===============================================

Convert scipio GFF file to GFF file (extracting training genes)  =================================================

Finally convert to GenBank Format (output ==> training.gb file) =================================================

Por supuesto que en cada paso te indico si el proceso se ejecuto correctamente y puedes usar -v  -v  -v  (verbose) para incrementar más en cada paso los detalles de que está ocurriendo, el código fuente originalmente está escrito en Perl , en consecuencia codifique en Perl también.

Está solución es temporal puesto que considero que al compilar Augustus sería mejor si incluyo la búsqueda de yaml, blat, scipio, bioperl en automático desde configure, y si configure tiene éxito y encuentra los programas o  scripts instalados en algún lugar del sistema solo seria cuestión de guardar el path hacia el script “scipio” y tener un cache de rutas absolutas por omisión, de está manera cualquier script que necesite de otros primero consultara el cache para saber donde se encuentran , si el usuario define en tiempo de ejecución sus propios scripts instalados en alguna otra parte es 100% viable !! puesto que los scripts ya les añadí de esta función.