Can bifrost be unbundled?
Is there any reason kallisto shouldn't work with the latest bifrost, e.g., does the bundled copy contain special tweaks for kallisto?
The bundled copy is pretty far behind the latest release according to Changelog.md (https://github.com/pmelsted/bifrost/commits/master/).
I maintain the FreeBSD port and dreckly (derived from pkgsrc) package for kallisto. In both case, we unbundle dependencies wherever possible so that they can be kept up-to-date with bug and security fixes. If it's safe to unbundle bifrost from the kallisto packages, I will do so.
Yes, it should work -- the main issue is that the index structure will be different (so any index you generate with the current version of kallisto will not be compatible with a version of kallisto that contains the new bifrost version, and vice versa). This is because Bifrost underwent an overhaul a while back that changed everything with regards to the data structure.
I have been hesitant to upgrade because of that; I've tested the new bifrost version with kallisto before, and the performance profile is pretty similar (maybe slightly more efficient) compared to the current version of kallisto.
By the way, thanks for submitting the other issue -- I'll make note of the proposed patch for the future release.
Thanks for the explanation. I'll patch in a warning message to alert users that the index will be incompatible with other kallisto installation methods, though it seems unlikely anyone would be using two different systems to build the index and quantify.
Actually, a colleague (hayzamjs) looked into this and found that there are significant differences between your bundled copy of bifrost and the latest release.
Attempting to compile with the latest release produces the following errors:
/usr/ports/biology/kallisto/work/kallisto-0.51.1/src/KmerIndex.cpp:628:7: error: no member named 'clearAndGetMinimizers' in 'CompactedDBG<Node>'
628 | dbg.clearAndGetMinimizers(minz);
| ~~~ ^
/usr/ports/biology/kallisto/work/kallisto-0.51.1/src/KmerIndex.cpp:630:3: error: unknown type name 'boophf_t'
630 | boophf_t* mphf = new boophf_t(minz.size(), std::move(minz), opt.threads, 2.0, false, 0.15);
| ^
Grepping the latest bifrost source tree shows no sign of clearAndGetMinimizers of boophf_t.
Ooh ok, good to know — thanks. I thought I had a newer version of Bifrost working with kallisto at some point but it was two or so years ago and things might’ve changed since then.
Sorry, that’s unfortunate — I’ll probably have to introduce an extra layer of abstraction to make kallisto compatible with updated versions of Bifrost.