Skip to content
A Java API for manipulating (Mc)Cortex de novo assembly graph and link data
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
public Bug fixing May 20, 2019
settings More cleanup and replaced local htsjdk with Maven copy Jul 13, 2016
.travis.yml Update Sep 29, 2017
ivy.xml Clarified a note regarding the empty uint64_t in the kmer container Jun 18, 2018

CortexJDK: A Java API for manipulating (Mc)Cortex de novo assembly graph and link data.

Quick start

git clone
cd CortexJDK
java -jar dist/cortexjdk.jar


CortexJDK is a Java class library for performing efficient, low-memory traversals on multi-color linked de Bruijn graphs (LdBG) produced by McCortex. The most important functionalities provided are:

  • iterating over records in a Cortex graphs
  • random access (by binary search) to Cortex graph records
  • performing simple walks (i.e. extracting a contig, optionally using links to disambiguate junction choices)
  • performing walks assisted by one or more reference sequences in a manner consistent with link information
  • performing depth-first searches with custom stopping rules (useful for finding interesting graph motifs)
  • aligning kmers and contigs back to reference sequences

CortexJDK handles the heavy lifting when operating with these data structures, permitting developers to concentrate on the genome analysis and variant calling tools that can be written on top of this API.

Additionally CortexJDK also contains the graph-based de novo mutation calling software developed during my D.Phil. These tools may be split into their own repository at a later date. For now, they serve as a useful example for other developers on how to use the API.


CortexJDK is released under the Apache 2.0 license. The latest code is freely available at Github.


CortexJDK has the following dependencies:

  • Java8: needed for runtime and development kit
  • Apache Ant: for dependency fetching and compilation
  • McCortex: for building Cortex graphs and link annotations

Other dependencies are automatically fetched at compile time.


To download and compile:

git clone
cd CortexJDK

To run (and get a listing of available commands):

java -jar dist/cortexjdk.jar

To get help for a specific command (e.g. "Print"):

java -jar dist/cortexjdk.jar Print


Please contact Kiran Garimella ( with any questions/comments/concerns/cake. Feedback, bug reports, and pull requests are welcome.

Citing CortexJDK

A manuscript is currently being prepared. Other Cortex-related publications are as follows:

You can’t perform that action at this time.