bnkit
is a collection of classes that aim to help implement a Bayesian network in Java (at least version 8 is required).
Currently it allows you to define a Bayesian network structure, use the network for inference,
and some learning from data. It deals with missing values, both discrete and continuous variables.
There are reasonably efficient implementations of variable elimination, and expectation-maximisation
learning. bnkit
does not do structure learning.
The current version has been used for a number of studies now, but should still be regarded as work-in-progress. It is a complete re-write of an earlier (in-house) version the Boden lab has been using for research since 2009 or so.
To generate documentation use javadoc. There are a few examples in the code and a very
brief tutorial in the bn
package documentation.
bnkit is part of GRASP-suite
As part of work funded by the Australian Research Council, the inference engine in bnkit has been bundled with code for phylogenetic analysis. In particular, the asr
package interfaces with services for ancestral sequence reconstruction (ASR). GRASP (https://github.com/bodenlab/GRASP) implements a web server for ASR. The portal for everything around GRASP is https://github.com/bodenlab/GRASP-suite.
In bnkit
there is a command-line interface of GRASP asr.GRASP
. This Java application can prove useful if you want to automate tasks, run reconstructions on your own dedicated hardware, and/or access the latest features. This version is essentially a command-line interface to the backend features of the web-based service. It is worth noting that the web-based version has the advantage of a visual user interface, but that also means that it may lack the latest functionality.
If you want to use asr.GRASP
, go here here or download the JAR file.