[R] Current state of support for BUGS access for Linux users?
Paul Johnson
pauljohn32 at gmail.com
Wed Jan 18 06:40:29 CET 2006
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 at 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
More information about the R-help
mailing list