You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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.