OpenBUGS: Advanced Toys
OpenBUGS is written using the Black Box Component Builder . If you want to play with the source code, you will need this. it is also necessary for some of the extra toys listed below.
Some people like blue diamonds. Your version of OpenBUGS (WinBUGS to be more precise) can also have blue diamonds. Just make a directory called Dev in OpenBUGS and within this directory create a subdirectory called Code. Next from the corresponding direcory in the BlackBox distribution copy over the files Commanders.ocf and Debug.ocf. The Node Info tool will now give you blue diamonds so that you can explore Graph and Updater objects. Adding the Debug module to OpenBUGS will also give more informative trap messages when things go wrong.
A number of changes to ClassicBUGS have been made. The biggest of these is that output is written to the console and not to a buffer file. A new shared object file, bugs.so, has been writen to implement the ClassicBUGS interface on Linux. This shared object file does not export any functions buts its initialization code sets up the command line interpreter for ClassicBUGS. It can be loaded via a small C program CBugs using the dlopen library call. The compiled version of CBugs must be in the root directory of the OpenBUGS software (think of the ocf files as part of the binary). It also seems reasonable to keep the bugs.so file in this directory, the CBugs program will need editing if this is done. It should be possible to load the bugs.so from the Linux version of R. This would allow OpenBUGS to be run from within R but not to to interleave R and BUGS commands.
If anyone would like to help interacing the bugs.so(and the brugs.so) file to Linux via a C program the help would be be most welcome. Linux and C programming are beyond our capabilities...
OpenBUGS and WINE
We have had encouraging results using WINE to run OpenBUGS on Linux. Apart from font problems WinBUGS behaves very well under WINE. We have not been able to run the ClassicBUGS interface on WINE yet. Any advice on using or setting up WINE would be happily received.
We could be interested in porting OpenBUGS to Linux using Winelib. However we do not have the expertise to make this happen on our own. We might understand the OpenBUGS source code and some of the BlackBox modules but have no knowledge of the Windows dlls. A collaborative effort here might work.
There is a rumour that WINE will run on the next (intel) generation of Macs. Does anyone know more on this?
Dynamic node compilation
A new experimental optimization of logical nodes has been developed. The optimization affects node of class GraphStack.Node. It involves writing a new Component Pascal class for the node where the method that calculates the nodes value hard codes the algebraic expression that the node represents (this is instead of the value being calculated by a stack based interpreter). The new class is then compiled by the Component Pascal compiler and loaded dynamicaly. A modification of the Component Pascal compiler has been made which allows this to happen silently and also to work on Linux.
The optimization is in module GraphCompile and the modified CP compiler in the zip file code.zip. Note that this is experimental code. If you would like to trial this code please contact OpenBUGSs <MAN openbugs FOUND ALIVE AT WITH TWO openbugs2 DOT info LEGS> .
If you want to contact the maintainers with your own software bugs, email us <MAN openbugs FOUND ALIVE AT WITH TWO openbugs2 DOT info LEGS> .