Esta tarde me ha dado por curiosear cómo se utilizan ciertos programas para ensamblar lecturas de secuenciación masiva, concretamente obtenidas con Illumina y que se encuentran en bases de datos. Concretamente quería correr SOAPdenovo. No por nada, solo por curiosidad, pues la ejecución de software para este fin requiere de máquinas con muchos recursos. El caso es que como formato de entrada me pedía FASTQ y sin embargo me los descargué en SRA.
Es muy sencillo, si sabes cómo, realizar esta operación. Basta con ir a la página descargas de SRA Toolkit y obtener la versión para Ubuntu. Tras descomprimir, abrirmos un terminal en la carpeta y ejecutamos fastq-dump de la siguiente manera (no es necesario instalar nada):
$ ./fastq-dump [--gzip] -A SRRxxxxxx -M 0 --split-files /ruta/fichero/SRRxxxxxx.sra
Así, después de un rato de procesamiento, obtendremos un fichero FASTQ.
Alternativametne, si queremos cambiar las etiquetas de las lecturas, podemos utilizar un comando como el siguiente, aunque es más lento:
$ ./fastq-dump --defline-qual '+' --defline-seq '@SRRxxxxxxx_$sn[_$rn]/$ri' --split-files SRRxxxxxxx.sra
Este es un fichero que puedes abrir un cualquier editor de textos (por ejemplo gEdit), pero si quieres pasarlo a formato FASTA, puedes pedir que te ayude BioPython. Si no lo tienes instalado:
$ sudo aptitude install python-biopython
Ejecutamos el interprete python (o ipython mejor) y ejecutamos el comando para convertir el formato del fichero:
$ python >>> from Bio import SeqIO >>> SeqIO.convert("example.fastq", "fastq", "example.fasta", "fasta")
Con esto debería bastar. Hala, ya tenemos nuestros ficheros con gigas de información para ser analizados. Pero hoy ya estoy muy cansado…
————————————————————————————————-
ACTUALIZACIÓN 19/05/2011
Script Python para automatizar conversión FASTQ a FASTA a partir de una lista de ficheros.
from Bio import SeqIO seq = open("files.txt", "r").readlines() for line in seq: a = list(line) b = a[:-1] c = "".join(b) print "Empezando %s" % c SeqIO.convert(c, "fastq", c+".fas", "fasta") print "Terminado %s, a por el siguiente!!!" % c print "TODO FINALIZADO"