v1.2.0
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