# Installation test function
test_install <- function(){
# Test 1: Correct R version
if(sessionInfo()$R.version$major=="3" & as.numeric(sessionInfo()$R.version$minor)>=4.1){
cat(paste0("Correct R version: Yes, ",sessionInfo()$R.version$version.string,"\n"))
}else{
cat("Correct R version: No, go to https://cloud.r-project.org/ and install latest version\n")
return("Installation not complete!")
}
tmp <- try(library(RxODE), silent=TRUE);
if (inherits(tmp, "try-error")) {
cat("RxODE installed: No; check https://github.com/nlmixrdevelopment/nlmixr for instructions to do so\n")
return("Installation not complete!")
} else {
cat(paste0("RxODE installed: Yes\n"))
}
# Test 2: Python installation
if(Sys.info()['sysname']%in%c('Darwin','Linux')){
try(system("python -V > pv.txt 2>&1",intern=TRUE),silent=TRUE)
}else if(Sys.info()['sysname']=='Windows'){
try(shell("python -V > pv.txt 2>&1",intern=TRUE),silent=TRUE)
}
res1 <- readLines("pv.txt")
if(any(grepl("not found|recognized",res1))){
cat("Python installed: No, check https://github.com/nlmixrdevelopment/nlmixr for instructions to do so\n")
return("Installation not complete!")
}else{
cat(paste0("Python installed: Yes, ",res1,"\n"))
}
# Test 3: sympy installation
if(Sys.info()['sysname']%in%c('Darwin','Linux')){
try(system("python -c \"import sympy\" > pv.txt 2>&1",intern=TRUE),silent=TRUE)
}else if(Sys.info()['sysname']=='Windows'){
try(shell("python -c \"import sympy\" > pv.txt 2>&1",intern=TRUE),silent=TRUE)
}
res2 <- readLines("pv.txt")
if(length(res2)==0){
cat("sympy installed: Yes\n")
}else{
cat("sympy installed: No, check https://github.com/nlmixrdevelopment/nlmixr for instructions to do so\n")
return("Installation not complete!")
}
# Test 4: devtools installed
if("devtools" %in% rownames(installed.packages())){
cat("devtools package installed: Yes\n")
}else{
cat("devtools package installed: No, use install.packages('devtools') to do so\n")
return("Installation not complete!")
}
# Test 6: RxODE installed
if("RxODE" %in% rownames(installed.packages())){
cat("RxODE package installed: Yes\n")
}else{
cat("RxODE package installed: No, use install_github('nlmixrdevelopment/RxODE') to do so\n")
return("Installation not complete!")
}
## Test 5: Rtools installed
if(RxODE:::.rxWinRtoolsPath()){
cat("Rtools installed or not needed: Yes\n")
}else{
cat("Rtools installed: No, check https://github.com/nlmixrdevelopment/nlmixr for instructions to do so\n")
return("Installation not complete!")
}
# Test 7: SnakeCharmR installed
if("SnakeCharmR" %in% rownames(installed.packages())){
cat("SnakeCharmR package installed: Yes\n")
}else{
cat("SnakeCharmR package installed: No\n")
cat("\tTo install, use install_github('nlmixrdevelopment/SnakeCharmR') to do so\n")
cat("\tNote SnakeCharmR seems to work better on windows than reticulate...\n");
## cat("\tYou will likely have to remove SnakeCharmR\n");
if("reticulate" %in% rownames(installed.packages())){
cat("reticulate package installed: Yes\n")
} else {
cat("retuclate package installed: No\n")
return("Installation not complete!")
}
}
if ("units" %in% rownames(installed.packages())){
cat("units package installed: Yes\n")
} else {
cat("units package not installed.\n");
cat("Units requires udunits on some systems.\n\tUse https://github.com/r-quantities/units#installation for installation instructions.\n");
return("Installation not complete!")
}
# Test 8: nlmixr installed
if("nlmixr" %in% rownames(installed.packages())){
cat("nlmixr package installed: Yes\n")
}else{
cat("nlmixr package installed: No, use install_github('nlmixrdevelopment/nlmixr') to do so\n")
return("Installation not complete!")
}
# Test 9: xpose.nlmixr installed
if("xpose.nlmixr" %in% rownames(installed.packages())){
cat("xpose.nlmixr package installed: Yes\n")
}else{
cat("xpose.nlmixr package installed: No, use install_github('nlmixrdevelopment/xpose.nlmixr') to do so\n")
return("Installation not complete!")
}
# Test 10: shinyMixR installed
if("shinyMixR" %in% rownames(installed.packages())){
cat("shinyMixR package installed: Yes\n")
}else{
cat("shinyMixR package installed: No, use install_github('richardhooijmaijers/shinyMixR') to do so\n")
return("Installation not complete!")
}
# Test 11: nlme test for theophylline
library(nlmixr)
testmod <- function() {
ini({
tka <- 0.45 # Log Ka
tcl <- 1 # Log Cl
## This works with interactive models
## You may also label the preceding line with label("label text")
tv <- 3.45; label("log V")
## the label("Label name") works with all models
eta.ka ~ 0.6
eta.cl ~ 0.3
eta.v ~ 0.1
add.sd <- 0.7
})
model({
ka <- exp(tka + eta.ka)
cl <- exp(tcl + eta.cl)
v <- exp(tv + eta.v)
linCmt() ~ add(add.sd)
})
}
if(Sys.info()['sysname']%in%c('Darwin','Linux')){
message("Running nlme")
{sink("/dev/null"); fit1 <- suppressWarnings(suppressMessages(nlmixr(testmod,theo_sd,est="nlme"))); sink(); }
message("Running saem")
{sink("/dev/null"); fit2 <- suppressWarnings(suppressMessages(nlmixr(testmod,theo_sd,est="saem"))); sink(); }
message("Running focei")
{sink("/dev/null"); fit3 <- suppressWarnings(suppressMessages(nlmixr(testmod,theo_sd,est="focei"))); sink(); }
}else{
message("Running nlme")
{sink("NUL"); fit1 <- suppressWarnings(suppressMessages(nlmixr(testmod,theo_sd,est="nlme"))); sink(); }
message("Running saem")
{sink("NUL"); fit2 <- suppressWarnings(suppressMessages(nlmixr(testmod,theo_sd,est="saem"))); sink(); }
message("Running focei")
{sink("NUL"); fit3 <- suppressWarnings(suppressMessages(nlmixr(testmod,theo_sd,est="focei"))); sink(); }
}
if(is(fit1, "nlmixrFitData") && !is.null(fit1$nlme)){
cat("nlmixr run under nlme: Yes\n")
}else{
cat("nlmixr run under nlme: No, contact nlmixr team\n")
return("Installation not complete!")
}
if(is(fit2, "nlmixrFitData") && !is.null(fit2$saem)){
cat("nlmixr run under saem: Yes\n")
}else{
cat("nlmixr run under saem: No, contact nlmixr team\n")
return("Installation not complete!")
}
if(is(fit3, "nlmixrFitData") && fit3$method == "FOCE"){
cat("nlmixr run under focei: Yes\n")
}else{
cat("nlmixr run under focei: No, contact nlmixr team\n")
return("Installation not complete!")
}
cat("---- Installation test finished! ----\n")
}
try({test_install()})
cat("Begin Session Info:\n")
print(sessionInfo())
cat("\n")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.