Bayesian Network tools in Java (BNJ)

History of BNJ

At the 1997 International Conference on Uncertainty in Artificial Intelligence (UAI-97) in Providence, RI, USA, several informal discussion fora were held on interchange formats and software tools for research using graphical models. Requests for open-source Bayesian network tools spurred several development efforts that began that year, including:

The third effort commenced in September, 1997 at the UIUC Beckman Institute Knowledge-Based Systems Group, and was focused around development of a common interchange ("bus") format and interconversion tools among the more frequently-used packages of the day for development and education, including non-free software (Hugin, Netica, TETRAD, Ergo) and free software (SPI, IDEAL). This interchange format was based upon an extension of the XML Bayesian Network Interchange Format from Microsoft Research and an entity-relational data model due to the third author (Mengshoel) that was eventually elaborated into the BNJ metaformat. In 1997 and 1998, some experimental inference tools for Noisy-Or Bayesian Networks were developed in C++ by the first two authors [GHVW98] and some general-purpose inference tools were developed in LISP and C++ by the third author at UIUC [Me99].

Starting in autumn of 1999, the second author at UIUC formed the BNJ development team at Kansas State University. In spring of 2000 this team completed the first prototype version of BNJ Tools (then called BN-Tools), including a format conversion tool among 7 popular formats, as well as implementations of the junction tree (Lauritzen-Spiegelhalter [LS88, Ne90]) algorithm for inference in multiply-connected Bayesian networks and the K2 algorithm for structure learning [CH92]. By summer of 2000 a graphical editor had been developed, and by autumn, BNJ had been ported to several platforms. Implementation of several stochastic sampling-based inference algorithms (forward simulation, backward sampling, heuristic importance sampling, and adaptive importance sampling) began in winter of 2001 and was completed in autumn of 2001.

In the summer of 2001 the BNJ team became aware of Murphy's excellent Bayesian Network Toolbox (then in version 3) for MATLAB [Mu03], and since then has begun to simultaneously implement new algorithms while reimplementing or porting functionality from BNT and other published tools. The autumn of 2001 and winter of 2002 saw the development of several research projects [GH02, Gu02, HGPS02, PS02] in which BNJ was used, along with a workshop related to models for diagnosis and decision making under uncertainty [GHHS02]. The development team officially released BNJ v1.0a for the first time on 04 May 2002. Since early May, 2002, experimental and production releases of BNJ have been available on SourceForge. In late spring of 2002, BN-Tools was renamed to BNJ to minimize naming conflicts with Murphy's package. BNJ v1.03 was announced at the AAAI/KDD/UAI workshop on real-time decision support [GHHS02] on 29 Jul 2002 and distributed by the BNJ development team at one of its AAAI-2002 posters [PS02] as well as at KDD-2002, UAI-2002, and ISMB-2002.

BNJ version 2 has been in development since December, 2002. A demonstration was given on 08 August 2003 at the International Conference on Uncertainty in Artificial Intelligence (UAI-2003) in Acapulco, Mexico. The latest stable alpha version, BNJ 2.03a, was released through SourceForge on 05 November 2003. Over the next several months, the BNJ team will be developing some APIs for working with relational graphical models (starting with probabilistic relational models [FGKP99, GFKT02]) and a front-end application for gene expression modeling [HJP03].

Back to the BNJ main page

Page created: Fri 20 Dec 2002
Last updated: Sun 23 Nov 2003
William H. Hsu
BNJ Development Team