Prints NLME metamodel template file and token json file using given options, filepaths and data
write_ModelTemplateTokens.Rd
This function generates and writes the model template and tokens files based on the provided inputs.
Usage
write_ModelTemplateTokens(
TemplateFilePath = "template.txt",
TokensFilePath = "tokens.json",
Description = "",
Author = "",
DataFilePath,
DataMapping = NULL,
ColDef = "",
PMLParametersSets,
EstArgs = specify_EngineParams(),
SimArgs = "",
Tables = list(),
AppendixRows = "",
OmegaSearchBlocks = list()
)
Arguments
- TemplateFilePath
TemplateFilePath NLME template file path to be written (usually txt).
- TokensFilePath
json file path to be written (usually json).
- Description
A problem name to be outputted in Description section.
The author information for the model to be outputted in Author section.
- DataFilePath
A data file path used by NLME.
- DataMapping
A named vector ModelTerm = DataTerm for the used data file.
- ColDef
A character string specifying additional column definitions in NLME column definition format. See https://onlinehelp.certara.com/phoenix/8.4/index.html#t=Phoenix_UserDocs%2FPML%2FColumn_mappings.htm
- PMLParametersSets
A list of PML parameters sets (
PMLModels
class instance).- EstArgs
Estimation arguments for the model template. Please use
specify_EngineParams
to specify the arguments passed to NLME.- SimArgs
Simulation arguments for the model template. Please use
specify_SimParams
to specify the arguments passed to NLME.- Tables
A list of
Table
class instances specifying properties of the tables to be generated after fitting or during simulation.- AppendixRows
Additional rows to include in the model template appendix in NLME column definition format. See https://onlinehelp.certara.com/phoenix/8.4/index.html#t=Phoenix_UserDocs%2FPML%2FColumn_mappings.htm
- OmegaSearchBlocks
A list of character vectors representing omega names to try to build block omegas.
Details
Terms <DosepointName>_Duration
or <DosepointName>_Rate
could be
used to map rate/duration columns for the current dosepoints. Term
<ObservationName>BQL
could be used to map BQL flag for the current
observation. AMT
term could be used to map different main dosepoints (i.e.
A1 will be mapped for Gamma
, Aa for First-Order
absorption etc.) If AMT
term is used, additional terms Duration
or Rate
could be used; current
function will map it to the main dosepoint of each Parameter set. But it is
possible to map duration/rate for some dosepoint directly using terms
<DosepointName>_Duration
or <DosepointName>_Rate
, it will override
Duration
or Rate
terms mapping for current dosepoint.
Examples
# Write model template and tokens files
PMLParametersSets <- create_ModelPK(CompartmentsNumber = c(1,2))
# write test data frame
TempFolder <- tempdir()
TemplateFilePath <- file.path(TempFolder, "template.txt")
TokensFilePath <- file.path(TempFolder, "tokens.json")
DataFilePath <- file.path(TempFolder, "Data.csv")
write.csv(data.frame(id = 'id',
time = 'time',
AMT = 'AMT',
Conc = 'Conc',
age = 'age',
Weight = 'Weight',
CObsBQL = 'CObsBQL'),
DataFilePath)
write_ModelTemplateTokens(TemplateFilePath = TemplateFilePath,
TokensFilePath = TokensFilePath,
Description = "1-2Cpts try",
Author = "Certara",
DataFilePath = DataFilePath,
DataMapping = c(ID = "id",
time = "time",
CObs = "Conc",
AMT = "AMT",
"age"),
ColDef = "",
PMLParametersSets = PMLParametersSets,
EstArgs = specify_EngineParams(method = "QRPEM"),
SimArgs = specify_SimParams(numReplicates = 1000L),
Tables = list(Table(Name = "simtable1.csv",
KeepSource = TRUE,
VariablesList = "C",
ForSimulation = TRUE)),
OmegaSearchBlocks = list(c("nCl", "nV"), c("nCl2", "nV2")))
#> information stored in C:\Users\jcraig\AppData\Local\Temp\RtmpUzWY2l/template.txt and C:\Users\jcraig\AppData\Local\Temp\RtmpUzWY2l/tokens.json
#> $TokensList
#> $TokensList$PML
#> $TokensList$PML$PK1IVC
#> MAPText
#> " A1 = AMT CObs = Conc"
#> PMLText
#> "test() {\n\tcfMicro(A1, Cl / V)\n\tC = A1 / V\n\tdosepoint(A1, idosevar = A1Dose, infdosevar = A1InfDose, infratevar = A1InfRate)\n\terror(CEps = 0.1)\n\tobserve(CObs = C * (1 + CEps))\n\t\n\tstparm(Cl = tvCl * exp( nCl ))\n\tfixef(tvCl= c(, 1, ))\n\tranef(diag(nCl) = c(1))\n\tstparm(V = tvV * exp( nV ))\n\tfixef(tvV= c(, 1, ))\n\tranef(diag(nV) = c(1))\n\n\t#search_block(nCl, nV)\n}"
#>
#> $TokensList$PML$PK2IVC
#> MAPText
#> " A1 = AMT CObs = Conc"
#> PMLText
#> "test() {\n\tcfMicro(A1, Cl / V, Cl2 / V, Cl2 / V2)\nC = A1 / V\n\tdosepoint(A1, idosevar = A1Dose, infdosevar = A1InfDose, infratevar = A1InfRate)\n\terror(CEps = 0.1)\n\tobserve(CObs = C * (1 + CEps))\n\t\n\tstparm(Cl = tvCl * exp( nCl ))\n\tfixef(tvCl= c(, 1, ))\n\tranef(diag(nCl) = c(1))\n\tstparm(V = tvV * exp( nV ))\n\tfixef(tvV= c(, 1, ))\n\tranef(diag(nV) = c(1))\n\tstparm(Cl2 = tvCl2 * exp( nCl2 ))\n\tfixef(tvCl2= c(, 1, ))\n\tranef(diag(nCl2) = c(1))\n\tstparm(V2 = tvV2 * exp( nV2 ))\n\tfixef(tvV2= c(, 1, ))\n\tranef(diag(nV2) = c(1))\n\n\t#search_block(nCl, nV)\n\t#search_block(nCl2, nV2)\n}"
#>
#>
#>
#> $Template
#> $Template$Description
#> [1] "##Description: 1-2Cpts try"
#>
#> $Template$Author
#> [1] "##Author: Certara"
#>
#> $Template$DATA
#> [1] "##DATA {data_dir}/Data.csv"
#>
#> $Template$MAP
#> [1] "##MAP {PML[1]} ID = id time = time age = age"
#>
#> $Template$MODEL
#> [1] "##MODEL {PML[2]}"
#>
#> $Template$ESTARGS
#> [1] "##ESTARGS\n sort=FALSE method=QRPEM"
#>
#> $Template$SIMARGS
#> [1] "##SIMARGS\n numReplicates=1000 seed=1234 sort=FALSE"
#>
#> $Template$TABLES
#> [1] "##TABLES\nsimtbl(file=\"simtable1.csv\", C, mode = keep)\n"
#>
#>