如何在 Sweave 中编译 Latex 文档而不必每次都 运行 rjags?
How to compile a Latex document in Sweave without having to run rjags everytime?
我正在 r
中使用 sweave
和 latex
编译 pdf。对于 MCMC 方法,我 运行ning rjags
。 运行 这些模型大约需要一个小时才能收敛。每次我 运行 我的 sweave
代码编译 pdf 时,它也会再次 运行 所有 jags
模型。如果编译 pdf 需要一个小时,这使得编辑和发现我是否犯了小的语法错误变得很痛苦。如何保留由 jags
代码生成的所有变量,而不是让 sweave
每次都必须计算?
数据可以在这里找到:https://uwyo-files.instructure.com/courses/481850/files/36253354/course%20files/project4_genomebinom/chrgc.txt?download=1&inline=1&sf_verifier=ea3569eec1ca938fad4122a92e35ff57&ts=1462863980&user_id=569842
这是一些示例代码
\documentclass[12pt, letterpaper]{article}
\begin{document}
<<computation,results=hide>>=
humangc <- read.csv("c:\temp\RtmpYpMfSP\data15a4519241c1")
chr<-substr(humangc$chr, 4, 8)
chr[chr=='X']<-23
chr[chr=='Y']<-24
chr<-as.numeric(chr)
humangc<-data.frame(humangc[,-1], chr=chr)
humangc<-humangc[order(humangc$chr, humangc$bp),] ### reorder data by chr
## drop NA data and blocks with fewer than 100000 (10%) valid data
humangc<-humangc[!is.na(humangc$valid) & humangc$valid > 100000,]
### hierarchical Bayesian model in JAGS
bin.beta.beta<-"
model{
for(i in 1:bins){
gc[i] ~ dbinom(p[i], n[i])
p[i] ~ dbeta(chrgc * chrprec, (1-chrgc)*chrprec)
}
chrgc ~ dbeta(1,1) ## chrgc is same as pi
chrprec ~ dunif(0.001,10000) ## chrprec is same as theta
}
"
require(rjags)
for(i in 1:24){
data.jags<-list(gc=humangc$gc[humangc$chr==i],
n=humangc$valid[humangc$chr==i],
bins=length(humangc$gc[humangc$chr==i]) )
mod.jags<- jags.model(textConnection(bin.beta.beta),data=data.jags,n.chains=3,n.adapt=1000)
mod.samples<-jags.samples(model=mod.jags, variable.names=c("chrgc", "chrprec"), n.iter=5000,thin=2)
### summarize quantiles of beta and p-values of empirical obs from Beta
gcest<-NULL
gcest$q<-qbeta(c(0.025, 0.5, 0.975),
mean(mod.samples$chrprec[1,,] * mod.samples$chrgc[1,,]),
mean(mod.samples$chrprec[1,,] * (1-mod.samples$chrgc[1,,])) )
gcest$p<-pbeta(humangc$perc[humangc$chr==i],
mean(mod.samples$chrprec[1,,] * mod.samples$chrgc[1,,]),
mean(mod.samples$chrprec[1,,] * (1-mod.samples$chrgc[1,,])) )
gcest$perc <- humangc$perc[humangc$chr==i]
gcest$bp <- humangc$bp[humangc$chr==i]
## write workspace for chromosome to disk
save.image(paste("Rworkspace_chr", i, sep=""))
}
@
<<echo=F, fig=T, include=F>>=
update(mod.jags)
require(coda)
params <- c("chrgc", "chrprec")
samps <- coda.samples(mod.jags, params, n.iter = 2000)
plot(samps)
@
SOME TRIVIAL TEXT!!!!!!
end{document}
如您所见,我创建了 24 个不同的模型。这需要一点时间。鉴于我需要 jags
创建的变量,我如何在编译 pdf 时快速显示 "SOME TRIVIAL TEXT!!!!!!!"?
上述步骤需要一段时间。
查看 cache
块选项。第一次 运行 时,您可以将块的结果存储在 R 数据库文件中。在 运行ning 上再次跳过缓存的块。可在 here.
中找到更详尽的描述
我正在 r
中使用 sweave
和 latex
编译 pdf。对于 MCMC 方法,我 运行ning rjags
。 运行 这些模型大约需要一个小时才能收敛。每次我 运行 我的 sweave
代码编译 pdf 时,它也会再次 运行 所有 jags
模型。如果编译 pdf 需要一个小时,这使得编辑和发现我是否犯了小的语法错误变得很痛苦。如何保留由 jags
代码生成的所有变量,而不是让 sweave
每次都必须计算?
数据可以在这里找到:https://uwyo-files.instructure.com/courses/481850/files/36253354/course%20files/project4_genomebinom/chrgc.txt?download=1&inline=1&sf_verifier=ea3569eec1ca938fad4122a92e35ff57&ts=1462863980&user_id=569842
这是一些示例代码
\documentclass[12pt, letterpaper]{article}
\begin{document}
<<computation,results=hide>>=
humangc <- read.csv("c:\temp\RtmpYpMfSP\data15a4519241c1")
chr<-substr(humangc$chr, 4, 8)
chr[chr=='X']<-23
chr[chr=='Y']<-24
chr<-as.numeric(chr)
humangc<-data.frame(humangc[,-1], chr=chr)
humangc<-humangc[order(humangc$chr, humangc$bp),] ### reorder data by chr
## drop NA data and blocks with fewer than 100000 (10%) valid data
humangc<-humangc[!is.na(humangc$valid) & humangc$valid > 100000,]
### hierarchical Bayesian model in JAGS
bin.beta.beta<-"
model{
for(i in 1:bins){
gc[i] ~ dbinom(p[i], n[i])
p[i] ~ dbeta(chrgc * chrprec, (1-chrgc)*chrprec)
}
chrgc ~ dbeta(1,1) ## chrgc is same as pi
chrprec ~ dunif(0.001,10000) ## chrprec is same as theta
}
"
require(rjags)
for(i in 1:24){
data.jags<-list(gc=humangc$gc[humangc$chr==i],
n=humangc$valid[humangc$chr==i],
bins=length(humangc$gc[humangc$chr==i]) )
mod.jags<- jags.model(textConnection(bin.beta.beta),data=data.jags,n.chains=3,n.adapt=1000)
mod.samples<-jags.samples(model=mod.jags, variable.names=c("chrgc", "chrprec"), n.iter=5000,thin=2)
### summarize quantiles of beta and p-values of empirical obs from Beta
gcest<-NULL
gcest$q<-qbeta(c(0.025, 0.5, 0.975),
mean(mod.samples$chrprec[1,,] * mod.samples$chrgc[1,,]),
mean(mod.samples$chrprec[1,,] * (1-mod.samples$chrgc[1,,])) )
gcest$p<-pbeta(humangc$perc[humangc$chr==i],
mean(mod.samples$chrprec[1,,] * mod.samples$chrgc[1,,]),
mean(mod.samples$chrprec[1,,] * (1-mod.samples$chrgc[1,,])) )
gcest$perc <- humangc$perc[humangc$chr==i]
gcest$bp <- humangc$bp[humangc$chr==i]
## write workspace for chromosome to disk
save.image(paste("Rworkspace_chr", i, sep=""))
}
@
<<echo=F, fig=T, include=F>>=
update(mod.jags)
require(coda)
params <- c("chrgc", "chrprec")
samps <- coda.samples(mod.jags, params, n.iter = 2000)
plot(samps)
@
SOME TRIVIAL TEXT!!!!!!
end{document}
如您所见,我创建了 24 个不同的模型。这需要一点时间。鉴于我需要 jags
创建的变量,我如何在编译 pdf 时快速显示 "SOME TRIVIAL TEXT!!!!!!!"?
上述步骤需要一段时间。
查看 cache
块选项。第一次 运行 时,您可以将块的结果存储在 R 数据库文件中。在 运行ning 上再次跳过缓存的块。可在 here.