In this course we study advanced data structures for the analysis of genomic sequences, and in general, of textual data.
Knowledge and understanding
The course provides an understanding of the basic challenges and fundamental issues in processing textual data such as genomic sequences; knowledge of some of the most common computational problems on strings and sequences in genomic data analysis and other applications; familiarity with the most important text indices and their use in solving these problems, including complexity analysis (time and space).
Applying knowledge and understanding
At the end of the course the student will be able to translate typical problems of genomic sequence analysis in operations and algorithms on textual data and evaluate the computational cost incurred.
At the end of the course the student will be able to judge whether a given algorithm or data structure is appropriate for the problem at hand, including the evaluation of the computational cost incurred.
At the end of the course the student will be able to correctly formalize algorithms on sequences with or without the use of advanced text data structures.
Lifelong learning skills
At the end of the course the student will be able to read and understand independently scientific articles and specialized texts which use advanced string data structures for the analysis of genomic sequences or other textual data.
In recent years, we have seen vast progress of research in computational biology, in which the use of dedicated data structures for genomic sequences, and other types of biological sequence data, has been decisive. At the same time, these methods can be, and are being, applied to all other kinds of textual data.
The recent explosion of the amounts of data available ("big data") is one of the major challenges for computer science today. Much of this data is in form of text (or can be easily rendered in textual form): genomic sequences and other biological sequences, webpages, emails, scanned books, musical data, and many others. In order to be able to efficiently store, process, and extract information from this data, we need dedicated data structures and algorithms, i.e. data structures specifically developed for strings, also referred to as text indexes.
Program of the course:
1) introduction to strings (sequences), their basic properties and fundamental issues: alphabet size, character comparison, string sorting
2) classical exact pattern matching algorithms (non index-based): Knuth-Morris-Pratt, Boyer-Moore, Rabin-Karp, Aho-Corasick
3) Text indexes I:
- suffix trees
4) Text indexes II:
- suffix arrays, enhanced suffix arrays
- Burrows-Wheeler Transform (BWT)
For each of these text indexes, we will study their properties, efficient construction, and applications to specific string problems.
No previous knowledge of biology is necessary for following the course.
|Dan Gusfield||Algorithms on Strings, Trees, and Sequences||Cambridge University Press||1997||0 521 58519 8|
|Enno Ohlebusch||Bioinformatics Algorithms||2013||978-3-00-041316-2|
|Veli Mäkinen, Djamal Belazzougui, Fabio Cunial and Alexandru I. Tomescu||Genome-Scale Algorithm Design||CUP||2015||978-1-107-07853-6|
|Maxime Crochemore and Wojciech Rytter||Jewels of Stringology||World Scientific||2003||981-02-4782-6|
Final exam: written and oral. In the written exam, both theoretical questions will be asked (running times and storage space of algorithms, properties of the data structures studied), and concrete examples will have to be solved (compute the suffix tree, suffix array, BWT etc. of a given string, apply certain algorithms). In the oral exam, the student will have the opportunity to explain in detail his/her solution and show to what extent he/she has understood the topics studied.
The exam will show that the student
- has acquired sufficient understanding of the most important issues with respect to handling large textual data (alphabet type, comparison of strings, string sorting, size of textual data)
- can apply, explain, and analyze the algorithms studied for non-index based pattern matching
- can apply, explain, and analyze the data structures studied, in particular construction algorithms for and storage space required by these data structures (inverted index, trie, suffix tree, suffix array, BWT)
- can apply, explain, and analyze some applications of these data structures to problems on strings, such as pattern matching, matching statistics, palindromes, etc.
The exam is the same for all students (whether or not they followed the lectures).