Re: [R] Current state of support for BUGS access for Linux users?

From: Paul Johnson <pauljohn32_at_gmail.com>
Date: Wed 18 Jan 2006 - 16:40:29 EST

Thanks! Let me ask this question again. Clearly, if you experts can't make R talk to WinBUGS, then I can't either. So, If "bugs()" doesn't work, What is the next best thing?

With wine, I can run OpenBUGS and WinBUGS, but I cannot send jobs from R to a BUGS program (still trying, some people say they have seen rbugs work in Linux).

I want to follow along with the instructions In Prof Gelman's site for R2WinBUGS. OR the examples in the rbugs package. I just noticed that rbugs works by writing the data, model, inits, and so forth into text files, along with a script that drives WinBUGS. Although there is something wrong with the script file that causes a fatal WinBUGS crash, I have just manually started the GUI and pointed and clicked my way to a working set of BUGS estimates (see details on script flaw and trap below).

That makes me feel a bit confident that I will be able to create working BUGS sims and get results. I need to learn how to bring into R from CODA output. In the WinBUGS output, I find a codaIndex.txt file that looks promising.

Now, about efforts to run WinBUGS from within R. In case other people are trying this, here is what I learned.

  1. bugs() from R2WinBUGS to WinBUGS14 under wine-0.9.5 is not able to start WinBUGS14.exe

I've just tried the newest example from
http://www.stat.columbia.edu/~gelman/bugsR/ with WinBUGS14 under wine.

WinBUGS never shows on the screen before the error appears:

> library(R2WinBUGS)
> schools <- read.table ("schools.dat", header=T)
> J <- nrow(schools)
> y <- schools$estimate
> sigma.y <- schools$sd
> data <- list ("J", "y", "sigma.y")
> inits <- function() {list (theta=rnorm(J,0,100), mu.theta=rnorm(1,0,100), sigma.theta=runif(1,0,100))}
> parameters <- c("theta", "mu.theta", "sigma.theta")
> schools.sim <- bugs (data,
+                      inits,
+                      parameters,
+                      "schools.bug",
+                      bugs.directory = "/usr/local/share/WinBUGS14/",
+                      n.chains=3,
+                      n.iter=1000,
+                      useWINE= T,
+                      WINE = "/usr/bin/wine"
+                      )

Loading required package: tools
Error in pmatch(x, table, duplicates.ok) :

        argument is not of mode character

Humphf!

I tried running this under debug, but can't understand the output. I get through about 8 steps, when bugs.script() seems to cause the error:
Browse[1]> n
debug: bugs.script(parameters.to.save, n.chains, n.iter, n.burnin, n.thin,

    bugs.directory, new.model.file, debug = debug, is.inits = !is.null(inits),     bin = bin, DIC = DIC, useWINE = useWINE) Browse[1]> n
Error in pmatch(x, table, duplicates.ok) :

        argument is not of mode character

2. With the "rbugs" package and WinBUGS14, I get a lot further. From fumbling around in this code, I can tell that rbugs writes text files in the working directory and then tells WinBUGS to start and access those files. This code causes the WinBUGS GUI to pop up and it goes pretty far. Using the exact same code as in the R2WinBUGS example above, observe:

library(rbugs)
schools.sim <- rbugs ( data,

                      inits,
                      parameters,
                      "schools.bug",
                      n.burnin = 1000, n.chains=1, n.iter=1000,
                      workingDir="/home/pauljohn/.wine/fake_windows/temp",
                      bugs="/usr/local/share/WinBUGS14/WinBUGS14.exe",
                      bugsWorkingDir="z:/home/pauljohn/.wine/fake_windows/temp",
                      useWine=TRUE,
                      wine="/usr/bin/wine",
                      debug=F)

As I said, the WinBUGS14 window opens, the log file says

display(log)
check(z:/home/pauljohn/.wine/fake_windows/temp/model.txt) model is syntactically correct
data(z:/home/pauljohn/.wine/fake_windows/temp/data.txt) data loaded
compile(1)
model compiled
inits(1,z:/home/pauljohn/.wine/fake_windows/temp/init1.txt) model is initialized
gen.inits()
command #Bugs:gen.inits cannot be executed (is greyed out) beg(1001)
thin.updater(1)

set(theta)
set(mu.theta)
set(sigma.theta)
set(deviance)

update(1000)
dic.set()
update(0)
stats(*)
no monitor set
dic.stats()

However, after all that up pops a window called "TRAP" (pasted next).  I believe this is going wrong becuase the fourth-to-last line is update(0). If I manually change that to update(30000), then the script does not crash. So there's something wrong in rbugs in taking "n.iter" into the script. I'll try to follow that up.

Here's the TRAP window output. I believe it is much ado about nothing--update(0) is causing it.

undefined real result

 MonitorsSummary.StdMonitor.Mean [000002FBH]

.mean REAL 2.121995790965272E-314
.monitor MonitorsSummary.StdMonitor [0113F3F0H]
 DeviancePlugin.EstimatedMeans [000003FBH]

.cursor GraphStochastic.List [01145FE0H]
.i INTEGER 0
.j INTEGER 2143872776
.list GraphStochastic.List [01145FE0H]
.node GraphStochastic.Node [01044600H]
.size INTEGER 1
.value REAL 2.121995790965272E-314

 DevianceInterface.DICAll [0000058EH]

.dBar REAL 3.486226116065809E+307
.dBarTotal REAL 3.486184325428448E+307
.dHat REAL 1.856490554558022E-303
.dHatTotal REAL 8.948601956767742E-317
.dicTotal REAL 1.342105535202697E-102
.f TextMappers.Formatter Fields
.i INTEGER 2143868088
.monitors POINTER [01145ED0H]
.num INTEGER 1
.pDTotal REAL 4.244199150914158E-313
.res INTEGER 0

 DevianceCmds.DIC [0000012DH]

.asc INTEGER 104775
.dsc INTEGER 28575
.f TextMappers.Formatter Fields
.height INTEGER 16821552
.lines INTEGER 553779732
.res INTEGER 0
.t TextModels.Model [01145E50H]
.title ARRAY 256 OF CHAR "DIC"
.width INTEGER 114300

 StdInterpreter.CallProc [0000047AH]

.a BOOLEAN FALSE
.b BOOLEAN FALSE
.c BOOLEAN FALSE
.i Meta.Item Fields
.imported ARRAY 256 OF CHAR "" ...
.importing ARRAY 256 OF CHAR "" ...
.mn Meta.Name "DevianceCmds"
.mod StdInterpreter.Ident "DevianceCmds"
.object ARRAY 256 OF CHAR "" ...
.ok BOOLEAN TRUE
.parType INTEGER 3
.pn Meta.Name "DIC"
.proc StdInterpreter.Ident "DIC" ...
.res INTEGER 0
.v StdInterpreter.ProcVal Fields
.vi StdInterpreter.ProcIVal Fields
.vii StdInterpreter.ProcIIVal Fields
.vr StdInterpreter.ProcRVal Fields
.vri StdInterpreter.ProcRIVal Fields
.vrii StdInterpreter.ProcRIIVal Fields
.vrr StdInterpreter.ProcRRVal Fields
.vrri StdInterpreter.ProcRRIVal Fields
.vrrii StdInterpreter.ProcRRIIVal Fields
.vrs StdInterpreter.ProcRSVal Fields
.vrsi StdInterpreter.ProcRSIVal Fields
.vrsii StdInterpreter.ProcRSIIVal Fields
.vs StdInterpreter.ProcSVal Fields
.vsi StdInterpreter.ProcSIVal Fields
.vsii StdInterpreter.ProcSIIVal Fields
.vsr StdInterpreter.ProcSRVal Fields
.vsri StdInterpreter.ProcSRIVal Fields
.vsrii StdInterpreter.ProcSRIIVal Fields
.vss StdInterpreter.ProcSSVal Fields
.vssi StdInterpreter.ProcSSIVal Fields
.vssii StdInterpreter.ProcSSIIVal Fields
 StdInterpreter.Command [0000131CH]

.left StdInterpreter.Ident "DevianceCmds"
.ptype INTEGER 3
.right StdInterpreter.Ident "DIC" ...
 StdInterpreter.CallHook.Call [00001441H]

.ch CHAR 0X
.e ARRAY 64 OF CHAR "" ...
.errorMsg ARRAY 1 OF CHAR ""
.f ARRAY 64 OF CHAR "" ...
.g ARRAY 64 OF CHAR "" ...
.hook StdInterpreter.CallHook [01060050H]
.i INTEGER 24
.i0 INTEGER 0
.i1 INTEGER 0
.id StdInterpreter.Ident "DIC" ...
.par0 Dialog.String "" ...
.par1 Views.Title "" ...
.proc ARRAY 240 OF CHAR "DevianceCmds.DIC('DIC')" ...
.res INTEGER 0
.s0 Dialog.String "DIC"
.s1 Dialog.String "" ...
.type INTEGER 3
.x INTEGER 0

 Dialog.Call [00002FC8H]

.errorMsg ARRAY 1 OF CHAR ""
.proc ARRAY 240 OF CHAR "DevianceCmds.DIC('DIC')" ...
.res INTEGER 0

 BugsScript.Call [00000130H]

.bugsCommands ARRAY 240 OF CHAR "DevianceCmds.DIC('DIC')" ...
.i INTEGER 23
.item Meta.Item Fields
.j INTEGER 23
.ok BOOLEAN FALSE
.par Dialog.Par Fields
.pos INTEGER -1
.res INTEGER 0
.s ARRAY 240 OF CHAR "DevianceCmds.DIC('DIC')" ...
.scriptCommand ARRAY 240 OF CHAR "#Bugs:dic.stats" ...
.start INTEGER 18
.v BugsScript.RECORD Fields

 BugsScript.Action.Do [0000062FH]

.a BugsScript.Action [011D2120H]
.argNum INTEGER 0
.bugsCommands ARRAY 240 OF CHAR "DevianceCmds.DIC('DIC')" ...
.p ARRAY 3, 120 OF CHAR Elements
.s BugsScanners.Scanner Fields
.scriptCommand ARRAY 240 OF CHAR "#Bugs:dic.stats" ...
.vectorName BOOLEAN FALSE

 Services.Exec [00000136H]

.a Services.Action [011D2120H]
.t POINTER [21C90170H]

 Services.IterateOverActions [000002F4H]

.p Services.Action [011D2120H]
.t POINTER NIL
.time LONGINT 3498

 Services.StdHook.Step [0000034DH]

.h Services.StdHook [0101E380H]

 HostWindows.Idle [00004A86H]

.focus BOOLEAN FALSE
.tick Controllers.TickMsg Fields
.w HostWindows.Window NIL

 HostMenus.TimerTick [00003422H]

.lParam INTEGER 0
.ops Controllers.PollOpsMsg Fields
.wParam INTEGER 1
.wnd INTEGER 65574

 Kernel.Try [00003A61H]

.a INTEGER 65574
.b INTEGER 1
.c INTEGER 0
.h PROCEDURE HostMenus.TimerTick

 HostMenus.ApplWinHandler [00003841H]

.Proc PROCEDURE NIL
.hit BOOLEAN Undefined70
.lParam INTEGER 0
.message INTEGER 275
.res INTEGER 1180843108
.s ARRAY 256 OF SHORTCHAR 2X ...
.w INTEGER 538416909
.wParam INTEGER 1
.wnd INTEGER 65574

<system>   (pc=465EDB29H,  fp=7FC8FB00H)
<system>   (pc=465EE418H,  fp=7FC8FB3CH)
<system>   (pc=465F1DF0H,  fp=7FC8FB80H)
<system>   (pc=465BD031H,  fp=7FC8FBB0H)
 HostMenus.Loop   [00003BDEH]

.done BOOLEAN FALSE
.f SET {0..5}
.n INTEGER 0
.res INTEGER 0
.w HostWindows.Window NIL
Kernel.Start [00002B8CH]
.code PROCEDURE HostMenus.Loop

3. Accessing OpenBUGS with wine from "rbugs" gets as far as opening the OpenBUGS GUI, but nothing ever appears in the log file and there are no computations going on (according to system monitors, anyway), but everything in OpenBUGS just seems stuck.

pj

On 1/17/06, Uwe Ligges <ligges@statistik.uni-dortmund.de> wrote:

> Paul Johnson wrote:
> > Thanks, Uwe
> >
> > that clears up why I can't make R2WinBUGs work with OpenBUGS and WinBUGS1.5 :)
> > Both work pretty good with Wine in a GUI.  I noticed that when I tried
> > "rbugs", it does succeed in starting WinBUGS GUI, but then nothing
> > happens. I'll get WinBUGS1.4 and see what happens.
> >
> > In the meanwhile, I'm going to t ry to see what BRugs is good for. In
> > Linux, when I try to install BRugs, the install fails with an error
> > saying that, at the current time, BRugs works only in Windows.
>
>
> Yes, I have added that particular line in order not to confuse users,
> and I thought I told you in my last message that it works only under
> Windows.
>
>
> > * Installing *source* package 'BRugs' ...
> > Package 'BRugs' currently only works under Windows.\nIt is supposed to
> > work under Linux in future releases.
> >
> > I'd like to stop that check and see what happens!
>
> OK, just remove the configure file.
>
>
> > The way I read the
> > sourcecode from OpenBUGS and BRugs, I need to replace the windows dll
> > install and instead put in an so file (as in OpenBUGS).
>
> Yes, it is already shipped, and the infrastructure in the package is
> ready (hopefully), but the brugs.so file does not work as expected.
>
>
> > If anybody has done this, please let me know of your experience.
>
> Yes, several tried, among them Andrew Thomas and Uwe Ligges, and then I
> invited Andrew Thomas to Dortmund and we tried together (I have to admit
> that I was clueless all the time and in fact Andrew tried).
> Andrew's conclusion was that there is some compiler problem on Linux
> with the BlackBox framework (Component Pascal compiler from Oberon
> microsystems) in which WinBUGS/OpenBUGS is written in ...
>
> If you get it to work, please let us know!
>
> Uwe
>

--
Paul E. Johnson
Professor, Political Science
1541 Lilac Lane, Room 504
University of Kansas

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Wed Jan 18 16:49:56 2006

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:42:05 EST