model-executor-rsnlme.Rmd
The Certara.RsNLME.ModelExecutor
Shiny GUI can be used
alongside Certara.RsNLME
for a robust and efficient
execution of RsNLME models. Specifically, users create models and hosts
in R through the Certara.RsNLME
package, and execute them
using Certara.RsNLME.ModelExecutor
, which allows users to
choose different run modes and specify engine arguments in the Shiny
GUI. All model execution results can be found in the working directory
of the model.
We’ll define a basic two-compartment population PK model with IV
bolus as well as its associated column mappings through the
Certara.RsNLME
built-in function pkmodel()
.
The input data used in this example is the built-in pkData
from the Certara.RsNLME
package.
*Note: The corresponding R script used in this example can be found in RsNLME Example12
baseModel <- pkmodel(numCompartments = 2, data = pkData,
ID = "Subject", Time = "Act_Time", A1 = "Amount", CObs = "Conc",
modelName = "TwCpt_IVBolus_FOCE_ELS")
Next, we’ll update parameters in our model:
baseModel <- baseModel %>%
structuralParameter(paramName = "V2", hasRandomEffect = FALSE) %>%
fixedEffect(effect = c("tvV", "tvCl", "tvV2", "tvCl2"), value = c(15, 5, 40, 15)) %>%
randomEffect(effect = c("nV", "nCl", "nCl2"), value = rep(0.1, 3)) %>%
residualError(predName = "C", SD = 0.2)
We will create two NlmeParallelHost
: one for local
execution and the other for remote execution.
host_local <- hostParams(sharedDirectory = Sys.getenv("NLME_ROOT_DIRECTORY"),
parallelMethod = "LOCAL_MPI",
hostName = "local",
numCores = 4)
host_remote <- hostParams(sharedDirectory = "/home/nlmeuser",
parallelMethod = "TORQUE",
hostName = "remote_torque",
machineName = "192.168.15.21",
userName = "nlmeuser",
userPassword = "password",
hostType = "Linux",
isLocal = FALSE,
numCores = 4)
hosts <- c(host_local, host_remote)
Run model executor using previously created model and hosts and execute the model with default setups
Note: The default values for the NLME engine arguments are chosen
based on the default values of engineParams
, type
?Certara.RsNLME::engineParams
for details.
modelExecutorUI(baseModel, hosts)
Since we didn’t provide the value of wd
argument,
results will be written to the current session’s working directory. For
each execution, Model Executor creates a new directory with its name
having the format
nlme_shiny_typeOfRun_numOfSameTypeRunExecution
. Since this
is the first time that we run Model Executor to fit a model, results for
this run can be found under the nlme_shiny_fitmodel_01
folder.
For the Simple run mode without any columns selected as Sort real-time convergence plots are being created. To observe those navigate to the Results tab (as shown on the above GIF) and switch to Convergence Plot subtab. Plots are being updated during execution and can be used to understand whether the process is converging and if there is a need to adjust execution setup
For the Simple run mode demonstrated above, one can click the “Add Table” button (located in the lower right corner of the page) to add any desired table to be outputted.
After fitting the baseModel, let’s begin to introduce covariates. We
will first copy our baseModel using the copyModel()
function with acceptAllEffects
set to TRUE to accept
parameter estimates from our simple estimation run.
## Set the working directory of baseModel to the one returned by the model executor
baseModel@modelInfo@workingDir <- paste0(getwd(), "/nlme_shiny_fitmodel_01")
## Copy the baseModel with acceptAllEffects = TRUE to accept parameter estimates from its simple estimation run
covariateModel <- copyModel(baseModel, acceptAllEffects = TRUE,
modelName = "TwCpt_IVBolus_CovariateSearch")
Next, we’ll add the continuous covariate BodyWeight
to
our model and set the covariate effect on structural parameters
V
and Cl
.
covariateModel <- addCovariate(covariateModel,
covariate = "BodyWeight",
type = "Continuous",
direction = "Backward",
center = "Mean",
effect = c("V", "Cl"))
Launch model executor again using the covariate model and hosts created above, choose Covariate search stepwise from the drop-down list of Run Mode (located in the top left corner of the page), and then run it.
modelExecutorUI(covariateModel, hosts)
The stepwise.txt (which can be found in the
nlme_shiny_stepwise_01
directory inside your session’s
working directory) shows that the model selected by stepwise covariate
search is the one with covariate BodyWeight
having effect
on both V
and Cl
.
We will fit the selected model through model executor. First, we will
copy our covariateModel using the copyModel()
function
selectedCovariateModel <- copyModel(covariateModel,
modelName = "TwCpt_IVBolus_selectedCovariateModel")
Next, we will launch model executor using the
selectedCovariateModel
and hosts created previously.
modelExecutorUI(selectedCovariateModel, hosts)
Then, we will run it using the default setups. Note that this is the
second time that the model executor is used to fit a model. Thus, the
estimation results obtained for this run can be found in the
nlme_shiny_fitmodel_02
folder.
After fitting the selectedCovariateModel
, we will run
VPC for it. Again, we will first copy our
selectedCovariateModel
using the copyModel()
function with acceptAllEffects
set to TRUE to accept
parameter estimates from our simple estimation run.
## Set the working directory of selectedCovariateModel to the one returned by the model executor
selectedCovariateModel@modelInfo@workingDir <- paste0(getwd(), "/nlme_shiny_fitmodel_02")
## Copy the selectedCovariateModel with acceptAllEffects = TRUE to accept parameter estimates from its simple estimation run
vpcSelectedCovariateModel <- copyModel(selectedCovariateModel,
acceptAllEffects = TRUE,
modelName = "TwCpt_IVBolus_slectedCovariateModel_VPC")
Next, we will launch model executor using the above model and the
hosts created previously. Then, we will choose Visual predictive check
from the drop-down list of Run Mode (located in the top left corner of
the page), add additional simulation tables if desired, and run it.
Results of vpc run can be found under nlme_shiny_vpc_01
inside your session’s working directory.