SeqAn3 -- the modern C++ library for sequence analysis
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.10.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