Skip to content
Isaac Turner edited this page Oct 4, 2016 · 5 revisions

We welcome pull requests and bug reports through GitHub. You may want to submit an issue to discuss large changes first, before implementing them. If you do add code, please add your name to the AUTHORS file. Code should compile on mac and linux with clang and gcc without errors or warnings.

Git Branches

Please submit pull requests to the develop branch. When stable we merge develop into master.

Project Structure

Code is organised as:

  • libs/ included library code from other projects / third party code
  • src/global code used everywhere
  • src/basic utility functions
  • src/paths path information
  • src/graph de Bruijn graph [+]
  • src/graph_paths graph+path interactions and path IO [+]
  • src/tools complex operations performed on the graph [+]
  • src/commands one file per cortex command ctx_COMMAND [+]
  • src/main files with a main function go in here [+]

[+] => files that need recompiling based on different MAX_KMER_SIZE

Files only link to files that are above them in the list above. E.g. src/graph/* files only include files in src/graph/, src/paths/, src/basic/, src/global/ and libs/.

Thread-safe functions are named *_mt().

Libraries

seq_file provides support for reading FASTA, FASTQ and plain sequence file formats from both files and gzipped files.

madcrowlib provides C macros for lists and buffers.

bit_array provides bit arrays (aka bitsets) and bit level locking.

Compiling

We turn on as many warnings as possible when compiling. Code should compile on both 64 bit mac and linux in GCC and clang without errors. New files don't have to be added to the Makefile -- they will be automatically detected if you put them in one of the directories listed above.

Static Code Analysis

Static analysis can be run with cppcheck:

cppcheck src

or with clang:

rm -rf bin/ctx31
scan-build make RECOMPILE=1

Occasionally we also run Coverity Scan. This is done by pushing to the coverity_scan branch on github, which triggers Travis CI to upload the latest code to Coverity.

Coverity Scan Build Status

Errors And Warnings

Errors are printed and we exit if we cannot recover from an issue. We issue a warning if we can carry on, but some output may be missing and some input ignored.

Clone this wiki locally