/seqan3

The modern C++ library for sequence analysis. Contains version 3 of the library and API docs.

Primary LanguageC++OtherNOASSERTION

SeqAn3 -- the modern C++ library for sequence analysis

build status codecov license latest release platforms star follow

SeqAn3 is the new version of the popular SeqAn template library for the analysis of biological sequences. It enables the rapid development of high-performance solutions by providing generic algorithms and data structures for:

  • sequence representation and transformation
  • full-text indexing and efficient search
  • sequence alignment
  • input/output of common file formats

By leveraging Modern C++ it provides unprecedented ease-of-use without sacrificing performance.

Please see the online documentation for more details.

Quick facts

  • C++ header-only library: easy to integrate with your app & easy to distribute
  • liberal open source license: allows integration with any app or library, requires only attribution
  • very high code quality standards: >97% unit test coverage, performance regression tests, ...
  • extensive API documentation & tutorials: more lines of documentation than lines of code
  • aims to support any 64-bit architecture running Linux/POSIX; currently big-endian CPU architectures like s390x are less supported

Dependencies

requirement version comment
compiler GCC ≥ 7 no other compiler is currently supported!
build system CMake ≥ 3.4 optional, but recommended
required libs SDSL ≥ 3
Range-V3 ≥ 0.11.0
optional libs cereal ≥ 1.2.3 required for serialisation and CTD support
zlib ≥ 1.2 required for *.gz and .bam file support
bzip2 ≥ 1.0 required for *.bz2 file support

Usage

We recommend that you use CMake to build your project:

  • Setup-Tutorial
  • Using CMake guarantees that all optional dependencies are automatically detected and activated.

Quick-Setup without CMake:

  • Clone the repository with submodules: git clone --recurse-submodules https://github.com/seqan/seqan3.git
  • Add the following to your compiler invocation:
    • the include directories of SeqAn and its dependencies
    • C++17 mode with concepts support
    • Macros indicating the presence of zlib and bzip2 (set only if actually available in your paths!)
  • The command could look like this:
g++-7 -O3 -DNDEBUG -Wall -Wextra                                \
    -std=c++17 -fconcepts                                       \
    -I       /path/to/seqan3/include                            \
    -isystem /path/to/seqan3/submodules/range-v3/include        \
    -isystem /path/to/seqan3/submodules/sdsl-lite/include       \
    -isystem /path/to/seqan3/submodules/cereal/include          \
    -DSEQAN3_HAS_ZLIB=1 -DSEQAN3_HAS_BZIP2=1                    \
    -lz -lbz2 -lstdc++fs -pthread                               \
  your_file.cpp