Skip to content

fastify everything

Compare
Choose a tag to compare
@ekg ekg released this 17 Dec 18:41
· 1542 commits to master since this release
a33c73a

This updates odgi's node_t objects to store edges and path steps in DYNAMIC hacked_vectors (bit-packed vectors), and adds an encoder to reduce the bitwidth of the path step vector (as in the dynamic GBWT).

Paths can be added and manipulated in parallel. Locking is provided by atomic flags on each node and the path metadata objects. The path metadata is accessed through lock free maps keyed by string and integer. This allows us to build graphs from GFA in parallel. The graph is no longer copyable due to its inclusion of these atomic primitives.

The apply_ordering function, long a thorn in the side of odgi, is rewritten so that each stage of the rewrite occurs in parallel. Relativistic updates to the node path encoding can be applied in parallel, efficiently. This reduces a major single-threaded runtime bottleneck when manipulating graphs with the odgi toolkit.

The odgi serialized format is not compatible with previous versions. The magic number in the file has been changed to reflect this.