Skip to content

Commit eb11039

Browse files
suyusunggaborcsardi
authored andcommitted
version 0.5-7
1 parent 695cd52 commit eb11039

File tree

6 files changed

+92
-44
lines changed

6 files changed

+92
-44
lines changed

CHANGELOG

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2015-8-22 Yu-Sung Su <[email protected]>
2+
* DESCRIPTION (Version, Date): 0.5-6
3+
* NAMESPACE: add more import
4+
* R/jagsParalle: pass data into Glob.env
5+
6+
17
2015-4-19 Yu-Sung Su <[email protected]>
28
* DESCRIPTION (Version, Date): 0.5-5
39
* DESCRIPTION: SystemRequirements: JAGS (http://mcmc-jags.sourceforge.net)

DESCRIPTION

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
Package: R2jags
2-
Version: 0.5-6
3-
Date: 2015-4-21
2+
Version: 0.5-7
3+
Date: 2015-8-22
44
Title: Using R to Run 'JAGS'
55
Author: Yu-Sung Su <[email protected]>,
66
Masanao Yajima <[email protected]>,
77
Maintainer: Yu-Sung Su <[email protected]>
88
Depends: R (>= 2.14.0), rjags (>= 3-3)
9-
Imports: abind, coda (>= 0.13), methods, R2WinBUGS, parallel
9+
Imports: abind, coda (>= 0.13), graphics, grDevices, methods,
10+
R2WinBUGS, parallel, stats, utils
1011
SystemRequirements: JAGS (http://mcmc-jags.sourceforge.net)
1112
Description: Providing wrapper functions to implement Bayesian analysis in JAGS. Some major features include monitoring convergence of a MCMC model using Rubin and Gelman Rhat statistics, automatically running a MCMC model till it converges, and implementing parallel processing of a MCMC model for multiple chains.
1213
License: GPL (>= 2)
1314
NeedsCompilation: no
14-
Packaged: 2015-04-21 06:08:53 UTC; suyusung
15+
Packaged: 2015-08-22 14:21:26 UTC; suyusung
1516
Repository: CRAN
16-
Date/Publication: 2015-04-21 09:13:50
17+
Date/Publication: 2015-08-23 10:39:57

MD5

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
43f5f8c459387c94e80fffc0a8cbd0a9 *CHANGELOG
1+
ddd1007f2ac09996534c4c7a87f5d308 *CHANGELOG
22
80d5280342ccaa1edf2a4b1c87a47d94 *COPYING.LIB
3-
c0c528878e604d86b6fa7e2198eed343 *DESCRIPTION
4-
1420349789929824c0ba7ad4363b74b8 *NAMESPACE
3+
55b9117a9ffb2b087cb17a5409a9b04d *DESCRIPTION
4+
7756418df5cb9f5eddb9cedde0f2fb11 *NAMESPACE
55
0993ec3c619611d40927f6a4b24f9f91 *R/AllClass.R
66
fb1cd440fb69b6c1a36fd535e78dc680 *R/as.bugs.array2.R
77
3d051481132ba73a38f117e0a544842c *R/as.mcmc.R
88
9e6b25427b6c52ebdc74e9c431abc55c *R/attach.jags.R
99
46e343f5bcfbc633064ada1a8933f78a *R/autojags.R
1010
f26548b91c8393a102c097d6f9072de0 *R/jags.R
1111
b5020c366d128f7e48b363a92e85434f *R/jags.sims.R
12-
8e9c888e07dfcb0a1c2c8d927a0c2259 *R/jags2.R
12+
a5659542931977193c5518744c933a7e *R/jags2.R
1313
4b1abee38647e8af6636c71f13cd5510 *R/jags2bugs.R
14-
46356ebacfcd8d7e1fce775c3f0b1e07 *R/jagsParallel.R
14+
e3ffaaa247ab456d1bc1f937efecc531 *R/jagsParallel.R
1515
f84f5317262e71e94270bf600d217b63 *R/mcmc2bugs.R
1616
5f45c187679ee5855226de41e1618b12 *R/plot.R
1717
3e6dce1e63d766244e15245250a3781f *R/print.R

NAMESPACE

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
importFrom(methods, "setOldClass")
22

3+
4+
importFrom(graphics, "axis", "lines", "matplot", "par", "plot", "title")
5+
importFrom(grDevices, rainbow)
6+
importFrom(stats, "lowess", "quantile", "runif", "sd", "time", "update", "var")
7+
importFrom(utils, "read.table")
8+
9+
310
importFrom(rjags, "jags.model",
411
"coda.samples",
512
"load.module",
613
"adapt")
714

815
importFrom(abind, "abind")
916

10-
importFrom(coda, "as.mcmc", "mcmc", "as.mcmc.list", "traceplot")
17+
importFrom(coda, "as.mcmc", "mcmc", "nvar", "varnames", "nchain", "as.mcmc.list", "traceplot")
1118

1219
import(parallel)
1320

R/jags2.R

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
2-
n.chains = 3, n.iter = 2000, n.burnin = floor(n.iter/2),
1+
jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
2+
n.chains = 3, n.iter = 2000, n.burnin = floor(n.iter/2),
33
n.thin = max(1, floor((n.iter - n.burnin)/1000)),
44
DIC = TRUE, jags.path = "", working.directory = NULL, clearWD = TRUE,
5-
refresh = n.iter/50)
5+
refresh = n.iter/50)
66
{
77
if (!is.null(working.directory)) {
88
working.directory <- path.expand(working.directory)
@@ -14,19 +14,19 @@ jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
1414
savedWD <- getwd()
1515
working.directory <- savedWD
1616
}
17-
17+
1818
redo <- ceiling(n.iter - n.burnin)
1919

2020
# data.list <- lapply(as.list(data), get, pos = parent.frame(2))
2121
# names(data.list) <- as.list(data)
22-
23-
22+
23+
2424
if(is.list(data)){
25-
data.list <- data
26-
lapply(data.list, dump, append=TRUE, file="jagsdata.txt", envir=parent.frame(1))
25+
data.list <- data
26+
lapply(data.list, dump, append=TRUE, file="jagsdata.txt", envir=parent.frame(1))
2727
}
2828
else{
29-
if (!(length(data) == 1 && is.vector(data) && is.character(data) &&
29+
if (!(length(data) == 1 && is.vector(data) && is.character(data) &&
3030
(regexpr("\\.txt$", data) > 0))) {
3131
data.list <- lapply(as.list(data), get, pos = parent.frame(1))
3232
names(data.list) <- as.list(data)
@@ -40,7 +40,7 @@ jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
4040
}
4141
data.list <- data
4242
}
43-
43+
4444
}
4545
lapply(names(data.list), dump, append=TRUE, file="jagsdata.txt")
4646
data <- read.jagsdata("jagsdata.txt")
@@ -55,7 +55,7 @@ jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
5555
}
5656
write.model(model.file, con = temp)
5757
model.file <- gsub("\\\\", "/", temp)
58-
if (!is.R())
58+
if (!is.R())
5959
on.exit(file.remove(model.file), add = TRUE)
6060
}
6161
jags.call <- if (jags.path == "") {
@@ -70,15 +70,15 @@ jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
7070
chain.names <- NULL
7171
if(is.null(inits)){
7272
no.inits <- TRUE
73-
}
73+
}
7474
else if (is.function(inits)){
7575
for (i in 1:n.chains) {
7676
initial.values <- inits()
7777
inits.files <- c(inits.files, paste("jagsinits", i, ".txt", sep = ""))
7878
chain.names <- c(chain.names, paste("chain(", i, ")", sep = ""))
7979
with(initial.values, dump(names(initial.values), file = paste("jagsinits", i, ".txt", sep = "")))
8080
}
81-
}
81+
}
8282
else if (is.list(inits)){
8383
if (length(inits)==n.chains){
8484
for (i in 1:n.chains) {
@@ -90,40 +90,40 @@ jags2 <- function (data, inits, parameters.to.save, model.file = "model.bug",
9090
} else {
9191
stop(message="initial value must be specified for all of chains")
9292
}
93-
}
94-
93+
}
94+
9595
if (DIC){
9696
parameters.to.save <- c(parameters.to.save, "deviance")
9797
#load.module("dic", quiet = TRUE)
9898
}
9999

100-
101-
cat("model clear\ndata clear\n",
100+
101+
cat("model clear\ndata clear\n",
102102
if(DIC){
103103
"load dic\n"
104104
},
105-
"model in ", "\"", model.file, "\"", "\n",
105+
"model in ", "\"", model.file, "\"", "\n",
106106
"cd ", "\"", working.directory, "\"", "\n",
107-
"data in ", "\"jagsdata.txt\"", "\n",
108-
"compile, nchains(", n.chains, ")", "\n",
107+
"data in ", "\"jagsdata.txt\"", "\n",
108+
"compile, nchains(", n.chains, ")", "\n",
109109
if(!no.inits){
110110
paste("inits in \"", inits.files, "\", ", chain.names, "\n", sep = "")
111-
},
112-
"initialize", "\n",
113-
"update ", n.burnin, ", by(", refresh, ")\n",
114-
paste("monitor ", parameters.to.save, ", thin(", n.thin, ")\n", sep = ""),
115-
"update ", redo, ", by(", refresh, ")\n",
111+
},
112+
"initialize", "\n",
113+
"update ", n.burnin, ", by(", refresh, ")\n",
114+
paste("monitor ", parameters.to.save, ", thin(", n.thin, ")\n", sep = ""),
115+
"update ", redo, ", by(", refresh, ")\n",
116116
"coda *\n", sep = "", file = "jagsscript.txt")
117117

118118
system(paste(jags.call, "jagsscript.txt"))
119-
120-
fit <- jags.sims(parameters.to.save = parameters.to.save,
121-
n.chains = n.chains, n.iter = n.iter, n.burnin = n.burnin,
119+
120+
fit <- jags.sims(parameters.to.save = parameters.to.save,
121+
n.chains = n.chains, n.iter = n.iter, n.burnin = n.burnin,
122122
n.thin = n.thin, DIC = DIC)
123-
123+
124124
if (clearWD) {
125-
file.remove(c("jagsdata.txt", "CODAindex.txt", inits.files,
126-
"jagsscript.txt", paste("CODAchain", 1:n.chains,
125+
file.remove(c("jagsdata.txt", "CODAindex.txt", inits.files,
126+
"jagsscript.txt", paste("CODAchain", 1:n.chains,
127127
".txt", sep = "")))
128128
}
129129
class(fit) <- "bugs"

R/jagsParallel.R

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,40 @@ jags.parallel <- function (data, inits, parameters.to.save, model.file = "model.
1313
inits
1414
}
1515
jags.model <- model.file
16+
17+
if( is.character( data ) && length(data) == 1
18+
&& regexpr( "\\.txt$", data ) > 0 ) {
19+
## 1. 'data' looks like a file name [UNDOCUMENTED!]
20+
if ( all( basename( data ) == data )) {
21+
fn2 <- file.path( working.directory, data )
22+
if (normalizePath(fn2)!=normalizePath(data)) { ## file.copy() to same place trashes the file
23+
try( file.copy(fn2 , data, overwrite = TRUE ) )
24+
}
25+
}
26+
if ( !file.exists( data ) ) {
27+
stop("File",data,"does not exist")
28+
}
29+
if (file.info(data)["size"]==0) {
30+
stop("Empty data file ",data)
31+
}
32+
e <- new.env()
33+
eval( parse( data ), e )
34+
data <- as.list( e )
35+
} else if( is.character( data ) ||
36+
( is.list( data ) && all( sapply( data,is.character ) ) ) ){
37+
## 2. data is a character vector or a list of character
38+
dlist <- lapply( as.list( data ), get, envir = parent.frame( 1 ) )
39+
names( dlist ) <- unlist( data )
40+
data <- dlist
41+
} else if( !is.list( data ) ){
42+
stop( "data must be a character vector of object names, a list of object names, or a list of objects" )
43+
}
44+
45+
list2env(data, envir=envir )
46+
47+
48+
49+
1650
.runjags <- function() {
1751
jagsfit <- jags(data = eval(expression(data)), inits = jags.inits,
1852
parameters.to.save = eval(expression(jags.params)),
@@ -22,11 +56,11 @@ jags.parallel <- function (data, inits, parameters.to.save, model.file = "model.
2256
working.directory = eval(expression(working.directory)),
2357
jags.seed = eval(expression(jags.seed)), progress.bar = "none",
2458
digits = eval(expression(digits)), RNGname = eval(expression(RNGname)),
25-
jags.module = eval(expression(jags.module)), )
59+
jags.module = eval(expression(jags.module)) )
2660
return(jagsfit)
2761
}
2862
cl <- makeCluster(n.cluster, methods = FALSE)
29-
clusterExport(cl, c(data, "mcmc", "mcmc.list", export_obj_names ), envir = envir)
63+
clusterExport(cl, c(names(data), "mcmc", "mcmc.list", export_obj_names ), envir = envir)
3064
clusterSetRNGStream(cl, jags.seed)
3165
tryCatch(res <- clusterCall(cl, .runjags), finally = stopCluster(cl))
3266
result <- NULL

0 commit comments

Comments
 (0)