Algorithms for Molecular Biology (Dec 2017)

Generalized enhanced suffix array construction in external memory

  • Felipe A. Louza,
  • Guilherme P. Telles,
  • Steve Hoffmann,
  • Cristina D. A. Ciferri

DOI
https://doi.org/10.1186/s13015-017-0117-9
Journal volume & issue
Vol. 12, no. 1
pp. 1 – 16

Abstract

Read online

Abstract Background Suffix arrays, augmented by additional data structures, allow solving efficiently many string processing problems. The external memory construction of the generalized suffix array for a string collection is a fundamental task when the size of the input collection or the data structure exceeds the available internal memory. Results In this article we present and analyze $$\mathsf {eGSA}$$ eGSA [introduced in CPM (External memory generalized suffix and $$\mathsf {LCP}$$ LCP arrays construction. In: Proceedings of CPM. pp 201–10, 2013)], the first external memory algorithm to construct generalized suffix arrays augmented with the longest common prefix array for a string collection. Our algorithm relies on a combination of buffers, induced sorting and a heap to avoid direct string comparisons. We performed experiments that covered different aspects of our algorithm, including running time, efficiency, external memory access, internal phases and the influence of different optimization strategies. On real datasets of size up to 24 GB and using 2 GB of internal memory, $$\mathsf {eGSA}$$ eGSA showed a competitive performance when compared to $$\mathsf {eSAIS}$$ eSAIS and $$\mathsf {SAscan}$$ SAscan , which are efficient algorithms for a single string according to the related literature. We also show the effect of disk caching managed by the operating system on our algorithm. Conclusions The proposed algorithm was validated through performance tests using real datasets from different domains, in various combinations, and showed a competitive performance. Our algorithm can also construct the generalized Burrows-Wheeler transform of a string collection with no additional cost except by the output time.

Keywords