Nothing
library(iCARH) library(abind) Tp=4 # timepoints N=10 # number of samples J=14 # number of metabolites K=2 # number of bacteria species P=8 # number of pathways set.seed(12473)
For real data Build pathway matrices using iCARH.getPathwaysMat. Elements in kegg id list may contain multiple kegg ids per metabolite. If KEGG id unknown : "Unk[number]".
keggid = list("Unk1", "C03299","Unk2","Unk3", c("C08363", "C00712"), # allowing multiple ids per metabolite ) pathways = iCARH.GetPathwaysMat(keggid, "rno")
To simulate data use iCARH.simulate
# Manually choose pathways path.names = c("path:map00564","path:map00590","path:map00061","path:map00591", "path:map00592","path:map00600","path:map01040","path:map00563") data.sim = iCARH.simulate(Tp, N, J, P, K, path.names=path.names, Zgroupeff=c(0,4), beta.val=c(1,-1,0.5, -0.5)) XX = data.sim$XX Y = data.sim$Y Z = data.sim$Z pathways = data.sim$pathways
Check inaccuracies between covariance and design matrices
pathways.bin = lapply(pathways, function(x) { y=1/(x+1); diag(y)=0; y}) adjmat = rowSums(abind::abind(pathways.bin, along = 3), dims=2) cor.thresh = 0.7 # check number of metabolites in same pathway but not correlated for(i in 1:Tp) print(sum(abs(cor(XX[i,,])[which(adjmat>0)])<cor.thresh))
Run iCARH model. Takes about 12 mins.
rstan::rstan_options(auto_write = TRUE) options(mc.cores = parallel::detectCores()) fit.sim = iCARH.model(XX, Y, Z, pathways, control = list(adapt_delta = 0.99, max_treedepth=10), iter = 500, chains = 1, pars=c("YY","Xmis","Ymis"), include=F) # Not run # fit.sim = iCARH.model(XX, Y, Z, pathways, control = list(adapt_delta = 0.99, max_treedepth=10), # iter = 1100, chains = 2, pars=c("YY","Xmis","Ymis"), include=F)
Processing results. Bacteria effects.
if(!is.null(fit.sim)){ gplot = iCARH.plotBeta(fit.sim) gplot }
Treatments effects
if(!is.null(fit.sim)){ gplot = iCARH.plotTreatmentEffect(fit.sim) gplot }
Pathway analysis
if(!is.null(fit.sim)){ gplot = iCARH.plotPathwayPerturbation(fit.sim, names(data.sim$pathways)) gplot }
Normality assumptions
if(!is.null(fit.sim)){ par(mfrow=c(1,2)) iCARH.checkNormality(fit.sim) }
WAIC
if(!is.null(fit.sim)){ waic = iCARH.waic(fit.sim) waic }
Posterior predictive checks MAD : mean absolute deviation between covariance matrices
if(!is.null(fit.sim)){ mad = iCARH.mad(fit.sim, XX) quantile(mad) }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.