bnkit is a collection of classes for implementing Bayesian networks in Java (Java 11+ required). It lets you:
- Define a Bayesian network structure
- Run inference over that network
- Learn from data — including data with missing values, both discrete and continuous
Under the hood it includes reasonably efficient implementations of variable elimination and expectation-maximisation (EM) learning.
bnkitdoes not do structure learning, and does not implement dynamic Bayesian networks.
The current version has been used across a number of published studies, but is still best regarded as work-in-progress. It's a complete rewrite of an earlier in-house version the Boden lab has used for research since around 2009.
📚 Docs: Generate documentation with
javadoc. A handful of code examples and a brief tutorial live in thebnpackage documentation.
Two tools currently build on bnkit, for two different kinds of analysis:
| Tool | What it does | Docs |
|---|---|---|
| GRASP | Graphical Representation of Ancestral Sequence Predictions — ancestral sequence reconstruction by maximum likelihood, scalable to very large datasets. Also implements several algorithms for inferring insertions and deletions | docs/graspcmd.md |
| TreeGazer | Annotates ancestor (internal) and extant (leaf) nodes on a phylogenetic tree, using known properties (discrete or continuous) at a subset of nodes. Also estimates prediction uncertainty and identifies which nodes are most informative about others | docs/treegazer.md |
- Install Java 11+ — any OS works.
- Get a jar — download pre-built jars for GRASP and TreeGazer from the releases page.
Want the latest code instead? Clone this repo and build it yourself:
- We recommend Maven —
pom.xmlfiles are provided for both GRASP and TreeGazer. - Full build steps (Maven and IntelliJ) are in each tool's docs: GRASP · TreeGazer
bnkit is part of GRASP-suite
Funded by the Australian Research Council, bnkit's inference engine has been bundled with phylogenetic analysis code. The asr package in particular interfaces with services for ancestral sequence reconstruction (ASR) — GRASP implements a web server around it.
The portal for everything GRASP-related: github.com/bodenlab/GRASP-suite