1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Welcome to Projeny - The Probabilistic Networks Generator in Java

The Projeny website address is http://projeny.sourceforge.net - please use this address for bookmarking, linking or citing in your publications.

The source code, mailing list and tracker are found on the sourceforge project page at http://sourceforge.net/projects/projeny

Introduction

Projeny is a Java front-end for the Bayes Net Toolbox (BNT), a Matlab toolkit that supports several different probabilistic networks learning and inference. Hence, it depends on and requires the following software:

  • Bayes Net Toolbox (BNT): This is the actual learning and inference engine (runs inside Matlab)
  • JMatLink: A tool that connects a Java front-end to a Matlab engine.

Both BNT and JMatLink are required to run Projeny. Of course, BNT requires Matlab to run.

Projeny Source Code

Current source code has been committed to the subversion (SVN) repository. It can be downloaded through SVN Checkout. Click on "Code" from the menu above for instructions. The current code is alpha quality, please forgive me if there are any bugs. Please report them to me and I will fix them.

Official releases are not available yet - I will improve the documentation and do this in early 2008.

Prior art and License

Projeny is based on the codebase of Bayesian Network tools in Java (BNJ) - a project that seems to have been dormant since 2004. BNJ is not required to run Projeny. Projeny subsumes and adds/subtracts several features to BNJ. Since BNJ is released under GNU GPL v2, as required, Projeny is also released under GNU GPL (version 2). (I'm currently exploring if it's permitted to release Projeny under GPL v3 even if BNJ remains under GPL v2 - I'll keep you posted).

Why and how Projeny was born?

The author of Projeny wanted a Probabilistic Temporal Reasoning toolkit that supports Dynamic Bayesian Networks for his PhD dissertation. As a graduate student, he looked for several tools that support probabilistic temporal reasoning (parameter learning and inference). The tools he had access to were Netica (department license), GeNIe/SMILE and BNT. The first two do not support true Dynamic Bayesian Networks (DBN) - that is, they do not support parameter tying. They unroll the DBN into a static Bayesian Network (BN) and run the Junction Tree (jtree) algorithm on it. This was not sufficient.

The only one left is BNT. However, the author is not a Matlab expert. The author thought that a GUI that allows designing graphical networks and binding to databases would be very helpful. But the author did not want to rewrite the GUI from scratch. The author thought of connecting GeNIe to BNT. But, GeNIe is closed source. The author came across BNJ - the project seems to be abandoned, but the code is available under GPL. Thus, Projeny was born. The tool may be rewritten from scratch if the BNJ codebase proves to be a wrong decision - that remains to be seen. For now, BNJ provides a good GUI codebase to start with, and saves a lot of time.

Since the author's setup is based on several open source tools, he wants to release Projeny under an open source license to contribute back to the open source community from which he benefits. The author hopes that other people will use and contribute (new features, feature requests, bug fixes, documentation, etc.) back to it without reinventing the wheel and thus saving time for everyone. The author also believes in easily reproducible research, hence releasing the code makes his research work more stringent and more open to scrutiny. Projeny thus lives and prospers (hopefully!).

Publications and Presentations

We made a presentation about Projeny at the AMIA 2007 Annual Symposium. Presentation slides can be found here.

Features

Currently, Projeny supports:

  • Dynamic Bayesian Networks (DBN)
    • designing first order Dynamic Bayesian Networks (because BNT does not support higher order DBN)
    • discrete variables only at present
    • defining states for these discrete variables
    • make inter-slice and intra-slice connections
  • Learning
    • Parameter learning (structure learning is not supported currently)
    • Input data from a relational database
      • only MySQL supported at the moment
    • Variables can be defined as hidden or observed - the observed values are queried from the database
    • Several learning algorithms (included in BNT) are supported
      • currently, only dbn_inference_engine is supported
      • more engines will be supported in the future
        • user can select the engine at runtime
  • Inference
    • All the variables with missing data (whether observed or hidden) are inferred and the results are saved to a relational database
      • only MySQL supported at the moment
    • Several inference algorithms (included in BNT) are supported
      • currently, only dbn_inference_engine is supported
      • more engines will be supported in the future
        • user can select the engine at runtime

To do (How you can help)

  • Take a look at the tracker to see the outstanding bugs and feature requests - you are welcome to contribute.
  • More learning and inference engines and algorithms
    • Engines
      • jtree, jtree_2tbn, etc
    • Algorithms
      • Static Bayesian Networks, LIMID, POMDP, etc
  • Database abstraction
    • separate out the database specific code to make it work with other relational databases
      • PostgreSQL to start with
      • Other databases based on user requests or code contribution
  • Support for data transposition, discretization, etc, either directly or provide plugins for Rapidminer, Yale or Weka.
  • Eliminate dependencies on Matlab (and hence BNT) when Intel's OpenPNL becomes fully developed.
  • Port BNT to Scientific Python?! (out of scope for Projeny) - is anyone interested in doing this?

Roadmap

  • Commit alpha code by November 4, 2007. (done)
  • Release candidate in early 2008
  • Final release sometime in 2008
  • Frequent beta versions meanwhile

Help and Support

For any help or support requests or general questions about Projeny, please email the Projeny Support Mailing List at projeny-support@'lists.sourceforge.net. You can see the archives of the mailing list, click "Mailing Lists" from the drop-down link near the top of this page. You can also post bug reports, feature requests, patches, etc (both reporting and contributing fixes) on the tracker.

People and Contact Information

  • Senthil K. Nachimuthu, MD (sourceforge id: sentron)
    • Creator and author
    • Ph.D. candidate at the University of Utah Department of Biomedical Informatics
    • Email: nachimuthu at gmail dot com (Please do not email Projeny support questions directly to me. Send them to the mailing list so that they will be of help to everyone. I will reply on the mailing list. See "Help and Support" above).
  • Your name here
    • please contact me if you want to contribute or collaborate