BUGS Utility for Spreadsheets

The BUGS Utility for Spreadsheets (BUS) converts BUGS output into an importable format for spreadsheet-based programs such as Excel. By default, BUGS writes all of the values of the monitored nodes into a long column of values1. BUS reads in BUGS output files, and then writes a file in which each monitored node is placed in a separate column. In this format, each node is easily treated as a separate variable by a variety of programs including Excel and other spreadsheet-based programs. BUS output is also easy to import to database programs such as Access, or to other Windows-based statistical packages such as SAS for Windows or SPSS.

Why BUS?
BUGS and WinBUGS are powerful and flexible programs. Their functionality has been further augmented by software such as CODA and BOA. Still, it is of occasional (and sometimes regular) interest to import the results of a BUGS run into another software package to capitalize on that package's capabilities. BUS can help to automate this task.

While it is originally designed to work with spreadsheet-based programs, BUS could be conceivably used in other tasks. For example, it may be of interest to import BUGS output into Mathematica for graphing. BUS could be used in an intermediary fashion. The output from BUS could then be readily formatted to integrate into Mathematica, even though Mathematica is not a spreadsheet-based package.

BUS could also be used in an educational context in conjuction with the BUGS software in a course on Bayesian methods. BUS can be used to import BUGS output into Excel, which may be a more user-friendly environment for further summarization or processing.

Read: BUS reads two files that follow the Classic BUGS conventions for BUGS output. The first file is a *.out file that contains a long column of the values of the monitored nodes. In Classic BUGS this is called bugs.out by default. The second file is a *.ind file that indexes the *.out file. In Classic BUGS this is called bugs.ind by default.

If WinBUGS is being used, the CODA button from the Sample Monitor Tool can be used to create the appropriate files. The two files must share the same name, such as myfile.ind and myfile.out. Make sure to save the index file in Text format with a .ind extension. Similarly, save the long column of values in Text format with a .out extension. Note that WinBUGS may append a .txt extension to the files. If this happens, the files will need to be renamed so that they have the correct extensions.

Specify the *.out file to be read by typing in its path and name, without the .out extension. For example, to read the bugs.out file in the c:\bugs directory, enter c:\bugs\bugs. Alternatively, you can browse for the file. BUS will look for and read the associated *.ind file.

Note that reading the Classic BUGS file named bugs1.out will not produce the desired result.

Write: Clicking on Write will cause BUS to write a file named bugsout.txt to the directory where the input files are located. This file is a tab-delimited text file with each variable in its own column, and is ready to be imported.

Program Details:
BUS is written in Visual Basic 6.0 and so requires that msvbvm60.dll be placed in the Windows\System or Windows\System32 folder. Technically, other files are required to be present as well, but if you are viewing this page via a web browser on a Windows machine, those files should already be there. dlls are freely available, and can be found on many Internet sites. A zipped version of msvbvm60.dll is available below.

Out files of up to 30 megs in size have been successfully (if somewhat slowly) processed by BUS. At some point memory limitations may crop up. The Read subroutine makes use of 4 byte Long integer variables which, in theory, should allow 2,147,483,647 lines to be read. Storing all of this information in an array, however, may not necessarily go smoothly.

It is interesting to note that the file size for BUS output files may be considerably smaller than that of the original BUGS output file. This is due in part to the elimination of redundant iteration information. The more parameters are monitored in BUGS, the more BUS will reduce file sizes. For example, a 12 meg BUGS file with 92 monitored parameters was reduced to 6.5 megs by BUS. Zipping produces even more dramatic gains. The aforementioned BUGS file was 2.75 megs when zipped, whereas the zipped BUS file was a mere 259K.

Version History
Version 1.0.1: fixed overflow associated with writing larger files (9/10/01)
Version 1.0: initial release (6/22/00)

  • Download BUS. Please see the enclosed readme file.
  • Download msvbvm60.zip.
  • You may need one or more of the following system files depending on your setup.

    Questions? Glitches? Interesting stories? Send email to

    Main page

    1 Actually, there are two columns - the first column is the iteration number and the second is the variable's value at that iteration.