Archivo por meses: marzo 2012

ABySS

Información general

Versión 1.3.2 ABySS (Assembly By Short Sequences). ABySS is a de novo, parallel, paired-end sequence assembler that is designed for short reads. ABySS puede ejecutarse en paralelo.

Leer también sobre [intlink id=»6055″ type=»post»]velvet[/intlink] y el artículo que hemos publicado comparando ambos.

Cómo usar

Los ejecutables se pueden encontrar en /software/abyss/bin. Así, para ejecutar añadir en el scritp para el sistema de colas por ejemplo:

/software/abyss/bin/abyss-pe [opciones de abyss-pe]

Rendimiento

Leer también sobre [intlink id=»6055″ type=»post»]velvet[/intlink] y el artículo que hemos publicado comparando ambos.

Paralelización

Se han realizado unos benchmark sobre Abyss. Los benchmark se han realizado con ficheros obtenidos por un NGS Illumina HiSeq2000 con 100 bp por lectura. En la tabla 1 podemos ver un ejemplo de como escala ABySS con el número de cores. Como vemos ABySS escala bien hasta los 8 cores. El resultado parece ser independiente del número de secuencias procesadas una vez estas son muchas (>10e6).

Tabla 1. Tiempo de ejecución en segundos de abyss-pe en función del número de cores
cores 2 4 8 12 24
Tiempo (s) 47798 27852 16874 14591 18633
Aceleración 1 1.7 2.8 3.3 2.6
Rendimiento (%) 100 86 71 55 21

Tiempo de ejecución

También hemos analizado el tiempo de ejecución en función del tamaño de los datos de entrada. Observamos en la tabla 2 como el pasar de 1 millón a 10 millones de secuencias el tiempo se multiplica también por 10. De 10 millones  a 100 el tiempo aumenta entre 10 y 20. Por lo tanto, el comportamiento no es totalmente lineal, pero se aproxima.

Tabla 2. Tiempo de ejecución en segundos de abyss-pe ejecutado en 2, 4 y 8 cores en función del número secuencias procesadas
secuencias 10e6 10e7 10e8
Tiempo en 2 cores (s) 247 2620 47798
Tiempo en 4 cores (s) 134 1437 27852
Tiempo en 8 cores (s) 103 923 16874

Memoria RAM

En estos programas más importante que el tiempo de ejecución, que se mantiene en unos límites relativamente bajos, es el uso de la memoria RAM, que puede ser limitante e impedir la realización del cálculo. En la tabla  3 observamos como crece la memoria RAM al aumentar el número de secuencias. También mostramos en la tabla los logaritmos de los valores medidos que se han usado para realizar un ajuste lineal. Los cálculos se han realizado usando 12 cores.

Tabla 3. Memoria RAM usada por abyss-pe en función del número secuencias procesadas. También se muestran los logaritmos de los valores medidos
secuencias 10e6 5*10e6 10e7 5*10e7 10e8
RAM (GB) 4.0 7.6 11 29 44
log(secuencias) 6 6.7 7 7.7 8
log(RAM) 0.60 0.88 1.03 1.46 1.65

De los valores de la tabla obtenemos un buen ajuste de la evolución de la memoria RAM a la siguiente ecuación  que nos da la memoria RAM en GB en función del número de secuencias (s)

log(RAM)=0.53*log(s)-2.65

o lo que es lo mismo

RAM=(s^0.53)/447

Conclusión

El uso de la memoria RAM es menor que con otros ensambladores como [intlink id=»6055″ type=»post»]Velvet[/intlink], ver también el informe Velvet performance in the machines of the Computing Service of the UPV/EHU y el artículo que hemos publicado. Además, la paralelización con MPI permite agregar la memoria de varios nodos para poder realizar cálculos mayores.

Más información

Página web de ABySS.
Ensamblador [intlink id=»6055″ type=»post»]Velvet[/intlink].
Informe Velvet performance in the machines of the Computing Service of the UPV/EHU.
Entrada en el blog hpc: Velvet performance in the machines of the Computing Service of the UPV/EHU.

clean_reads

Información general

Version 0.2.2. clean_reads limpia reads de NGS (Next Generation Sequencing) – Sanger, 454, Illumina y solid. Puede eliminar

  • Regiones de mala calidad.
  • Adaptadores
  • Vectores
  • Expresiones regulares

También filtra reads que no llegan a un mínimo de calidad basándose en la longitud y cualidad media. Se puede ejecutar en paralelo.

Cómo usar

Para enviar trabajos de clean_reads al sistema de colas recomendamos usar el comando

send_clean_reads

que nos hará las preguntas necesarias para preparar y enviar el cálculo.

Rendimiento

clean_reads se puede ejecutar en paralelo y escala bien hasta los 8 cores. A 12 cores el rendimiento cae en picado. En la tabla 1 se pueden ver los resultados del benchmark, Éste se ha ejecutado en un nodo con 12 cores y procesadores Xeon E5645.

Tiempo de ejecución en segundos de clean_reads en función del número de cores
cores 1 4 8 12
Tiempo (s) 1600 422 246 238
Aceleración 1 3.8 6.5 6.7
Rendimiento (%) 100 95 81 56

Se ha ejecutado el comando

clean_reads -i in.fastq -o out.fastq -p illumina -f fastq -g fastq -a a.fna -d UniVec -n 20 --qual_threshold=20 --only_3_end False -m 60 -t 12

Más información

Página web de clean_reads.