Las secuencias generadas por Illumina generalmente son pareadas (pair-end), esto es que se tienen dos secuencias para la misma molécula de ADN, una 3' -> 5' y la otra 5' -> 3'. Además el equipo genera una carpeta por muestra con ambas secuencias llamadas nombre-muestra_L001_R1.fastq.gz y nombre-muestra_L002_R2.fastq.gz. Es común también que Illumina genere una carpeta para cada una de las muestras con ambos tipos de secuencias comprimidas. Incluso, cada carpeta puede incluir otras subcarpetas con otra información y las secuencias dentro de una subcarpeta llamada Files. Es importante ver esta estructura para poder proceder adecuadamente.
Es necesario, descomprimirlas, limpiarlas, ensamblarlas y convertirlas a fasta; para cada muestra. Para realizar esto tenemos el script pair-end_cleaner.sh que hace todo esto para cada una de las muestras (carpetas o subdirectorios) en un directorio, siempre y cuando las secuencias estén directamente dentro de la carpeta de cada muestra y no en subcarpetas dentro de la carpeta, como se muestra a continuación:
├── sample1
│ ├── sample1_L001_R1_001.fastq.gz
│ └── sample1_L001_R2_001.fastq.gz
├── sample2
│ ├── sample2_L001_R1_001.fastq.gz
│ └── sample2_L001_R2_001.fastq.gz
└── sample3
├── sample3_L001_R1_001.fastq.gz
└── sample3_L001_R2_001.fastq.gz
El script puede correrse solo con pair-end_cleaner.sh
y cerrar la terminal, él seguirá corriendo; si se quiere "matar" el proceso, teclear Ctrl z Puede tardar bastante en terminar por lo que hay que tener paciencia. Si se termina antes de que haya procesado todos los subdirectorios, puede generar un error pues hace un proceso con todos los archivos al final.
Los resultados los guarda en una nueva carpeta llamada /assembled.xxx
, con todas las secuencias limpias y renombradas (muestra_01, _02, etc.) en formato fasta.
El script genera los siguientes archivos:
├── assembled.2017-07-24_14:13
├── pair-end.log Bitácora de los análisis que se realizaron a detalle.
├── pair-end.tsv Número de secuencias por muestra, útil para graficar resultados
├── pair-end_report.txt Reporte con el número de secuencias iniciales y finales para cada muestra.
├── sample1.fna
├── sample2.fna Secuencias de cada muestra limpias, ensambladas y renombradas.
└── sample3.fna
Pasos del script en orden de ejecución:
NOTA. Esta limpieza está diseñada para la región V3, V4 y V3-V4 del 16S rRNA. Será necesario hacer ajustes para otras regiones.
La plataforma Illumina suele incluir en el nombre de los archivos una extensión con el número de muestra de la corrida, de la forma _S1, _S10, etc. Obviamente esta extensión nos complica luego el análisis y es conveniente eliminarla.
Por ejemplo, a la muestra llamada 1T se le añadió _S87:
├── 1T_S87_L001_R1_001.fastq
├── 1T_S87_L001_R2_001.fastq
Tenemos que eliminar _S87 de ambos archivos, pero esto se complica cuando tenemos muchas muestras y éstas tienen una extensión diferente; al menos todas tienen un formato similar (_S...), el problema es que el número consecutivo que tienen puede ser de uno o dos dígitos, y esto lo complica.
Lo mas fácil es eliminar esta extensión en los archivos fasta ya limpios.
El script pair-end_cleaner en su última versión ya se encarga de eliminar esta extensión automáticamente.
Manualmente podemos hacerlo con el siguiente comando:
$ rename 's/_S\d*//' *.fasta
A veces tenemos los nombres de los archivos de las muestras de una manera y queremos renombrarlos según otro código, esto lo podemos hacer si tenemos una archivo con una lista que contenga el nuevo nombre en una columna (list.txt), hay que tener cuidado que los nuevos nombres estén ordenados alfabéticamente pero de acuerdo a los nombre originales. Para asegurarnos, se puede crear un archivo excel con dos columna, en la primera el nombre viejo y en la segunda el nuevo nombre, ordenarlos por la primer columna, luego solo copiar la segunda columna y pegarla en un archivo de texto (SIN formato) y llamarla list.txt.
NOTA. Tener cuidado de revisar bien el ordenamiento de los nombres ya que excel no ordena igual que linux.
Esta nueva lista tendrá el nuevo nombre pero no la extensión requerida, por lo que si lo usamos así al final tendremos los archivos con el nuevo nombre pero sin la extensión necesaria; por ejemplo, si los nombres de los archivos fasta (*.fna), les agregaremos la extensión con sed:
$ sed -i 's/$/.fna/' list.txt
Dependiendo de cómo se escribió el listado de nuevos nombres, excel por ejemplo, es posible que el cambio de renglón no sea el que linux entiende (varía entre los sistemas operativos). Por lo tanto es buena idea primero corregir el formato con dos2unix:
$ dos2unix list.txt
Antes de cambiar todos los nombres, es recomendable hacer un respaldo de los archivos por si acaso:
$ tar czvf respaldo.tar.gz *.fna
Renombramiento:
$ for file in *.fna; do read line; mv -v "${file}" "${line}"; done < list.txt
Una vez que concluye el renombramiento, tener cuidado de checar que se haya hecho correctamente.
Si se renombraron los archivos, es probable que el nombre de las secuencias no coincidan con los nombres de los archivos, por lo que será necesario renombrar cada una de las secuencias. Para esto tenemos un script que permite hacerlo simultáneamente para todos los nuevos archivo.
El script es fasta_header_renamer y está disponible en Github también.
El script ya se encuentra en Github listo para su descarga.