Informática Aplicada a la Investigación Rotating Header Image

marzo, 2012:

ABySS

General Information

1.3.2 version of ABySS (Assembly By Short Sequences). ABySS is a de novo, parallel, paired-end sequence assembler that is designed for short reads. ABySS can be executed in parallel.

See also the installed velvet and comparing both we have published article.

How to use

The executables can be found in /software/abyss/bin. To run abyss in a script type in it:

/software/abyss/bin/abyss-pe [abyss-pe options]

Performance

See also the installed velvet and comparing both we have published article.

Parallelization

Some benchmarks has been performed with ABySS. They have been performed using file from an Illumina HiSeq2000 NGS with 100 bp per sequence. In the table 1 we can see an example about how ABySS scales as a function of the number of cores. As we can see ABySS scales very up to 8 cores. The results is valid unless for more than 10e6 sequences.

Table 1. Execution time of abyss-pe in seconds as a function the number of cores
cores 2 4 8 12 24
Time (s) 47798 27852 16874 14591 18633
Aceleration 1 1.7 2.8 3.3 2.6
Performance(%) 100 86 71 55 21

Execution time

We have analized as well the execution time as a function of the size of the data. In the table 2 we  observe how from 1 million to 10 millions of sequences the execution time increases by 10 as well. From 10 to 100 millions of sequences the time increases a little more, between 10 t0 20. Therefore, the behavior is more or less lineal.

Table 2. Execution time in seconds of abyss-pe executed in 2, 4 y 8 cores as a function of the number of processed sequences.
sequences 10e6 10e7 10e8
Time in 2 cores (s) 247 2620 47798
Time in 4 cores (s) 134 1437 27852
Time in 8 cores (s) 103 923 16874

RAM memory

In these kind of programs more important than the execution time, which is reasonable, is the RAM memory usage, which can limit the calculation type. In the table 3 we observe how the RAM increases as a function of the number of sequences. We also show the logarithms of the measured values which has been used for a lineal regression. The jobs has been performed in 12 cores.

Tabl3 3. RAM memory used by abyss-pe as a function of the number of processed sequences. The logarithms of the measured values are also shown.
sequences 10e6 5*10e6 10e7 5*10e7 10e8
RAM (GB) 4.0 7.6 11 29 44
log(sequences) 6 6.7 7 7.7 8
log(RAM) 0.60 0.88 1.03 1.46 1.65

From the values of the table we obtain a fitting of the RAM in GB as a function of the number of sequences (s) to the equation

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

o equivalently

RAM=(s^0.53)/447

Conclusion

The memory usage is smaller than in other assemblers like Velvet, see as well the report Velvet performance in the machines of the Computing Service of the UPV/EHU and comparing both we have published article. In addition, the parallelization with MPI of ABySS allows to aggregate the RAM memory of several nodes to perform larger calculations.

More information

ABySS web page.
Velvet assembler.
Velvet performance in the machines of the Computing Service of the UPV/EHU report.

Velvet and ABySS performance in the machines of the Computing Service of the UPV/EHU, post in the hpc blog.

abyss-pe

ABySS

Informazio orokorra

1.3.2 ABySS bertsioa (Assembly By Short Sequences). ABySS is a de novo, parallel, paired-end sequence assembler that is designed for short reads. ABySS paraleloan exekutatu daiteke.

Begiratu ere instalatuta dagoen velvet eta biak konparatzen publikatu dugun artikulua.

Nola erabili

Exekutableak /software/abyss/bin karpetan daude. Kolako skriptetean exekutatzeko gehitu adibidez:

/software/abyss/bin/abyss-pe [abyss-pe opzioak]

Errendimendua

Begiratu ere instalatuta dagoen velvet eta biak konparatzen publikatu dugun artikulua.

Paralelizazioa

Abysseko benchmark batzuk egin dira. Benchmarkak HeSeq2000 NGS Illumina batek emandako datuegin egin dira 100 bp sekuentzia bakoitzeko. 1. taulan ikus dezakegu nola ABySSek eskalatzen duen kore kopuruaren arabera, ikus daitekeen bezala ondo paralelizatzen du 8 kore arte.

Taula 1. abyss-pe programaren exekuxio denbora segundutan kore kopuruaren arabera.
Koreak 2 4 8 12 24
Denbora (s) 47798 27852 16874 14591 18633
Azelerazioa 1 1.7 2.8 3.3 2.6
Errendimendua (%) 100 86 71 55 21

Exekuzio denbora

Exekuxio denbora era neurtu dugu datu tamainaren funtzioan. 2. taulan erakusten da nola milioi bat sekuentziatik 10 milioietara pasatzean denbora ere 10 aldiz handiagoa dela. 10 milioitin 100 milioi sekuentzietara pasatzean denbora 10 eta 20 artean handitzen da. Beraz, exekuzio denboraren konportamendua gutxi gorabehera lineala da.

Taula 2. abyss-pe programaren exekuzio denbora segundutan sekuentzia kopuruaren arabera en 2, 4 y 8 koreentzako.
Sekuentziak 10e6 10e7 10e8
Denbora 2 koretan (s) 247 2620 47798
Denbora 4 koretan (s) 134 1437 27852
Denbora 8 koretan (s) 103 923 1687

RAM memoria

Programa hauetan exekuzio denbora baino garrantzitzua RAM memoria da, oso handia izan baitaiteke. 3. taulan ikusten dugu nola RAM memoria handitzen den sekuentzia kopuruaren funtzioan. Neurtutako balioen logaritmoak ere erakusten ditugu hauek erabili baititugu erregresio lineala egiteko. Kalkuluan 12 koretan egin dira.

Taula 3. abyss-pe programak erabilitako RAM memoria sekuentzia kopuruaren funtzioan. Balioen logaritmoak ere erakusten dira.
Sekuentziak 10e6 5*10e6 10e7 5*10e7 10e8
RAM (GB) 4.0 7.6 11 29 44
log(sekuentziak) 6 6.7 7 7.7 8
log(RAM) 0.60 0.88 1.03 1.46 1.65

Neurtutako balioak ondoko ekuaziora doitu ditugu non (s) sekuentzia kopurua da eta memoria GBetan ematen da:

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

edo beste era batean

RAM=(s^0.53)/447

Ondorioak

RAM erabilera txikiagoa da beste ensanbladorekin alderatuta.  Velvet adibidez (ikus ere Velvet performance in the machines of the Computing Service of the UPV/EHU txostena eta biak konparatzen publikatu dugun artikulua. Gainera, ABySS MPI erabiltzen du paralelizazioa lortzeko eta honi esker hainbat nodoen RAM memoria gehitu dezakegu kalkulu handiagoak egin ahal izateko.

Informazio gehiago

ABySSeko web orrialdea.
Velvet ensambladorea.
hpc blogean sarrera: Velvet performance in the machines of the Computing Service of the UPV/EHU.
Velvet performance in the machines of the Computing Service of the UPV/EHU txostena.

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 velvet 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 velvet 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 Velvet, 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 Velvet.
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

General information

0.2.2 Version. clean_reads cleans NGS (Sanger, 454, Illumina and solid) reads. It can trim:

  • bad quality regions
  • adaptors
  • vectors
  • regular expresssions

It also filters out the reads that do not meet a minimum quality criteria based on the sequence length and the mean quality. It can run in parallel.

Ho to use

To submit clean_reads jobs to the queue system execute the command

send_clean_reads

It will ask few questions to build the script and submit it to the queue.

Performance

clean_reads can be executed in parallel and scales well up to 8 cores. For 12 cores the performance is very poor. In the table 1 we show the results of the benchmark. They have been executed in a 12 cores node with E5645 Xeon processors.

Execution time in seconds as a function of the number of cores
cores 1 4 8 12
Time (s) 1600 422 246 238
Speedup 1 3.8 6.5 6.7
Performance (%) 100 95 81 56

The used command has been

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

More information

clean_reads web page.

Clean_reads

Informazio orokorra

0.2.2 bertsioa. clean_reads programak Sanger, 454, Illumina eta Solid NGS (next generation sequencing) datuak garbitzen ditu. Kendu ditzake

  • Kalitate txarreko aldeak
  • Adaptadoreak
  • Vektoreak
  • Espresio regularrak

Kalitate eratainan eta luzeeran oinarritutako kalitate txarreko irakurketak eliminatu ditzazke ere. Paraleloan exekutatu daiteke.

Nola erabili

Kola sistemara lanak bidaltzeko  erabili dezakezue

send_clean_reads

komandoa zinek galdera batzuen bitartez skripta prestatu eta bidaliko du.

Errendimendua

clean_reads programak paraleloan exekutatu daiteke eta ondo eskalatzen du 8 kore arte. 12 koreentzako errendimendua asko jaisten da. Taulan ikus daite benchmarken emaitzak. Xeon E5645 procesadoreak erabiliz 12 koretako nodoan.

Exekuzio denbora segundutan kore kopuruaren arabera
koreak 1 4 8 12
Denbora (s) 1600 422 246 238
Azelerazioa 1 3.8 6.5 6.7
Errendimendua (%) 100 95 81 56

Ondorengo komandoa exekutatu da

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

Informazio gehiago

clean_reads web orrialdea.

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.