Skip to content

Latest commit

 

History

1,114 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bnkit - Bayesian Network Toolkit


Table of Contents


Introduction

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.

bnkit does 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 the bn package documentation.


What is bnkit used for?

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

Quick Start

  1. Install Java 11+ — any OS works.
  2. 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.xml files 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


About

Bayesian network toolkit, with applications for phylogenetic analysis

Resources

Stars

11 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages