BioScope: validar genomas de referencia

Comentando con Leonardo Varuzza , le decía que el plugin de ma.to.bam de BioScope generaba un error y aunque nuestro mapeo a nuestra referencia era correcto y completo , nuestro formato bam no se generaba y por ende cualquier otro tipo de análisis que dependiera de este formato ya no seria viable.

Pues una sugerencia de Leonardo, gracias Leonardo :D, era verificar el genoma de referencia y más pronto que un calcetín recordé el script “reference_validation.pl” que en ocasiones pasadas lo había probado con buenos resultados.

En ocasiones puede que por las prisas no le demos un buen vistazo a nuestras referencias, y BioScope tiende a darnos sorpresas al intentar generar los ficheros bam resultantes del proceso de mapeo hacia nuestra referencia.

Para ello una buena solución pueden ser las siguientes:

1) Desarrollas tu propio script y validas el formato fasta de tu referencia.

2) Usas el script “reference_validation.pl” que viene con BioScope el cual precisamente permite validar tu genoma de referencia.

Para evitar reinventarnos la rueda usaremos la opción 2.

un ejemplo:

$reference_validation.pl -r ATH_TAIR10.dna.complete.fa -o ATH_TAIR10.dna.complete.valido.fa

Hecho lo anterior no debes tener problema al usar BioScope en tus análisis.

FAQ

¿Donde existe el script?

En tu cluster de computo , previa instalación de BioScope.

¿Cómo lo uso?

Así no mas

$reference_validation.pl -r miGenoma.fasta -o miGenomaVALIDO.fasta

el parámetro -r es para definir tu genoma de referencia
el parámetro -o es para definir el genoma de referencia valido y usable en BioScope

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.

Padre, the Perl IDE

Padre is a Perl IDE, an Integrated Development environment, or in other words a text editor that is simple to use for new Perl programmers but also supports large multi-lingual and multi-technology projects.

  • Customizable syntax highlighting of many languages
  • Syntax checking for Perl 5 and Perl 6
  • Refactoring tools for Perl 5 and Perl 6
  • Context sensitive help
  • Multi-platform: Microsoft Windows, Linux, Mac OS X
  • Special features for beginners
  • Extra features for advanced programmers
  • Free and Open Source under the “Perl license”
  • Written in Perl 5

I know that powerful bioinformatician does not like to use visual text editors, but I like Padre because is very Padre !!!