Summary: | Submitted by Pedro Barros (pedro.silvabarros@ufpe.br) on 2018-08-01T20:18:15Z
No. of bitstreams: 2
license_rdf: 811 bytes, checksum: e39d27027a6cc9cb039ad269a5db8e34 (MD5)
DISSERTAÇÃO Jamerson Felipe Pereira Lima.pdf: 1541250 bytes, checksum: ccefce36b254aed5273279c3a4600f9f (MD5) === Approved for entry into archive by Alice Araujo (alice.caraujo@ufpe.br) on 2018-08-02T20:09:33Z (GMT) No. of bitstreams: 2
license_rdf: 811 bytes, checksum: e39d27027a6cc9cb039ad269a5db8e34 (MD5)
DISSERTAÇÃO Jamerson Felipe Pereira Lima.pdf: 1541250 bytes, checksum: ccefce36b254aed5273279c3a4600f9f (MD5) === Made available in DSpace on 2018-08-02T20:09:33Z (GMT). No. of bitstreams: 2
license_rdf: 811 bytes, checksum: e39d27027a6cc9cb039ad269a5db8e34 (MD5)
DISSERTAÇÃO Jamerson Felipe Pereira Lima.pdf: 1541250 bytes, checksum: ccefce36b254aed5273279c3a4600f9f (MD5)
Previous issue date: 2017-02-20 === FACEPE === O estudo dos genomas dos seres vivos têm sido impulsionado pelos avanços na biotecnologia ocorridos desde a segunda metade do Séc. XX. Particularmente, o desenvolvimento de novas plataformas de sequenciamento de alto desempenho ocasionou a proliferação de dados brutos de fragmentos de sequências nucleicas. Todavia, a montagem dos fragmentos de DNA continua a ser uma das etapas computacionais mais desafiadoras, visto que a abordagem tradicional desse problema envolve a solução de problemas intratáveis sobre grafos obtidos a partir dos fragmentos, como, por exemplo, a determinação de caminhos hamiltonianos. Mais recentemente, soluções baseadas nos grafos de de Bruijn (gdB), também obtidos a partir dos fragmentos sequenciados, têm sido adotadas. Nesse caso, o problema da montagem relaciona-se com o de encontrar caminhos eulerianos, o qual possui soluções polinomiais conhecidas. Embora apresentem custo computacional teórico mais baixo, ainda demandam, na prática, grande poder computacional, face ao volume de dados envolvido. Por exemplo, a representação empregada por algumas ferramentas para o gdB do genoma humano pode alcançar centenas de gigabytes. Faz-se necessário, portanto, o emprego de técnicas algorítmicas para manipulação eficiente de dados em memória interna e externa. Nas arquiteturas computacionais modernas, a memória é organizada de forma hierárquica em camadas: cache, memória RAM, disco, rede, etc. À medida que o nível aumenta, cresce a capacidade de armazenagem, porém também o tempo de acesso. O ideal, portanto, seria manter a informação limitada o mais possível aos níveis inferiores, diminuindo a troca de dados entre níveis adjacentes. Para tal, uma das abordagens são os chamados algoritmos cache-oblivious, que têm por objetivo reduzir o número de trocas de dados entre a memória cache e a memória principal sem que seja necessário para tanto introduzir parâmetros relativos à configuração da memória ou instruções para a movimentação explícita de blocos de memória. Uma outra alternativa que vêm ganhando ímpeto mais recentemente é o emprego de estruturas de dados ditas sucintas, ou seja, estruturas que representam a informação usando uma quantidade ótima de bits do ponto de vista da teoria da informação. Neste trabalho, foram implementadas três representações para os gdB, com objetivo de avaliar seus desempenhos em termos da utilização eficiente da memória cache. A primeira corresponde a uma implementação tradicional com listas de adjacências, usada como referência, a segunda é baseada em estruturas de dados cache-oblivious, originalmente descritas para percursos em grafos genéricos, e a terceira corresponde a uma representação sucinta específica para os gdB, com otimizações voltadas ao melhor uso da cache. O comportamento dessas representações foi avaliado quanto à quantidade de acessos à memória em dois algoritmos, nomeadamente o percurso em profundidade (DFS) e o tour euleriano. Os resultados experimentais indicam que as versões tradicional e cache-oblivious genérica apresentam, nessa ordem, os menores números absolutos de cache misses e menores tempos de execução para dados pouco volumosos. Entretanto, a versão sucinta apresenta melhor desempenho em termos relativos, considerando-se a proporção entre o número de cache misses e a quantidade de acessos à memória, sugerindo melhor desempenho geral em situações extremas de utilização de memória. === The study of genomes was boosted by advancements in biotechnology that took place since the second half of 20th century. In particular, the development of new high-throughput sequencing platforms induced the proliferation of nucleic sequences raw data. Although, DNA assembly, i.e., reconstitution of original DNA sequence from its fragments, is still one of the most computational challenging steps. Traditional approach to this problem concerns the solution of intractable problems over graphs that are built over the fragments, as the determination of Hamiltonian paths. More recently, new solutions based in the so called de Bruijn graphs, also built over the sequenced fragments, have been adopted. In this case, the assembly problem relates to finding Eulerian paths, for what polynomial solutions are known. However, those solutions, in spite of having a smaller computational cost, still demand a huge computational power in practice, given the big amount of data involved. For example, the representation employed by some assembly tools for a gdB of human genome may reach hundreds of gigabytes. Therefore, it is necessary to apply algorithmic techniques to efficiently manipulate data in internal and external memory. In modern computer architectures, memory is organized in hierarchical layers: cache, RAM, disc, network, etc. As the level grows, the storage capacity is also bigger, as is the access time (latency). That is, the speed of access is smaller. The aim is to keep information limited as much as possible in the highest levels of memory and reduce the need for block exchange between adjacent levels. For that, an approach are cache-oblivious algorithms, that try to reduce the the exchange of blocks between cache and main memory without knowing explicitly the physical parameters of the cache. Another alternative is the use of succinct data structures, that store an amount of data in space close to the minimum information-theoretical. In this work, three representations of the de Bruijn graph were implemented, aiming to assess their performances in terms of cache memory efficiency. The first implementation is based in a traditional traversal algorithm and representation for the de Bruijn graph using adjacency lists and is used as a reference. The second implementation is based in cache-oblivious algorithms originally described for traversal in general graphs. The third implementation is based in a succinct representation of the de Bruijn graph, with optimization for cache memory usage. Those implementations were assessed in terms of number of accesses to cache memory in the execution of two algorithms, namely depth-first search (DFS) and Eulerian tour. Experimental results indicate that traditional and generic cache-oblivious representations show, in this order, the least absolute values in terms of number of cache misses and least times for small amount of data. However, the succinct representation shows a better performance in relative terms, when the proportion between number of cache misses and total number of access to memory is taken into account. This suggests that this representation could reach better performances in case of extreme usage of memory.
|