Code Monkey home page Code Monkey logo

r2multibugs's Introduction

MultiBUGS

MultiBUGS implements a simple, automatic algorithm for parallelising Markov chain Monte Carlo (MCMC) algorithms for posterior inference of Bayesian hierarchical models. It builds on the existing algorithms and tools in OpenBUGS, and so is applicable to the broad range of statistical models that can be fitted using BUGS-language software, but automatically parallelises the MCMC algorithm to dramatically speed up computation. This makes modern multi-core computing accessible to applied statisticians, without requiring any experience of parallel programming.

See the MultiBUGS website for further details.

Contents

Citation

If you use MultiBUGS in your published work, please cite

Goudie, R. J. B., Turner, R. M., De Angelis, D., Thomas, A. (2020) MultiBUGS: A parallel implementation of the BUGS modelling framework for faster Bayesian inference. Journal of Statistical Software, 95(7). doi:10.18637/jss.v095.i07

Installation

See the main MultiBUGS website for installation instructions of the current released version. The current released version of MultiBUGS works on Windows (with Microsoft MPI (MSI-MPI), version >=8.1) or Linux.

Pre-built unstable development versions

Build status

Windows pre-built unstable binaries

We recommend using the stable version from the main MultiBUGS website, but if you want to try out the current unstable version:

  1. Download and install Microsoft MPI (MS-MPI) (v8.1 or newer)

  2. Download the latest master branch build of MultiBUGS. Unzip this to, e.g., C:\Program Files (x86)\MultiBUGS.

Linux pre-built unstable binaries

Pre-built unstable Linux binaries available from Azure Pipeline.

Compiling from source

Compiling from source on Windows

We recommend using the stable version from the main MultiBUGS website, but if you want to compile the current unstable version from source:

  1. Download and install Microsoft MPI (MS-MPI). Version 8.1 or newer is required, since MultiBUGS uses MPI_Comm_spawn. This framework allows running parallel applications on the Windows platform.

  2. Download and install BlackBox 1.7.2 from the BlackBox Framework Center. This is the framework that MultiBUGS is written using.

  3. Download the zip archive of MultiBUGS. Unzip this to, for example, C:\

  4. Make a new shortcut to the BlackBox.exe file in the newly-installed BlackBox directory (right-click on BlackBox.exe, choose "Create shortcut"). Then, right click the newly-created shortcut, choose "Properties", and choose the "Shortcut" tab. Then add the following text to the Target box, with the paths C:\Program Files (x86)\BlackBox Component Builder 1.7\BlackBox.exe (path to BlackBox.exe) and C:\MultiBUGS-master (path to the MultiBUGS directory) changed to match wherever you installed BlackBox and MultiBUGS:

    mpiexec -n 1 "C:\Program Files (x86)\BlackBox Component Builder 1.7\BlackBox.exe" /USE "C:\MultiBUGS-master"
    

    Then change the Start in to match the path to the MultiBUGS directory, e.g.

    "C:\MultiBUGS-master"
    

    You may want to move the shortcut itself to the Desktop to make it easy to access.

  5. Double click the shortcut to open MultiBUGS/BlackBox.

  6. Within MultiBUGS/BlackBox open Make.odc, which is found in the Developer directory in the MultiBUGS directory. Click on the ! beside DevCompiler.CompileThis. This will compile MultiBUGS. The compiler will ask you to confirm the creation of many directories: click OK to confirm all of these in turn. Compiling will take a couple of minutes. Once compiling is finished the status bar should say "ok".

  7. Close BlackBox/MultiBUGS and then reopen it to complete installation. Note that the first time you compile a model, BlackBox/MultiBUGS will confirm creation of a couple of extra directories. The Windows Firewall may also require you to give BlackBox/MultiBUGS permission: this is needed to allow communication between cores.

  8. The shortcut link version will now work. If you would also like to create a self-contained compiled version of MultiBUGS (that doesn't need the BlackBox install) and/or use the MultiBUGS.exe executable, follow the following steps:

    (a) Within MultiBUGS/BlackBox open Linking.odc, which is found in the Developer directory in the MultiBUGS directory. Click on the first two ! buttons in the "How to link MultiBUGS" section in turn. This creates OpenBUGS.exe, which MultiBUGS.exe needs. (More precisely, MultiBUGS.exe is just a wrapper around OpenBUGS.exe that handles setting up MPI.)

    (b) Next, open up BugsPackage.odc, which is within the Rsrc folder within the Bugs folder in the MultiBUGS directory. This opens up the tool that is used to create the self-contained version of MultiBUGS. The path specifies where MultiBUGS will be installed. The other options specify which files are copied to the self-contained installation. Before clicking ok to create the self-contained version it is useful to open the Log window (Info menu > Open log) to make it easy to monitor progress.

    (c) Once this process is complete, MultiBUGS.exe within the self-contained version should work, and the BlackBox installation is not required. Note that the first time you compile a model, MultiBUGS will confirm creation of a couple of extra directories.

Compiling from source on Linux

On Debian/Ubuntu-based systems

  1. Install BlackBox Cross-Platform.

  2. Install 32-bit MPICH

    sudo apt install mpich:i386
    
  3. Download the current master branch and open BlackBox (bbcb).

    wget https://github.com/MultiBUGS/MultiBUGS/archive/master.tar.gz
    tar -xzf master.tar.gz
    cd MultiBUGS-master
    bbcb
    
  4. Within MultiBUGS/BlackBox open MakeLinux.odc, which is found in the Developer directory in the MultiBUGS directory. Click on the ! beside DevCompiler.CompileThis. This will compile MultiBUGS. Once compiling is finished the status bar should say "ok".

  5. Start up MultiBUGS under MPI

    mpiexec -n 1 bbcb
    

License

MultiBUGS is licensed under LGPL-3.0 (GNU Lesser General Public License v3.0)

It includes code from:

  1. BlackBox Framework Center 2-Clause BSD License

    Copyright (c) 2013 - 2019 BlackBox Framework Center
    Copyright (c) 1994 - 2013 Oberon microsystems, Inc., Switzerland.
                              All rights reserved.
    
  2. BlackBox Cross-Platform 2-Clause BSD License

    Copyright (c) 2017 - 2020 Alexander V. Shiryaev, Ivan A. Denisov,
                              Igor A. Dehtyarenko, Anton A. Dmitriev
    Copyright (c) 2013 - 2019 BlackBox Framework Center
    Copyright (c) 1994 - 2013 Oberon microsystems, Inc., Switzerland.
                              All rights reserved.
    
  3. TAUCS GNU LGPL (Library or Lesser GNU Public Library)

    TAUCS Version 2.0, November 29, 2001.
    Copyright (c) 2001, 2002, 2003
    by Sivan Toledo, Tel-Aviv Univesity, [email protected].
    All Rights Reserved.
    

r2multibugs's People

Contributors

rjbgoudie avatar snthomas99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

r2multibugs's Issues

Is this safe to use?

Hello,

Could you please confirm whether this is safe to use (reliable results) for e.g. publication and decision making projects or should we use multiBUGS directly?

Installation failure for latest commit (1f85d9c)

When running devtools::install_github("MultiBUGS/R2MultiBUGS") for the latest commit, my R (v3.5.1, with RStudio 1.1.456) complains:

Downloading GitHub repo MultiBUGS/R2MultiBUGS@master
from URL https://api.github.com/repos/MultiBUGS/R2MultiBUGS/zipball/master
Installing R2MultiBUGS
"C:/PROGRA~1/R/R-35~1.1/bin/x64/R" --no-site-file --no-environ --no-save --no-restore  \
  --quiet CMD INSTALL  \
  "C:/Users/USER/AppData/Local/Temp/RtmpWWnvPh/devtools140c586a376/MultiBUGS-R2MultiBUGS-1f85d9c"  \
  --library="C:/Users/USER/Documents/R/win-library/3.5" --install-tests 

* installing *source* package 'R2MultiBUGS' ...
** R
Error in parse(outFile) : 
  C:/Users/USER/AppData/Local/Temp/RtmpWWnvPh/devtools140c586a376/MultiBUGS-R2MultiBUGS-1f85d9c/R/bugs.script.R:193:25: unexpected ','
192:     if (!restart){
193:       "modelDistribute(",
                             ^
ERROR: unable to collate and parse R files for package 'R2MultiBUGS'
* removing 'C:/Users/USER/Documents/R/win-library/3.5/R2MultiBUGS'
In R CMD INSTALL
Installation failed: Command failed (1)

As previous commit can be installed successfully, maybe some recent modifications cause this problem.

Thanks

R2MultiBUGS always fail with "not updated to be able to change RN generator"

MultiBUGS will stop with the following message:

BugsCmds.SetDisplay('log')

BugsCmds.SetFilePath('____________.txt' ); BugsCmds.ParseGuard; BugsCmds.Parse
model is syntactically correct

BugsCmds.SetFilePath('____________.txt' ); BugsCmds.LoadDataGuard; BugsCmds.LoadData
data loaded

BugsCmds.CompileGuard; BugsCmds.specificationDialog.numChains := 2; BugsCmds.Compile
model compiled in 0 s

BugsCmds.SetRNGuard; BugsCmds.SetRNState(1)
model must have been compiled but not updated to be able to change RN generator
script failed

And if I remove the modelSetRN(1) from the generated script, then MultiBUGS can run.

Poor error message when a function is supplied as inits

Hi there,

I'm not sure if this issue belongs here but I'll give it a go. I've written some models and they run fine in JAGS using jagsUI from R. However, fitting the same model in Multi/OpenBUGS gives me the error:

Error in datalist[[i]]: subscript out of bounds

Google hasn't told me how to solve this... I'd like to use MultiBUGS to speed up running the models but for some reason this is happening.

Cheers,
Matt

BugsMaster:LinkingFailure

Hello,
I am using the package „R2MultiBUGS“ to run MultiBUGS.
While running a model, the log file showed “BugsMaster:LinkingFailure script command modelDistribute failed“
Below is the screenshot of the log file.
Could you please let me know how to fix this issue?
Multibugs_log

Error in bugs.run

Error in bugs.run(n.burnin, MultiBUGS.pgm, debug = debug, WINE = WINE, :
MultiBUGS did not run correctly. No log file was produced. It might help to try again with 'debug=TRUE' to figure out what went wrong within MultiBUGS.

Please suggest some solution.

Error occures with 'saveExec = TRUE'

Using the latest build of MultiBUGS with the latest R2MultiBUGS
When run with 'saveExec = TRUE', the following message appears in the MultiBUGS window:

TRAP 99  (postcondition violated)

 BugsSerialize.Externalize   [0000053EH] 
	.f	Files.File	[02B5D570H] 
	.fileName	ARRAY 1024 OF CHAR	"D:/TrialRun/SLR/bugs_model.bug"   ...
	.offsetGraph	INTEGER	1152
	.offsetMonitor	INTEGER	6137
	.offsetMutable	INTEGER	5281
	.pos	INTEGER	0
	.res	INTEGER	1
	.wr	Stores.Writer	fields
 BugsCmds.ExternalizeModel   [00002835H] 
	.fileName	ARRAY 1024 OF CHAR	"D:/TrialRun/SLR/bugs_model.bug"   ...
 BugsInterpreter.CmdInterpreter   [000003C1H] 
	.boolCmd	BugsInterpreter.RECORD	fields
	.cmd	BugsInterpreter.RECORD	fields
	.command	ARRAY 1024 OF CHAR	"BugsCmds UpdateGuard  BugsCmds E"   ...
	.guard	BugsInterpreter.RECORD	fields
	.intCmd	BugsInterpreter.RECORD	fields
	.item	Meta.Item	fields
	.item0	Meta.Item	fields
	.item1	Meta.Item	fields
	.ok	BOOLEAN	TRUE
	.realCmd	BugsInterpreter.RECORD	fields
	.res	INTEGER	0
	.s	BugsMappers.Scanner	fields
	.string	ARRAY 1024 OF CHAR	"BugsCmds UpdateGuard  BugsCmds E"   ...
	.stringCmd	BugsInterpreter.RECORD	fields
 BugsScripting.Script   [000005BCH] 
	.bugsCommand	ARRAY 1024 OF CHAR	"modelExternalize(s)"   ...
	.i	INTEGER	1
	.numPar	INTEGER	1
	.p	ARRAY 10, 1024 OF CHAR	elements
	.pascalCommand	ARRAY 1024 OF CHAR	"BugsCmds.UpdateGuard; BugsCmds.E"   ...
	.pat	ARRAY 1024 OF CHAR	"^0"   ...
	.pos	INTEGER	-1
	.pos1	INTEGER	18
	.res	INTEGER	0
	.s	BugsMappers.Scanner	fields
 BugsCmds.ScriptAction.Do   [000011A5H] 
	.a	BugsCmds.ScriptAction	[02D0EAB0H] 
	.res	INTEGER	0
 Services.Exec   [00000140H] 
	.a	Services.Action	[02D0EAB0H] 
	.t	POINTER	[68280BB0H]
 Services.IterateOverActions   [000002F2H] 
	.p	Services.Action	[02D0EAB0H] 
	.time	LONGINT	88027687
 Services.StdHook.Step   [0000034BH] 
	.h	Services.StdHook	[02B75A00H] 
 HostWindows.Idle   [000049DBH] 
	.focus	BOOLEAN	FALSE
	.tick	Controllers.TickMsg	fields
	.w	HostWindows.Window	NIL
 HostMenus.TimerTick   [00003675H] 
	.lParam	INTEGER	0
	.ops	Controllers.PollOpsMsg	fields
	.wParam	INTEGER	1
	.wnd	INTEGER	394252
 Kernel.Try   [000045F9H] 
	.a	INTEGER	394252
	.b	INTEGER	1
	.c	INTEGER	0
	.h	PROCEDURE	HostMenus.TimerTick
 HostMenus.ApplWinHandler   [00003A40H] 
	.Proc	PROCEDURE	NIL
	.hit	BOOLEAN	FALSE
	.lParam	INTEGER	0
	.message	INTEGER	275
	.res	INTEGER	0
	.s	ARRAY 256 OF CHAR	"?c????"   ...
	.w	INTEGER	63
	.wParam	INTEGER	1
	.wnd	INTEGER	394252
<system>   (pc=7717BE6AH,  fp=0063FCB0H)
<system>   (pc=77178339H,  fp=0063FD98H)
<system>   (pc=77177BEDH,  fp=0063FE14H)
<system>   (pc=771779CFH,  fp=0063FE20H)
 HostMenus.Loop   [00003DDDH] 
	.done	BOOLEAN	FALSE
	.f	SET	{0..5}
	.n	INTEGER	0
	.res	INTEGER	0
	.w	HostWindows.Window	NIL
 Kernel.Start   [000036E3H] 
	.code	PROCEDURE	HostMenus.Loop

Error occures with 'debug = TRUE' option

Using the latest build of MultiBUGS with the latest R2MultiBUGS

If 'debug = FALSE' everything seems fine, but with 'debug = FALSE' then following messages was displayed in R console:

Error in bugs.run(n.burnin, MultiBUGS.pgm, debug = debug, WINE = WINE,  : 
  Look at the log file in  D:/HONG/SLR  and
try again with 'debug=TRUE' to figure out what went wrong within MultiBUGS.

over.relax = TRUE

Using the option "over.relax = TRUE" in R2MultiBUGS returns an error "Error in bugs.check.coda() : MultiBUGS did not run correctly".
Using debug=TRUE, MultiBUGS says "script failed in interpretation".
Using MultiBUGS directly in script mode "modelUpdate(1000,1,1000,"T")" also creates the same error.
However, directly using the MultiBUGS GUI, over relaxation is available, checking the box causes no errors and the model compiles and runs.
From my reading of the R2MultiBUGS code, it doesn't implement the request to over-relax, but nor does MultiBUGS scripting. So is this more of an issue with MultiBUGS itself?

Help pages missing in current release

The help page is missing in the R help and reads "There are no help pages in this package"
I'm now reading the info in the R files in this pacakge to get help info.
Please have a look into this issue, thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.