Skip to content

v1.2.0

Compare
Choose a tag to compare
@gatb-admin gatb-admin released this 24 May 14:29
· 612 commits to master since this release

GATB-Core version 1.2.0, release notes

Assembly-inspired de Bruijn graph simplifications

// removes tips, bubbles and erroneous connections,
// similar to some of the algorithms implemented in the SPAdes assembler
graph.simplify();

Faster graph traversal can be activated using a single command.

// allocates 1 byte/node to precompute adjacency for each nodes
// in the MPHF.
// Faster graph traversal (especially using neighbors()).
graph.precomputeAdjacency();

Improvements in MPHF and kmer counting

  • New implementation for the minimal perfect hash function (switched from emphf to BooPHF)
  • Non-canonical k-mer counting is supported via "cmake -DNONCANONICAL=1"

Breaking API changes

  • neighbors(..) becomes neighbors(..)
  • neighbors(..) becomes neighborsEdge(..)
  • iterator(..) becomes iterator(..)
  • iterator(..) becomes iteratorBranching(..)
  • node.kmer.get() becomes node.template getKmer()
  • successors(..) becomes successors(..)
  • const Node& becomes Node& (as MPHF indices are now cached in Node objects)

and so on for all graph fonctions:
- xxx,
- xxx,
- xxx,
- xxx.

Technicalities

  • The basic kmer type (Kmer<>::Type) no longer has a constructor. Use [kmer].setVal(0) to set the value of the variable [kmer] to zero.

For instance, the following code:

optimum = Kmer<span>::Type(0)

becomes:

optimum.setVal(0);
  • Graph is now a templated object (GraphTemplate<Node_t, Edge_t, GraphDataVariant_t>) behind the scenes. However this change is transparent to users of previous versions of GATB-core, as compatibility with the Graph class is preserved.
  • bug fixes in how queries with dir=DIR_INCOMING are handled.
  • various minor bug fixes