# Page Home

SeqAn is an open source C++ library of efficient algorithms and data structures for the analysis of sequences with the focus on biological data. Our library applies a unique generic design that guarantees high performance, generality, extensibility, and integration with other libraries. SeqAn is easy to use and simplifies the development of new software tools with a minimal loss of performance.

## Getting Started

1. Install SeqAn. It's as easy as following the installation instructions.
2. Learn SeqAn. The SeqAn Tutorials in the SeqAn Manual will introduce you into SeqAn's basic concepts and show you how to use its data structures and functions.
3. Think SeqAn. Since our library uses advanced C++ template programming techniques, we recommend you to read our glossary of language entity types for a quick introduction.
4. Use SeqAn. Search the library for classes, functions, etc. using the search bar to the left. Need some orientation? Check the typical tasks below.

## Typical Tasks

If you know what you want to do but not how to achieve this with SeqAn, this sections gives you a nice overview of the components that might help you.

Alternatively you might want to check the SeqAn Tutorials.

- ### File I/O

  SeqAn has support for most common file formats in Bioinformatics. The following lists the most convenient access methods.

  I/O Overview | instructive introductions
  SeqFileIn SeqFileOut FaiIndex | FASTA, FASTQ
  BamFileIn BamFileOut | SAM, BAM
  VcfFileIn VcfFileOut | VCF
  BedFileIn BedFileOut | BED
  GffFileIn GffFileOut | GFF, GTF

- ### Sequence Alignment and Multiple Sequence Alignment

  Sequence alignment and multiple sequence alignment are classic problems in Bioinformatics.

  Alignment Representation Pairwise Sequence Alignment Multiple Sequence Alignment | instructive introductions
  globalAlignment | provides dynamic programming algorithms for global sequence alignment with various parameters
  localAlignment |
  LocalAlignmentEnumerator | offers the Waterman-Eggert algorithm for enumerating suboptimal local alignments
  Align | provides a data structure for tabular alignment of sequences with the same type
  Gaps | allows to store gaps independent of the underlying sequence

- ### Graph Data Structures and Algorithms

  Often, graphs come in handy to model subproblems in sequence analysis. SeqAn provides basic support for graphs and graph algorithms.

  Graphs | instructive introductions
  Graph | central class (including subclasses)
  DirectedGraph UndirectedGraph. | simple directed and undirected graphs structures
  Automaton WordGraph HmmGraph | special subclasses for sequence analysis
  Dijkstra's algorithm Bellman-Ford algorithm topological sorting shortest paths in DAGs | standard graph algorithms
  For more advanced usage and algorithms, we recommend using the LEMON Graph Library.

#### Dox Sources

    @mainpage Home

    SeqAn is an open source C++ library of efficient algorithms and data
    structures for the analysis of sequences with the focus on biological data.
    Our library applies a unique generic design that guarantees high performance,
    generality, extensibility, and integration with other libraries. SeqAn is
    easy to use and simplifies the development of new software tools with a
    minimal loss of performance.

    @section Getting Started

    <ol> <li><b>Install SeqAn.</b> It's as easy as following the <a
    href="http://seqan.readthedocs.io/en/master/Infrastructure/Use/Install.html"
    target="_top">installation instructions</a>.</li> <li><b>Learn SeqAn.</b> The
    <a href="http://seqan.readthedocs.io/en/master/Tutorial/GettingStarted/index.
    html" target="_top">SeqAn Tutorials</a> in the <a
    href="http://seqan.readthedocs.io/en/master/" target="_top">SeqAn Manual</a>
    will introduce you into SeqAn's basic concepts and show you how to use its
    data structures and functions.</li> <li><b>Think SeqAn.</b> Since our library
    uses advanced C++ template programming techniques, we recommend you to read
    our glossary of <a href="page_LanguageEntities.html">language entity
    types</a> for a quick introduction.</li> <li><b>Use SeqAn.</b> Search the
    library for classes, functions, etc. using the search bar to the left. Need
    some orientation? Check the <a href="#typical_tasks">typical tasks</a>
    below.</li> </ol>

    <h2 name="typical_tasks">Typical Tasks</h2>

    If you know what you want to do but not how to achieve this with SeqAn, this
    sections gives you a nice overview of the components that might help you.

    Alternatively you might want to check the <a href="http://seqan.readthedocs.i
    o/en/master/Tutorial/GettingStarted/index.html" target="_top">SeqAn
    Tutorials</a>.

    <ul class="overview"> <li> <h3>File I/O</h3> <p>SeqAn has support for most
    common file formats in Bioinformatics. The following lists the most
    convenient access methods.</p> <table> <tr><td><ul><li><a
    href="http://seqan.readthedocs.io/en/master/Tutorial/InputOutput/index.html"
    target="_top" data-lang-entity="tutorial">I/O
    Overview</a></li></ul></td><td>instructive introductions</td></tr>
    <tr><td><ul><li>@link SeqFileIn @endlink</li><li>@link SeqFileOut
    @endlink</li><li>@link FaiIndex @endlink</li></ul></td><td>FASTA,
    FASTQ</td></tr> <tr><td><ul><li>@link BamFileIn @endlink</li><li>@link
    BamFileOut @endlink</li></ul></td><td>SAM, BAM</td></tr>
    <tr><td><ul><li>@link VcfFileIn @endlink</li><li>@link VcfFileOut
    @endlink</li></ul></td><td>VCF</td></tr> <tr><td><ul><li>@link BedFileIn
    @endlink</li><li>@link BedFileOut @endlink</li></ul></td><td>BED</td></tr>
    <tr><td><ul><li>@link GffFileIn @endlink</li><li>@link GffFileOut
    @endlink</li></ul></td><td>GFF, GTF</td></tr> </table> </li> <li>
    <h3>Sequence Alignment <small>and Multiple Sequence Alignment</small></h3>
    <p>Sequence alignment and multiple sequence alignment are classic problems in
    Bioinformatics.</p> <table> <tr><td><ul><li><a href="http://seqan.readthedocs
    .io/en/master/Tutorial/DataStructures/Alignment/AlignmentGaps.html"
    target="_top" data-lang-entity="tutorial">Alignment
    Representation</a></li><li><a href="http://seqan.readthedocs.io/en/master/Tut
    orial/Algorithms/Alignment/PairwiseSequenceAlignment.html" target="_top"
    data-lang-entity="tutorial">Pairwise Sequence Alignment</a></li><li><a href="
    http://seqan.readthedocs.io/en/master/Tutorial/Algorithms/Alignment/MultipleS
    equenceAlignment.html" target="_top" data-lang-entity="tutorial">Multiple
    Sequence Alignment</a></li></ul></td><td>instructive introductions</td></tr>
    <tr><td><ul><li>@link globalAlignment @endlink</li></ul></td><td>provides
    dynamic programming algorithms for global sequence alignment with various
    parameters</td></tr> <tr><td><ul><li>@link localAlignment
    @endlink</li></ul></td><td></td></tr> <tr><td><ul><li>@link
    LocalAlignmentEnumerator @endlink</li></ul></td><td>offers the Waterman-
    Eggert algorithm for enumerating suboptimal local alignments</td></tr>
    <tr><td><ul><li>@link Align @endlink</li></ul></td><td>provides a data
    structure for tabular alignment of sequences with the same type</td></tr>
    <tr><td><ul><li>@link Gaps @endlink</li></ul></td><td>allows to store gaps
    independent of the underlying sequence</td></tr> </table> </li> <li>
    <h3>Graph <small>Data Structures and Algorithms</small></h3> <p>Often, graphs
    come in handy to model subproblems in sequence analysis. SeqAn provides basic
    support for graphs and graph algorithms.</p> <table> <tr><td><ul><li><a href=
    "http://seqan.readthedocs.io/en/master/Tutorial/Algorithms/GraphAlgorithms.ht
    ml" target="_top" data-lang-
    entity="tutorial">Graphs</a></li></ul></td><td>instructive
    introductions</td></tr> <tr><td><ul><li>@link Graph
    @endlink</li></ul></td><td>central class (including subclasses)</td></tr>
    <tr><td><ul><li>@link DirectedGraph @endlink</li><li>@link UndirectedGraph
    @endlink.</li></ul></td><td>simple directed and undirected graphs
    structures</td></tr> <tr><td><ul><li>@link Automaton @endlink</li><li>@link
    WordGraph @endlink</li><li>@link HmmGraph @endlink</li></ul></td><td>special
    subclasses for sequence analysis</td></tr> <tr><td><ul><li>@link dijkstra
    Dijkstra's algorithm @endlink</li><li>@link bellmanFordAlgorithm Bellman-Ford
    algorithm @endlink</li><li>@link topologicalSort topological sorting
    @endlink</li><li>@link dagShortestPath shortest paths in DAGs
    @endlink</li></ul></td><td>standard graph algorithms</td></tr> <tr><td
    colspan="2">For more advanced usage and algorithms, we recommend using the <a
    href="http://lemon.cs.elte.hu/trac/lemon" target="_top">LEMON Graph
    Library</a>.</td></tr> </table> </li> </ul>