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).
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.
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.
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.