1. Obtención de genomas

Es posible bajar varias secuencias de genomas (WGS) de GenBank automáticamente mediante comandos de terminal de una forma sencilla, mas o menos.

También se pueden bajar individualmente por ftp en la siguiente dirección: http://ftp.ncbi.nlm.nih.gov/genomes/genbank/bacteria/

Pasos a seguir:

  1. Obtener una lista de códigos de acceso para los genomas de interés, normalmente son algo así como AAOJ01.
  2. Crear un archivo que incluya estos accesos y la ruta html de donde se descargarán.
  3. Usar el comando wget para bajarlos a la computadora.
  4. Limpieza

1. Accesos

GenBank tiene un archivo llamado prokaryotes.txt con todos los genomas secuenciados de procariontes en la siguiente dirección:

http://ftp.ncbi.nlm.nih.gov/genomes/GENOME_REPORTS/

Podemos obtener este archivo de mas de 12 MB de forma sencilla con wget:

$ wget http://ftp.ncbi.nlm.nih.gov/genomes/GENOME_REPORTS/prokaryotes.txt

Este archivo contiene toda la información de los genomas en formato tabular, pero como contiene miles de entradas, es prácticamente imposible abrirlo con Excel o Word, por lo que tenemos que extraer la información que nos interesa con la terminal. Supongamos que queremos obtener todos los genomas que contengan Photobacterium, entonces usaremos el comando grep:

$ grep -w Photobacterium prokaryotes.txt > Photobacterium.txt

Con este comando estamos pidiéndole a grep que busque en todas las lineas donde aparezca la palabra Photobacterium completa (-w) en el archivo prokaryotes.txt y que lo salve (>) a un nuevo archivo llamado Photobaterium.txt. Ahora tenemos un archivo mas pequeño solo con las información que necesitamos. De este archivo debemos sacar el código de acceso para cada genoma que esta en la columna 13 para lo cual usamos cut:

$ cut -f 13 Photobacterium.txt | sort | sed -n '/-/!p' > wgs_Photobacterium.txt

Estamos cortando solo la columna 13 del archivo Photobacterium.txt y ese resultado lo ordenamos alfabéticamente (sort), como es posible que no todos los genomas tengan código de acceso de WGS y solo aparezca un guión (-), se lo quitaremos con sed; una vez hecho esto, lo salvamos a un nuevo archivo llamado wgs_Photobacterium.txt. Puedes usar el nombre de archivo que mas te convenga.

2. Ruta

Tenemos un archivo con solo códigos de acceso de WGS por lo que necesitamos añadirle la ruta al principio de código y el tipo de archivo (fasta) a bajar al final para que quede de la siguiente forma para el WGS AAOJ01:

http://www.ncbi.nlm.nih.gov/Traces/wgs/?download=AAOJ01.1.fsa_nt.gz

Esto lo podemos hacer con Excel, pero más fácil y rápido con comandos.

$ awk '$0="http://www.ncbi.nlm.nih.gov/Traces/wgs/?download="$0' wgs_Photobacterium.txt | awk '{print $0"
.1.fsa_nt.gz"}' > wget_Photobacterium.txt

Con awk le ponemos al principio de cada código la ruta y al final el tipo de archivo y lo salvamos como un nuevo archivo llamado ahora wget_Photobaterium.txt; ahora solo nos resta bajar los genomas en formato fasta (fsa). Si queremos los genomas en formato GenBank, en el comando anterior cambiamos .1.fsa_nt.gz por .1.gbff_nt.gz

3. Descarga

Quizá sea conveniente antes de iniciar la descarga saber cuantos genomas vamos a descargar, esto lo podemos hacer con word count (wc):

$ wc -l wget_Photobacterium.txt

Nos dice cuantos renglones (genomas) tiene el archivo wget_Photobacterium.txt

Con el archivo anterior ahora podemos bajar los genomas con wget:

$ wget -i wget_Photobacterium.txt

Después de un rato tendremos los genomas pero a los archivos descargados.

4. Limpieza

Una vez descargados podemos limpiar los nombre de los archivos y adecuarlos para un mejor seguimiento y análisis.

Los archivos descargados tendrán un nombre del estilo: "index.html?download=AAOJ01.1.fsa_nt.gz", lo cual no es muy informativo. Podemos cambiar el nombre de todos por uno que tenga al menos la especie y el código de acceso. Para esto tenemos que hacer una lista que tenga estos datos en el orden en el que están ordenados los archivos, que coincida el orden en la lista con los archivos.

La lista la podemos extraer del archivo original Photobacterium.txt (ver paso 1 arriba).

$cut -f 1,13 Photobacterium.txt > list.txt

Del archivo Photobacterium.txt estamos extrayendo la columna 1 con los nombres de la especie y la columna 13 con los códigos de acceso, pero no están ordenados alfabéticamente por código de acceso, como lo están los archivos descargados; para ordenarlos así usaremos el comando sort:

$ sort -t $'\t' -k 2,2 list.txt > list.tmp

Tenemos ahora un nuevo archivo temporal (list.tmp) con la lista ordenada por códigos de acceso, pero con varios espacios que debemos quitar y sustituir por un punto, además de agregarle la extensión adecuada (.fasta.gz); para esto usaremos sed:

$ sed "s/ /./g" list.tmp | sed "s/\t/./g" | sed "s/$/.fasta.gz/g" > list.txt

Ahora si tenemos una lista con la cual renombraremos los archivos descargados con un pequeño script. Es necesario mover esta lista (list.txt) al directorio donde están los archivos (genomas) descargados y ahí ejecutar el script:

$ for file in *.gz; do read line; mv -v "${file}" "${line}"; done < list.txt

Por último es conveniente descomprimir los archivos:

$ gunzip *.gz

Este comando descomprime todos los archivos terminados en .gz en el directorio.

SCRIPT

Todo esto lo podemos claro hacer con un script en bash: assembly_download.sh que empezará desde bajar el archivo prokaryotes.txt, si es que no existe ya, pedirnos una palabra a buscar en el archivo, que puede ser el género o las especie o algún otro dato del WGS, y luego el se encarga de todo lo demás. Este script solo busca en la base de datos Assembly de NCBI y genomas de referencia (refseq).