Assembling the toolkit

To push forward with the implementation of a system that utilizes the best aspects of a variation graph and a synthetic database coupled with (differential) privacy guaranties we will - of course - need ways to manipulate variation graphs or more precisely GraphBurrows-Wheeler Transform data structures, gbwt for sort.

There were not many available options at the time of writing so the best strategy was to be wrap the jltsiren/gbwt


Create a library to expose functionality from jltsiren/gbwt

Solving the problem

There is no easy way to access the api from jltsiren/gbwt. other than the tools offered by the repository, or as an import for other C/C projects. The project is written in C so object methods had to be turned to functions action on objects So


function(Object args)

To avoid naming collisions between classes with the same method names, each function that calls a class method is named as "CLASS_method". For example



GBWT_find(gbwt, node)

Refer to How to compile the library for more information. Alternatively you can build the library in a Docker container using the Dockerfile

You can find the list of exposed functions here