SeqAn Repository Structure¶
This article describes the SeqAn repository structure. After reading it, you will have knowledge about the repository structure and the reasons for the design decisions.
Note that this article describes the structure of the Subversion repository, not the structure of the release version of SeqAn which you can download as a ZIP archive.
Overview¶
The main repository structure is shown in the following picture.
seqan
|-- CMakeLists.txt CMake script file.
|
|-- LICENSE Top-Level Information Files
|-- README.rst
|
|-- apps Apps area
|
|-- demos Demos area
|
|-- dox Documentation System
|
|-- include/seqan Core Library
|
|-- manual Tutorials
|
|-- tests Unit Tests for Library Modules
|
`-- util Miscellaneous and Utility Code
- The repository root contains some information files such as the
LICENSEandREADME.rst. The file names should speak for themselves. - The folder
appscontains the applications that are shipped together with the library. Each application directory contains the source files for one or more binaries, documentation, example files, and app tests. More information is available in the section Application Structure. - The folder
demoscontains demo programs. - The folder
doxcontains the documentation building system, which builds the documentation from the API documentation. - The folders
include/seqancontains main library code, with all modules. This is described in more detail in the section Library Modules. - The folders
manualcontains the tutorials and the building system to build the tutorials. - The folder
testscontains the unit tests for the library modules. For each library module, there is a directory belowtestswith the same name that contains the tests for this module. Simpler modules have one tests executable, whereas there might be multiple tests executables for larger modules. For example, the moduleindexhas multiple test programstest_index_qgram,test_index_shapesetc. Writing tests is explained in detail in the article Writing Tests. - The folder
utilcontains miscellaneous files and utility code.
Application Structure¶
Each application directory contains one CMakeLists.txt file and the files for compiling one binary.
Usually, apps have tests, too.
In this case, there is a subdirectory tests.
Writing application tests is covered in detail in the article Writing App Tests.
The general structure of an app is as follows:
seqan/apps/razers
|-- CMakeLists.txt CMake script file
|
|-- README Documentation and License Files
|-- LICENSE
|
|-- example Small Example Files
| |-- genome.fa
| |-- reads.fa
| `-- ...
|
|-- razers.cpp Source Files for Executables
|-- razers.h
|-- ...
|
`-- tests App Tests Files
Library Modules¶
The library modules area looks as follows:
include/
|-- seqan/
| |-- basic/ Library Module basic
| | |-- aggregate_concept.h
| | |-- debug_test_system.h
| | `-- ...
| |-- basic.h
| |
| |-- sequence/ Library Module sequence
| |-- sequence.h
| |
| `-- ... Other Library Modules
On the top level, there is the folder seqan that contains the
library modules. Inside the folder seqan, there is one directory and
one header for each module.
The folder <module-name> contains the headers for the module module-name.
The header <module-name>.h includes the headers from the module module-name.
Including the header makes the code in the module available.
Documentation System¶
The folder dox is used for building the documentation with the old and the new documentation system.
You can build them by going into the directory and then calling ./dox_only.sh.
This will build the documentation into the sub directory html:
seqan # cd dox
dox # ./dox_only.sh
...