From a89a94de86b3496d82ca37823492554e0e5c12d1 Mon Sep 17 00:00:00 2001 From: Michael Neely Date: Sun, 14 Dec 2025 11:54:05 +0100 Subject: [PATCH 1/4] new setPMoptions --- R/PM_sim.R | 50 +++-- R/PMoptions.R | 576 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 440 insertions(+), 186 deletions(-) diff --git a/R/PM_sim.R b/R/PM_sim.R index 70fa3eeb..7a6b3e1d 100755 --- a/R/PM_sim.R +++ b/R/PM_sim.R @@ -571,6 +571,8 @@ PM_sim <- R6::R6Class( )) } + useTheta <- FALSE # default, unless poppar is theta.csv format + # CASE 1 - poppar is PM_result if (inherits(poppar, "PM_result")) { @@ -666,8 +668,13 @@ PM_sim <- R6::R6Class( # not returning because going on to simulate below ### This is for loading a saved simulation from file + } else if (inherits(poppar, "data.frame")){ # poppar is in the form of theta.csv + poppar$prob <- 1/nrow(poppar) + final <- list(popPoints = poppar) + useTheta <- TRUE + case <- 8 - # CASE 8 - last option, poppar is filename + # CASE 9 - last option, poppar is filename } else { if (file.exists(poppar)) { if (grepl("rds$", poppar, perl = TRUE)) { # poppar is rds filename @@ -695,9 +702,9 @@ PM_sim <- R6::R6Class( } # end if poppar is filename # If we reach this point, we are creating a new simulation - + # check model and data - if(case %in% c(2, 3, 7)) { # need model and data if not from PM_result + if(case %in% c(2, 3, 7, 8)) { # need model and data if not from PM_result if (missing(model)) { model <- "model.txt" } # try the default if (!inherits(model, "PM_model")) {model <- PM_model$new(model, compile = FALSE)} # compile later @@ -791,7 +798,7 @@ PM_sim <- R6::R6Class( seed = seed, ode = ode, noise = noise, makecsv = makecsv, outname = outname, clean = clean, - quiet = quiet, + quiet = quiet, useTheta = useTheta, nocheck = nocheck, overwrite = overwrite, msg = msg ) @@ -899,14 +906,14 @@ PM_sim <- R6::R6Class( covariate, usePost, seed, ode, noise, - makecsv, outname, clean, quiet, + makecsv, outname, clean, quiet, useTheta, nocheck, overwrite, msg) { # DATA PROCESSING AND VALIDATION ------------------------------------------ ###### POPPAR - npar <- nrow(poppar$popCov) + npar <- ncol(poppar$popPoints) - 1 ###### MODEL @@ -1182,13 +1189,13 @@ PM_sim <- R6::R6Class( "i" = "E.g. {.code limits = list(wt = c(40, 80), age = c(10, 50))}. See {.fn PM_sim} for help." )) } - + # figure out which covariates have different limits and change them covUpdates <- tibble::enframe(covariate$limits, name = "par", value = "rng") %>% tidyr::unnest_wider(rng, names_sep = "") %>% dplyr::rename(min = rng1, max = rng2) - + covLimits <- dplyr::rows_update(covLimits, covUpdates, by = "par") # goodNames <- which(names(covMean) %in% names(covariate$limits)) @@ -1350,17 +1357,21 @@ PM_sim <- R6::R6Class( } else { # postToUse is false # set theta as nsim rows drawn from prior - thisPrior <- private$getSimPrior( - i = 1, - poppar = poppar, - split = split, - postToUse = NULL, - limits = limits, - seed = seed[1], - nsim = nsim, - toInclude = toInclude, - msg = msg - ) + if(!useTheta){ + thisPrior <- private$getSimPrior( + i = 1, + poppar = poppar, + split = split, + postToUse = NULL, + limits = limits, + seed = seed[1], + nsim = nsim, + toInclude = toInclude, + msg = msg + ) + } else { + thisPrior <- list(thetas = poppar$popPoints) + } self$data <- private$getSim(thisPrior, template, mod, noise2, msg = msg) } @@ -1506,7 +1517,6 @@ PM_sim <- R6::R6Class( # call simulator and process results getSim = function(thisPrior, template, mod, noise2, msg = NULL) { - thetas <- thisPrior$thetas %>% select(-prob) %>% as.matrix() diff --git a/R/PMoptions.R b/R/PMoptions.R index d2d8ea23..d21b0f82 100755 --- a/R/PMoptions.R +++ b/R/PMoptions.R @@ -100,208 +100,452 @@ setPMoptions <- function(launch.app = TRUE) { # --- UI --- ui = bslib::page_fluid( - theme = bslib::bs_theme(bootswatch = "flatly"), + theme = bslib::bs_theme( + bootswatch = "flatly", + primary = "#2c3e50", + "card-border-radius" = "0.5rem" + ), title = "Pmetrics Options", - tags$details( - tags$summary("Data File Reading"), - selectInput("sep", "Field separator", - choices = c(Comma = ",", Semicolon = ";", Tab = "\t"), - selected = ","), + shiny::tags$div( + class = "container-fluid p-4", - selectInput("dec", "Decimal mark", - choices = c(Period = ".", Comma = ","), - selected = ".") - ), - # Formatting options - tags$details( - tags$summary("Formatting Options"), - numericInput("digits", "Number of digits to display", - value = 3, min = 0, max = 10, step = 1) - ), - - - #Compile options - # tags$details( - # tags$summary("Compile Options"), - # markdown("Default Rust model template path is in Pmetrics package installation folder. Change if you have write permission errors."), - # tags$div( - # style = "display: flex; align-items: flex-start; gap: 8px;", - # textAreaInput("model_template_path", NULL, value = system.file(package = "Pmetrics"), autoresize = TRUE), - # actionButton("reset_model_template", "Reset to default", class = "btn-secondary") - # ), - # conditionalPanel( - # condition = "input.show == false",selectInput("backend", "Default backend", - # choices = c("Rust" = "rust"), - # selected = "rust"), - # markdown("*Rust is the only backend currently supported by Pmetrics.*") - # ) - # ), - - tags$details( - tags$summary("Prediction Error Metrics"), - br(), - checkboxInput("show_metrics", "Display error metrics on obs-pred plots with linear regression", TRUE), - selectInput("bias_method", "Bias Method", - choices = c( - "Mean absolute error (MAE)" = "mae", - "Mean weighted error (MWE)" = "mwe" + # Header + shiny::tags$div( + class = "mb-4", + shiny::tags$h2( + class = "mb-1", + shiny::icon("cog", class = "me-2"), + "Pmetrics Options" + ), + shiny::tags$p(class = "text-muted mb-0", "Configure your Pmetrics preferences") ), - selected = "mwe"), - selectInput("imp_method", "Imprecision Method", - choices = c( + # Main content layout - use fluidRow for proper spacing + shiny::fluidRow( + # Left column + shiny::column( + width = 6, + # Data File Reading Card + bslib::card( + class = "mb-3", + bslib::card_header( + class = "bg-primary text-white", + shiny::icon("file-csv", class = "me-2"), + "Data File Reading" + ), + bslib::card_body( + shiny::fluidRow( + shiny::column( + width = 6, + shiny::selectInput( + "sep", + bslib::tooltip( + shiny::tags$span("Field separator", shiny::icon("circle-question", class = "ms-1 text-muted")), + "Character used to separate fields in data files" + ), + choices = c(Comma = ",", Semicolon = ";", Tab = "\t"), + selected = "," + ) + ), + shiny::column( + width = 6, + shiny::selectInput( + "dec", + bslib::tooltip( + shiny::tags$span("Decimal mark", shiny::icon("circle-question", class = "ms-1 text-muted")), + "Character used as decimal point in numbers" + ), + choices = c(Period = ".", Comma = ","), + selected = "." + ) + ) + ) + ) + ), + + # Formatting Options Card + bslib::card( + class = "mb-3", + bslib::card_header( + class = "bg-primary text-white", + shiny::icon("hashtag", class = "me-2"), + "Display Formatting" + ), + bslib::card_body( + shiny::numericInput( + "digits", + bslib::tooltip( + shiny::tags$span("Decimal places", shiny::icon("circle-question", class = "ms-1 text-muted")), + "Number of decimal places to show in output" + ), + value = 3, min = 0, max = 10, step = 1 + ) + ) + ), + + # Report Generation Card + bslib::card( + class = "mb-3", + bslib::card_header( + class = "bg-primary text-white", + shiny::icon("file-lines", class = "me-2"), + "Fit Report Template" + ), + bslib::card_body( + shiny::selectInput( + "report_template", + bslib::tooltip( + shiny::tags$span("Plot library", shiny::icon("circle-question", class = "ms-1 text-muted")), + "HTML summary of model fit to open in browser" + ), + choices = c( + "Interactive (plotly)" = "plotly", + "Static (ggplot2)" = "ggplot2" + ), + selected = "plotly" + ) + ) + ) + ), # end left column - "Mean squared error (MSE)" = "mse", - "Mean weighted squared error (MWSE)" = "mwse", - "Root mean squared error (RMSE)" = "rmse", - "Mean, bias-adjusted, squared error (MBASE)" = "mbase", - "Mean, bias-adjusted, weighted, squared error (MBAWSE)" = "mbawse", - "Root mean, bias-adjusted, weighted, squared error (RMBAWSE)" = "rmbawse" - ), - selected = "rmbawse"), - - checkboxInput("use_percent", "Use percent for error metrics", value = TRUE), - - selectInput("ic_method", "Information Criterion Method", - choices = c( - "Akaike Information Criterion (AIC)" = "aic", - "Bayesian Information Criterion (BIC)" = "bic" - ), - selected = "aic") + # Right column - Prediction Error Metrics Card + shiny::column( + width = 6, + bslib::card( + class = "mb-3", + bslib::card_header( + class = "bg-primary text-white", + shiny::icon("chart-line", class = "me-2"), + "Prediction Error Metrics" + ), + bslib::card_body( + shiny::tags$div( + class = "mb-3", + bslib::input_switch( + "show_metrics", + shiny::tags$span( + "Show metrics on plots", + bslib::tooltip( + shiny::icon("circle-question", class = "ms-1 text-muted"), + "Display error metrics on observed vs. predicted plots" + ) + ), + value = TRUE + ) + ), + + shiny::tags$hr(class = "my-3"), + + shiny::selectInput( + "bias_method", + bslib::tooltip( + shiny::tags$span("Bias method", shiny::icon("circle-question", class = "ms-1 text-muted")), + "Method to calculate prediction bias (accuracy)" + ), + choices = c( + "Mean Absolute Error (MAE)" = "mae", + "Mean Weighted Error (MWE)" = "mwe" + ), + selected = "mwe" + ), + + shiny::selectInput( + "imp_method", + bslib::tooltip( + shiny::tags$span("Imprecision method", shiny::icon("circle-question", class = "ms-1 text-muted")), + "Method to calculate prediction imprecision (scatter)" + ), + choices = c( + "Mean Squared Error (MSE)" = "mse", + "Mean Weighted Squared Error (MWSE)" = "mwse", + "Root Mean Squared Error (RMSE)" = "rmse", + "Mean Bias-Adjusted Squared Error (MBASE)" = "mbase", + "Mean Bias-Adjusted Weighted Squared Error (MBAWSE)" = "mbawse", + "Root Mean Bias-Adjusted Weighted Squared Error (RMBAWSE)" = "rmbawse" + ), + selected = "rmbawse" + ), + + shiny::tags$div( + class = "mb-3", + bslib::input_switch( + "use_percent", + shiny::tags$span( + "Report as percentages", + bslib::tooltip( + shiny::icon("circle-question", class = "ms-1 text-muted"), + "Express error metrics as percentages" + ) + ), + value = TRUE + ) + ), + + shiny::tags$hr(class = "my-3"), + + shiny::selectInput( + "ic_method", + bslib::tooltip( + shiny::tags$span("Information criterion", shiny::icon("circle-question", class = "ms-1 text-muted")), + "Method for model comparison" + ), + choices = c( + "Akaike Information Criterion (AIC)" = "aic", + "Bayesian Information Criterion (BIC)" = "bic" + ), + selected = "aic" + ) + ) + ) + ) # end right column + ), # end fluidRow - ), - - tags$details( - tags$summary("Report Generation"), - selectInput("report_template", "Default report template", - choices = c("plotly", "ggplot2"), - selected = "plotly") - ), - br(), - div( - class = "d-flex gap-2", - actionButton("save", "Save"), - actionButton("exit", "Exit"), - ), - - br(), - br(), - shiny::verbatimTextOutput("settings_location"), - br(), - - actionButton("open_file", "Open Options File", - icon = icon("folder-open"), class = "btn-primary") + # Footer with buttons and file location + shiny::fluidRow( + shiny::column( + width = 12, + bslib::card( + class = "mt-3", + bslib::card_body( + class = "py-3", + shiny::fluidRow( + # Left side: action buttons with unsaved indicator below + shiny::column( + width = 6, + shiny::tags$div( + id = "button-container", + style = "display: inline-block;", + shiny::tags$div( + class = "d-flex gap-2", + shiny::actionButton( + "save", + shiny::tags$span(shiny::icon("floppy-disk", class = "me-1"), "Save"), + class = "btn-success" + ), + shiny::actionButton( + "exit", + shiny::tags$span(shiny::icon("xmark", class = "me-1"), "Close"), + class = "btn-secondary" + ) + ), + shiny::uiOutput("save_status") + ) + ), + # Right side: file location + shiny::column( + width = 6, + shiny::tags$div( + class = "d-flex gap-2 align-items-center justify-content-end", + shiny::tags$small( + class = "text-muted me-2", + shiny::tags$span( + shiny::icon("folder", class = "me-1"), + "Options file: ", + shiny::textOutput("settings_path", inline = TRUE) + ) + ), + shiny::actionButton( + "open_file", + shiny::tags$span(shiny::icon("external-link-alt", class = "me-1"), "Open"), + class = "btn-outline-primary btn-sm" + ) + ) + ) + ) + ) + ) + ) + ) # end footer fluidRow + ) # end container div ), # --- Server --- server = function(input, output, session) { + # Track if there are unsaved changes + unsaved_changes <- shiny::reactiveVal(FALSE) + # Load settings from external file settings <- tryCatch({ jsonlite::fromJSON(PMoptionsUserFile) }, error = function(e) NULL) - # update this list every time a new option is added - input_types <- list( - sep = updateSelectInput, - dec = updateSelectInput, - show_metrics = updateCheckboxInput, - digits = updateNumericInput, - bias_method = updateSelectInput, - imp_method = updateSelectInput, - use_percent = updateCheckboxInput, - ic_method = updateSelectInput, - report_template = updateSelectInput, - backend = updateSelectInput, - model_template_path = updateTextAreaInput - ) + # Apply saved settings to inputs + if (!is.null(settings)) { + # Select inputs + if (!is.null(settings$sep)) shiny::updateSelectInput(session, "sep", selected = settings$sep) + if (!is.null(settings$dec)) shiny::updateSelectInput(session, "dec", selected = settings$dec) + if (!is.null(settings$digits)) shiny::updateNumericInput(session, "digits", value = settings$digits) + if (!is.null(settings$report_template)) shiny::updateSelectInput(session, "report_template", selected = settings$report_template) + if (!is.null(settings$ic_method)) shiny::updateSelectInput(session, "ic_method", selected = settings$ic_method) + + # Bias/imprecision methods - strip percent_ prefix for display + if (!is.null(settings$bias_method)) { + shiny::updateSelectInput(session, "bias_method", selected = stringr::str_remove(settings$bias_method, "^percent_")) + } + if (!is.null(settings$imp_method)) { + shiny::updateSelectInput(session, "imp_method", selected = stringr::str_remove(settings$imp_method, "^percent_")) + } + + # Switch inputs - bslib::update_switch uses 'id' not 'inputId' + if (!is.null(settings$show_metrics)) bslib::update_switch(id = "show_metrics", value = settings$show_metrics, session = session) + if (!is.null(settings$use_percent)) { + # Determine use_percent from the bias_method prefix + use_pct <- grepl("^percent_", settings$bias_method) + bslib::update_switch(id = "use_percent", value = use_pct, session = session) + } + } + # Flag to track if initial load is complete + # We use a timer to wait for the async update cycle to complete: + # 1) Server sends update messages to client + # 2) Client updates inputs and sends new values back + # 3) Server receives the updated values + # This round-trip needs time to complete before we start tracking changes + initialized <- shiny::reactiveVal(FALSE) + init_timer <- shiny::reactiveTimer(1000, session) - # Apply updates - purrr::imap(settings, function(val, name) { - updater <- input_types[[name]] - arg_name <- input_types[[name]] %>% formals() %>% names() %>% keep(~ .x %in% c("value", "selected")) - - if (!is.null(updater) && !is.null(arg_name)) { - args <- list(session = session, inputId = name) - args[[arg_name]] <- val %>% stringr::str_remove("^percent_") # remove 'percent_' prefix if present - do.call(updater, args) - } - }) + shiny::observeEvent(init_timer(), { + initialized(TRUE) + }, once = TRUE, ignoreInit = TRUE) + + # Mark changes when any input changes (only after initialization) + shiny::observe({ + # Only mark changes after initial load is complete + if (initialized()) { + unsaved_changes(TRUE) + } + }) |> shiny::bindEvent( + input$sep, input$dec, input$digits, input$show_metrics, + input$bias_method, input$imp_method, input$use_percent, + input$ic_method, input$report_template, + ignoreInit = TRUE + ) - # Display path to user settings file - output$settings_location <- renderText({ - glue::glue("Options file path:\n{PMoptionsUserFile}") + # Display path to user settings file (truncated for display) + output$settings_path <- shiny::renderText({ + # Truncate path for display if too long + path <- PMoptionsUserFile + if (nchar(path) > 50) { + path <- paste0("...", substr(path, nchar(path) - 47, nchar(path))) + } + path }) + # Show save status indicator below the buttons (full width of button container) + output$save_status <- shiny::renderUI({ + if (unsaved_changes()) { + shiny::tags$div( + class = "mt-2 badge bg-warning text-dark d-flex align-items-center justify-content-center py-2", + style = "width: 100%;", + shiny::icon("exclamation-triangle", class = "me-1"), + "Unsaved changes" + ) + } else { + NULL + } + }) ### Action button handlers # Save updated settings - observeEvent(input$save, { - settings <- list(sep = input$sep, dec = input$dec, digits = input$digits, show_metrics = input$show_metrics, - bias_method = glue::glue(c("","percent_")[1+as.numeric(input$use_percent)], input$bias_method), - imp_method = glue::glue(c("","percent_")[1+as.numeric(input$use_percent)], input$imp_method), + shiny::observeEvent(input$save, { + settings <- list( + sep = input$sep, + dec = input$dec, + digits = input$digits, + show_metrics = input$show_metrics, + bias_method = glue::glue(c("", "percent_")[1 + as.numeric(input$use_percent)], input$bias_method), + imp_method = glue::glue(c("", "percent_")[1 + as.numeric(input$use_percent)], input$imp_method), ic_method = input$ic_method, - report_template = input$report_template, backend = input$backend, - model_template_path = input$model_template_path) - - save_status <- tryCatch(jsonlite::write_json(settings, PMoptionsUserFile, pretty = TRUE, auto_unbox = TRUE), - error = function(e) { - shiny::showNotification( - paste("Error saving settings:", e$message), - type = "error", duration = 5 - ) - return(FALSE) - }) + report_template = input$report_template, + backend = input$backend, + model_template_path = input$model_template_path + ) + + tryCatch({ + jsonlite::write_json(settings, PMoptionsUserFile, pretty = TRUE, auto_unbox = TRUE) + unsaved_changes(FALSE) shiny::showNotification( - "Settings saved", type = "message", duration = 3 + shiny::tags$span(shiny::icon("check", class = "me-1"), "Settings saved successfully!"), + type = "message", + duration = 3 ) - }) - - # Reset model template path to default - observeEvent(input$reset_model_template, { - updateTextAreaInput( - session, - inputId = "model_template_path", - value = system.file(package = "Pmetrics") + }, error = function(e) { + shiny::showNotification( + shiny::tags$span(shiny::icon("times-circle", class = "me-1"), paste("Error saving:", e$message)), + type = "error", + duration = 5 ) }) - - - # Exit the app - observeEvent(input$exit, { + }) + + # Reset model template path to default + shiny::observeEvent(input$reset_model_template, { + shiny::updateTextAreaInput( + session, + inputId = "model_template_path", + value = system.file(package = "Pmetrics") + ) + }) + + # Exit the app with confirmation if unsaved changes + shiny::observeEvent(input$exit, { + if (unsaved_changes()) { + shiny::showModal(shiny::modalDialog( + title = shiny::tags$span(shiny::icon("exclamation-triangle", class = "me-2 text-warning"), "Unsaved Changes"), + "You have unsaved changes. Are you sure you want to exit?", + footer = shiny::tagList( + shiny::actionButton("confirm_exit", "Exit without saving", class = "btn-danger"), + shiny::modalButton("Cancel") + ), + easyClose = TRUE + )) + } else { shiny::stopApp() - # if (file.access(input$model_template_path, 0) == 0 & file.access(input$model_template_path, 2) == 0){ - # shiny::stopApp() - # } else { - # shiny::showModal(shiny::modalDialog( - # title = "Permission Error", - # "The specified model template path is not writable. Please choose a different path with write permissions before exiting.", - # easyClose = TRUE, - # footer = NULL - # )) - # } - }) - - # Open the options file in the default application - observeEvent(input$open_file, { - system(glue::glue("open {PMoptionsUserFile}")) - }) - } #end server - ) #end shinyApp - + } + }) + + # Confirm exit without saving + shiny::observeEvent(input$confirm_exit, { + shiny::removeModal() + shiny::stopApp() + }) + + # Open the options file in the default application (cross-platform) + shiny::observeEvent(input$open_file, { + os <- getOS() + if (os == 1) { + # macOS + system2("open", PMoptionsUserFile) + } else if (os == 2) { + # Windows - use shell command + system2("cmd", c("/c", "start", "", shQuote(PMoptionsUserFile))) + } else if (os == 3) { + # Linux + system2("xdg-open", PMoptionsUserFile) + } else { + shiny::showNotification( + "Unable to open file on this operating system.", + type = "warning", + duration = 3 + ) + } + }) + } #end server + ) #end shinyApp - # Launch the app without trying to launch another browser - if(launch.app){ - shiny::runApp(app, launch.browser = TRUE) - } - return(invisible(NULL)) + # Launch the app without trying to launch another browser + if(launch.app){ + shiny::runApp(app, launch.browser = TRUE) + } + + return(invisible(NULL)) - } # end of PM_options function +} # end of PM_options function From e2ab5b528ffda768633a06249ff7d1caef15e86e Mon Sep 17 00:00:00 2001 From: Michael Neely Date: Fri, 9 Jan 2026 08:33:54 -0800 Subject: [PATCH 2/4] Resoloving issues with PM_tutorial --- .gitignore | 1 + Learn/Rscript/Learn.R | 11 + Learn/src/ex.csv | 260 +++ R/PM_model.R | 3572 +++++++++++++++++++++-------------------- R/PMoptions.R | 22 +- data-raw/data-raw.R | 33 + man/PM_pta.Rd | 2 +- man/summary.PM_pta.Rd | 2 +- 8 files changed, 2105 insertions(+), 1798 deletions(-) create mode 100644 Learn/Rscript/Learn.R create mode 100644 Learn/src/ex.csv diff --git a/.gitignore b/.gitignore index bff4a219..ed5327c2 100755 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ .DS_Store PmetricsGit.Rproj + # Build/check artifacts /*.tar.gz /*.Rcheck/ diff --git a/Learn/Rscript/Learn.R b/Learn/Rscript/Learn.R new file mode 100644 index 00000000..d3c1ec09 --- /dev/null +++ b/Learn/Rscript/Learn.R @@ -0,0 +1,11 @@ +# This is an R script you can use to accompany the "Introduction to Pmetrics" online book. +# You can find the book at https://lapkb.github.io/PM_tutorial/ + + +##### EXECUTE THIS CODE + +library(Pmetrics) # load the Pmetrics library +wd <- "/Users/mneely/Library/CloudStorage/OneDrive-CHILDRENSHOSPITALLOSANGELES/Documents/LAPK/Development/Pmetrics_rust/Learn" +setwd(wd) # all needed files will be here + +##### PASTE THE CODE FROM THE BOOK BELOW THIS LINE diff --git a/Learn/src/ex.csv b/Learn/src/ex.csv new file mode 100644 index 00000000..6559d360 --- /dev/null +++ b/Learn/src/ex.csv @@ -0,0 +1,260 @@ +id,time,dose,out,wt,africa,age,gender,height +1,0,600,.,46.7,1,21,1,160 +1,24,600,.,46.7,1,21,1,160 +1,48,600,.,46.7,1,21,1,160 +1,72,600,.,46.7,1,21,1,160 +1,96,600,.,46.7,1,21,1,160 +1,120,.,10.44,46.7,1,21,1,160 +1,120,600,.,46.7,1,21,1,160 +1,121,.,12.89,46.7,1,21,1,160 +1,122,.,14.98,46.7,1,21,1,160 +1,125.99,.,16.69,46.7,1,21,1,160 +1,129,.,20.15,46.7,1,21,1,160 +1,132,.,14.97,46.7,1,21,1,160 +1,143.98,.,12.57,46.7,1,21,1,160 +2,0,600,.,66.5,1,30,1,174 +2,24,600,.,66.5,1,30,1,174 +2,48,600,.,66.5,1,30,1,174 +2,72,600,.,66.5,1,30,1,174 +2,96,600,.,66.5,1,30,1,174 +2,120,.,3.56,66.5,1,30,1,174 +2,120,600,.,66.5,1,30,1,174 +2,120.98,.,5.84,66.5,1,30,1,174 +2,121.98,.,6.54,66.5,1,30,1,174 +2,126,.,6.14,66.5,1,30,1,174 +2,129.02,.,6.56,66.5,1,30,1,174 +2,132.02,.,4.44,66.5,1,30,1,174 +2,144,.,3.76,66.5,1,30,1,174 +3,0,600,.,46.7,1,24,0,164 +3,24,600,.,46.7,1,24,0,164 +3,48,600,.,46.7,1,24,0,164 +3,72,600,.,46.7,1,24,0,164 +3,96,600,.,46.7,1,24,0,164 +3,120,600,.,46.7,1,24,0,164 +3,120.08,.,4.06,46.7,1,24,0,164 +3,121.07,.,3.24,46.7,1,24,0,164 +3,122.08,.,3.09,46.7,1,24,0,164 +3,126.08,.,7.98,46.7,1,24,0,164 +3,129.05,.,7.23,46.7,1,24,0,164 +3,132.1,.,4.71,46.7,1,24,0,164 +3,144.08,.,3.82,46.7,1,24,0,164 +4,0,600,.,50.8,1,25,1,165 +4,24,600,.,50.8,1,25,1,165 +4,48,600,.,50.8,1,25,1,165 +4,72,600,.,50.8,1,25,1,165 +4,96,600,.,50.8,1,25,1,165 +4,120,.,2.1,50.8,1,25,1,165 +4,120,600,.,50.8,1,25,1,165 +4,121,.,3.05,50.8,1,25,1,165 +4,122.02,.,5.21,50.8,1,25,1,165 +4,126,.,5.09,50.8,1,25,1,165 +4,129.03,.,4.24,50.8,1,25,1,165 +4,132,.,3.69,50.8,1,25,1,165 +4,144.02,.,1.96,50.8,1,25,1,165 +5,0,600,.,65.8,1,22,1,181 +5,24,600,.,65.8,1,22,1,181 +5,48,600,.,65.8,1,22,1,181 +5,72,600,.,65.8,1,22,1,181 +5,96,600,.,65.8,1,22,1,181 +5,120,.,2.93,65.8,1,22,1,181 +5,120,600,.,65.8,1,22,1,181 +5,121,.,2.64,65.8,1,22,1,181 +5,122,.,4.8,65.8,1,22,1,181 +5,126,.,3.7,65.8,1,22,1,181 +5,129.02,.,4.13,65.8,1,22,1,181 +5,132,.,2.81,65.8,1,22,1,181 +5,144,.,2.21,65.8,1,22,1,181 +6,0,600,.,65,1,23,1,177 +6,24,600,.,65,1,23,1,177 +6,48,600,.,65,1,23,1,177 +6,72,600,.,65,1,23,1,177 +6,96,600,.,65,1,23,1,177 +6,120,.,6.92,65,1,23,1,177 +6,120,600,.,65,1,23,1,177 +6,121,.,6.89,65,1,23,1,177 +6,121.98,.,6.64,65,1,23,1,177 +6,126,.,13.72,65,1,23,1,177 +6,129,.,12.69,65,1,23,1,177 +6,131.98,.,10.58,65,1,23,1,177 +6,144.98,.,6.62,65,1,23,1,177 +7,0,600,.,51.7,1,27,0,161 +7,24,600,.,51.7,1,27,0,161 +7,48,600,.,51.7,1,27,0,161 +7,72,600,.,51.7,1,27,0,161 +7,96,600,.,51.7,1,27,0,161 +7,120,.,5.41,51.7,1,27,0,161 +7,120,600,.,51.7,1,27,0,161 +7,121.03,.,4.46,51.7,1,27,0,161 +7,122.03,.,4.54,51.7,1,27,0,161 +7,126.02,.,12.19,51.7,1,27,0,161 +7,129.08,.,12.1,51.7,1,27,0,161 +7,132.03,.,8.61,51.7,1,27,0,161 +7,144.03,.,6.37,51.7,1,27,0,161 +8,0,600,.,51.2,1,22,1,163 +8,24,600,.,51.2,1,22,1,163 +8,48,600,.,51.2,1,22,1,163 +8,72,600,.,51.2,1,22,1,163 +8,96,600,.,51.2,1,22,1,163 +8,120,.,6.19,51.2,1,22,1,163 +8,120,600,.,51.2,1,22,1,163 +8,121.03,.,6.33,51.2,1,22,1,163 +8,122,.,6.24,51.2,1,22,1,163 +8,125.98,.,13.03,51.2,1,22,1,163 +8,128.98,.,11.86,51.2,1,22,1,163 +8,132,.,11.45,51.2,1,22,1,163 +8,143.98,.,7.83,51.2,1,22,1,163 +9,0,600,.,55,1,23,1,174 +9,24,600,.,55,1,23,1,174 +9,48,600,.,55,1,23,1,174 +9,72,600,.,55,1,23,1,174 +9,96,600,.,55,1,23,1,174 +9,120,.,2.85,55,1,23,1,174 +9,120,600,.,55,1,23,1,174 +9,120.97,.,3.7,55,1,23,1,174 +9,122,.,6.65,55,1,23,1,174 +9,125.98,.,6.81,55,1,23,1,174 +9,128.98,.,6.51,55,1,23,1,174 +9,132,.,7.48,55,1,23,1,174 +9,143.98,.,4.51,55,1,23,1,174 +10,0,600,.,52.1,1,32,1,163 +10,24,600,.,52.1,1,32,1,163 +10,48,600,.,52.1,1,32,1,163 +10,72,600,.,52.1,1,32,1,163 +10,96,600,.,52.1,1,32,1,163 +10,120,.,2.93,52.1,1,32,1,163 +10,120,600,.,52.1,1,32,1,163 +10,121,.,4.36,52.1,1,32,1,163 +10,122.02,.,7.79,52.1,1,32,1,163 +10,126,.,11.02,52.1,1,32,1,163 +10,129,.,8.86,52.1,1,32,1,163 +10,131.97,.,6.09,52.1,1,32,1,163 +10,144,.,4.15,52.1,1,32,1,163 +11,0,600,.,56.5,1,34,1,165 +11,24,600,.,56.5,1,34,1,165 +11,48,600,.,56.5,1,34,1,165 +11,72,600,.,56.5,1,34,1,165 +11,96,600,.,56.5,1,34,1,165 +11,120,.,2.09,56.5,1,34,1,165 +11,120,600,.,56.5,1,34,1,165 +11,121.03,.,2.68,56.5,1,34,1,165 +11,122,.,4.71,56.5,1,34,1,165 +11,125.98,.,7.71,56.5,1,34,1,165 +11,129,.,6.31,56.5,1,34,1,165 +11,132,.,5.82,56.5,1,34,1,165 +11,144.13,.,2.63,56.5,1,34,1,165 +12,0,600,.,47.9,1,54,0,160 +12,24,600,.,47.9,1,54,0,160 +12,48,600,.,47.9,1,54,0,160 +12,72,600,.,47.9,1,54,0,160 +12,96,600,.,47.9,1,54,0,160 +12,120,.,7.09,47.9,1,54,0,160 +12,120,600,.,47.9,1,54,0,160 +12,121.03,.,6.18,47.9,1,54,0,160 +12,122.13,.,8.66,47.9,1,54,0,160 +12,126,.,11.16,47.9,1,54,0,160 +12,129,.,9.51,47.9,1,54,0,160 +12,132,.,8.14,47.9,1,54,0,160 +12,144,.,7.89,47.9,1,54,0,160 +13,0,600,.,60.5,1,24,1,180 +13,24,600,.,60.5,1,24,1,180 +13,48,600,.,60.5,1,24,1,180 +13,72,600,.,60.5,1,24,1,180 +13,96,600,.,60.5,1,24,1,180 +13,120,.,6.62,60.5,1,24,1,180 +13,120,600,.,60.5,1,24,1,180 +13,121,.,3.18,60.5,1,24,1,180 +13,122,.,5.41,60.5,1,24,1,180 +13,126,.,10.18,60.5,1,24,1,180 +13,129.02,.,12.84,60.5,1,24,1,180 +13,132,.,12.35,60.5,1,24,1,180 +13,144,.,8.06,60.5,1,24,1,180 +14,0,600,.,59.2,1,26,1,174 +14,24,600,.,59.2,1,26,1,174 +14,48,600,.,59.2,1,26,1,174 +14,72,600,.,59.2,1,26,1,174 +14,96,600,.,59.2,1,26,1,174 +14,120,.,3.63,59.2,1,26,1,174 +14,120,600,.,59.2,1,26,1,174 +14,121,.,4.49,59.2,1,26,1,174 +14,122,.,5.5,59.2,1,26,1,174 +14,126,.,7.28,59.2,1,26,1,174 +14,129,.,5.27,59.2,1,26,1,174 +14,132,.,4.89,59.2,1,26,1,174 +14,144,.,2.68,59.2,1,26,1,174 +15,0,450,.,43,1,19,0,150 +15,24,450,.,43,1,19,0,150 +15,48,450,.,43,1,19,0,150 +15,72,450,.,43,1,19,0,150 +15,96,450,.,43,1,19,0,150 +15,120,.,5.53,43,1,19,0,150 +15,120,450,.,43,1,19,0,150 +15,121,.,4.81,43,1,19,0,150 +15,122,.,8.14,43,1,19,0,150 +15,126,.,9.96,43,1,19,0,150 +15,129,.,8.55,43,1,19,0,150 +15,132.05,.,7.54,43,1,19,0,150 +15,144.05,.,5.74,43,1,19,0,150 +16,0,600,.,64.4,1,25,1,173 +16,24,600,.,64.4,1,25,1,173 +16,48,600,.,64.4,1,25,1,173 +16,72,600,.,64.4,1,25,1,173 +16,96,600,.,64.4,1,25,1,173 +16,120,.,5.48,64.4,1,25,1,173 +16,120,600,.,64.4,1,25,1,173 +16,121,.,6.59,64.4,1,25,1,173 +16,122,.,8.91,64.4,1,25,1,173 +16,126,.,10.57,64.4,1,25,1,173 +16,129,.,9.52,64.4,1,25,1,173 +16,132,.,7.83,64.4,1,25,1,173 +16,143.97,.,4.96,64.4,1,25,1,173 +17,0,600,.,54.8,1,23,1,170 +17,24,600,.,54.8,1,23,1,170 +17,48,600,.,54.8,1,23,1,170 +17,72,600,.,54.8,1,23,1,170 +17,96,600,.,54.8,1,23,1,170 +17,120,.,2.11,54.8,1,23,1,170 +17,120,600,.,54.8,1,23,1,170 +17,121.02,.,1.86,54.8,1,23,1,170 +17,122.02,.,6.92,54.8,1,23,1,170 +17,126,.,9.11,54.8,1,23,1,170 +17,129,.,6.96,54.8,1,23,1,170 +17,132,.,5.64,54.8,1,23,1,170 +17,144.08,.,3.59,54.8,1,23,1,170 +18,0,450,.,44.3,1,20,0,164 +18,24,450,.,44.3,1,20,0,164 +18,48,450,.,44.3,1,20,0,164 +18,72,450,.,44.3,1,20,0,164 +18,96,450,.,44.3,1,20,0,164 +18,120,.,7.95,44.3,1,20,0,164 +18,120,450,.,44.3,1,20,0,164 +18,120.98,.,7.47,44.3,1,20,0,164 +18,121.98,.,8.67,44.3,1,20,0,164 +18,126,.,13.83,44.3,1,20,0,164 +18,129.17,.,14.01,44.3,1,20,0,164 +18,132.17,.,8.97,44.3,1,20,0,164 +18,143.97,.,8.4,44.3,1,20,0,164 +19,0,600,.,50,1,36,1,168 +19,24,600,.,50,1,36,1,168 +19,48,600,.,50,1,36,1,168 +19,72,600,.,50,1,36,1,168 +19,96,600,.,50,1,36,1,168 +19,120,.,5.42,50,1,36,1,168 +19,120,600,.,50,1,36,1,168 +19,121,.,7.08,50,1,36,1,168 +19,122,.,7.27,50,1,36,1,168 +19,125.98,.,20.07,50,1,36,1,168 +19,128.98,.,18.24,50,1,36,1,168 +19,132,.,15.36,50,1,36,1,168 +19,144,.,10.92,50,1,36,1,168 +20,0,600,.,59,1,31,1,170 +20,24,600,.,59,1,31,1,170 +20,48,600,.,59,1,31,1,170 +20,72,600,.,59,1,31,1,170 +20,96,600,.,59,1,31,1,170 +20,120,.,4.71,59,1,31,1,170 +20,120,600,.,59,1,31,1,170 +20,120.77,.,4.5,59,1,31,1,170 +20,121.75,.,3.35,59,1,31,1,170 +20,125.67,.,12.35,59,1,31,1,170 +20,128.67,.,11.56,59,1,31,1,170 +20,143.67,.,6.45,59,1,31,1,170 diff --git a/R/PM_model.R b/R/PM_model.R index 8e6c9ff3..57673c94 100644 --- a/R/PM_model.R +++ b/R/PM_model.R @@ -4,7 +4,6 @@ # Use menu item Code -> Jump To... for rapid navigation # Keyboard Option+Command+O (Mac) or Alt+O (Windows) to fold all - # R6 ---------------------------------------------------------------------- @@ -14,8 +13,8 @@ #' @description #' `r lifecycle::badge("stable")` #' -#' PM_model objects contain the variables, covariates, equations and error models -#' necessary to run a population analysis. +#' PM_model objects contain the variables, covariates, equations and +#' error models necessary to run a population analysis. #' #' @details #' PM_model objects are one of two fundamental objects in Pmetrics, along with @@ -24,9 +23,9 @@ #' population analysis, i.e. estimating the probability distribution of model equation #' paramter values in the population. The PM_model object is created using the #' a model building app (coming soon), by defining a list -#' directly in R, or by reading a model text file. When reading a model text file, +#' directly in R, or by reading a model text file. When reading a model text file, #' the list code is generated and copied to the clipboard for pasting in to scripts. -#' Model files will be deprecated in future versions of Pmetrics. +#' Model files will be deprecated in future versions of Pmetrics. #' #' **Some notes on the example at the end of this help page:** #' @@ -87,7 +86,7 @@ PM_model <- R6::R6Class( #' @field binary_path The full path and filename of the compiled model binary_path = NULL, #' @description - #' This is the method to create a new `PM_model` object. + #' This is the method to create a new `PM_model` object. #' #' The first argument allows creation of a model from a variety of pre-existing #' sources, and if used, all the subsequent arguments will be ignored. If a model @@ -131,7 +130,7 @@ PM_model <- R6::R6Class( #' * Quoted name of a model text file in the #' working directory which will be read and passed to Rust engine. **Note:** Model #' text files are being deprecated in future versions of Pmetrics. - #' + #' #' * List that defines the model directly in R. This will be in the same format as if #' all the subsequent arguments were used. For example: #' ``` @@ -376,19 +375,70 @@ PM_model <- R6::R6Class( #' ``` #' @param ... Not currently used. initialize = function(x = NULL, - pri = NULL, - cov = NULL, - sec = NULL, - eqn = NULL, - lag = NULL, - fa = NULL, - ini = NULL, - out = NULL, - err = NULL, - ...) { - # Store the original function arguments - self$arg_list <- list( - # x = x, + pri = NULL, + cov = NULL, + sec = NULL, + eqn = NULL, + lag = NULL, + fa = NULL, + ini = NULL, + out = NULL, + err = NULL, + ...) { + # Store the original function arguments + self$arg_list <- list( + # x = x, + pri = pri, + cov = cov, + sec = sec, + eqn = eqn, + lag = lag, + fa = fa, + ini = ini, + out = out, + err = err + ) + + if (!is.null(x)) { + model_sections <- c("pri", "cov", "sec", "eqn", "lag", "fa", "ini", "out", "err") + if (is.character(x) && length(x) == 1) { # x is a filename + if (!file.exists(x)) { + cli::cli_abort(c( + "x" = "File {.file {x}} does not exist.", + "i" = "Current directory: {getwd()}" + )) + } + self$arg_list <- private$R6fromFile(x) # read file and populate fields + cli::cli_inform(c("i" = "{.strong Note:} Model files will be deprecated in future versions of Pmetrics.")) + self$copy() # copy to clipboard + } else if (is.list(x)) { # x is a list in R + purrr::walk(model_sections, \(s) { + if (s %in% names(x)) { + self$arg_list[[s]] <- x[[s]] + } + }) + } else if (inherits(x, "PM_model")) { # x is a PM_model object + if (!"arg_list" %in% names(x)) { + cli::cli_abort(c( + "x" = "You have supplied an older {.code PM_model} format.", + "i" = "Please see for {.help Pmetrics::PM_model()} to remake it." + )) + } + + purrr::walk(model_sections, \(s) { + if (s %in% names(x$arg_list)) { + self$arg_list[[s]] <- x$arg_list[[s]] + } + }) + self$arg_list$x <- NULL + } else { + cli::cli_abort(c( + "x" = "Non supported input for {.arg x}: {typeof(x)}", + "i" = "It must be a filename, list, or current {.code PM_model} object." + )) + } + } else { # x is NULL, check if other arguments are NULL + named_args <- list( pri = pri, cov = cov, sec = sec, @@ -399,1096 +449,1049 @@ PM_model <- R6::R6Class( out = out, err = err ) - - if (!is.null(x)) { - model_sections <- c("pri", "cov", "sec", "eqn", "lag", "fa", "ini", "out", "err") - if (is.character(x) && length(x) == 1) { # x is a filename - if (!file.exists(x)) { - cli::cli_abort(c( - "x" = "File {.file {x}} does not exist.", - "i" = "Current directory: {getwd()}" - )) - } - self$arg_list <- private$R6fromFile(x) # read file and populate fields - cli::cli_inform(c("i" = "{.strong Note:} Model files will be deprecated in future versions of Pmetrics.")) - self$copy() # copy to clipboard - - } else if (is.list(x)) { # x is a list in R - purrr::walk(model_sections, \(s) { - if (s %in% names(x)) { - self$arg_list[[s]] <- x[[s]] - } - }) - } else if (inherits(x, "PM_model")) { # x is a PM_model object - if (!"arg_list" %in% names(x)) { - cli::cli_abort(c( - "x" = "You have supplied an older {.code PM_model} format.", - "i" = "Please see for {.help Pmetrics::PM_model()} to remake it." - )) - } - - purrr::walk(model_sections, \(s) { - if (s %in% names(x$arg_list)) { - self$arg_list[[s]] <- x$arg_list[[s]] - } - }) - self$arg_list$x <- NULL - } else { - cli::cli_abort(c( - "x" = "Non supported input for {.arg x}: {typeof(x)}", - "i" = "It must be a filename, list, or current {.code PM_model} object." - )) - } - } else { # x is NULL, check if other arguments are NULL - named_args <- list( - pri = pri, - cov = cov, - sec = sec, - eqn = eqn, - lag = lag, - fa = fa, - ini = ini, - out = out, - err = err - ) - other_args <- list(...) - all_args <- c(named_args, other_args) - if (all(sapply(all_args, is.null))) { # everything is NULL - self <- build_model() # launch the shiny app - return(invisible(self)) - } - } # no, some arguments were not NULL, so keep going - - msg <- NULL - - # check for reserved variable names - conflict_vars <- reserved_name_conflicts(self$arg_list) - if (length(conflict_vars) > 0) { - msg <- "The following {?is a/are} reserved name{?s} and cannot be used as {?a variable or covariate/variables or covariates} in the model: {.var {conflict_vars}}." - } - - # Primary parameters must be provided - if (is.null(self$arg_list$pri)) { - msg <- c(msg, "Primary parameters are missing.") - } - - - # Either an ODE-based model or an analytical model must be provided in eqn - if (is.null(self$arg_list$eqn)) { - msg <- c(msg, "No equations or template provided. Please provide either a template (see {.help model_lib}) or differential equations.") + other_args <- list(...) + all_args <- c(named_args, other_args) + if (all(sapply(all_args, is.null))) { # everything is NULL + self <- build_model() # launch the shiny app + return(invisible(self)) } - - - - # Get model template name if present (NA if absent) and set type - model_template <- get_found_model(self$arg_list$eqn) # function defined below, returns 0 if not found, -1 if error - - # change logic; need to accomodate library models that are ODEs - if (length(model_template) > 1 && model_template$analytical) { - type <- "Analytical" - } else { - if (model_template == -1) { - # length was 1, value 0 - msg <- c(msg, "A maximum of one model template can be included in a model.") - } - + } # no, some arguments were not NULL, so keep going + + msg <- NULL + + # check for reserved variable names + conflict_vars <- reserved_name_conflicts(self$arg_list) + if (length(conflict_vars) > 0) { + msg <- "The following {?is a/are} reserved name{?s} and cannot be used as {?a variable or covariate/variables or covariates} in the model: {.var {conflict_vars}}." + } + + # Primary parameters must be provided + if (is.null(self$arg_list$pri)) { + msg <- c(msg, "Primary parameters are missing.") + } + + + # Either an ODE-based model or an analytical model must be provided in eqn + if (is.null(self$arg_list$eqn)) { + msg <- c(msg, "No equations or template provided. Please provide either a template (see {.help model_lib}) or differential equations.") + } + + + # Get model template name if present (NA if absent) and set type + model_template <- get_found_model(self$arg_list$eqn) # function defined below, returns 0 if not found, -1 if error + + # change logic; need to accomodate library models that are ODEs + if (length(model_template) > 1 && model_template$analytical) { + type <- "Analytical" + } else { + if (model_template == -1) { # length was 1, value 0 - type <- "ODE" - } - - # Number of equations - n_eqn <- if (type == "Analytical") { - model_template$ncomp - } else { - get_assignments(self$arg_list$eqn, "dx") + msg <- c(msg, "A maximum of one model template can be included in a model.") } - n_out <- get_assignments(self$arg_list$out, "y") - - ## Get the names of the parameters - parameters <- tolower(names(self$arg_list$pri)) - covariates <- tolower(names(self$arg_list$cov)) - ## check to make sure required parameters present if Analytical - if (type == "Analytical") { - # look in pri, sec, eqn, lag, fa, ini, out blocks for required parameters - required_parameters <- tolower(model_template$parameters) - pri_list <- map_lgl(required_parameters, \(x){ - if (x %in% parameters) { + + # length was 1, value 0 + type <- "ODE" + } + + # Number of equations + n_eqn <- if (type == "Analytical") { + model_template$ncomp + } else { + get_assignments(self$arg_list$eqn, "dx") + } + n_out <- get_assignments(self$arg_list$out, "y") + + ## Get the names of the parameters + parameters <- tolower(names(self$arg_list$pri)) + covariates <- tolower(names(self$arg_list$cov)) + ## check to make sure required parameters present if Analytical + if (type == "Analytical") { + # look in pri, sec, eqn, lag, fa, ini, out blocks for required parameters + required_parameters <- tolower(model_template$parameters) + pri_list <- map_lgl(required_parameters, \(x){ + if (x %in% parameters) { + return(TRUE) + } else { + return(FALSE) + } + }) + + if (length(covariates) > 0) { + cov_list <- map_lgl(required_parameters, \(x){ + if (x %in% covariates) { return(TRUE) } else { return(FALSE) } }) - - if (length(covariates) > 0) { - cov_list <- map_lgl(required_parameters, \(x){ - if (x %in% covariates) { - return(TRUE) - } else { - return(FALSE) - } - }) - } else { - cov_list <- rep(FALSE, length(required_parameters)) - } - - if (!is.null(self$arg_list$sec)) { - sec_list <- map_lgl(required_parameters, \(x){ - any(stringr::str_detect(tolower(func_to_char(self$arg_list$sec)), x)) - }) - } else { - sec_list <- rep(FALSE, length(required_parameters)) - } - - eqn_list <- map_lgl(required_parameters, \(x){ + } else { + cov_list <- rep(FALSE, length(required_parameters)) + } + + if (!is.null(self$arg_list$sec)) { + sec_list <- map_lgl(required_parameters, \(x){ + any(stringr::str_detect(tolower(func_to_char(self$arg_list$sec)), x)) + }) + } else { + sec_list <- rep(FALSE, length(required_parameters)) + } + + eqn_list <- map_lgl(required_parameters, \(x){ + any( + stringr::str_detect( + stringr::str_remove_all(tolower(func_to_char(self$arg_list$eqn)), "\\s+"), # string + paste0(x, "(?=(<-|=))") + ) # pattern + ) + }) + + if (!is.null(self$arg_lag)) { + lag_list <- map_lgl(required_parameters, \(x){ any( stringr::str_detect( - stringr::str_remove_all(tolower(func_to_char(self$arg_list$eqn)), "\\s+"), # string + stringr::str_remove_all(tolower(func_to_char(self$arg_list$lag)), "\\s+"), # string paste0(x, "(?=(<-|=))") ) # pattern ) }) - - if (!is.null(self$arg_lag)) { - lag_list <- map_lgl(required_parameters, \(x){ - any( - stringr::str_detect( - stringr::str_remove_all(tolower(func_to_char(self$arg_list$lag)), "\\s+"), # string - paste0(x, "(?=(<-|=))") - ) # pattern - ) - }) - } else { - lag_list <- rep(FALSE, length(required_parameters)) - } - - if (!is.null(self$arg_fa)) { - lag_list <- map_lgl(required_parameters, \(x){ - any( - stringr::str_detect( - stringr::str_remove_all(tolower(func_to_char(self$arg_list$fa)), "\\s+"), # string - paste0(x, "(?=(<-|=))") - ) # pattern - ) - }) - } else { - fa_list <- rep(FALSE, length(required_parameters)) - } - - if (!is.null(self$arg_ini)) { - ini_list <- map_lgl(required_parameters, \(x){ - any( - stringr::str_detect( - stringr::str_remove_all(tolower(func_to_char(self$arg_list$ini)), "\\s+"), # string - paste0(x, "(?=(<-|=))") - ) # pattern - ) - }) - } else { - ini_list <- rep(FALSE, length(required_parameters)) - } - - out_list <- map_lgl(required_parameters, \(x){ + } else { + lag_list <- rep(FALSE, length(required_parameters)) + } + + if (!is.null(self$arg_fa)) { + lag_list <- map_lgl(required_parameters, \(x){ any( stringr::str_detect( - stringr::str_remove_all(tolower(func_to_char(self$arg_list$out)), "\\s+"), # string + stringr::str_remove_all(tolower(func_to_char(self$arg_list$fa)), "\\s+"), # string paste0(x, "(?=(<-|=))") ) # pattern ) }) - - all_lists <- bind_rows( - tibble::tibble( - parameter = required_parameters, - pri = pri_list, - cov = cov_list, - sec = sec_list, - eqn = eqn_list, - lag = lag_list, - fa = fa_list, - ini = ini_list, - out = out_list - ) - ) %>% mutate(ok = purrr::pmap_lgl(across(pri:out), any)) - - - if (any(!all_lists$ok)) { - missing <- all_lists$parameter[!all_lists$ok] - msg <- c( - msg, - "The following parameters are required for the {.code {model_template$name}} model template but are missing: {missing}", - "They should be defined in one of the model blocks, likely {.code pri}, {.code sec}, {.code eqn}, or {.code out}.", - "Parameters defined in {.code pri} and {.code sec} are available to all blocks.", - "Parameters defined in other blocks are only available to that block." - ) - } - } # end parameter checks for Analytical model - - - # if Analytical, need to combine sec and eqn - if (type == "Analytical") { - # shell function - sec_eqn <- function() {} - # define the body of the shell function - body(sec_eqn) <- suppressWarnings(as.call(c( - quote(`{`), - as.list(body(self$arg_list$eqn))[-1], # remove outer `{` of f1 - as.list(body(self$arg_list$sec))[-1] # remove outer `{` of f2 - ))) - - # this will include template and equations in both sec and eqn - } - - # sec - # still needed for analytic, because these equations will be used - # in other blocks - - if (!is.null(self$arg_list$sec)) { - sec <- transpile_sec(self$arg_list$sec) - } else { - sec <- "" - } - - # eqn - if (type == "ODE") { - eqn <- transpile_ode_eqn(self$arg_list$eqn, parameters, covariates, sec) - } else if (type == "Analytical") { - eqn <- transpile_analytic_eqn(sec_eqn, parameters, covariates) - } - - # fa - if (!is.null(self$arg_list$fa)) { - fa <- transpile_fa(self$arg_list$fa, parameters, covariates, sec) - } else { - fa <- empty_fa() - } - - # lag - if (!is.null(self$arg_list$lag)) { - lag <- transpile_lag(self$arg_list$lag, parameters, covariates, sec) - } else { - lag <- empty_lag() - } - - # ini - if (!is.null(self$arg_list$ini)) { - ini <- transpile_ini(self$arg_list$ini, parameters, covariates, sec) } else { - ini <- empty_ini() + fa_list <- rep(FALSE, length(required_parameters)) } - - # out - if (!is.null(self$arg_list$out)) { - out <- transpile_out(self$arg_list$out, parameters, covariates, sec) + + if (!is.null(self$arg_ini)) { + ini_list <- map_lgl(required_parameters, \(x){ + any( + stringr::str_detect( + stringr::str_remove_all(tolower(func_to_char(self$arg_list$ini)), "\\s+"), # string + paste0(x, "(?=(<-|=))") + ) # pattern + ) + }) } else { - out <- empty_out() + ini_list <- rep(FALSE, length(required_parameters)) } - - # err - if (is.null(self$arg_list$err)) { - msg <- c(msg, "Error model is missing and required.") - } - - # ensure length err matches length outeqs - if (length(self$arg_list$err) != n_out) { - msg <- c(msg, "There must be one error model for each output equation.") + + out_list <- map_lgl(required_parameters, \(x){ + any( + stringr::str_detect( + stringr::str_remove_all(tolower(func_to_char(self$arg_list$out)), "\\s+"), # string + paste0(x, "(?=(<-|=))") + ) # pattern + ) + }) + + all_lists <- bind_rows( + tibble::tibble( + parameter = required_parameters, + pri = pri_list, + cov = cov_list, + sec = sec_list, + eqn = eqn_list, + lag = lag_list, + fa = fa_list, + ini = ini_list, + out = out_list + ) + ) %>% mutate(ok = purrr::pmap_lgl(across(pri:out), any)) + + + if (any(!all_lists$ok)) { + missing <- all_lists$parameter[!all_lists$ok] + msg <- c( + msg, + "The following parameters are required for the {.code {model_template$name}} model template but are missing: {missing}", + "They should be defined in one of the model blocks, likely {.code pri}, {.code sec}, {.code eqn}, or {.code out}.", + "Parameters defined in {.code pri} and {.code sec} are available to all blocks.", + "Parameters defined in other blocks are only available to that block." + ) } - err <- self$arg_list$err - - # name - name <- if (type == "Analytical") { - model_template$name + } # end parameter checks for Analytical model + + + # if Analytical, need to combine sec and eqn + if (type == "Analytical") { + # shell function + sec_eqn <- function() {} + # define the body of the shell function + body(sec_eqn) <- suppressWarnings(as.call(c( + quote(`{`), + as.list(body(self$arg_list$eqn))[-1], # remove outer `{` of f1 + as.list(body(self$arg_list$sec))[-1] # remove outer `{` of f2 + ))) + + # this will include template and equations in both sec and eqn + } + + # sec + # still needed for analytic, because these equations will be used + # in other blocks + + if (!is.null(self$arg_list$sec)) { + sec <- transpile_sec(self$arg_list$sec) + } else { + sec <- "" + } + + # eqn + if (type == "ODE") { + eqn <- transpile_ode_eqn(self$arg_list$eqn, parameters, covariates, sec) + } else if (type == "Analytical") { + eqn <- transpile_analytic_eqn(sec_eqn, parameters, covariates) + } + + # fa + if (!is.null(self$arg_list$fa)) { + fa <- transpile_fa(self$arg_list$fa, parameters, covariates, sec) + } else { + fa <- empty_fa() + } + + # lag + if (!is.null(self$arg_list$lag)) { + lag <- transpile_lag(self$arg_list$lag, parameters, covariates, sec) + } else { + lag <- empty_lag() + } + + # ini + if (!is.null(self$arg_list$ini)) { + ini <- transpile_ini(self$arg_list$ini, parameters, covariates, sec) + } else { + ini <- empty_ini() + } + + # out + if (!is.null(self$arg_list$out)) { + out <- transpile_out(self$arg_list$out, parameters, covariates, sec) + } else { + out <- empty_out() + } + + # err + if (is.null(self$arg_list$err)) { + msg <- c(msg, "Error model is missing and required.") + } + + # ensure length err matches length outeqs + if (length(self$arg_list$err) != n_out) { + msg <- c(msg, "There must be one error model for each output equation.") + } + err <- self$arg_list$err + + # name + name <- if (type == "Analytical") { + model_template$name + } else { + "user" + } + + # build the model list of rust components + model_list <- list( + pri = self$arg_list$pri, + eqn = eqn, + sec = sec, + lag = lag, + fa = fa, + ini = ini, + out = out, + n_eqn = n_eqn, + n_out = n_out, + parameters = parameters, + covariates = covariates, + err = err, + name = name + ) + # make everything lower case if a character vector + self$model_list <- purrr::map(model_list, \(x) { + if (is.character(x)) { + tolower(x) } else { - "user" - } - - # build the model list of rust components - model_list <- list( - pri = self$arg_list$pri, - eqn = eqn, - sec = sec, - lag = lag, - fa = fa, - ini = ini, - out = out, - n_eqn = n_eqn, - n_out = n_out, - parameters = parameters, - covariates = covariates, - err = err, - name = name - ) - # make everything lower case if a character vector - self$model_list <- purrr::map(model_list, \(x) { - if (is.character(x)) { - tolower(x) - } else { - x - } - }) - - # this one needs to be capital - self$model_list$type <- type - - - # Abort if errors - if (length(msg) > 0) { - cli::cli_alert_danger("{.strong PM_model$new() aborted due to {length(msg)} error{?s}:}") - purrr::walk(msg, \(m) cli::cli_bullets(c("*" = m))) - return(invisible(NULL)) + x } - - - extra_args <- list(...) - if (!is.null(purrr::pluck(extra_args, "compile"))) { - if (extra_args$compile) { - self$compile() - } - } else { # default is to compile + }) + + # this one needs to be capital + self$model_list$type <- type + + + # Abort if errors + if (length(msg) > 0) { + cli::cli_alert_danger("{.strong PM_model$new() aborted due to {length(msg)} error{?s}:}") + purrr::walk(msg, \(m) cli::cli_bullets(c("*" = m))) + return(invisible(NULL)) + } + + + extra_args <- list(...) + if (!is.null(purrr::pluck(extra_args, "compile"))) { + if (extra_args$compile) { self$compile() } - }, - - #' @description - #' Print the model summary. - #' @details - #' This method prints a summary of the model. - #' @param ... Not used. - print = function(...) { - cli::cli_div(theme = list( - span.eqs = list(color = navy()) - )) - - cli::cli_h1("Model summary") - - cli::cli_h3(text = "Primary Parameters") - # pars = self$model_list$parameters - # cli::cli_text("{.eqs {pars}}") - - self$arg_list$pri %>% + } else { # default is to compile + self$compile() + } + }, + + #' @description + #' Print the model summary. + #' @details + #' This method prints a summary of the model. + #' @param ... Not used. + print = function(...) { + cli::cli_div(theme = list( + span.eqs = list(color = navy()) + )) + + cli::cli_h1("Model summary") + + cli::cli_h3(text = "Primary Parameters") + # pars = self$model_list$parameters + # cli::cli_text("{.eqs {pars}}") + + self$arg_list$pri %>% purrr::imap(\(x, y) cli::cli_text("{.strong {y}}: [{.strong {x$min}}, {.strong {x$max}}], {.emph ~N({round(x$mean,2)}}, {.emph {round(x$sd,2)})}")) %>% invisible() # to suppress NULL - - - if (!is.null(self$model_list$covariates)) { - cli::cli_h3(text = "Covariates") - - cov_list <- paste0( - self$model_list$covariates, - ifelse(self$arg_list$cov == 1, "", " (no interpolation)") - ) - - cli::cli_text("{.eqs {cov_list}}") - } - - if (!is.null(self$arg_list$sec)) { - cli::cli_h3(text = "Secondary (Global) Equations") - eqs <- func_to_char(self$arg_list$sec) # function in PMutitlities - for (i in eqs) { - cli::cli_text("{.eqs {i}}") - } - } - - if (!is.null(self$arg_list$tem)) { - cli::cli_h3(text = "Analytical Model") - cli::cli_text("{.eqs {self$arg_list$tem$name}})") - } - - if (!is.null(self$arg_list$eqn)) { - cli::cli_h3(text = "Primary Equations") - eqs <- func_to_char(self$arg_list$eqn) # function in PMutitlities - for (i in eqs) { - cli::cli_text("{.eqs {i}}") - } + + + if (!is.null(self$model_list$covariates)) { + cli::cli_h3(text = "Covariates") + + cov_list <- paste0( + self$model_list$covariates, + ifelse(self$arg_list$cov == 1, "", " (no interpolation)") + ) + + cli::cli_text("{.eqs {cov_list}}") + } + + if (!is.null(self$arg_list$sec)) { + cli::cli_h3(text = "Secondary (Global) Equations") + eqs <- func_to_char(self$arg_list$sec) # function in PMutitlities + for (i in eqs) { + cli::cli_text("{.eqs {i}}") } - - if (!is.null(self$arg_list$lag)) { - cli::cli_h3(text = "Lag Time") - eqs <- func_to_char(self$arg_list$lag) # function in PMutitlities - for (i in eqs) { - cli::cli_text("{.eqs {i}}") - } + } + + if (!is.null(self$arg_list$tem)) { + cli::cli_h3(text = "Analytical Model") + cli::cli_text("{.eqs {self$arg_list$tem$name}})") + } + + if (!is.null(self$arg_list$eqn)) { + cli::cli_h3(text = "Primary Equations") + eqs <- func_to_char(self$arg_list$eqn) # function in PMutitlities + for (i in eqs) { + cli::cli_text("{.eqs {i}}") } - - if (!is.null(self$arg_list$fa)) { - cli::cli_h3(text = "Bioavailability (Fraction Absorbed)") - eqs <- func_to_char(self$arg_list$fa) # function in PMutitlities - for (i in eqs) { - cli::cli_text("{.eqs {i}}") - } + } + + if (!is.null(self$arg_list$lag)) { + cli::cli_h3(text = "Lag Time") + eqs <- func_to_char(self$arg_list$lag) # function in PMutitlities + for (i in eqs) { + cli::cli_text("{.eqs {i}}") } - - if (!is.null(self$arg_list$ini)) { - cli::cli_h3(text = "Initial Conditions") - eqs <- func_to_char(self$arg_list$ini) # function in PMutitlities - for (i in eqs) { - cli::cli_text("{.eqs {i}}") - } + } + + if (!is.null(self$arg_list$fa)) { + cli::cli_h3(text = "Bioavailability (Fraction Absorbed)") + eqs <- func_to_char(self$arg_list$fa) # function in PMutitlities + for (i in eqs) { + cli::cli_text("{.eqs {i}}") } - - cli::cli_h3(text = "Outputs") - outs <- func_to_char(self$arg_list$out) - for (i in outs) { + } + + if (!is.null(self$arg_list$ini)) { + cli::cli_h3(text = "Initial Conditions") + eqs <- func_to_char(self$arg_list$ini) # function in PMutitlities + for (i in eqs) { cli::cli_text("{.eqs {i}}") } - - cli::cli_h3(text = "Error Model") - for (i in self$model_list$err) { - if (i$fixed) { - cli::cli_text("{.strong {tools::toTitleCase(i$type)}}, with fixed value of {.val {i$initial}} and coefficients {.val {i$coeff}}.") - } else { - cli::cli_text("{.strong {tools::toTitleCase(i$type)}}, with initial value of {.val {i$initial}} and coefficients {.val {i$coeff}}.") - } + } + + cli::cli_h3(text = "Outputs") + outs <- func_to_char(self$arg_list$out) + for (i in outs) { + cli::cli_text("{.eqs {i}}") + } + + cli::cli_h3(text = "Error Model") + for (i in self$model_list$err) { + if (i$fixed) { + cli::cli_text("{.strong {tools::toTitleCase(i$type)}}, with fixed value of {.val {i$initial}} and coefficients {.val {i$coeff}}.") + } else { + cli::cli_text("{.strong {tools::toTitleCase(i$type)}}, with initial value of {.val {i$initial}} and coefficients {.val {i$coeff}}.") + } + } + cli::cli_end() + + invisible(self) + }, + #' @description + #' Plot the model. + #' @details + #' This method plots the model using the + #' [plot.PM_model()] function. + #' @param ... Additional arguments passed to the plot function. + plot = function(...) { + tryCatch( + plot.PM_model(self, ...), + error = function(e) { + cat(crayon::red("Error:"), e$message, "\n") } - cli::cli_end() - - invisible(self) - }, - #' @description - #' Plot the model. - #' @details - #' This method plots the model using the - #' [plot.PM_model()] function. - #' @param ... Additional arguments passed to the plot function. - plot = function(...) { - tryCatch( - plot.PM_model(self, ...), + ) + }, + #' @description + #' This is the main method to run a population analysis. + #' @details + #' As of Pmetrics 3.0.0, models contain compiled code to fit + #' the model equations to the data, optimizing the parameter + #' value probability distributions in the population to + #' maximize their likelihood, or more precisely, minimize + #' the objective function, which is -2*log-likelihood. + #' + #' The `$fit()` method is the means of running that compiled + #' code to conduct to fitting procedure. At a minimum, it requires + #' a [PM_data] object, which can be created with + #' `PM_data$new()`. There are a number of additional arguments + #' to control the fitting procedure, such as the number of cycles + #' to run, the initial number of support points, + #' and the algorithm to use, among others. + #' + #' The `$fit()` method is the descendant of the legacy + #' [NPrun] function, which is maintained as a wrapper to `$fit()` + #' for backwards compatibility. + #' + #' @param data Either the name of a [PM_data] + #' object in memory or the quoted filename (with or without a path) of a Pmetrics + #' data file. If the path is not specified, the file is assumed to be in the current working directory, + #' unless the `path` argument below is also specified as a global option for the fit. + #' The file will be used to create a [PM_data] + #' object on the fly. However, if created on the fly, this object + #' will not be available to other + #' methods or other instances of `$fit()`. + #' @param path Optional full path or relative path from current working directory + #' to the folder where `data` and `model` are located if specified as filenames without + #' their own paths, + #' and where the output will be saved. Default is the current working directory. + #' @param run Specify the run number of the output folder. Default if missing is the next available number. + #' @param include Vector of subject id values in the data file to include in the analysis. + #' The default (missing) is all. + #' @param exclude A vector of subject IDs to exclude in the analysis, e.g. `c(4,6:14,16:20)` + # #' @param ode Ordinary Differential Equation solver log tolerance or stiffness. + # Default is -4, i.e. 0.0001. Higher values will result in faster + # #' runs, but parameter estimates may not be as accurate. + # #' @param tol Tolerance for convergence of NPAG. Smaller numbers make it harder to converge. + # #' Default value is 0.01. + # #' @param salt Vector of salt fractions for each drug in the data file, default is 1 for each drug. This is not the same as bioavailability. + #' @param cycles Number of cycles to run. Default is 100. + #' @param prior The distribution for the initial support points, which can be + #' one of several options. + #' * The default is "sobol", which is a semi-random distribution. This is the distribution + #' typically used when fitting a new model to the data. An example of this is + #' on our [website](https://www.lapk.org/images/sobol_3d_plot.html). + #' + #' The following all specify non-random, informative prior distributions. They + #' are useful for either continuing a previous + #' run which did not converge or for fitting a model to new data, whether to simply + #' calculate Bayesian posteriors with `cycles = 0` or to revise the model to a new + #' covergence with the new data. + #' * The name of a suitable [PM_result] object from a prior run loaded with [PM_load]. + #' This starts from the non-uniform, informative distribution obtained at the end of a prior NPAG run. + #' Example: `run1 <- PM_load(1); fit1$run(prior = run1)`. + #' + #' * A character string with the filename of a csv file containing a prior distribution with + #' format as for 'theta.csv' in the output folder of a prior run: column headers are parameter + #' names, and rows are the support point values. A final column with probabilities + #' for each support point is not necessary, but if present will be ignored, as these + #' probabilities are calculated by the engine. Note that the parameter names must match the + #' names of the primary variables in the model. Example: `fit1$run(prior = "mytheta.csv")`. + #' * The number of a previous run with `theta.csv` in the output folder which will be read + #' as for the filename option above. Example: `fit1$run(prior = 2)`. + #' * A data frame obtained from reading an approriate file, such that the data frame + #' is in the required format described in the filename option above. Example: + #' `mytheta <- read_csv("mytheta.csv"); fit1$run(prior = mytheta)`. + #' + #' @param points The number of initial support points if one of + #' the semi-random, uniform distributions are selected in the `prior` argument + #' above. Default is 100. The initial points are + #' spread through the hyperspace defined by the random parameter ranges + #' and begin the search for the optimal + #' parameter value distribution (support points) in the population. + #' If there are fewer than 2 points per unit range for any parameter, + #' Pmetrics will suggest the minimum number of points that should be tried. + #' The greater the initial number of points, the less chance of + #' missing the globally maximally likely parameter value distribution, + #' but the slower the run. + #' + #' @param idelta How often to generate posterior predictions in units of time. + #' Default is 0.1, which means a prediction is generated every 0.1 hours (6 minutes) + #' if the unit of time is hours. Predictions are made at this interval until the time + #' of the last event (dose or observation) or until `tad` if that value is greater + #' than the time of the last dose or observation in the data. + #' + #' @param tad Length of time after the last dose event to add additional predictions + #' at frequency `idelta`. Default is 0, which means no additional predictions + #' beyond the last dose, assuming the dose is the last event. . If the + #' last observation in the data is after `tad`, then a prediction will be generated at + #' time = `tad` after the last dose + #' + #' @param seed Seed used if `prior = "sobol"`. Ignored otherwise. + #' @param intern Run NPAG in the R console without a batch script. Default is TRUE. + # #' @param quiet Boolean operator controlling whether a model summary report is given. Default is `TRUE`. + #' @param overwrite Boolean operator to overwrite existing run result folders. Default is `FALSE`. + # #' @param nocheck Suppress the automatic checking of the data file with [PM_data]. Default is `FALSE`. + # #' @param parallel Run NPAG in parallel. Default is `NA`, which will be set to `TRUE` for models that use + # #' differential equations, and `FALSE` for analytical/explicit models. The majority of the benefit for parallelization comes + # #' in the first cycle, with a speed-up of approximately 80\% of the number of available cores on your machine, e.g. an 8-core machine + # #' will speed up the first cycle by 0.8 * 8 = 6.4-fold. Subsequent cycles approach about 50\%, e.g. 4-fold increase on an 8-core + # #' machine. Overall speed up for a run will therefore depend on the number of cycles run and the number of cores. + #' @param algorithm The algorithm to use for the run. Default is "NPAG" for the **N**on-**P**arametric **A**daptive **G**rid. Alternatives: "NPOD". + #' @param report If missing, the default Pmetrics report template as specified in [getPMoptions] + #' is used. Otherwise can be "plotly", "ggplot", or "none". + #' @return A successful run will result in creation of a new folder in the working + #' directory with the results inside the folder. + #' + #' @author Michael Neely + #' @export + fit = function(data = NULL, + path = ".", + run = NULL, + include = NULL, + exclude = NULL, + cycles = 100, + prior = "sobol", + points = 100, + idelta = 0.1, + tad = 0, + seed = 23, + overwrite = FALSE, + algorithm = "NPAG", # POSTPROB for posteriors, select when cycles = 0, allow for "NPOD" + report = getPMoptions("report_template")) { + msg <- NULL # status message at end of run + run_error <- 0 + + path <- stringr::str_replace(path, "/$", "") # remove trailing / + + if (is.null(data)) { + msg <- c(msg, " {.arg data} must be specified.") + run_error <- run_error + 1 + } + + if (is.null(self$model_list)) { + msg <- c(msg, "Model is malformed.") + run_error <- run_error + 1 + } + + if (is.character(data)) { + # create PM_data object from file + data <- PM_data$new(normalizePath(file.path(path, data), mustWork = FALSE)) + } + + if (!inherits(data, "PM_data")) { + data <- tryCatch( + { + PM_data$new(data) + }, error = function(e) { - cat(crayon::red("Error:"), e$message, "\n") + -1 } ) - }, - #' @description - #' This is the main method to run a population analysis. - #' @details - #' As of Pmetrics 3.0.0, models contain compiled code to fit - #' the model equations to the data, optimizing the parameter - #' value probability distributions in the population to - #' maximize their likelihood, or more precisely, minimize - #' the objective function, which is -2*log-likelihood. - #' - #' The `$fit()` method is the means of running that compiled - #' code to conduct to fitting procedure. At a minimum, it requires - #' a [PM_data] object, which can be created with - #' `PM_data$new()`. There are a number of additional arguments - #' to control the fitting procedure, such as the number of cycles - #' to run, the initial number of support points, - #' and the algorithm to use, among others. - #' - #' The `$fit()` method is the descendant of the legacy - #' [NPrun] function, which is maintained as a wrapper to `$fit()` - #' for backwards compatibility. - #' - #' @param data Either the name of a [PM_data] - #' object in memory or the quoted filename (with or without a path) of a Pmetrics - #' data file. If the path is not specified, the file is assumed to be in the current working directory, - #' unless the `path` argument below is also specified as a global option for the fit. - #' The file will be used to create a [PM_data] - #' object on the fly. However, if created on the fly, this object - #' will not be available to other - #' methods or other instances of `$fit()`. - #' @param path Optional full path or relative path from current working directory - #' to the folder where `data` and `model` are located if specified as filenames without - #' their own paths, - #' and where the output will be saved. Default is the current working directory. - #' @param run Specify the run number of the output folder. Default if missing is the next available number. - #' @param include Vector of subject id values in the data file to include in the analysis. - #' The default (missing) is all. - #' @param exclude A vector of subject IDs to exclude in the analysis, e.g. `c(4,6:14,16:20)` - # #' @param ode Ordinary Differential Equation solver log tolerance or stiffness. - # Default is -4, i.e. 0.0001. Higher values will result in faster - # #' runs, but parameter estimates may not be as accurate. - # #' @param tol Tolerance for convergence of NPAG. Smaller numbers make it harder to converge. - # #' Default value is 0.01. - # #' @param salt Vector of salt fractions for each drug in the data file, default is 1 for each drug. This is not the same as bioavailability. - #' @param cycles Number of cycles to run. Default is 100. - #' @param prior The distribution for the initial support points, which can be - #' one of several options. - #' * The default is "sobol", which is a semi-random distribution. This is the distribution - #' typically used when fitting a new model to the data. An example of this is - #' on our [website](https://www.lapk.org/images/sobol_3d_plot.html). - #' - #' The following all specify non-random, informative prior distributions. They - #' are useful for either continuing a previous - #' run which did not converge or for fitting a model to new data, whether to simply - #' calculate Bayesian posteriors with `cycles = 0` or to revise the model to a new - #' covergence with the new data. - #' * The name of a suitable [PM_result] object from a prior run loaded with [PM_load]. - #' This starts from the non-uniform, informative distribution obtained at the end of a prior NPAG run. - #' Example: `run1 <- PM_load(1); fit1$run(prior = run1)`. - #' - #' * A character string with the filename of a csv file containing a prior distribution with - #' format as for 'theta.csv' in the output folder of a prior run: column headers are parameter - #' names, and rows are the support point values. A final column with probabilities - #' for each support point is not necessary, but if present will be ignored, as these - #' probabilities are calculated by the engine. Note that the parameter names must match the - #' names of the primary variables in the model. Example: `fit1$run(prior = "mytheta.csv")`. - #' * The number of a previous run with `theta.csv` in the output folder which will be read - #' as for the filename option above. Example: `fit1$run(prior = 2)`. - #' * A data frame obtained from reading an approriate file, such that the data frame - #' is in the required format described in the filename option above. Example: - #' `mytheta <- read_csv("mytheta.csv"); fit1$run(prior = mytheta)`. - #' - #' @param points The number of initial support points if one of - #' the semi-random, uniform distributions are selected in the `prior` argument - #' above. Default is 100. The initial points are - #' spread through the hyperspace defined by the random parameter ranges - #' and begin the search for the optimal - #' parameter value distribution (support points) in the population. - #' If there are fewer than 2 points per unit range for any parameter, - #' Pmetrics will suggest the minimum number of points that should be tried. - #' The greater the initial number of points, the less chance of - #' missing the globally maximally likely parameter value distribution, - #' but the slower the run. - #' - #' @param idelta How often to generate posterior predictions in units of time. - #' Default is 0.1, which means a prediction is generated every 0.1 hours (6 minutes) - #' if the unit of time is hours. Predictions are made at this interval until the time - #' of the last event (dose or observation) or until `tad` if that value is greater - #' than the time of the last dose or observation in the data. - #' - #' @param tad Length of time after the last dose event to add additional predictions - #' at frequency `idelta`. Default is 0, which means no additional predictions - #' beyond the last dose, assuming the dose is the last event. . If the - #' last observation in the data is after `tad`, then a prediction will be generated at - #' time = `tad` after the last dose - #' - #' @param seed Seed used if `prior = "sobol"`. Ignored otherwise. - #' @param intern Run NPAG in the R console without a batch script. Default is TRUE. - # #' @param quiet Boolean operator controlling whether a model summary report is given. Default is `TRUE`. - #' @param overwrite Boolean operator to overwrite existing run result folders. Default is `FALSE`. - # #' @param nocheck Suppress the automatic checking of the data file with [PM_data]. Default is `FALSE`. - # #' @param parallel Run NPAG in parallel. Default is `NA`, which will be set to `TRUE` for models that use - # #' differential equations, and `FALSE` for analytical/explicit models. The majority of the benefit for parallelization comes - # #' in the first cycle, with a speed-up of approximately 80\% of the number of available cores on your machine, e.g. an 8-core machine - # #' will speed up the first cycle by 0.8 * 8 = 6.4-fold. Subsequent cycles approach about 50\%, e.g. 4-fold increase on an 8-core - # #' machine. Overall speed up for a run will therefore depend on the number of cycles run and the number of cores. - #' @param algorithm The algorithm to use for the run. Default is "NPAG" for the **N**on-**P**arametric **A**daptive **G**rid. Alternatives: "NPOD". - #' @param report If missing, the default Pmetrics report template as specified in [getPMoptions] - #' is used. Otherwise can be "plotly", "ggplot", or "none". - #' @return A successful run will result in creation of a new folder in the working - #' directory with the results inside the folder. - #' - #' @author Michael Neely - #' @export - fit = function(data = NULL, - path = ".", - run = NULL, - include = NULL, - exclude = NULL, - cycles = 100, - prior = "sobol", - points = 100, - idelta = 0.1, - tad = 0, - seed = 23, - overwrite = FALSE, - algorithm = "NPAG", # POSTPROB for posteriors, select when cycles = 0, allow for "NPOD" - report = getPMoptions("report_template")) { - msg <- NULL # status message at end of run - run_error <- 0 - - path <- stringr::str_replace(path, "/$", "") # remove trailing / - - if (is.null(data)) { - msg <- c(msg, " {.arg data} must be specified.") - run_error <- run_error + 1 - } - - if (is.null(self$model_list)) { - msg <- c(msg, "Model is malformed.") + + if (!inherits(data, "PM_data")) { + msg <- c(msg, "{.arg data} must be a {.cls PM_data} object or an appropriate data frame.") + run_error <- run_error + 1 + } + } + + #### checks + + # bolus and infusions + if (self$model_list$type == "ODE") { # only need to check these for ODE models + bolus <- unique(data$standard_data$input[data$standard_data$dur == 0]) %>% purrr::discard(~ is.na(.x)) + infusion <- unique(data$standard_data$input[data$standard_data$dur > 0]) %>% purrr::discard(~ is.na(.x)) + if (length(bolus) > 0) { + missing_bolus <- bolus[!stringr::str_detect(self$model_list$eqn, paste0("b\\[", bolus - 1))] + if (length(missing_bolus) > 0) { + msg <- c(msg, "Bolus input(s) {paste(missing_bolus, collapse = ', ')} {?is/are} missing from the model equations. Use {.code b[{missing_bolus}]} or {.code bolus[{missing_bolus}]}, for example, to represent bolus inputs in the equations.") run_error <- run_error + 1 } - - if (is.character(data)) { - # create PM_data object from file - data <- PM_data$new(normalizePath(file.path(path, data), mustWork = FALSE)) - } - - if (!inherits(data, "PM_data")) { - data <- tryCatch( - { - PM_data$new(data) - }, - error = function(e) { - -1 - } - ) - - if (!inherits(data, "PM_data")) { - msg <- c(msg, "{.arg data} must be a {.cls PM_data} object or an appropriate data frame.") - run_error <- run_error + 1 - } - } - - #### checks - - # bolus and infusions - if (self$model_list$type == "ODE") { # only need to check these for ODE models - bolus <- unique(data$standard_data$input[data$standard_data$dur == 0]) %>% purrr::discard(~ is.na(.x)) - infusion <- unique(data$standard_data$input[data$standard_data$dur > 0]) %>% purrr::discard(~ is.na(.x)) - if (length(bolus) > 0) { - missing_bolus <- bolus[!stringr::str_detect(self$model_list$eqn, paste0("b\\[", bolus - 1))] - if (length(missing_bolus) > 0) { - msg <- c(msg, "Bolus input(s) {paste(missing_bolus, collapse = ', ')} {?is/are} missing from the model equations. Use {.code b[{missing_bolus}]} or {.code bolus[{missing_bolus}]}, for example, to represent bolus inputs in the equations.") - run_error <- run_error + 1 - } - } - if (length(infusion) > 0) { - missing_infusion <- infusion[!stringr::str_detect(self$model_list$eqn, paste0("rateiv\\[", infusion - 1))] - if (length(missing_infusion) > 0) { - msg <- c(msg, "Infusion input(s) {paste(missing_infusion, collapse = ', ')} {?is/are} missing from the model equations. Use {.code r[{missing_infusion}]} or {.code rateiv[{missing_infusion}]} , for example, to represent infusion inputs in the equations.") - run_error <- run_error + 1 - } - } - } - - # covariates - modelCov <- self$model_list$cov - if (length(modelCov) > 0) { - dataCov <- tolower(getCov(data)$covnames) - missingCov <- modelCov[!modelCov %in% dataCov] - if (length(missingCov) > 0) { # if not identical, abort - msg <- c(msg, "{.arg {modelCov}} {?is/are} missing from the data.") - run_error <- run_error + 1 - } - } - - # cycles - # if programmer is a crazy Norwegian.... - if (cycles < 0) { - msg <- c(msg, "Error: {.arg cycles} must be 0 or greater.") + } + if (length(infusion) > 0) { + missing_infusion <- infusion[!stringr::str_detect(self$model_list$eqn, paste0("rateiv\\[", infusion - 1))] + if (length(missing_infusion) > 0) { + msg <- c(msg, "Infusion input(s) {paste(missing_infusion, collapse = ', ')} {?is/are} missing from the model equations. Use {.code r[{missing_infusion}]} or {.code rateiv[{missing_infusion}]} , for example, to represent infusion inputs in the equations.") run_error <- run_error + 1 } - - # output equations - if (!is.null(data$standard_data$outeq)) { - dataOut <- max(data$standard_data$outeq, na.rm = TRUE) - } else { - dataOut <- 1 - } - modelOut <- self$model_list$n_out - - - #### Algorithm #### - algorithm <- toupper(algorithm) - if (cycles == 0) { - if (prior == "sobol") { - msg <- c(msg, "Cannot use {.code prior = 'sobol'} with {.code cycles = 0}.") - run_error <- run_error + 1 - } - algorithm <- "POSTPROB" - } else { - if (!(algorithm %in% c("NPAG", "NPOD"))) { - msg <- c(msg, "Unsupported algorithm. Supported algorithms are 'NPAG' and 'NPOD'.") - run_error <- run_error + 1 - } - } - if (algorithm == "POSTPROB" && cycles > 0) { - msg <- c(msg, "Warning: {.code algorithm = 'POSTPROB'} is used with {.code cycles = 0}. {.code cycles} set to 0.") - cycles <- 0 - } - - - - if (getPMoptions()$backend != "rust") { - cli::cli_abort(c("x" = "Error: unsupported backend.", "i" = "See help for {.fn setPMoptions}")) - } - - #### Include or exclude subjects #### - if (is.null(include)) { - include <- unique(data$standard_data$id) - } - if (is.null(exclude)) { - exclude <- NA - } - data_filtered <- data$standard_data %>% includeExclude(include, exclude) - - if (nrow(data_filtered) == 0) { - msg <- c(msg, "No subjects remained after filtering.") + } + } + + # covariates + modelCov <- self$model_list$cov + if (length(modelCov) > 0) { + dataCov <- tolower(getCov(data)$covnames) + missingCov <- modelCov[!modelCov %in% dataCov] + if (length(missingCov) > 0) { # if not identical, abort + msg <- c(msg, "{.arg {modelCov}} {?is/are} missing from the data.") + run_error <- run_error + 1 + } + } + + # cycles + # if programmer is a crazy Norwegian.... + if (cycles < 0) { + msg <- c(msg, "Error: {.arg cycles} must be 0 or greater.") + run_error <- run_error + 1 + } + + # output equations + if (!is.null(data$standard_data$outeq)) { + dataOut <- max(data$standard_data$outeq, na.rm = TRUE) + } else { + dataOut <- 1 + } + modelOut <- self$model_list$n_out + + + #### Algorithm #### + algorithm <- toupper(algorithm) + if (cycles == 0) { + if (prior == "sobol") { + msg <- c(msg, "Cannot use {.code prior = 'sobol'} with {.code cycles = 0}.") + run_error <- run_error + 1 + } + algorithm <- "POSTPROB" + } else { + if (!(algorithm %in% c("NPAG", "NPOD"))) { + msg <- c(msg, "Unsupported algorithm. Supported algorithms are 'NPAG' and 'NPOD'.") + run_error <- run_error + 1 + } + } + if (algorithm == "POSTPROB" && cycles > 0) { + msg <- c(msg, "Warning: {.code algorithm = 'POSTPROB'} is used with {.code cycles = 0}. {.code cycles} set to 0.") + cycles <- 0 + } + + + if (getPMoptions()$backend != "rust") { + cli::cli_abort(c("x" = "Error: unsupported backend.", "i" = "See help for {.fn setPMoptions}")) + } + + #### Include or exclude subjects #### + if (is.null(include)) { + include <- unique(data$standard_data$id) + } + if (is.null(exclude)) { + exclude <- NA + } + data_filtered <- data$standard_data %>% includeExclude(include, exclude) + + if (nrow(data_filtered) == 0) { + msg <- c(msg, "No subjects remained after filtering.") + run_error <- run_error + 1 + } + + # set prior + if (prior != "sobol") { + if (is.numeric(prior)) { + # prior specified as a run number + if (!file.exists(glue::glue("{path}/{prior}/outputs/theta.csv"))) { + msg <- c(msg, "{.arg prior} file does not exist.", "i" = "Check the file path.") run_error <- run_error + 1 } - - # set prior - if (prior != "sobol") { - if (is.numeric(prior)) { - # prior specified as a run number - if (!file.exists(glue::glue("{path}/{prior}/outputs/theta.csv"))) { - msg <- c(msg, "{.arg prior} file does not exist.", "i" = "Check the file path.") - run_error <- run_error + 1 - } - file.copy(glue::glue("{path}/{prior}/outputs/theta.csv"), "prior.csv", overwrite = TRUE) - prior <- "prior.csv" - } else if (is.character(prior)) { - # prior specified as a filename - if (!file.exists(prior)) { - msg <- c(msg, "{.arg prior} file does not exist.") - run_error <- run_error + 1 - } - file.copy(prior, "prior.csv", overwrite = TRUE) # ensure in current working directory - } else if (is.data.frame(prior)) { - # prior specified as a data frame - if (!all(c("prob", self$model_list$parameters) %in% names(prior))) { - msg <- c(msg, "{.arg prior} data frame must contain columns for parameters and probabilities.") - run_error <- run_error + 1 - } - prior <- prior %>% dplyr::select(all_of(self$model_list$parameters), prob) - write.csv(prior, "prior.csv", row.names = FALSE) - } else { - msg <- c(msg, "{.arg prior} must be a numeric run number or character filename.") - run_error <- run_error + 1 - } - } else { - prior <- "sobol" - } - - #### Abort if errors before creating new folder #### - if (run_error > 0) { - cli::cli_alert_danger("{.strong PM_model$fit() aborted due to {run_error} error{?s}:}") - purrr::walk(msg, \(m) cli::cli_bullets(c("*" = m))) - return(invisible(NULL)) - } - #### Continue with fit #### - - # check if model compiled and if not, do so - self$compile() - - intern <- TRUE # always true until (if) rust can run separately from R - - - # make new output directory - - if (is.null(run)) { - olddir <- list.dirs(path, recursive = FALSE) - olddir <- olddir[grep("^\\./[[:digit:]]+", olddir)] - olddir <- sub("^\\./", "", olddir) - if (length(olddir) > 0) { - run <- as.character(max(as.numeric(olddir)) + 1) - } else { - run <- "1" - } - } else { - if (!is.numeric(run)) { - msg <- c(msg, "{.arg run} must be numeric, so was ignored.") - } - } - - path_run <- normalizePath(file.path(path, run), mustWork = FALSE) - - if (file.exists(path_run)) { - if (overwrite) { - unlink(path_run, recursive = TRUE) - msg <- c(msg, "The previous run in folder '{path_run}' was overwritten.") - } else { - cli::cli_inform( - c("i" = "The previous run from '{path_run}' was read.", " " = "Set {.arg overwrite} to {.val TRUE} to overwrite prior run in '{path_run}'.") - ) - return(invisible(PM_load(file = normalizePath(file.path(path_run, "PMout.Rdata"), mustWork = FALSE)))) - } - } - - fs::dir_create(path_run) - - #### Save input objects #### - fs::dir_create(normalizePath(file.path(path_run, "inputs"), mustWork = FALSE)) - PM_data$new(data_filtered, quiet = TRUE)$save(normalizePath(file.path(path_run, "inputs", "gendata.csv"), mustWork = FALSE), header = FALSE) - saveRDS(list(data = data, model = self), file = normalizePath(file.path(path_run, "inputs", "fit.rds"), mustWork = FALSE)) - file.copy(self$binary_path, normalizePath(file.path(path_run, "inputs"), mustWork = FALSE)) - - # Get ranges and calculate points - ranges <- lapply(self$model_list$pri, function(x) { - c(x$min, x$max) - }) - - names(ranges) <- tolower(names(ranges)) - # Set initial grid points (only applies for sobol) - marginal_densities <- sapply(ranges, function(x) { - points / (x[2] - x[1]) - }) - if (any(marginal_densities < 2)) { - increase_to <- round(points * (max(2 / marginal_densities)), 0) - msg <- c(msg, "Recommend increasing {.arg points} to at least {increase_to} to ensure adequate coverage of parameter space.") - } - - - if (intern) { - ### CALL RUST - out_path <- normalizePath(file.path(path_run, "outputs"), mustWork = FALSE) - msg <- c(msg, "Run results were saved in folder '{.path {out_path}}'") - rlang::try_fetch( - fit( - # defined in extendr-wrappers.R - model_path = normalizePath(self$binary_path), - data = normalizePath(file.path(path_run, "inputs", "gendata.csv")), - params = list( - ranges = ranges, # not important but needed for POSTPROB - algorithm = algorithm, - error_models = lapply(self$model_list$err, function(x) x$flatten()), - idelta = idelta, - tad = tad, - max_cycles = cycles, # will be hardcoded in Rust to 0 for POSTPROB - prior = prior, # needs warning if missing and algorithm = POSTPROB - points = points, # only relevant for sobol prior - seed = seed - ), - output_path = out_path, - kind = tolower(self$model_list$type) - ), - error = function(e) { - cli::cli_warn("Unable to create {.cls PM_result} object", parent = e) - return(NULL) - } - ) - - PM_parse(path = out_path) - res <- PM_load(path = normalizePath(out_path), file = "PMout.Rdata") - if (report != "none") { - valid_report <- tryCatch( - PM_report(res, path = normalizePath(out_path), template = report, quiet = TRUE), - error = function(e) { - -1 - } - ) - if (valid_report == 1) { - msg <- c(msg, "Report generated with {report} template.") - # if(tolower(algorithm) == "postprob") {this_alg <- "map"} else {this_alg <- "fit"} - msg <- c(msg, "If assigned to a variable, e.g. {.code run{run} <-}, results are available in {.code run{run}}.") - } else { - msg <- c(msg, "Report could not be generated.") - } - } - - - if (length(msg) > 1) { - cli::cli_h1("Notes:") - cli::cli_ul() - purrr::walk(msg[-1], ~ cli::cli_li(.x)) - cli::cli_end() - } - return(invisible(res)) - } else { - cli::cli_abort( - c("x" = "Error: Currently, the rust engine only supports internal runs.", "i" = "This is a temporary limitation.") - ) - } - }, # end fit method - - #' @description - #' Calculate posteriors from a fitted model. - #' #' @details - #' This method calculates posteriors from a compiled model. It is not necessary to have - #' run the model first, but it is necessary to have an informative prior distribution. - #' This prior will typically be the result of a previous run, but may also be a file - #' containing support points, with each column named as a parameter in the model plus a final column - #' for probability. Each row contains values for the parameters and the associated probability for - #' those parameter values. The file can be saved as a csv file. - #' - #' To calculate the posteriors, `map()` calls the `fit()` method with the `cycles` argument set to 0 - #' and the `algorithm` argument set to "POSTPROB". If `data` are not provided as an argument to - #' `map()`, the model's `data` field is used instead. If `data` is provided, it must be a - #' [PM_data] object or the pathname of a file which can be loaded as a [PM_data] object. - #' @param ... Arguments passed to the `fit` method. Note that the `cycles` argument is set to 0, - #' and the `algorithm` argument is set to "POSTPROB" automatically. - map = function(...) { - # browser() - args <- list(...) - - if (!is.null(purrr::pluck(args, "cycles")) && purrr::pluck(args, "cycles") != 0) { - cli::cli_inform(c("i" = "{.arg cycles} set to 0 for posteriors")) - } - args$cycles <- 0 # ensure cycles is set to 0 - - - if (!is.null(purrr::pluck(args, "algorithm")) && purrr::pluck(args, "algorithm") != "POSTPROB") { - cli::cli_inform(c("i" = "{.arg algorithm} set to POSTPROB for posteriors")) - } - args$algorithm <- "POSTPROB" # ensure algorithm is set to POSTPROB - - - if (is.null(purrr::pluck(args, "data"))) { - cli::cli_abort(c("x" = "Data must be specified for posteriors.")) - } - - if (is.null(purrr::pluck(args, "prior")) || purrr::pluck(args, "prior") == "sobol") { - cli::cli_abort(c( - "x" = "Please specify a non-uniform prior for posteriors.", - " " = "This can be a prior run number or the name of a file with support points." - )) - } - - do.call(self$fit, args) - }, - #' @description - #' Simulate data from the model using a set of parameter values. - #' @details - #' This method simulates output from the model using a set of parameter values - #' provided in the `theta` matrix and the template for dosing/observations in - #' the `data` object. - #' @param data A [PM_data] object containing the dosing and observation information. - #' @param theta A matrix of parameter values to use for the simulation. - #' The `theta` matrix should have the same number of columns as the number of primary parameters in the model. - #' Each row of `theta` represents a different set of parameter values. - #' - sim = function(data, theta) { - if (!inherits(data, "PM_data")) { - cli::cli_abort(c("x" = "Data must be a PM_data object.")) - } - if (!is.matrix(theta)) { - cli::cli_abort(c("x" = "theta must be a matrix.")) - } - if (!is.numeric(theta)) { - cli::cli_abort(c("x" = "theta must be a matrix of numeric values.")) - } - if (ncol(theta) != length(private$get_primary())) { - cli::cli_abort(c("x" = "theta must have the same number of columns as the number of parameters.")) - } - - - temp_csv <- tempfile(fileext = ".csv") - data$save(temp_csv, header = FALSE) - if (getPMoptions()$backend == "rust") { - if (is.null(self$binary_path)) { - self$compile() - if (is.null(self$binary_path)) { - cli::cli_abort(c("x" = "Model must be compiled before simulating.")) - } - } - sim <- simulate_all(temp_csv, self$binary_path, theta, kind = tolower(self$model_list$type)) - } else { - cli::cli_abort(c("x" = "This function can only be used with the rust backend.")) - } - return(sim) - }, - #' @description - #' Compile the model to a binary file. - #' @details - #' This method write the model to a Rust file in a temporary path, - #' updates the `binary_path` field for the model, and compiles that - #' file to a binary file that can be used for fitting or simulation. - #' If the model is already compiled, the method does nothing. - #' - compile = function() { - if (!is.null(self$binary_path) && file.exists(self$binary_path)) { - # model is compiled - return(invisible(NULL)) + file.copy(glue::glue("{path}/{prior}/outputs/theta.csv"), "prior.csv", overwrite = TRUE) + prior <- "prior.csv" + } else if (is.character(prior)) { + # prior specified as a filename + if (!file.exists(prior)) { + msg <- c(msg, "{.arg prior} file does not exist.") + run_error <- run_error + 1 } - - model_path <- file.path(tempdir(), "model.rs") - private$write_model_to_rust(model_path) - output_path <- tempfile(pattern = "model_", fileext = ".pmx") - cli::cli_inform(c("i" = "Compiling model...")) - # path inside Pmetrics package - template_path <- if (Sys.getenv("env") == "Development") { temporary_path() } else { system.file(package = "Pmetrics")} - if (file.access(template_path, 0) == -1 | file.access(template_path, 2) == -1){ - cli::cli_abort(c("x" = "Template path {.path {template_path}} does not exist or is not writable.", - "i" = "Please set the template path with {.fn setPMoptions} (choose {.emph Compile Options}), to an existing, writable folder." - )) - } - if (Sys.getenv("env") == "Development") {cat("Using template path:", template_path, "\n")} - tryCatch( - { - compile_model(model_path, output_path, private$get_primary(), template_path, kind = tolower(self$model_list$type)) - self$binary_path <- output_path - }, - error = function(e) { - cli::cli_abort( - c("x" = "Model compilation failed: {e$message}", "i" = "Please check the model file and try again.") - ) + file.copy(prior, "prior.csv", overwrite = TRUE) # ensure in current working directory + } else if (is.data.frame(prior)) { + # prior specified as a data frame + if (!all(c("prob", self$model_list$parameters) %in% names(prior))) { + msg <- c(msg, "{.arg prior} data frame must contain columns for parameters and probabilities.") + run_error <- run_error + 1 } - ) - - return(invisible(self)) - }, # end compile method - #' @description - #' Copy model code to clipboard. - #' @details - #' This method copies the R code to create the model to the clipboard. - #' This is useful for saving the model code in a script, as model files - #' will be deprecated in future versions of Pmetrics. - copy = function() { - arg_list <- self$arg_list - - # pri - pri <- c( - " pri = list(\n", - - purrr::map_chr(names(arg_list$pri), \(i) { - sprintf(" %s = ab(%.3f, %.3f)", i, arg_list$pri[[i]]$min, arg_list$pri[[i]]$max) - }) %>% paste(collapse = ",\n"), - "\n )," - ) - # cov - if ("cov" %in% names(arg_list)) { - cov <- c( - "\n cov = list(\n", - purrr::map_chr(names(arg_list$cov), \(i) { - sprintf(" %s = interp(%s)", i, ifelse(arg_list$cov[[i]] == 0, "\"none\"", "")) - }) %>% paste(collapse = ",\n"), - "\n )," - ) + prior <- prior %>% dplyr::select(all_of(self$model_list$parameters), prob) + write.csv(prior, "prior.csv", row.names = FALSE) } else { - cov <- NULL + msg <- c(msg, "{.arg prior} must be a numeric run number or character filename.") + run_error <- run_error + 1 } - # sec - if (!is.null(arg_list$sec)) { - sec <- c( - "\n sec = ", - paste0(deparse(arg_list$sec), collapse = "\n "), - "," - ) + } else { + prior <- "sobol" + } + + #### Abort if errors before creating new folder #### + if (run_error > 0) { + cli::cli_alert_danger("{.strong PM_model$fit() aborted due to {run_error} error{?s}:}") + purrr::walk(msg, \(m) cli::cli_bullets(c("*" = m))) + return(invisible(NULL)) + } + #### Continue with fit #### + + # check if model compiled and if not, do so + self$compile() + + intern <- TRUE # always true until (if) rust can run separately from R + + + # make new output directory + + if (is.null(run)) { + olddir <- list.dirs(path, recursive = FALSE) + olddir <- olddir[grep("^\\./[[:digit:]]+", olddir)] + olddir <- sub("^\\./", "", olddir) + if (length(olddir) > 0) { + run <- as.character(max(as.numeric(olddir)) + 1) } else { - sec <- NULL + run <- "1" } - # fa - if (!is.null(arg_list$fa)) { - fa <- c( - "\n fa = ", - paste0(deparse(arg_list$fa), collapse = "\n "), - "," - ) - } else { - fa <- NULL + } else { + if (!is.numeric(run)) { + msg <- c(msg, "{.arg run} must be numeric, so was ignored.") } - # ini - if (!is.null(arg_list$ini)) { - ini <- c( - "\n ini = ", - paste0(deparse(arg_list$ini), collapse = "\n "), - "," - ) + } + + path_run <- normalizePath(file.path(path, run), mustWork = FALSE) + + if (file.exists(path_run)) { + if (overwrite) { + unlink(path_run, recursive = TRUE) + msg <- c(msg, "The previous run in folder '{path_run}' was overwritten.") } else { - ini <- NULL + cli::cli_inform( + c("i" = "The previous run from '{path_run}' was read.", " " = "Set {.arg overwrite} to {.val TRUE} to overwrite prior run in '{path_run}'.") + ) + return(invisible(PM_load(file = normalizePath(file.path(path_run, "PMout.Rdata"), mustWork = FALSE)))) } - # lag - if (!is.null(arg_list$lag)) { - lag <- c( - "\n lag = ", - paste0(deparse(arg_list$lag), collapse = "\n "), - "," + } + + fs::dir_create(path_run) + + #### Save input objects #### + fs::dir_create(normalizePath(file.path(path_run, "inputs"), mustWork = FALSE)) + PM_data$new(data_filtered, quiet = TRUE)$save(normalizePath(file.path(path_run, "inputs", "gendata.csv"), mustWork = FALSE), header = FALSE) + saveRDS(list(data = data, model = self), file = normalizePath(file.path(path_run, "inputs", "fit.rds"), mustWork = FALSE)) + file.copy(self$binary_path, normalizePath(file.path(path_run, "inputs"), mustWork = FALSE)) + + # Get ranges and calculate points + ranges <- lapply(self$model_list$pri, function(x) { + c(x$min, x$max) + }) + + names(ranges) <- tolower(names(ranges)) + # Set initial grid points (only applies for sobol) + marginal_densities <- sapply(ranges, function(x) { + points / (x[2] - x[1]) + }) + if (any(marginal_densities < 2)) { + increase_to <- round(points * (max(2 / marginal_densities)), 0) + msg <- c(msg, "Recommend increasing {.arg points} to at least {increase_to} to ensure adequate coverage of parameter space.") + } + + + if (intern) { + ### CALL RUST + out_path <- normalizePath(file.path(path_run, "outputs"), mustWork = FALSE) + msg <- c(msg, "Run results were saved in folder '{.path {out_path}}'") + rlang::try_fetch( + fit( + # defined in extendr-wrappers.R + model_path = normalizePath(self$binary_path), + data = normalizePath(file.path(path_run, "inputs", "gendata.csv")), + params = list( + ranges = ranges, # not important but needed for POSTPROB + algorithm = algorithm, + error_models = lapply(self$model_list$err, function(x) x$flatten()), + idelta = idelta, + tad = tad, + max_cycles = cycles, # will be hardcoded in Rust to 0 for POSTPROB + prior = prior, # needs warning if missing and algorithm = POSTPROB + points = points, # only relevant for sobol prior + seed = seed + ), + output_path = out_path, + kind = tolower(self$model_list$type) + ), + error = function(e) { + cli::cli_warn("Unable to create {.cls PM_result} object", parent = e) + return(NULL) + } + ) + + PM_parse(path = out_path) + res <- PM_load(path = normalizePath(out_path), file = "PMout.Rdata") + if (report != "none") { + valid_report <- tryCatch( + PM_report(res, path = normalizePath(out_path), template = report, quiet = TRUE), + error = function(e) { + -1 + } ) - } else { - lag <- NULL + if (valid_report == 1) { + msg <- c(msg, "Report generated with {report} template.") + # if(tolower(algorithm) == "postprob") {this_alg <- "map"} else {this_alg <- "fit"} + msg <- c(msg, "If assigned to a variable, e.g. {.code run{run} <-}, results are available in {.code run{run}}.") + } else { + msg <- c(msg, "Report could not be generated.") + } + } + + + if (length(msg) > 1) { + cli::cli_h1("Notes:") + cli::cli_ul() + purrr::walk(msg[-1], ~ cli::cli_li(.x)) + cli::cli_end() + } + return(invisible(res)) + } else { + cli::cli_abort( + c("x" = "Error: Currently, the rust engine only supports internal runs.", "i" = "This is a temporary limitation.") + ) + } + }, # end fit method + + #' @description + #' Calculate posteriors from a fitted model. + #' #' @details + #' This method calculates posteriors from a compiled model. It is not necessary to have + #' run the model first, but it is necessary to have an informative prior distribution. + #' This prior will typically be the result of a previous run, but may also be a file + #' containing support points, with each column named as a parameter in the model plus a final column + #' for probability. Each row contains values for the parameters and the associated probability for + #' those parameter values. The file can be saved as a csv file. + #' + #' To calculate the posteriors, `map()` calls the `fit()` method with the `cycles` argument set to 0 + #' and the `algorithm` argument set to "POSTPROB". If `data` are not provided as an argument to + #' `map()`, the model's `data` field is used instead. If `data` is provided, it must be a + #' [PM_data] object or the pathname of a file which can be loaded as a [PM_data] object. + #' @param ... Arguments passed to the `fit` method. Note that the `cycles` argument is set to 0, + #' and the `algorithm` argument is set to "POSTPROB" automatically. + map = function(...) { + # browser() + args <- list(...) + + if (!is.null(purrr::pluck(args, "cycles")) && purrr::pluck(args, "cycles") != 0) { + cli::cli_inform(c("i" = "{.arg cycles} set to 0 for posteriors")) + } + args$cycles <- 0 # ensure cycles is set to 0 + + + if (!is.null(purrr::pluck(args, "algorithm")) && purrr::pluck(args, "algorithm") != "POSTPROB") { + cli::cli_inform(c("i" = "{.arg algorithm} set to POSTPROB for posteriors")) + } + args$algorithm <- "POSTPROB" # ensure algorithm is set to POSTPROB + + + if (is.null(purrr::pluck(args, "data"))) { + cli::cli_abort(c("x" = "Data must be specified for posteriors.")) + } + + if (is.null(purrr::pluck(args, "prior")) || purrr::pluck(args, "prior") == "sobol") { + cli::cli_abort(c( + "x" = "Please specify a non-uniform prior for posteriors.", + " " = "This can be a prior run number or the name of a file with support points." + )) + } + + do.call(self$fit, args) + }, + #' @description + #' Simulate data from the model using a set of parameter values. + #' @details + #' This method simulates output from the model using a set of parameter values + #' provided in the `theta` matrix and the template for dosing/observations in + #' the `data` object. + #' @param data A [PM_data] object containing the dosing and observation information. + #' @param theta A matrix of parameter values to use for the simulation. + #' The `theta` matrix should have the same number of columns as the number of primary parameters in the model. + #' Each row of `theta` represents a different set of parameter values. + #' + sim = function(data, theta) { + if (!inherits(data, "PM_data")) { + cli::cli_abort(c("x" = "Data must be a PM_data object.")) + } + if (!is.matrix(theta)) { + cli::cli_abort(c("x" = "theta must be a matrix.")) + } + if (!is.numeric(theta)) { + cli::cli_abort(c("x" = "theta must be a matrix of numeric values.")) + } + if (ncol(theta) != length(private$get_primary())) { + cli::cli_abort(c("x" = "theta must have the same number of columns as the number of parameters.")) + } + + + temp_csv <- tempfile(fileext = ".csv") + data$save(temp_csv, header = FALSE) + if (getPMoptions()$backend == "rust") { + if (is.null(self$binary_path)) { + self$compile() + if (is.null(self$binary_path)) { + cli::cli_abort(c("x" = "Model must be compiled before simulating.")) + } } - # eqn - if (!is.null(arg_list$eqn)) { - eqn <- c( - "\n eqn = ", - paste0(deparse(arg_list$eqn), collapse = "\n "), - "," + sim <- simulate_all(temp_csv, self$binary_path, theta, kind = tolower(self$model_list$type)) + } else { + cli::cli_abort(c("x" = "This function can only be used with the rust backend.")) + } + return(sim) + }, + #' @description + #' Compile the model to a binary file. + #' @details + #' This method write the model to a Rust file in a temporary path, + #' updates the `binary_path` field for the model, and compiles that + #' file to a binary file that can be used for fitting or simulation. + #' If the model is already compiled, the method does nothing. + #' + compile = function() { + if (!is.null(self$binary_path) && file.exists(self$binary_path)) { + # model is compiled + return(invisible(NULL)) + } + + model_path <- file.path(tempdir(), "model.rs") + private$write_model_to_rust(model_path) + output_path <- tempfile(pattern = "model_", fileext = ".pmx") + cli::cli_inform(c("i" = "Compiling model...")) + # path inside Pmetrics package + template_path <- if (Sys.getenv("env") == "Development") { + temporary_path() + } else { + system.file(package = "Pmetrics") + } + if (file.access(template_path, 0) == -1 | file.access(template_path, 2) == -1) { + cli::cli_abort(c( + "x" = "Template path {.path {template_path}} does not exist or is not writable.", + "i" = "Please set the template path with {.fn setPMoptions} (choose {.emph Compile Options}), to an existing, writable folder." + )) + } + if (Sys.getenv("env") == "Development") { + cat("Using template path:", template_path, "\n") + } + tryCatch( + { + compile_model(model_path, output_path, private$get_primary(), template_path, kind = tolower(self$model_list$type)) + self$binary_path <- output_path + }, + error = function(e) { + cli::cli_abort( + c("x" = "Model compilation failed: {e$message}", "i" = "Please check the model file and try again.") ) - } else { - eqn <- NULL } - # out - out <- c( - "\n out = ", - paste0(deparse(arg_list$out), collapse = "\n "), + ) + + return(invisible(self)) + }, # end compile method + #' @description + #' Copy model code to clipboard. + #' @details + #' This method copies the R code to create the model to the clipboard. + #' This is useful for saving the model code in a script, as model files + #' will be deprecated in future versions of Pmetrics. + copy = function() { + arg_list <- self$arg_list + + # pri + pri <- c( + " pri = list(\n", + purrr::map_chr(names(arg_list$pri), \(i) { + sprintf(" %s = ab(%.3f, %.3f)", i, arg_list$pri[[i]]$min, arg_list$pri[[i]]$max) + }) %>% paste(collapse = ",\n"), + "\n )," + ) + # cov + if ("cov" %in% names(arg_list)) { + cov <- c( + "\n cov = list(\n", + purrr::map_chr(names(arg_list$cov), \(i) { + sprintf(" %s = interp(%s)", i, ifelse(arg_list$cov[[i]] == 0, "\"none\"", "")) + }) %>% paste(collapse = ",\n"), + "\n )," + ) + } else { + cov <- NULL + } + # sec + if (!is.null(arg_list$sec)) { + sec <- c( + "\n sec = ", + paste0(deparse(arg_list$sec), collapse = "\n "), "," ) - # err - err <- c( - "\n err = list(\n", - purrr::map_chr((arg_list$err), \(i) { - sprintf(" %s(%i, c(%.1f, %.1f, %.1f, %.1f)%s)", + } else { + sec <- NULL + } + # fa + if (!is.null(arg_list$fa)) { + fa <- c( + "\n fa = ", + paste0(deparse(arg_list$fa), collapse = "\n "), + "," + ) + } else { + fa <- NULL + } + # ini + if (!is.null(arg_list$ini)) { + ini <- c( + "\n ini = ", + paste0(deparse(arg_list$ini), collapse = "\n "), + "," + ) + } else { + ini <- NULL + } + # lag + if (!is.null(arg_list$lag)) { + lag <- c( + "\n lag = ", + paste0(deparse(arg_list$lag), collapse = "\n "), + "," + ) + } else { + lag <- NULL + } + # eqn + if (!is.null(arg_list$eqn)) { + eqn <- c( + "\n eqn = ", + paste0(deparse(arg_list$eqn), collapse = "\n "), + "," + ) + } else { + eqn <- NULL + } + # out + out <- c( + "\n out = ", + paste0(deparse(arg_list$out), collapse = "\n "), + "," + ) + # err + err <- c( + "\n err = list(\n", + purrr::map_chr((arg_list$err), \(i) { + sprintf( + " %s(%i, c(%.1f, %.1f, %.1f, %.1f)%s)", i$type, i$initial, ifelse(length(i$coeff) >= 1, i$coeff[1], 0), @@ -1500,7 +1503,7 @@ PM_model <- R6::R6Class( }) %>% paste(collapse = ",\n"), "\n )" ) - + model_copy <- c( "mod <- PM_model$new(\n", paste0(c(pri, cov, sec, fa, ini, lag, eqn, out, err), collapse = ""), @@ -1508,7 +1511,8 @@ PM_model <- R6::R6Class( ) cli::cli_inform(c( ">" = "Model code copied to clipboard.", - ">" = "Paste the code into your script for future use, renaming the assigned variable if needed.")) + ">" = "Paste the code into your script for future use, renaming the assigned variable if needed." + )) if (requireNamespace("clipr", quietly = TRUE)) { clipr::write_clip(model_copy) } else { @@ -1516,211 +1520,209 @@ PM_model <- R6::R6Class( cat(model_copy, sep = "\n") } return(invisible(self)) - - } # end copy - - ), # end public list - private = list( - # read file - R6fromFile = function(file) { - msg <- "" - blocks <- parseBlocks(file) # this function is in PMutilities - # check for reserved variable names - conflicts <- reserved_name_conflicts(blocks) - if (length(conflicts) > 0) { - msg <- glue::glue("The following are reserved names and cannot be used as variables in a model: {paste(conflicts, collapse = ', ')}") - return(list(status = -1, msg = msg)) - } - - if (length(grep(";", blocks$primVar)) > 0) { - # using ';' as separator - sep <- ";" - } else { - if (length(grep(",", blocks$primVar)) > 0) { - # using ',' as separator - sep <- "," - } else { - return(list(status = -1, msg = "\nPrimary variables should be defined as 'var,lower_val,upper_val' or 'var,fixed_val'.\n")) - } - } - - # build arg_list - arg_list <- list() - # this function makes pri for PM_model - arg_list$pri <- sapply(strsplit(blocks$primVar, sep), function(x) { - # find out if constrained to be positive - const_pos <- any(grepl("\\+", x)) - if (const_pos) { - x <- gsub("\\+", "", x) - cli::cli_inform(c( - "i" = "Truncating variables to positive ranges is not required for NPAG/NPOD", - " " = "This may be updated as parametric algorithms come online, but will be ignored for now." - )) - } - - # find out if constant - const_var <- any(grepl("!", x)) - if (const_var) { - x <- gsub("!", "", x) - cli::cli_abort(c("x" = "Constants should be defined in the appropriate block, not #PRI.")) - } - - values <- as.numeric(x[-1]) - - if (length(x[-1]) == 1) { # fixed - cli::cli_abort(c( - "x" = "Fixed but unknown are no longer supported.", - "i" = "If necessary, fit them as random and then use a fixed value in subsequent runs." - )) - } else { # range - thisItem <- list(ab(values[1], values[2])) - } - names(thisItem) <- x[1] - thisItem - }) # end sapply - - # covariates - covar <- blocks$covar - const_covar <- grepl("!", covar) # returns boolean vector, length = ncov - covar <- gsub("!", "", covar) # remove "!" - covar_list <- tolower(covar) - - # add to arg_list - arg_list$cov <- purrr::map_vec(const_covar, \(x){ - type <- ifelse(!x, "lm", "none") - interp(type) - }) %>% - purrr::set_names(covar_list) - - - # extra - # if (blocks$extra[1] != "") { - # arg_list$ext <- blocks$extra - # } else { - # arg_list$extra <- NULL - # } - - # secondary variables - if (blocks$secVar[1] != "") { - arg_list$sec <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$secVar, collapse = '\n ')}\n}}"))) - } else { - arg_list$sec <- NULL - } - - # bioavailability - if (blocks$f[1] != "") { - arg_list$fa <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$f, collapse = '\n ')}\n}}"))) + } # end copy + ), # end public list + private = list( + # read file + R6fromFile = function(file) { + msg <- "" + blocks <- parseBlocks(file) # this function is in PMutilities + # check for reserved variable names + conflicts <- reserved_name_conflicts(blocks) + if (length(conflicts) > 0) { + msg <- glue::glue("The following are reserved names and cannot be used as variables in a model: {paste(conflicts, collapse = ', ')}") + return(list(status = -1, msg = msg)) + } + + if (length(grep(";", blocks$primVar)) > 0) { + # using ';' as separator + sep <- ";" + } else { + if (length(grep(",", blocks$primVar)) > 0) { + # using ',' as separator + sep <- "," } else { - arg_list$fa <- NULL + return(list(status = -1, msg = "\nPrimary variables should be defined as 'var,lower_val,upper_val' or 'var,fixed_val'.\n")) } - - # bolus - if (blocks$bol[1] != "") { + } + + # build arg_list + arg_list <- list() + # this function makes pri for PM_model + arg_list$pri <- sapply(strsplit(blocks$primVar, sep), function(x) { + # find out if constrained to be positive + const_pos <- any(grepl("\\+", x)) + if (const_pos) { + x <- gsub("\\+", "", x) cli::cli_inform(c( - "i" = "The bolus block is no longer used as of Pmetrics 3.0.0.", - " " = "Indicate bolus inputs as {.code B[x]} in equations, where {.code x} is the input number." + "i" = "Truncating variables to positive ranges is not required for NPAG/NPOD", + " " = "This may be updated as parametric algorithms come online, but will be ignored for now." )) } - - # initial conditions - if (blocks$ini[1] != "") { - arg_list$ini <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$ini, collapse = '\n ')}\n}}"))) - } else { - arg_list$ini <- NULL - } - - # lag time - if (blocks$lag[1] != "") { - arg_list$lag <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$lag, collapse = '\n ')}\n}}"))) - } else { - arg_list$lag <- NULL + + # find out if constant + const_var <- any(grepl("!", x)) + if (const_var) { + x <- gsub("!", "", x) + cli::cli_abort(c("x" = "Constants should be defined in the appropriate block, not #PRI.")) } - - # differential equations - legacy - if (!is.null(blocks$diffeq) && blocks$diffeq[1] != "") { - cli::cli_inform(c( - "i" = "The #DIFFEQ block is no longer used as of Pmetrics 3.0.0.", - " " = "The block is now called #EQN for more general equations.", - " " = "Equations have been moved to the {.code eqn} element." + + values <- as.numeric(x[-1]) + + if (length(x[-1]) == 1) { # fixed + cli::cli_abort(c( + "x" = "Fixed but unknown are no longer supported.", + "i" = "If necessary, fit them as random and then use a fixed value in subsequent runs." )) - arg_list$eqn <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$diffeq, collapse = '\n ')}\n}}"))) - } else { - arg_list$eqn <- NULL - } - - # model equations - will eventually replace diffeq above - if (blocks$eqn[1] != "") { - arg_list$eqn <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$eqn, collapse = '\n ')}\n}}"))) - } else { - arg_list$eqn <- NULL - } - - # out/err - n_outputLines <- length(blocks$output) - outputLines <- grep("y\\([[:digit:]]+\\)|y\\[[[:digit:]]+\\]", blocks$output) - if (length(outputLines) == 0) { - return(list(status = -1, msg = "\nYou must have at least one output equation of the form 'Y[1] = ...'\n")) + } else { # range + thisItem <- list(ab(values[1], values[2])) } - - - arg_list$out <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$out, collapse = '\n ')}\n}}"))) - - err <- tolower(gsub("[[:space:]]", "", blocks$error)) - # process constant gamma/lambda - err_type <- c("additive", "proportional")[1 + grepl("^g", err[1])] - const_gamlam <- grepl("!", err[1]) - gamlam_value <- as.numeric(stringr::str_match(err[1], "\\d+\\.?\\d*")) - # process constant coefficients - const_coeff <- grepl("!", err[-1]) # returns boolean vector, length = nout - err <- gsub("!", "", err) # remove "!" - - coeff_fxns <- err[-1] %>% + names(thisItem) <- x[1] + thisItem + }) # end sapply + + # covariates + covar <- blocks$covar + const_covar <- grepl("!", covar) # returns boolean vector, length = ncov + covar <- gsub("!", "", covar) # remove "!" + covar_list <- tolower(covar) + + # add to arg_list + arg_list$cov <- purrr::map_vec(const_covar, \(x){ + type <- ifelse(!x, "lm", "none") + interp(type) + }) %>% + purrr::set_names(covar_list) + + + # extra + # if (blocks$extra[1] != "") { + # arg_list$ext <- blocks$extra + # } else { + # arg_list$extra <- NULL + # } + + # secondary variables + if (blocks$secVar[1] != "") { + arg_list$sec <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$secVar, collapse = '\n ')}\n}}"))) + } else { + arg_list$sec <- NULL + } + + # bioavailability + if (blocks$f[1] != "") { + arg_list$fa <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$f, collapse = '\n ')}\n}}"))) + } else { + arg_list$fa <- NULL + } + + # bolus + if (blocks$bol[1] != "") { + cli::cli_inform(c( + "i" = "The bolus block is no longer used as of Pmetrics 3.0.0.", + " " = "Indicate bolus inputs as {.code B[x]} in equations, where {.code x} is the input number." + )) + } + + # initial conditions + if (blocks$ini[1] != "") { + arg_list$ini <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$ini, collapse = '\n ')}\n}}"))) + } else { + arg_list$ini <- NULL + } + + # lag time + if (blocks$lag[1] != "") { + arg_list$lag <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$lag, collapse = '\n ')}\n}}"))) + } else { + arg_list$lag <- NULL + } + + # differential equations - legacy + if (!is.null(blocks$diffeq) && blocks$diffeq[1] != "") { + cli::cli_inform(c( + "i" = "The #DIFFEQ block is no longer used as of Pmetrics 3.0.0.", + " " = "The block is now called #EQN for more general equations.", + " " = "Equations have been moved to the {.code eqn} element." + )) + arg_list$eqn <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$diffeq, collapse = '\n ')}\n}}"))) + } else { + arg_list$eqn <- NULL + } + + # model equations - will eventually replace diffeq above + if (blocks$eqn[1] != "") { + arg_list$eqn <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$eqn, collapse = '\n ')}\n}}"))) + } else { + arg_list$eqn <- NULL + } + + # out/err + n_outputLines <- length(blocks$output) + outputLines <- grep("y\\([[:digit:]]+\\)|y\\[[[:digit:]]+\\]", blocks$output) + if (length(outputLines) == 0) { + return(list(status = -1, msg = "\nYou must have at least one output equation of the form 'Y[1] = ...'\n")) + } + + + arg_list$out <- eval(parse(text = glue::glue("function() {{\n {paste(blocks$out, collapse = '\n ')}\n}}"))) + + err <- tolower(gsub("[[:space:]]", "", blocks$error)) + # process constant gamma/lambda + err_type <- c("additive", "proportional")[1 + grepl("^g", err[1])] + const_gamlam <- grepl("!", err[1]) + gamlam_value <- as.numeric(stringr::str_match(err[1], "\\d+\\.?\\d*")) + # process constant coefficients + const_coeff <- grepl("!", err[-1]) # returns boolean vector, length = nout + err <- gsub("!", "", err) # remove "!" + + coeff_fxns <- err[-1] %>% purrr::imap(\(x, idx) { glue::glue("{err_type}({gamlam_value}, c({x}), {const_coeff[{idx}]})") }) %>% unlist() - - arg_list$err <- eval(parse(text = glue::glue("c(\n{paste({coeff_fxns}, collapse = ',\n')}\n)"))) - - cat(msg) - flush.console() - return(arg_list) - }, # end R6fromFile - - write_model_to_rust = function(file_path = "main.rs") { - # Check if model_list is not NULL - if (is.null(self$model_list)) { - cli::cli_abort(c("x" = "Model list is empty.", "i" = "Please provide a valid model list.")) - } - - if (self$model_list$type %in% c("Analytical", "ODE")) { - placeholders <- c("eqn", "lag", "fa", "ini", "out", "n_eqn", "n_out") - base <- paste0( - "#[allow(unused_mut)]\nequation::", - self$model_list$type, - "::new(\n", - paste("<", placeholders[1:5], ">", sep = "", collapse = ",\n "), - ",\n (", - paste("<", placeholders[6:7], ">", sep = "", collapse = ", "), - "),\n)" - ) - } else { - cli::cli_abort(c("x" = "Invalid model type.", "i" = "Please provide a valid model type.")) - } - - - # Replace placeholders in the base string with actual values from model_list - base <- placeholders %>% + + arg_list$err <- eval(parse(text = glue::glue("c(\n{paste({coeff_fxns}, collapse = ',\n')}\n)"))) + + cat(msg) + flush.console() + return(arg_list) + }, # end R6fromFile + + write_model_to_rust = function(file_path = "main.rs") { + # Check if model_list is not NULL + if (is.null(self$model_list)) { + cli::cli_abort(c("x" = "Model list is empty.", "i" = "Please provide a valid model list.")) + } + + if (self$model_list$type %in% c("Analytical", "ODE")) { + placeholders <- c("eqn", "lag", "fa", "ini", "out", "n_eqn", "n_out") + base <- paste0( + "#[allow(unused_mut)]\nequation::", + self$model_list$type, + "::new(\n", + paste("<", placeholders[1:5], ">", sep = "", collapse = ",\n "), + ",\n (", + paste("<", placeholders[6:7], ">", sep = "", collapse = ", "), + "),\n)" + ) + } else { + cli::cli_abort(c("x" = "Invalid model type.", "i" = "Please provide a valid model type.")) + } + + + # Replace placeholders in the base string with actual values from model_list + base <- placeholders %>% purrr::reduce(\(x, y) stringr::str_replace(x, stringr::str_c("<", y, ">"), as.character(self$model_list[[y]])), .init = base) - # Write the model to a file - writeLines(base, file_path) - }, - from_file = function(file_path) { - self$model_list <- private$makeR6model(model_filename) - }, - get_primary = function() { - return(tolower(self$model_list$parameters)) - } + # Write the model to a file + writeLines(base, file_path) + }, + from_file = function(file_path) { + self$model_list <- private$makeR6model(model_filename) + }, + get_primary = function() { + return(tolower(self$model_list$parameters)) + } ) # end private ) # end R6Class PM_model @@ -1740,7 +1742,6 @@ additive <- function(initial, coeff, fixed = FALSE) { } - #' @title Proportional error model #' @description #' `r lifecycle::badge("stable")` @@ -1836,7 +1837,6 @@ ab <- function(min, max) { } - #' @title Initial mean/SD for primary parameter values #' @description #' `r lifecycle::badge("stable")` @@ -1863,7 +1863,6 @@ msd <- function(mean, sd) { } - #' @title Model covariate declaration #' @description #' `r lifecycle::badge("stable")` @@ -1899,8 +1898,6 @@ interp <- function(type = "lm") { } - - # PLOT -------------------------------------------------------------------- #' @title Plot PM_model objects @@ -1963,194 +1960,193 @@ interp <- function(type = "lm") { #' } #' @family PMplots -plot.PM_model <- function(x, +plot.PM_model <- function( + x, marker = TRUE, line = TRUE, explicit, implicit, print = TRUE, - ...) { - model <- x - marker <- if (is.list(marker) || marker) { - amendMarker(marker, - default = list( - color = "dodgerblue", - size = 0.25, - line = list(width = 0.5) - ) + ... +) { + model <- x + marker <- if (is.list(marker) || marker) { + amendMarker(marker, + default = list( + color = "dodgerblue", + size = 0.25, + line = list(width = 0.5) ) - } else { - FALSE - } - line <- if (is.list(line) || line) { - amendLine(line, default = list(color = "black")) - } else { - FALSE - } - - if (inherits(model, "PM_lib")) { + ) + } else { + FALSE + } + line <- if (is.list(line) || line) { + amendLine(line, default = list(color = "black")) + } else { + FALSE + } + + if (inherits(model, "PM_lib")) { + eqns <- model$arg_list$eqn + outs <- model$arg_list$out + } else if (inherits(model, "PM_model")) { + if (model$model_list$name == "user") { eqns <- model$arg_list$eqn outs <- model$arg_list$out - } else if (inherits(model, "PM_model")) { - if (model$model_list$name == "user") { - eqns <- model$arg_list$eqn - outs <- model$arg_list$out - } else { - eqns <- get(model$model_list$name)$arg_list$eqn - outs <- get(model$model_list$name)$arg_list$out - } } else { - cli::cli_abort(c( - "x" = "Unknown model type to plot." - )) + eqns <- get(model$model_list$name)$arg_list$eqn + outs <- get(model$model_list$name)$arg_list$out } - - eqns <- func_to_char(eqns) - outs <- func_to_char(outs) - - - # filter any equations that are not diffeq or outputs - - eqns <- eqns %>% + } else { + cli::cli_abort(c( + "x" = "Unknown model type to plot." + )) + } + + eqns <- func_to_char(eqns) + outs <- func_to_char(outs) + + + # filter any equations that are not diffeq or outputs + + eqns <- eqns %>% map( purrr::keep, stringr::str_detect, stringr::regex("dX\\[\\d+\\]|XP\\(\\d+\\)", ignore_case = TRUE) ) %>% unlist() - - outs <- outs %>% + + outs <- outs %>% map( purrr::keep, stringr::str_detect, stringr::regex("Y\\[\\d+\\]", ignore_case = TRUE) ) %>% unlist() - - - - - - #### INTERNAL FUNCTIONS - # Parse the function body - parse_equations <- function(func) { - body_expr <- body(func) - equations <- list() - - # Handle single expression or block - if (is.call(body_expr) && body_expr[[1]] == "{") { - # Multiple statements in braces - for (i in 2:length(body_expr)) { - eq <- body_expr[[i]] - if (is.call(eq) && length(eq) == 3 && as.character(eq[[1]]) %in% c("=", "<-")) { - equations <- append(equations, list(eq)) - } + + + #### INTERNAL FUNCTIONS + # Parse the function body + parse_equations <- function(func) { + body_expr <- body(func) + equations <- list() + + # Handle single expression or block + if (is.call(body_expr) && body_expr[[1]] == "{") { + # Multiple statements in braces + for (i in 2:length(body_expr)) { + eq <- body_expr[[i]] + if (is.call(eq) && length(eq) == 3 && as.character(eq[[1]]) %in% c("=", "<-")) { + equations <- append(equations, list(eq)) } - } else if (is.call(body_expr) && length(body_expr) == 3 && - as.character(body_expr[[1]]) %in% c("=", "<-")) { - # Single assignment - equations <- list(body_expr) } - - return(equations) + } else if (is.call(body_expr) && length(body_expr) == 3 && + as.character(body_expr[[1]]) %in% c("=", "<-")) { + # Single assignment + equations <- list(body_expr) } - - - ##### Handle distributions - # Recursively distribute products over sums in a single expression or equation. - # - Works symbolically (no evaluation). - # - Handles unary minus. - # - If given an assignment (= or <-), only the RHS is expanded. - # Fully distribute products over sums and flatten subtraction. - # If given an assignment (= or <-), only the RHS is expanded. - expand_distribute <- function(expr) { - op_of <- function(e) if (is.call(e)) as.character(e[[1]]) else "" - - # Build a product call (no eval) - make_prod <- function(a, b) as.call(list(as.name("*"), a, b)) - - # Fold a list of factors into a product - fold_prod <- function(factors) Reduce(make_prod, factors) - - # Rebuild a (flattened) sum from signed terms - build_sum <- function(terms) { - if (length(terms) == 0) { - return(0) - } - mk <- function(sign, e) if (sign == -1) as.call(list(as.name("-"), e)) else e - out <- mk(terms[[1]]$sign, terms[[1]]$expr) - if (length(terms) == 1) { - return(out) - } - for (k in 2:length(terms)) { - tk <- terms[[k]] - out <- if (tk$sign == 1) { - as.call(list(as.name("+"), out, tk$expr)) - } else { - as.call(list(as.name("-"), out, tk$expr)) - } - } - out - } - - # Core: return a flat list of signed terms {sign=±1, expr=LANG} - expand_terms <- function(e, sign = 1) { - # atoms - if (!is.call(e)) { - return(list(list(sign = sign, expr = e))) - } - - op <- op_of(e) - - # parentheses - if (op == "(") { - return(expand_terms(e[[2]], sign)) - } - - # assignment: expand RHS only, rebuild later - if (op %in% c("=", "<-")) { - rhs_terms <- expand_terms(e[[3]], +1) - rhs_exp <- build_sum(rhs_terms) - return(list(list(sign = +1, expr = as.call(list(as.name(op), e[[2]], rhs_exp))))) + + return(equations) + } + + + ##### Handle distributions + # Recursively distribute products over sums in a single expression or equation. + # - Works symbolically (no evaluation). + # - Handles unary minus. + # - If given an assignment (= or <-), only the RHS is expanded. + # Fully distribute products over sums and flatten subtraction. + # If given an assignment (= or <-), only the RHS is expanded. + expand_distribute <- function(expr) { + op_of <- function(e) if (is.call(e)) as.character(e[[1]]) else "" + + # Build a product call (no eval) + make_prod <- function(a, b) as.call(list(as.name("*"), a, b)) + + # Fold a list of factors into a product + fold_prod <- function(factors) Reduce(make_prod, factors) + + # Rebuild a (flattened) sum from signed terms + build_sum <- function(terms) { + if (length(terms) == 0) { + return(0) + } + mk <- function(sign, e) if (sign == -1) as.call(list(as.name("-"), e)) else e + out <- mk(terms[[1]]$sign, terms[[1]]$expr) + if (length(terms) == 1) { + return(out) + } + for (k in 2:length(terms)) { + tk <- terms[[k]] + out <- if (tk$sign == 1) { + as.call(list(as.name("+"), out, tk$expr)) + } else { + as.call(list(as.name("-"), out, tk$expr)) } - - # addition - if (op == "+") { + } + out + } + + # Core: return a flat list of signed terms {sign=±1, expr=LANG} + expand_terms <- function(e, sign = 1) { + # atoms + if (!is.call(e)) { + return(list(list(sign = sign, expr = e))) + } + + op <- op_of(e) + + # parentheses + if (op == "(") { + return(expand_terms(e[[2]], sign)) + } + + # assignment: expand RHS only, rebuild later + if (op %in% c("=", "<-")) { + rhs_terms <- expand_terms(e[[3]], +1) + rhs_exp <- build_sum(rhs_terms) + return(list(list(sign = +1, expr = as.call(list(as.name(op), e[[2]], rhs_exp))))) + } + + # addition + if (op == "+") { + return(c( + expand_terms(e[[2]], sign), + expand_terms(e[[3]], sign) + )) + } + + # subtraction (binary or unary) + if (op == "-") { + if (length(e) == 3) { return(c( expand_terms(e[[2]], sign), - expand_terms(e[[3]], sign) + expand_terms(e[[3]], -sign) )) + } else { + return(expand_terms(e[[2]], -sign)) # unary minus } - - # subtraction (binary or unary) - if (op == "-") { - if (length(e) == 3) { - return(c( - expand_terms(e[[2]], sign), - expand_terms(e[[3]], -sign) - )) - } else { - return(expand_terms(e[[2]], -sign)) # unary minus - } - } - - # multiplication: distribute across additive factors - if (op == "*") { - # expand each factor into its additive term list - args <- as.list(e)[-1] - expanded_factors <- lapply(args, function(a) expand_terms(a, +1)) - - # start with neutral element (sign=+1, expr=1) - combos <- list(list(sign = +1, expr = 1)) - for (f_terms in expanded_factors) { - newc <- list() - for (c1 in combos) { - for (t2 in f_terms) { - s <- c1$sign * t2$sign - # build product (avoid multiplying by 1 syntactically where possible) - e1 <- c1$expr - e2 <- t2$expr - prod_expr <- + } + + # multiplication: distribute across additive factors + if (op == "*") { + # expand each factor into its additive term list + args <- as.list(e)[-1] + expanded_factors <- lapply(args, function(a) expand_terms(a, +1)) + + # start with neutral element (sign=+1, expr=1) + combos <- list(list(sign = +1, expr = 1)) + for (f_terms in expanded_factors) { + newc <- list() + for (c1 in combos) { + for (t2 in f_terms) { + s <- c1$sign * t2$sign + # build product (avoid multiplying by 1 syntactically where possible) + e1 <- c1$expr + e2 <- t2$expr + prod_expr <- if (is.numeric(e1) && length(e1) == 1 && e1 == 1) { e2 } else if (is.numeric(e2) && length(e2) == 1 && e2 == 1) { @@ -2162,413 +2158,414 @@ plot.PM_model <- function(x, } else { make_prod(e1, e2) } - newc[[length(newc) + 1]] <- list(sign = s, expr = prod_expr) - } + newc[[length(newc) + 1]] <- list(sign = s, expr = prod_expr) } - combos <- newc } - # apply the incoming sign to all combos - for (i in seq_along(combos)) combos[[i]]$sign <- sign * combos[[i]]$sign - return(combos) + combos <- newc } - - # other calls: expand children but treat as atomic w.r.t. addition - args <- as.list(e) - args[-1] <- lapply(args[-1], function(a) build_sum(expand_terms(a, +1))) - list(list(sign = sign, expr = as.call(args))) - } - - # If it's an assignment, expand_terms already rebuilt it as a single term. - # Otherwise, build the flattened sum. - terms <- expand_terms(expr, +1) - - # Special case: a single rebuilt assignment - if (length(terms) == 1 && is.call(terms[[1]]$expr) && - op_of(terms[[1]]$expr) %in% c("=", "<-")) { - return(terms[[1]]$expr) + # apply the incoming sign to all combos + for (i in seq_along(combos)) combos[[i]]$sign <- sign * combos[[i]]$sign + return(combos) } - - build_sum(terms) + + # other calls: expand children but treat as atomic w.r.t. addition + args <- as.list(e) + args[-1] <- lapply(args[-1], function(a) build_sum(expand_terms(a, +1))) + list(list(sign = sign, expr = as.call(args))) + } + + # If it's an assignment, expand_terms already rebuilt it as a single term. + # Otherwise, build the flattened sum. + terms <- expand_terms(expr, +1) + + # Special case: a single rebuilt assignment + if (length(terms) == 1 && is.call(terms[[1]]$expr) && + op_of(terms[[1]]$expr) %in% c("=", "<-")) { + return(terms[[1]]$expr) } - - # Parse output equations - parse_output_equations <- function(equations) { - # if (is.null(func)) return(list()) - - # equations <- parse_equations(func) - outputs <- list() - - for (eq in equations) { - lhs <- eq[[2]] - rhs <- eq[[3]] - - # Extract output number from y[i] - if (is.call(lhs) && as.character(lhs[[1]]) == "[" && + + build_sum(terms) + } + + # Parse output equations + parse_output_equations <- function(equations) { + # if (is.null(func)) return(list()) + + # equations <- parse_equations(func) + outputs <- list() + + for (eq in equations) { + lhs <- eq[[2]] + rhs <- eq[[3]] + + # Extract output number from y[i] + if (is.call(lhs) && as.character(lhs[[1]]) == "[" && length(lhs) >= 3 && as.character(lhs[[2]]) == "y") { - output_num <- as.numeric(as.character(lhs[[3]])) - - # Convert RHS to string representation - rhs_str <- deparse(rhs, width.cutoff = 500) - - # Find which compartment this output refers to - comp_ref <- extract_x_pattern(rhs) - if (is.null(comp_ref)) { - # Look deeper in the expression for x[i] patterns - comp_ref <- find_x_in_expression(rhs) - } - - outputs <- append(outputs, list(list( - output_num = output_num, - equation = rhs_str, - compartment = comp_ref - ))) + output_num <- as.numeric(as.character(lhs[[3]])) + + # Convert RHS to string representation + rhs_str <- deparse(rhs, width.cutoff = 500) + + # Find which compartment this output refers to + comp_ref <- extract_x_pattern(rhs) + if (is.null(comp_ref)) { + # Look deeper in the expression for x[i] patterns + comp_ref <- find_x_in_expression(rhs) } + + outputs <- append(outputs, list(list( + output_num = output_num, + equation = rhs_str, + compartment = comp_ref + ))) } - - return(outputs) } - - # Find x[i] pattern in any expression - find_x_in_expression <- function(expr) { - if (is.call(expr)) { - # Check current expression - x_idx <- extract_x_pattern(expr) - if (!is.null(x_idx)) { - return(x_idx) - } - - # Recursively check sub-expressions - for (i in 1:length(expr)) { - if (i > 1) { # Skip the function name - x_idx <- find_x_in_expression(expr[[i]]) - if (!is.null(x_idx)) { - return(x_idx) - } + + return(outputs) + } + + # Find x[i] pattern in any expression + find_x_in_expression <- function(expr) { + if (is.call(expr)) { + # Check current expression + x_idx <- extract_x_pattern(expr) + if (!is.null(x_idx)) { + return(x_idx) + } + + # Recursively check sub-expressions + for (i in 1:length(expr)) { + if (i > 1) { # Skip the function name + x_idx <- find_x_in_expression(expr[[i]]) + if (!is.null(x_idx)) { + return(x_idx) } } } - return(NULL) } - - # Parse terms from right-hand side recursively - parse_rhs_terms <- function(rhs_expr) { - terms <- list() - - # Recursively extract terms and track sign - extract_terms <- function(expr, current_sign = "+") { - if (is.call(expr)) { - op <- as.character(expr[[1]]) - - if (op == "+") { + return(NULL) + } + + # Parse terms from right-hand side recursively + parse_rhs_terms <- function(rhs_expr) { + terms <- list() + + # Recursively extract terms and track sign + extract_terms <- function(expr, current_sign = "+") { + if (is.call(expr)) { + op <- as.character(expr[[1]]) + + if (op == "+") { + extract_terms(expr[[2]], current_sign) + extract_terms(expr[[3]], current_sign) + } else if (op == "-") { + if (length(expr) == 3) { + # Binary subtraction: a - b extract_terms(expr[[2]], current_sign) - extract_terms(expr[[3]], current_sign) - } else if (op == "-") { - if (length(expr) == 3) { - # Binary subtraction: a - b - extract_terms(expr[[2]], current_sign) - extract_terms(expr[[3]], ifelse(current_sign == "+", "-", "+")) - } else { - # Unary minus: -a - extract_terms(expr[[2]], ifelse(current_sign == "+", "-", "+")) - } - } else if (op == "*") { - # Look for x[i] and collect coefficient(s) - vars <- lapply(expr[-1], extract_x_pattern) - if (any(!sapply(vars, is.null))) { - xi_index <- which(!sapply(vars, is.null)) - x_part <- expr[[xi_index + 1]] - coeff_parts <- expr[-c(1, xi_index + 1)] - coeff_str <- paste(sapply(coeff_parts, deparse), collapse = "*") - terms <<- append(terms, list(list(expr = x_part, coeff = coeff_str, sign = current_sign))) - } else { - # No x[i], maybe just a numeric or unrelated variable - terms <<- append(terms, list(list(expr = expr, coeff = NULL, sign = current_sign))) - } + extract_terms(expr[[3]], ifelse(current_sign == "+", "-", "+")) + } else { + # Unary minus: -a + extract_terms(expr[[2]], ifelse(current_sign == "+", "-", "+")) + } + } else if (op == "*") { + # Look for x[i] and collect coefficient(s) + vars <- lapply(expr[-1], extract_x_pattern) + if (any(!sapply(vars, is.null))) { + xi_index <- which(!sapply(vars, is.null)) + x_part <- expr[[xi_index + 1]] + coeff_parts <- expr[-c(1, xi_index + 1)] + coeff_str <- paste(sapply(coeff_parts, deparse), collapse = "*") + terms <<- append(terms, list(list(expr = x_part, coeff = coeff_str, sign = current_sign))) } else { - # Some other operation; treat as atomic for now + # No x[i], maybe just a numeric or unrelated variable terms <<- append(terms, list(list(expr = expr, coeff = NULL, sign = current_sign))) } } else { - # Symbol or constant + # Some other operation; treat as atomic for now terms <<- append(terms, list(list(expr = expr, coeff = NULL, sign = current_sign))) } + } else { + # Symbol or constant + terms <<- append(terms, list(list(expr = expr, coeff = NULL, sign = current_sign))) } - - extract_terms(rhs_expr) - - return(terms) } - - # Extract x[i] pattern from expression - extract_x_pattern <- function(expr) { - if (is.call(expr) && as.character(expr[[1]]) == "[" && + + extract_terms(rhs_expr) + + return(terms) + } + + # Extract x[i] pattern from expression + extract_x_pattern <- function(expr) { + if (is.call(expr) && as.character(expr[[1]]) == "[" && length(expr) == 3 && as.character(expr[[2]]) == "x") { - return(as.numeric(as.character(expr[[3]]))) - } - return(NULL) + return(as.numeric(as.character(expr[[3]]))) } - - # Extract compartment connections - extract_connections <- function(equations) { - compartments <- c() - all_terms <- list() - - # First pass: collect signed terms per compartment - for (eq in equations) { - lhs <- eq[[2]] - rhs <- eq[[3]] - - if (is.call(lhs) && as.character(lhs[[1]]) == "[" && + return(NULL) + } + + # Extract compartment connections + extract_connections <- function(equations) { + compartments <- c() + all_terms <- list() + + # First pass: collect signed terms per compartment + for (eq in equations) { + lhs <- eq[[2]] + rhs <- eq[[3]] + + if (is.call(lhs) && as.character(lhs[[1]]) == "[" && length(lhs) >= 3 && as.character(lhs[[2]]) == "dx") { - comp_num <- as.numeric(as.character(lhs[[3]])) - compartments <- unique(c(compartments, comp_num)) - - # dist_terms <- distribute_product(rhs) - # terms <- parse_rhs_terms(dist_terms) - terms <- parse_rhs_terms(rhs) - - for (term in terms) { - expr <- term$expr - sign <- term$sign - coeff <- term$coeff - - x_index <- extract_x_pattern(expr) - if (!is.null(x_index)) { - all_terms <- append(all_terms, list(list( - comp = comp_num, - sign = sign, - coeff = coeff, - x_index = x_index - ))) - } - } - } - } - - # Second pass: match positive and negative terms - used <- logical(length(all_terms)) - connections <- list() - - for (i in seq_along(all_terms)) { - ti <- all_terms[[i]] - if (used[i] || ti$sign != "-") next - - match_found <- FALSE - for (j in seq_along(all_terms)) { - tj <- all_terms[[j]] - if (used[j] || tj$sign != "+") next - - # Match by coeff and x_index - if (identical(ti$coeff, tj$coeff) && ti$x_index == tj$x_index) { - connections <- append(connections, list(list( - from = ti$comp, - to = tj$comp, - coeff = ti$coeff + comp_num <- as.numeric(as.character(lhs[[3]])) + compartments <- unique(c(compartments, comp_num)) + + # dist_terms <- distribute_product(rhs) + # terms <- parse_rhs_terms(dist_terms) + terms <- parse_rhs_terms(rhs) + + for (term in terms) { + expr <- term$expr + sign <- term$sign + coeff <- term$coeff + + x_index <- extract_x_pattern(expr) + if (!is.null(x_index)) { + all_terms <- append(all_terms, list(list( + comp = comp_num, + sign = sign, + coeff = coeff, + x_index = x_index ))) - used[i] <- TRUE - used[j] <- TRUE - match_found <- TRUE - break } } - - # If no match, it's elimination - if (!match_found) { + } + } + + # Second pass: match positive and negative terms + used <- logical(length(all_terms)) + connections <- list() + + for (i in seq_along(all_terms)) { + ti <- all_terms[[i]] + if (used[i] || ti$sign != "-") next + + match_found <- FALSE + for (j in seq_along(all_terms)) { + tj <- all_terms[[j]] + if (used[j] || tj$sign != "+") next + + # Match by coeff and x_index + if (identical(ti$coeff, tj$coeff) && ti$x_index == tj$x_index) { connections <- append(connections, list(list( from = ti$comp, - to = 0, + to = tj$comp, coeff = ti$coeff ))) used[i] <- TRUE + used[j] <- TRUE + match_found <- TRUE + break } } - - return(list(connections = connections, compartments = sort(compartments))) + + # If no match, it's elimination + if (!match_found) { + connections <- append(connections, list(list( + from = ti$comp, + to = 0, + coeff = ti$coeff + ))) + used[i] <- TRUE + } } - - - - # Modify layout logic to use circular positioning - create_plot <- function(connections, compartments, outputs) { - box_width <- 1.2 - box_height <- 0.8 - - n_comp <- length(compartments) - if (n_comp == 0) { - plot.new() - title(main = "No compartments detected") - return() - } - - # Circular layout - radius <- 4 - angles <- seq(0, 2 * pi, length.out = n_comp + 1)[-(n_comp + 1)] - angles <- angles - angles[which(compartments == 1)] + pi / 2 - x_pos <- radius * cos(angles) - y_pos <- radius * sin(angles) - layout_df <- data.frame(compartment = compartments, x = x_pos, y = y_pos) - - # Elimination - elim_comps <- unique(sapply(connections, function(c) if (c$to == 0) c$from else NULL)) - elim_comps <- elim_comps[!sapply(elim_comps, is.null)] - - arrow_segments <- list() - arrow_heads <- list() - labels <- list() - label_tracker <- list() - - # Bidirectional detection - pair_keys <- data.frame( - original = sapply(connections, function(c) paste(c(c$from, c$to), collapse = "-")), - sorted = sapply(connections, function(c) paste(sort(c(c$from, c$to)), collapse = "-")) + + return(list(connections = connections, compartments = sort(compartments))) + } + + + # Modify layout logic to use circular positioning + create_plot <- function(connections, compartments, outputs) { + box_width <- 1.2 + box_height <- 0.8 + + n_comp <- length(compartments) + if (n_comp == 0) { + plot.new() + title(main = "No compartments detected") + return() + } + + # Circular layout + radius <- 4 + angles <- seq(0, 2 * pi, length.out = n_comp + 1)[-(n_comp + 1)] + angles <- angles - angles[which(compartments == 1)] + pi / 2 + x_pos <- radius * cos(angles) + y_pos <- radius * sin(angles) + layout_df <- data.frame(compartment = compartments, x = x_pos, y = y_pos) + + # Elimination + elim_comps <- unique(sapply(connections, function(c) if (c$to == 0) c$from else NULL)) + elim_comps <- elim_comps[!sapply(elim_comps, is.null)] + + arrow_segments <- list() + arrow_heads <- list() + labels <- list() + label_tracker <- list() + + # Bidirectional detection + pair_keys <- data.frame( + original = sapply(connections, function(c) paste(c(c$from, c$to), collapse = "-")), + sorted = sapply(connections, function(c) paste(sort(c(c$from, c$to)), collapse = "-")) + ) + dup_table <- table(pair_keys$sorted) + duplicates <- pair_keys$original[which(pair_keys$sorted %in% names(dup_table[dup_table > 1]))] + + for (conn in connections) { + from <- as.numeric(conn$from) + to <- as.numeric(conn$to) + if (to == 0) next + + from_pos <- layout_df %>% filter(compartment == from) + to_pos <- layout_df %>% filter(compartment == to) + + key <- paste(sort(c(from, to)), collapse = "-") + offset <- if (key %in% duplicates) 0.25 else 0 + + dx <- to_pos$x - from_pos$x + dy <- to_pos$y - from_pos$y + len <- sqrt(dx^2 + dy^2) + norm_dx <- dx / len + norm_dy <- dy / len + perp_x <- -norm_dy + perp_y <- norm_dx + + # Adjust start/end for box edges + edge_dx <- box_width / 2 * norm_dx + edge_dy <- box_height / 2 * norm_dy + + x1 <- from_pos$x + offset * perp_x + edge_dx + y1 <- from_pos$y + offset * perp_y + edge_dy + x2 <- to_pos$x + offset * perp_x - edge_dx + y2 <- to_pos$y + offset * perp_y - edge_dy + + arrow_segments[[length(arrow_segments) + 1]] <- data.frame( + x = x1, y = y1, xend = x2, yend = y2, color = "black" ) - dup_table <- table(pair_keys$sorted) - duplicates <- pair_keys$original[which(pair_keys$sorted %in% names(dup_table[dup_table > 1]))] - - for (conn in connections) { - from <- as.numeric(conn$from) - to <- as.numeric(conn$to) - if (to == 0) next - - from_pos <- layout_df %>% filter(compartment == from) - to_pos <- layout_df %>% filter(compartment == to) - - key <- paste(sort(c(from, to)), collapse = "-") - offset <- if (key %in% duplicates) 0.25 else 0 - - dx <- to_pos$x - from_pos$x - dy <- to_pos$y - from_pos$y - len <- sqrt(dx^2 + dy^2) - norm_dx <- dx / len - norm_dy <- dy / len - perp_x <- -norm_dy - perp_y <- norm_dx - - # Adjust start/end for box edges - edge_dx <- box_width / 2 * norm_dx - edge_dy <- box_height / 2 * norm_dy - - x1 <- from_pos$x + offset * perp_x + edge_dx - y1 <- from_pos$y + offset * perp_y + edge_dy - x2 <- to_pos$x + offset * perp_x - edge_dx - y2 <- to_pos$y + offset * perp_y - edge_dy - - arrow_segments[[length(arrow_segments) + 1]] <- data.frame( - x = x1, y = y1, xend = x2, yend = y2, color = "black" - ) - - # Arrowhead at 2/3 - frac <- 2 / 3 - xm <- x1 + frac * (x2 - x1) - ym <- y1 + frac * (y2 - y1) - perp_x_head <- -norm_dy * 0.10 - perp_y_head <- norm_dx * 0.10 - - arrow_heads[[length(arrow_heads) + 1]] <- data.frame( - x = c(xm - perp_x_head, xm + perp_x_head, xm + norm_dx * 0.3), - y = c(ym - perp_y_head, ym + perp_y_head, ym + norm_dy * 0.3), - group = paste0("arrow", length(arrow_heads) + 1), - fill = "black" + + # Arrowhead at 2/3 + frac <- 2 / 3 + xm <- x1 + frac * (x2 - x1) + ym <- y1 + frac * (y2 - y1) + perp_x_head <- -norm_dy * 0.10 + perp_y_head <- norm_dx * 0.10 + + arrow_heads[[length(arrow_heads) + 1]] <- data.frame( + x = c(xm - perp_x_head, xm + perp_x_head, xm + norm_dx * 0.3), + y = c(ym - perp_y_head, ym + perp_y_head, ym + norm_dy * 0.3), + group = paste0("arrow", length(arrow_heads) + 1), + fill = "black" + ) + + if (!is.null(conn$coeff)) { + key_xy <- paste(round((x1 + x2) / 2, 2), round((y1 + y2) / 2, 2)) + if (is.null(label_tracker[[key_xy]])) label_tracker[[key_xy]] <- 0 + vertical_offset <- 0.25 * label_tracker[[key_xy]] + label_tracker[[key_xy]] <- label_tracker[[key_xy]] + 1 + + mx <- (x1 + x2) / 2 + my <- (y1 + y2) / 2 - vertical_offset + + labels[[length(labels) + 1]] <- data.frame( + x = mx, y = my, label = conn$coeff, + color = "white", text_color = "black" ) - - if (!is.null(conn$coeff)) { - key_xy <- paste(round((x1 + x2) / 2, 2), round((y1 + y2) / 2, 2)) - if (is.null(label_tracker[[key_xy]])) label_tracker[[key_xy]] <- 0 - vertical_offset <- 0.25 * label_tracker[[key_xy]] - label_tracker[[key_xy]] <- label_tracker[[key_xy]] + 1 - - mx <- (x1 + x2) / 2 - my <- (y1 + y2) / 2 - vertical_offset - - labels[[length(labels) + 1]] <- data.frame( - x = mx, y = my, label = conn$coeff, - color = "white", text_color = "black" - ) - } } - - seg_df <- bind_rows(arrow_segments) - head_df <- bind_rows(arrow_heads) - label_df <- bind_rows(labels) - - elim_triangles <- layout_df %>% + } + + seg_df <- bind_rows(arrow_segments) + head_df <- bind_rows(arrow_heads) + label_df <- bind_rows(labels) + + elim_triangles <- layout_df %>% filter(compartment %in% elim_comps) %>% mutate(x = x - 0.4, y = y + 0.2) - - p <- ggplot() - - if (nrow(seg_df) > 0) { # we have connections - p <- p + geom_segment( - data = seg_df, - aes(x = x, y = y, xend = xend, yend = yend, color = color), - linewidth = 0.7, show.legend = FALSE - ) + + + p <- ggplot() + + if (nrow(seg_df) > 0) { # we have connections + p <- p + geom_segment( + data = seg_df, + aes(x = x, y = y, xend = xend, yend = yend, color = color), + linewidth = 0.7, show.legend = FALSE + ) + geom_polygon( data = head_df, aes(x = x, y = y, group = group, fill = fill), color = NA, show.legend = FALSE ) - } - - p <- p + geom_rect( - data = layout_df, - aes( - xmin = x - box_width / 2, xmax = x + box_width / 2, - ymin = y - box_height / 2, ymax = y + box_height / 2 - ), - fill = "grey80", color = "black" - ) + - + } + + p <- p + geom_rect( + data = layout_df, + aes( + xmin = x - box_width / 2, xmax = x + box_width / 2, + ymin = y - box_height / 2, ymax = y + box_height / 2 + ), + fill = "grey80", color = "black" + ) + + geom_label( data = layout_df, aes(x = x, y = y + 0.15, label = compartment), fill = NA, color = "black", fontface = "bold", size = 7, label.size = NA ) + - + geom_point( data = elim_triangles, aes(x = x, y = y), color = "black", shape = 2, size = 4 ) - - if (nrow(label_df) > 0) { + + if (nrow(label_df) > 0) { + p <- p + geom_label( + data = label_df, + aes(x = x, y = y, label = label), + fill = label_df$color, + color = label_df$text_color, + fontface = "bold", + size = 4, + show.legend = FALSE, + label.size = NA + ) + } + if (length(outputs) > 0) { + out_df <- bind_rows(lapply(outputs, function(out) { + comp <- out$compartment + if (is.null(comp)) { + return(data.frame(x = NA, y = NA, label = NA)) + } + txt <- paste0("y[", out$output_num, "]") + pos <- layout_df %>% filter(compartment == comp) + data.frame(x = pos$x, y = pos$y - 0.2, label = txt) + })) + if (any(is.na(out_df$x))) { + missing_out <- as.character(which(is.na(out_df$x))) + cli::cli_warn(c("!" = "{?This/These} output equation{?s} did not contain a parsable compartment number on the right side of the equation and {?was/were} not plotted: {missing_out}.")) + out_df <- out_df %>% filter(!is.na(x)) + } else { p <- p + geom_label( - data = label_df, + data = out_df, aes(x = x, y = y, label = label), - fill = label_df$color, - color = label_df$text_color, + color = "black", + fill = NA, fontface = "bold", - size = 4, - show.legend = FALSE, - label.size = NA + size = 3, + label.size = 0 ) } - if (length(outputs) > 0) { - out_df <- bind_rows(lapply(outputs, function(out) { - comp <- out$compartment - if (is.null(comp)) return(data.frame(x = NA, y = NA, label = NA)) - txt <- paste0("y[", out$output_num, "]") - pos <- layout_df %>% filter(compartment == comp) - data.frame(x = pos$x, y = pos$y - 0.2, label = txt) - })) - if (any(is.na(out_df$x))){ - missing_out <- as.character(which(is.na(out_df$x))) - cli::cli_warn(c("!" = "{?This/These} output equation{?s} did not contain a parsable compartment number on the right side of the equation and {?was/were} not plotted: {missing_out}.")) - out_df <- out_df %>% filter(!is.na(x)) - } else { - p <- p + geom_label( - data = out_df, - aes(x = x, y = y, label = label), - color = "black", - fill = NA, - fontface = "bold", - size = 3, - label.size = 0 - ) - } - } - - p <- p + + } + + p <- p + coord_fixed() + xlim(range(layout_df$x) + c(-1.5, 1.5)) + ylim(range(layout_df$y) + c(-1.5, 1.5)) + @@ -2576,38 +2573,43 @@ plot.PM_model <- function(x, ggtitle("Structural model") + scale_color_identity() + scale_fill_identity() - - return(p) - } - - ##### FUNCTION CALLS - - # equations <- parse_equations(this_model) - # Expand and distribute equations - - expanded_equations <- purrr::map(parse(text = tolower(eqns)), expand_distribute) - outputs <- parse_output_equations(as.list(parse(text = tolower(outs)))) - out_comp <- map_chr(outputs, function(o) if (!is.null(o$compartment)) {as.character(o$compartment)} else {"unknown"}) - result <- extract_connections(expanded_equations) - elim_count <- sum(sapply(result$connections, function(c) c$to == 0)) - elim_coeff <- map_chr(result$connections, function(c) if (c$to == 0) c$coeff else NA) %>% keep(~ !is.na(.)) - - cli::cli_h1("Model elements") - cli::cli_text("{length(result$compartments)} compartments") - cli::cli_text("{length(result$connections)} connections, of which {elim_count} {?is an elimination/are eliminations}: {elim_coeff}") - cli::cli_text("{length(outputs)} output{?s} in compartment{?s} {unique(out_comp)}") - - - p <- create_plot(result$connections, result$compartments, outputs) - if (print) print(p) - - return( - invisible(list( - p = p, - connections = result$connections, - compartments = result$compartments, - outputs = outputs - )) - ) + + return(p) } - \ No newline at end of file + + ##### FUNCTION CALLS + + # equations <- parse_equations(this_model) + # Expand and distribute equations + + expanded_equations <- purrr::map(parse(text = tolower(eqns)), expand_distribute) + outputs <- parse_output_equations(as.list(parse(text = tolower(outs)))) + out_comp <- map_chr(outputs, function(o) { + if (!is.null(o$compartment)) { + as.character(o$compartment) + } else { + "unknown" + } + }) + result <- extract_connections(expanded_equations) + elim_count <- sum(sapply(result$connections, function(c) c$to == 0)) + elim_coeff <- map_chr(result$connections, function(c) if (c$to == 0) c$coeff else NA) %>% keep(~ !is.na(.)) + + cli::cli_h1("Model elements") + cli::cli_text("{length(result$compartments)} compartments") + cli::cli_text("{length(result$connections)} connections, of which {elim_count} {?is an elimination/are eliminations}: {elim_coeff}") + cli::cli_text("{length(outputs)} output{?s} in compartment{?s} {unique(out_comp)}") + + + p <- create_plot(result$connections, result$compartments, outputs) + if (print) print(p) + + return( + invisible(list( + p = p, + connections = result$connections, + compartments = result$compartments, + outputs = outputs + )) + ) +} diff --git a/R/PMoptions.R b/R/PMoptions.R index d21b0f82..13e96cbb 100755 --- a/R/PMoptions.R +++ b/R/PMoptions.R @@ -459,9 +459,9 @@ setPMoptions <- function(launch.app = TRUE) { bias_method = glue::glue(c("", "percent_")[1 + as.numeric(input$use_percent)], input$bias_method), imp_method = glue::glue(c("", "percent_")[1 + as.numeric(input$use_percent)], input$imp_method), ic_method = input$ic_method, - report_template = input$report_template, - backend = input$backend, - model_template_path = input$model_template_path + report_template = input$report_template + # backend = input$backend, + # model_template_path = input$model_template_path ) tryCatch({ @@ -481,14 +481,14 @@ setPMoptions <- function(launch.app = TRUE) { }) }) - # Reset model template path to default - shiny::observeEvent(input$reset_model_template, { - shiny::updateTextAreaInput( - session, - inputId = "model_template_path", - value = system.file(package = "Pmetrics") - ) - }) + # # Reset model template path to default + # shiny::observeEvent(input$reset_model_template, { + # shiny::updateTextAreaInput( + # session, + # inputId = "model_template_path", + # value = system.file(package = "Pmetrics") + # ) + # }) # Exit the app with confirmation if unsaved changes shiny::observeEvent(input$exit, { diff --git a/data-raw/data-raw.R b/data-raw/data-raw.R index e620122b..718b4454 100755 --- a/data-raw/data-raw.R +++ b/data-raw/data-raw.R @@ -40,6 +40,39 @@ usethis::use_data(model, overwrite = TRUE) # model file modEx <- PM_model$new(file.path(wd, "model.txt")) +modEx <- PM_model$new( + + pri = list( + ka = ab(0.100, 0.900), + ke = ab(0.001, 0.100), + v = ab(30.000, 120.000), + tlag1 = ab(0.000, 4.000) + ), + cov = list( + wt = interp(), + africa = interp(), + age = interp(), + gender = interp(), + height = interp() + ), + lag = function () + { + lag[1] = tlag1 + }, + eqn = function () + { + dx[1] = b[1] - ka * x[1] + dx[2] = rateiv[1] + ka * x[1] - ke * x[2] + }, + out = function () + { + y[1] = x[2]/v + }, + err = list( + proportional(5, c(0.0, 0.1, -0.0, 0.0)) + ) + +) usethis::use_data(modEx, overwrite = TRUE) # data diff --git a/man/PM_pta.Rd b/man/PM_pta.Rd index 28c058ce..9d6f7c51 100755 --- a/man/PM_pta.Rd +++ b/man/PM_pta.Rd @@ -10,7 +10,7 @@ This object class contains results of simulations and a probability of target attainment analysis. } \details{ -#' There are two ways of creating a \emph{PM_pta} object. +There are two ways of creating a \emph{PM_pta} object. \itemize{ \item \strong{PM_sim$pta()} This way uses the simulation method directly from a \link{PM_sim} object. diff --git a/man/summary.PM_pta.Rd b/man/summary.PM_pta.Rd index 08db5283..05d95b62 100755 --- a/man/summary.PM_pta.Rd +++ b/man/summary.PM_pta.Rd @@ -21,7 +21,7 @@ intersection of all the PTAs.} \item{...}{Not used.} } \value{ -A tibble with the following columns (only the first four if \code{at = "intersect"}): +A tibble with the following columns (only the first five if \code{at = "intersect"}): \itemize{ \item \strong{reg_num} is the number of the simulation regimen \item \strong{label} is the simulation label, for reference From 92efe79f51aea61fd4548d21f34a8a4b20e08c08 Mon Sep 17 00:00:00 2001 From: Michael Neely Date: Mon, 12 Jan 2026 11:33:08 -0800 Subject: [PATCH 3/4] Update tutorial --- R/DataDescriptions.R | 12 ------------ R/PM_model.R | 23 +++++++++++++++++++---- R/PM_tutorial.R | 4 ++-- R/PMbuild.R | 5 +++-- data-raw/data-raw.R | 8 ++++---- data/modEx.rda | Bin 215741 -> 228314 bytes data/model.rda | Bin 312 -> 0 bytes man/PM_model.Rd | 24 ++++++++++++++++++++---- man/model.Rd | 19 ------------------- 9 files changed, 48 insertions(+), 47 deletions(-) delete mode 100755 data/model.rda delete mode 100755 man/model.Rd diff --git a/R/DataDescriptions.R b/R/DataDescriptions.R index dce4f0bf..bcf73ca8 100755 --- a/R/DataDescriptions.R +++ b/R/DataDescriptions.R @@ -195,15 +195,3 @@ "locales" - - -#' @name model -#' @docType data -#' @title Pmetrics model -#' @usage model -#' @format Sample model text -#' @author Michael Neely -#' @keywords datasets - - -"model" diff --git a/R/PM_model.R b/R/PM_model.R index 84384549..1c59b8ed 100644 --- a/R/PM_model.R +++ b/R/PM_model.R @@ -409,7 +409,7 @@ PM_model <- R6::R6Class( )) } self$arg_list <- private$R6fromFile(x) # read file and populate fields - cli::cli_inform(c("i" = "{.strong Note:} Model files will be deprecated in future versions of Pmetrics.")) + # cli::cli_inform(c("i" = "{.strong Note:} Model files will be deprecated in future versions of Pmetrics.")) self$copy() # copy to clipboard } else if (is.list(x)) { # x is a list in R purrr::walk(model_sections, \(s) { @@ -1374,7 +1374,7 @@ PM_model <- R6::R6Class( output_path <- tempfile(pattern = "model_", fileext = ".pmx") cli::cli_inform(c("i" = "Compiling model...")) # path inside Pmetrics package - template_path <- if (Sys.getenv("env") == "Development") { temporary_path() } else { system.file(package = "Pmetrics")} + template_path <- if (Sys.getenv("env") == "Development") { file.path(temporary_path(), "template") } else { system.file(package = "Pmetrics")} if (file.access(template_path, 0) == -1 | file.access(template_path, 2) == -1){ cli::cli_abort(c("x" = "Template path {.path {template_path}} does not exist or is not writable.", "i" = "Please set the template path with {.fn setPMoptions} (choose {.emph Compile Options}), to an existing, writable folder." @@ -1395,12 +1395,27 @@ PM_model <- R6::R6Class( return(invisible(self)) }, # end compile method + #' @description + #' Save model to file (deprecated). + #' @details + #' This method is deprecated. Existing or manually created model files may be read with `PM_model$new(filename)`, + #' but including model code in scripts is preferred, as this makes models used in runs transparent and more easily edited. + #' Use the `PM_model$copy()` method instead to copy the model code to the clipboard and paste into scripts. + save = function(){ + cli::cli_warn(c("x" = "Saving model files is deprecated.", + "i" = "Model list copied to clipboard.")) + self$copy() + return(invisible(self)) + }, + + + + #' @description #' Copy model code to clipboard. #' @details #' This method copies the R code to create the model to the clipboard. - #' This is useful for saving the model code in a script, as model files - #' will be deprecated in future versions of Pmetrics. + #' This is useful for saving the model code in a script. copy = function() { arg_list <- self$arg_list diff --git a/R/PM_tutorial.R b/R/PM_tutorial.R index b9a599f6..b2a54b73 100755 --- a/R/PM_tutorial.R +++ b/R/PM_tutorial.R @@ -61,9 +61,9 @@ PM_tutorial <- function() { cli::cli_text("Click {.file {file.path(ans, 'Learn/Rscript/Learn.R')}} to proceed with the tutorial.") # create the sample data files - data(modEx, dataEx) + data(dataEx) + # example data readr::write_csv(dataEx$data, file = file.path(ans, "Learn", "src", "ex.csv" ), na = ".") - modEx$save(file = file.path(ans, "Learn", "src", "model.txt" )) # simulation template PM_data$new()$ addEvent(id = 1, time = 0, dose = 500, addl = 5, ii = 24, wt = 46.7, africa = 1, age = 21, gender = 1, height = 180)$ diff --git a/R/PMbuild.R b/R/PMbuild.R index e397be88..30fd0bc4 100755 --- a/R/PMbuild.R +++ b/R/PMbuild.R @@ -16,10 +16,11 @@ PM_build <- function() { - clear_build() # clean prior template/artifacts + if (is_rustup_installed()) { cli::cli_text("Rust was detected in your system, Fetching dependencies and building base project.") - dummy_compile(template_path = getPMoptions("model_template_path")) + template_path <- if (Sys.getenv("env") == "Development") { file.path(temporary_path(), "template") } else { system.file(package = "Pmetrics")} + dummy_compile(template_path = template_path) } else { cli::cli_text("Rust was not detected in your system, this can be caused by multiple reasons:") ul <- cli::cli_ul() diff --git a/data-raw/data-raw.R b/data-raw/data-raw.R index 718b4454..f772af6e 100755 --- a/data-raw/data-raw.R +++ b/data-raw/data-raw.R @@ -35,11 +35,11 @@ usethis::use_data(mic1, overwrite = TRUE) # Run Files ------------------------------------------------------------------- -model <- readLines(file.path(wd, "model.txt")) -usethis::use_data(model, overwrite = TRUE) +# model <- readLines(file.path(wd, "model.txt")) +# usethis::use_data(model, overwrite = TRUE) -# model file -modEx <- PM_model$new(file.path(wd, "model.txt")) +# # model file +#modEx <- PM_model$new(file.path(wd, "model.txt")) modEx <- PM_model$new( pri = list( diff --git a/data/modEx.rda b/data/modEx.rda index 6630063384c0db52757b8c761275630da4e27884..014ac8a247acd78ddb9cfb6561292864b6a60ede 100755 GIT binary patch literal 228314 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 z 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 literal 215741 zcmbTd1yCJ9*EV=@CwTAx!QI{6U4jO8hl`Wo4#6FQyUWGh-QC??gJo~t@7=B4t@`V) z-Dl2BpEEtvHZ5mPcZ=#+^00_#Q>tm_nk81iB%A#G-(ok^hc8D(7y_OKzJvrD4MVj6 z16ouB4FCWr!xxeyLHlU{dIFWp0LlOeQ9oR%{8$7m8ihsx05$XF8AA9A2@C@GQD{E^ z41gNUK>C3%|4U%~*Cz+!M2ru%K(&n5I-aZ`7=VQcpjQ6phYulK23aVI1s1-DB0jBV z7&;32{qskv0|qRE!^pwH06+-m&~}ED#LD_ni<4sj02lyKEI+WPiN`OgJH7=SIB2o4S$FW|rV%K4Y>{~P`l2te?z9%pf*i7xAQDG{qpZhr0>ge|b&9Cx|T1h_s}XWnNNZNz56Y0lQ>$`OXzu_IB_pM))g zw+-B8GYaM$&M=JynB^*9;Zi^d2T-%4z$mMTP=Hh;ZDRoxB4X&PUh^1%6X&o1p2K}a zS1UB!g6xH_#M+C{e#_wGQzMV~fgJz<<#=_?tYOgtEhokj5CoOUKSk(j-+gTuf#m9S zX`{UqI8t*vrQi%~#an6{ZkubhkdHRDsHg^Y(Y11*7{qj70 zaIfFAPdz9vIMO#3Az(DP%~oq)J*6d;#UGIkBXFJz>B}Ih#FQ^o;ra%#YB{afegz4T zkoHrD2dGMm(4vld*6^TZhEz-PpinSrvAKvd)HN1D6czO!thBh3@bWPS>Ldqh@u8B! zU^@e*vy6~zX)N@bQEGaym9*V%ol78tE;Be$Me`&ZY(yo;Qjf{=45HD=Wgp7$&a#vN zs-o%(sc7mnE$*Z;7Cf_Ab195QlWSR5aFHDlNh_1x2GyD#@!mR%I%Av@^%yH4(+tiv z^LTNPRbyIX6v!@h1!O<&W^9$Avsjl{6h}EuQEyvhXO_A;CYv|`_B0<~0fA%`l1)Jg za%RbP8Rjw!88$ldAn;StE1<@7Yxz~p5zaAlG8xKIkX3@YLdAp(D8Y7CzEC!)&UQ|I z1thD^VBQjdDK892g(#xLM2O3Q zk`#u`MFcl1SOBb~FaXdE4e-wy?j_AdMrSp(Vzo5SmsC)~M8jIO&bG9oN_=z78-Xjq=gjE^zXaSwtxadWpjojVBfKf4N=EiA5gJm929TL4gk)I%#RG1{;I#i2 zmPE&%$+y5XwK!fyj`GrAV+YOkRCSTwGn0T0Gw%Ej*c(Ul23{n37QJ$-ZeEGq2aI?G9IK+1fk5%ux9>X z*Z8(8$(I|3B;IR*APF;u{s?E1G)4C~(h1|jP6**X$Vg-F8*f*6_S zyihP_XY-j2VG`Tnj|ch}b(1@5AaUU7S<%-d^Qdz*WEt0-t5 zGkf~nNkzAY+b5@4!S|<1eX`$rP*l1)v6&nkv<#AL|var&{dS z$Bc3nDv8i8c%4dL9OjCx3*|Uy=8E3fPa=#%=sYHM%bD3})pJeNOI1}5=DiAKUC-z0 zRfC>(N|n{ID5vT+Xp+T5KR$v`^}jE7b#=9u|Fpj>e7&yQfG3573X2QEMZ@Riowt~X z#rEPp4CkE*w6P7Qo`r@A>QJhGxOKY;MlZql2u#N^)mYG+9=9iL?W) z*@2er&CYkY)fN4dQ3PUtLG(R*Olh^_Ocl_tIZ^D{J%f_|P3W}>8G{o5 z(!^O40im@3(=oora2JIyeg2HYuFmnof)uBMfIdX%6tWk?4W@oZDO_nV7sW;B1im{+ z>df6MF<+*>?;!KDXbw)aisfPQT&%)vqvp6bUTwF(!;oI{dIU|WSs!jDM$}Q7-yIq$ zOaFw}X{7E5&Bw7HjZa+GNoOYS;EuF2rF7m@7yq>3d#$QRayu;IdDp5nE6mt6!9qVT zZ>022m{D$^gYm+|CdbH8g@KN*{j&k?4J<}~(Qn`DyH%ub*i1)skZqSJa00n?_;Z^Y znC8c1(+JJqzWqTFQcMkh+KLh<)2%QJU(z3l-oBgSzxLeVcWNY*N9Vtr2@|ISMxiCG zGuPo7p|#)DfMs`@T%0Z^LOZGKSjpF!!LR6*i_8*CjMV87c*ay)KSAC_`YX{M%;~P@d4izgwlZh1K%s0@vtSazDO5?57 zL>opX^yUV-oy#gHJ(@B~M#iue!V&(AOKMeZtcG@rvB&O0s)y|RD+!-J=j=E_LoPfD z9Iu#U)i=V#kqGm{EszbtqiMf%7}aCC0t0+!V``?UUL_7$NeC^6hlUf=8t|1s%X6MhRf2URu|f@tCJ^Zl=%@@zJ{s3jY( z8cAUO%EbQ9gT2Uyz&pWaU%y>3gH*Oj3->TQ)>#~qVN|HN#u_X#c45wCOB;T{WB%FG zC;^cyDj^@t$#n@dO~|}qJVfjPF~L3q&ROY@elNt==YQbzYa%| zQwUHNs~xXl-!WEA4nm*TEZapl+0x7Q^!zFqTqg@bRb;L;9^_=skSLJFq>Pvr&LmDT zYegBb7F>eX_$3w zBqG`JB#=UF_g2imM{!7B z4*13ZEr{&6>p`oQ`GkVP(^Cz*8y1QI{S66oV%BvHVuoB$jwEgCsJ?bWp2_z)p77Y} z_!MvtKb{?69d(=x!L5a(p)t=GZbEL!;5EeJL3VKw^gitA+L&SaDz;WgR8hpcc9YA{ zA(dC}bFX49rJb8)UNK<0+`e*d8^#i-&PJ)&I?DsvmctIp)v1~JK3mz2sM>Zp&D~i2 zvl|HqhL+O-hJidJuUK7oS`)<0G#X|VJw!TTt*MXC#0=aE6&T4mvU*A|k9z;1$R!zC zX65N~UrQHAFPFmDrJsXeytnZXmeeBBN|4*CSF`0|2hXW3V$-=~$N>ZbIfy-+Cd5uq z7w1a{t}lX?R#o!FP!jGO#AKF?&U0{F{^Wx0y#%041m|)g_O~jB|^v1J<=tbaw zOLvC&Z|HJxme$$_OU50J9s^sHgE8(n6PuJMl_UW@$nc)^pvCiu>@K1HFrJ+qxf7)+ z)QqADgwv^Q_yn3|xHZ>bNgx94X@td2Y)|s9eZ>xtqy#aWo$VnOg!uAi_7|VXhD7Ti zAUYh%8OvjhWM425tQ`33{=ENo*;u-J`zzRL4SR*9`BAN^0~lqUIpI~}<4v_mTWJ17 zc5)K(QI5m>O!4HZ9#UN0)sBM_ip{&`0D|NuRoKWCX2;LXcW9rHN^GEUrs(VtHV~fm-D;ycJP*FiKpWmTMTR z(%J{ddSyjt5*(cEf@BjNYN=QYbP4sBr`%)m+awa9Rj;rn;0aKxt2TB42!y7zZ45JL zJNu;sF*4<&&Dj#_P#392A8OXiCR5@_t}c5Rf1fDitm*F|0%W;3G9I{DhX@f6>ja~ zAnD{Ss^3Q{`Lyb#*Yd5ct(fah-LZ-D@j0rguMf29VS;-x(2<{v)Mk;>^=Q2X;X~kx zkg1&{9`64brKDRR?x*6IC2}-djeyhv)3=b&_P?lCSSwysD09?*m}%!Yh1@i!wGfcR#OdHM9QBs zagXBEYpET8g;$*RlBu~TPkqC8w7jssu({(jL-OD}W{qw0RRBYHettfMN#&Yj(>X<~ z$qUfVu*T%=)|~%rzW8EQkmUFJ4yCC66yF!h$KCjonH>_(F;1hbl{EAUVp4h`F8{>g zXqE`|of6x`ee2JC=mnbh*I}64N7QMlammY#3JxV z){LjLYCOK0za2&r6dP=rYw$r31E>iqI4mqAuJ>BFwCmC(FTG>R(PR+ zlDN%rfeV_s4;d}D^lco`U2iiQu{UWr@jh3_6-a`ZCQ?vHgE8$UyTFR_o%eEBq%I_y zWGv;{T%BCA+{L{Cv+S7D!}FJ*bZeTZKHcy?9d9 z6Hr8%C2lmn7JqGoDH~nC^r-!+wRFtL$hDf?R4F+URnCCOErkI1jz!EAfXWnQ#l4nR z+)~`wz)W~9fKuy8-5f9${-|F?`>Xv+0R(|0efC+pl;|Z9uj)O=5YGui0Sxj~H$2_iPFIyQSMwuI#adXyx8ZCM&i&K}{=thGI*+2%ZO zN&i2jLXD$J&BaBl{F~QJvDjTxI`|##3x55l(*}G*)k`26oW5t#GA9k!&x&nYfAOPf zl=qOf?%TxUqv5L<&%a-K9vGY92>ja+IbV+y#&s4Ot3T6RzwY7u{Y)-iq6Vwjx?`g= z&&awReVE>ol*;6wiwRW^VPv!KXB6%@I%i-h#jcBEyHdjD;v&hXAWra$c-PG9xMt6A zye~#DXvE$^8H-mEb|qHtrpT!`KCtw^DB(@;<9d2tTiDtHHZ_sQ%aDh~3;%P#)MXzN zErMw?uLtR}N;e_BfSl{%!3wkZHBD!rS*CMBi5r?*xd{4^sY&D)z_K=Zny?&EbC_lx zM@;`!(>AY=M#a^1$?ux`w2_$#tRnt2<>bn>{3f((W{dq0)iE@K#5SVQ3@ zkl0etNH5hxeU-_`&|<)>%W^{fr^bffXgP?PrS@uMxG(kU4|*vVn~yi@X3~aLGqG!h zJW$qDNlJq-u~Nbsu{YMLr&>@q<#ADYaNEsjcOOJ)*{$?fFs<4tL}(q0$gu{v&(*|1 z5jk{uF@MG~KZt(}*XnVJlt-i@feU+h4yKH`8Fj8XnV!MMfas&$<X1L{Ha9NxWiD0>UbZ(#)uIE^bd-cA zn8unS#rZKw-oXabszWv8!<0?&3BK=899Xcu+^Zv63YRjk=^BmG#Au~QippR!iO^0Q zPVtA*cl-({jhFD`+`~WC%-0E%RgHb$ZggYphoqRvw^PmOO?@a0Fm1j-fT@|yUp;Nq zWzaOHmEhE#@6ZV<3t-<~LvqFbT*qcv<>BQ)y-^#%Mvn~g>5-?0t%f?mPd9=jan%P< zIkrp;@qxjucXj&x#~XecKAQkRk7IrRU7w}~9v1Ge8Xe#^r6 zBvJeJHjrm3-)X(PynOU3Znnq3ku?i54vnTo=) zo`x${O$U+~1cDn&y?Aq;nsiNYrHu|w@VIHRiaxkDH83Ew%-hWqF6#Fwq^+rV7nOx8 zT3YOf`hhE2u)ncoo5*;($m-h6C?<1-9Ro6A-ji;vWHe|E1w>%iz@=Y8f0Y-YgX;gs z_5q>~hXEKsLuw^Mp9uL36$cII2z$9K*0l}0mff&T9Wcv&n8NIdHR)c8;#pbg$;!ln z*>tNPhQNn#8MXQxNvy`^J0`I5sTKZa zI2-M~#W4&A^Z0VYM=Dv2<3q>uYMONXk?`HkmQvOTj}<0SYhr+Zm445E2+F^?f4!)0 z3LycV0)=t|`jG$58&Yw=_GhaaZn>X`l zJTAimQat0S=(RGLSBG$CfG~J~!keJsyDhkH?(5TU<@LsU)g?rUwtmrdd(`r#`@Co_ zP2o>*8;h1?Kt~~K3_l$@8X-Qy7|oEvx-pxpt01n+p|~!1gZ+M3skWXu_P&GZl0P&w zIah5{#m2^_S}~Pop(i0&sL*hcx1>ZtV+9^wWmVH{+XG%GmLrC(H0?Efu_b2hVTPHI zhyBw6*2HT3wwa=n{(}}I;)m$8PC@iqthnG%VX&&Q7TuU6m2gXyLIj6 z)os(+a$~>(R4OBDTI=3?J$r{zh11cgY-!ABGgXvdJ|>&-7( zC(P~svD-8P8bfL;N4KZhW)7yTxL@OLSFAi7sTLL4Ya0FQnzN6g43VDAy1I6tl;q&f zRu`wVI5Iip@rnD4xNw&PEi&s>j|5#*EUnr4-WSgJLDuYuiy@K##D{VV2|Ou67n1&2 zjW|WHNvd^7->v-#tRVa&U)6)L6h^(~<8eNZdb8PL95pSEO6^SXwG^oYCle&wC+mpo6n$TN+Y0D^arSI zaC825@f;t*aHi*ety@bm-zhQU-;Eky&Gk(#F7T>ApSJS85?}h#>eOLD>+9Hf;Dl3) zd~})V$YAQSoK%w0E}Kpn)R!+m#qXBRmErjsRw{u*r@#_9qFt`1!;h1Ka;o1sm?8i= z(&uyH2`}_3PnvA=98@#YK}hkOvMGfgV0`f6`d(hxJ8)D5aw*!dIFR~EHnwb_qVKc6 z&be>~tf#p;hf(+P!7S1)WR-(AsgMYDpv=IfN}4RXR9$Qft_0Gx-X>PEE`6OaWUxw1 zEK*fXBdckgX|Ylx<|eiVKCBUsa}|Vee&5;1WVa_$WV@tUY!t}rAC2d}&b%A-%WRml zZmAZ$IiNY3FQ%DJE)Vky)v?5S;_3J*By$!$L8<;Z}eXp8VI4b-)bsb`c_wbt+$}sh)Q1`C8@f^uKlgy zON(1WYHC82`BZ>h%Y|C-$rA(Xr6;coVFSJk;h$!E;MPGK+=FtayF+j z^o#Et%$J%n{-U|lItH|^wtKUkW5o%02 zPS`i<&7hPNA|I7kJIrMFno|rMj`)6dv^BN<$)wfE{ml!oIRhV9--$B98O2trq=>FN zo9uV~Ae<z27nNGqc z-1rP9^mBGYb+XbNsdZEnNZ=mco%lM%z-?zM=k~C=>Z!E5U$k#{HvUfR;;qHwTw-L| z7^Hlxu+D(py3*pg@>%2NWPRL0Xl&`6&}qcmH$}<()Ja!Hnnex&j0Fo#=*6KSuv`!(mjid3-}qtFnm$3v6bVDGk6ymakhy?JeCWMtlYs^+pPGm#+{8tyx? z&gqeW!h3a%&FHZ4oaViMe>r9H<8QlC^_Q+2)j2!L`%vA_5u9|NwXf-g{r0{;@J}<$ z-u2MO7#bq&IMvs;2}voPu?h)UUYTO@e$y~Ml6#=*TB}9n(p>xQ>i*}h%=p#|oBI$J zw#f-9GZRnGoL1}m=2KIu{*g>dV1O@`=Vl>|JaKSQZpdeS;B4jK&gv>jG}ZcgP@TTp zC-Mi*mtf~NWIIvNQ$Uo$``sUI;`!Ols)?nO?iD|M;)EalBWI4h#%^ zDLxeP;A%!l^REr0qD%Pdk(#Bsn8oYi$$rV+o~G@S&;ME589WRa=w^7IKJGan>6WGi z23!mRb#YkeCv5a-J4I|k!8m-&SBBeL`xbkVh%#kfPl2)&9LokhT&#N%L}>T!v6~j? zOpw5Lc{9y>t+kl8mNPHAC6nWY+*LY>K-JsA9>eWy-dcN!wq$;tQKyI0bKBF@*P~bB zXxuhg`5e4I`*VqIO;{@}2P%1m_b369=5xEtI4Y*9GPIV7=>hT+riPDSI+ovU_ zQtV2TVMi)7I2+LRITd$8Qf9I^<@HMj$~=jOuAyuqo(|KpIimf$K@D2-%WW@95A@E( z-226i?Q?8n^|e`fQ?BcT;lF;{99giR`DYG?fB!PlQh%@VKvsX59e=G`Ljx8GAYqzSaVPfwh|$aso&1S{t$aT6SE0j}X(nkebSY^Bo{=2WDz z3zf>Z*%lMIMMK7}9#(U2A8jsqg2gKj&72P>_&g4jfOuXb$2`1O z$69^Y7-e)hWW$GT92(ps+->hp<9MGUicsGx73f2aNIEQjni9F#aM z*NsM(j-6;%lajh;F1a8MA61ayEZbT>SuyJdAo10gL%MP+2>=4c7&B3&fImYlr0T|( zIkF-Z&DP&LYa$j=^{n|Hn`nX#uM=oeQhSTaVP$67Ws$@Bb6q0Lt<2@M)7=qE=OY?Y znJf=aid8E`%6SMtk!YuS1})W7Z7Ifs)lL>{DvXN;Y;0ON73LQCF?_4+nI#`?(Li<= zmQ@qx%lgj_ErE-1;vUX>s^Thg(l8VSoo%0BuXSuXg-%G{B(ja8i z9XZ>=(|MX-d09h54p(M*I1kmd^6cRolW4GuBSknx;%ORiyliQvugsx0 z)4}gH%!rzpN1RFArH{`SZ7T8;(e=WW$VOtf5=X*D6RfAki_*)|6#D;kyj!(gY|9vH zDV4!Nf^TR+*&R*#34x7`j!v9jg@uN0O6U}aA6AoQy(rLzT3~8)(y&_jP6YEozULwp zm*V@wQL{dUt7UH~S`7X5o6Nw%)n|LsQuU@!WC_nrPpSCNSt_9Z!VoJqwSe2m=OKLg zu&|gxS=~-|I=n|y6QOVZ=)#iU)Ellw!uA<^D5uYs%hW9vollT!NA`>wI*ZENG6!A5E08+~E# zjBy0DMW-Q_giyh}h6Z}0`NW!L32pp>YQF|r7m&HnlG0HUTGeTDcR7v*l6Xt$Z+!BG{01R583n8N!rzYMScI)(Gu-u z0hUu*BO8+UCwdpVeFogMQp#~w50NS^dREripUJV}z8_L-3}%8zxRQ|WS$xyy)uPFDR?s96(7~=a z`t35^tG_(l*48t&FZg)+v+zvo`_{{MyT8lRl|xyF{WqbfBpVEW?SHy}G8v3rExe+$ znhJj0uf6W$iOHnlgaIy^vFA(GQQhN&cYP)vr@>q=a`?jW zZGGY0?NR^i(pR?6M{K^5s)S=DjY+c01jnqG2#$Ok=Am#E zo4Ci}Ku9P^KFizD-11s%GH|J{+RMPr&Ao}w{&3#sMLzf8$EWVT3$IrAh1p*dDzJjm(dl8V79XXyUL-kj(i$4su6q_e9t<7efRL7zl@)S^Yt zB$Hw94}!ENX5EQlb~G;Co>#wo>bo%8kSg=t47lP#=oEzIz|+e1?=ks;rdhK4i?|(r z4!du{A+t{Jl2Zg{jAvP+SF404RnB*Soz=Q4O3F2cNzQ(ZP?fEblhQGv5FMYyeAog# zAaeD+Z7jJv;&wd!nRI2x7;RtyyF$l*G^|$~+r(;Uv;eS8F_28NIyB_*b^H-Aa{=jW#R)q@Hcg8>BAa-0 z@vEoyKJu*i!S3j!Ee{=5axX-YrI-=V6Vum%tj|`96b-N=pY&$h+cSd0gUUnACmP(7 zEw?~xq)z=UKp-J7Bh&AOWWC&iwZG|Ct&0%I9jH>Fz6jQe;T~2FjqIA-aX%HF(lpSX zXc20wS1}eB(kRfW)#019JSE%PGtXtX`;w*a9N+6`v=Dk_cEW_^I}?#SVqCzhr*+-Jo#(mQSxVG1K4OU07$jDR+9)$lKGL(Y!^@Ba zFBq9!wOj?y4Cre{msPUQu3N4;73Jl--Iwmmh9Vl5REsFe#*D;1P#w}@SK17v$)1VP zsGVxnW0Y$(A`uiv{tPT#UF*)$3Lw0i*fr~PR;lRwS%@B4jFu!caYX~R2$tR4cri6J zZb<#4IS**eVfRKQCRj8xlda5NC<;<%Sx6ydT}@$7skG6SVAP{4gdT5^Rja48Xy9S) zV}#Sxv|Ul)k!-Buag=Hgy$#RtaG#;Wh{>64~~IuvWYc^R1m>bKl# zg>uCz>&Udgvp95?UwcM$bfTGwXPCy#^U`}Y5;E;)O=`r!~P+SGke2^3=GqQk&6B- z^3OW>Wuv+Sxn4V?w+g_vh=t>-$b=Ib*>9cg#o^KANAK*KdTbj#vYXpR=Wc8om6OX} zmUZP>zA7uR<7ZmDvpb8I+yeX#9rELoGG7&DZ`*n9u-CjetK}#E6s1S9Jg!D_;qeaD zv6YK&8n4T$rqy3Ra;dSnjL52HWW3|p|Fg=tkdV=)*@1sJN)E77N=1J46=>dz;(9a)^ZbD3MqN8It){ z_LRn>Wp86;G(~q|Mz2T5r7~c>f$z@FBEmm|Rq4y>g6+h_|4LKOO*?u;DHTfQcw*L- zQ0m{#a{%M*9?dBsTZk{wL8hi^$V6;s`#^7N<6I&31@;FHc-f?CUF$2CC*fKdH^25W zw+5}?H?`$Ql!rT0dAmHiA?E`D;~;nU=RpgU0Z^^wXlC0J#>A&3&=6oXjf~zNW2X49>+?Fy=PeSk2|OF zkVM*AN((Fx1o@VFdrJA#RLso1Z^4pT&gpg=`X(xs#L&%@ z@}5c7g}YxR8R+VYtyp=Yit*!et%oKPXCoS{Zr2L7^xK!B!Yl}TBmKmsbzF!!6!Hvh zIYRDM^#-_7Z8)ROEjKg{1&PFYBI)S(B)6UaOlTw@?;TjwS;+ndkXV9>>~Avae|N1>+lOGIlD=4zSjm7! zMrJ&67;8z!-mlOpI%gSt@{6UA3+bXD-~R}TD0~5(f~8RWCBsh;9w4tai7TrkhyQ~I zGX+y2s2v*zcF7vI#Ly>j8yCG56WNR`cBXQ8e$7cPmLlLs;{7L<$1N6)#qneMZ6odj z*zFvngHcs8UX+F!{yWup8DB|+g$8^>)Sv?XMo>*dvvUS{;5TWKSO(@kF~Lo7_h=*u zhUaosGHGS@@wk$7Y^q}s>C z+s9=8sNs%2;X&Mh-NXIGJXTg!NYOx7zD=&-wJMjU!?&MtT{CtQP~{bK$XWfr^Aojk z?c6}M7+iVHh9!&LcEPY>kHrrB_bXH1GnO_x4hg(F5#~7TE}EkBty>8nswaS@NA7jj zE?dK<5#tdpW@y~==#ptG>9CY^N&=7W1xM*YqwB31Dk$`K zY=Yt&FProMGLB%!g9mzUnv({rqQOS|Cz3@g_^^!T-Wt`Ys4+QD?2EUzU%2L;d|Afv zGP0(3H#L>O7M=lxKLfTVi6EBKd8=K9U71k=R3L*qB)Ebs-UCSZ2`1Ku6?x#&U8W+gC zWv-iD+DI;TuFs~WY&0yRfDLR$f7lMtmO?9|1D-sANg{^fprSw;-uFANi^u*#CL2^& z%V8YFs;=D0Ulu|J_Z`t=dTnW&_-i_{skk1i1m}7yH{Hw)plUjO%8;VCq96HW`s@WG zYeCn)o%y3-KMtQl`wYx*vy&*`lk(?`EXfBaR~_>fn;EuLIu$MmwC$ITJthjvUK146xuCRbXSrzN85Wy4)iSVYSdHT2G}JlV zuOR?JS-DD`tyQzpShAm;*o#{KHh0&;(WKk@V$j(Ytwa@Zv!T2&wQEDZar@iez_T>t z28$+=VeAhhuvJrav2j`%xO7=i*2qx$rm<1~Yq)XlQ9smW)kCjSuQkr)byEMK93NG; zUAC=?i$J5pF>5tDU!rlmSG8z%b~6CpMt^LmcdQrt3#eH4OQCGsJpneGgH{jWFV5Sy z7Iz@yDd*~PWj^XldeTGIP2Zeu$uWr3LWgQdRGwR471sHB_ttjDB0pbAR4>IQP~lww zo=q#1FH7Rk`6~FKiX$Z5CfW$JHht{DRo%t1nS2VEUq_UMlS;lH$tczKg*{h1%5<8z ze1)}F7@O*1dD^O%!&wA!m7b$JKpB5^NFsE)KbTlNFx-%J&+DG-Pm_!6U()$KhqAcl zH0=9Fk$YQ^;ew$~wU9=6&x(1s5&l4|_(1=TttK^XU<~JLW0MYR5@OK%Mg?(7lA)_; zO6SnesNJttXDpS42m3QqvG0{!`1c^rEc=GHjCX!s2D6Iux+WPp>|rsA?83yDy3kDf)y^wZ z-oR@!dwP5JmSO@*t65=`HE8wYOeJT@hSXl;qeOo5WG8OY7SW}=pby1u(&T3}|n z)aiEXIEU6L=hs6Ls31+(Qag7ZmcZ5Kh2Us=gBe}6bsVe%=}+|7xsmlbM?yh>1*OIi zb?bMvlNiQV{zd_NiZzX(ri;_n3&T*=Szc1IS3T-J&%BwWOeF4#mB^2;KCcP;ZGrq3 z!AOg@6qgkH)qwQIg7yqz|Dtqn7^+4C89DjhB<*92{WArcJiDXc!ShAAlTJ}9m4(!^ zGpzFKo)I>4p`qrf;p*11`F9VPyo8aY);NmVazE^~29A&BYc|^Nhb_Lq!Sfb#pZgrI zzJ8*)^`<*^X295V5_ zxN-&E>l^KqJKJwXoTJcW>IqEg%Lccm2_8twlaq@;fR`QbV3KXrZuPbu;o14ub_eT2 zN`!UIgWf6MDooH9!&G37Sq+l*QSJ!N)^O1_wZ_UWmO9EOw*e0ux4gAw5YBdze@b(oE-;J zh|emgO)bTFN};1$%F?`W*TXlMHwXwDwpv9b4M?Ut$Dq(^kf4bWH0fG1mx32|D}Xk5 z{{0<+sqCM#lR>&R9{(dr6C_toA70L-QZzc@n3k5-XauJhpPq_SXuwXC^EO|!dkU?Q zI!qzuTBr%6QAtnyH+KpC|6^qDlQwZ;Y;-5_tfQgSx7i3^Hv6rypnA+%3B@nPD z0>nttmu)WDD^-k>E&P!T$skfA)@rXUrBRI0#xv^Ji?Tde` z7B^JPn~KmTZ>7anHQ828(Q-?{sPY@do!DPiWzOopKsnXc{^5CK#j8lIlvOg_a(oZ0 zM5blRroOQloHDStBj6DLp%Z7D%3DE2(}jq3kZRvrs{-s^@1(zZgoH&eh+8nT7X?XS zCh1p0en)L2SuVU|GxYL);>pl`le)iSqnsQW*R;=PXr+(DFhCa9Qr(EDOPp zAA3DN=mGeQp*9MCZ}e>*rVyP( zxPhK%6oY|vY3q4uE8&jL$mH*zxSiz`JoR?$v*zEG(ta@kLxF)wFz*lApJ9-O{^*q5p>r#Y z`NZCNb3dDDG;O?YUgb{pyfX>fY}MOpXwgZXJPA?0($N%GRV6US+4(DzXu*QY(zb}4 z8PIb$)e!0mEHg9L5}3tVnAN-zB;9!95l(aBugNgyVI~5qoi7NF7anuv~!XY8G91vhAj`ox9C)nKQLnJuySY%dxRe6W@ z&_1A|6C*e0O%O6raaHdl1N{ZQMpA`5C=x3Y0+P6TXXY$NDlDPoqyA|vcS2*$4y|r-%G8{!xc6L*G`F2x&EIoetB28;M_V#_Bf}nKI zl_TvJM0{FaSpy9&#_YVJgtUpm;#IXf(E5kFSpMwE18;|Ym&wQZW1D@)*cUsE#6Cohg(vleQaFFh)}H@`as_FP^qKMQo8{n7{>9ITowt3T5gmn*@0VX&Pfu?jzJJ|+UoAb}{(r$u-u>kN1xa(x{}Ze% z%n3`U4_+Mx)mkN4A6M>e8<$Vs9h?6cDwq0|^G9!i>?w=?Vd7mq*Du}qvL=sQTK*qQ zrYz5&lmGviHSYFDS)9X<%UVS?^lW-rnBUSFu>Fbp8~GZ{)`Ul?xx z58Uny40PAlI>F~Z3`wqm6QXD0RP!UN1U3^&8ejegF7tR<_vfH?ifyrvZXpQFhX`J} z!xu1KKLhar|8}aSO9T8cpiofrKBmnYlY9=T;P%Te=X|+Snl|Ys=M0K7#}1r`zcbks z%O7C-f;Wy?RE_xRN{gbwivc8z1BK#0Im(CLGm`hNc*GhFp?-nK@gTQ!L3uPKbT?{R zgB@pqs9wSd63ESj*^*|g56$C{za@4UwIsE8o#IHi%2XU zlz!F6gX7(Pb{6@3do6QrFx;%GOcmvQY>*=rb!Gs+zFAE(!RqO0T^&D2mmzsfUdjNU zceOuHl{zniIxk8(EH8rpKP*_3Y{VSijs+=&at)#>Sr$+f8icQ|`03wJ5|qC2A!&omTuZSEG5Euzkp zl&>H)YWeULA{wZ#9;lue2BwOxL$Lhko{S^EhW7ke`uPIH+WmVL;NXr?pGa=@Q9oC3 z+xz!{C~C<>PMecN2II-&h{Im~GuRQP> z7aH30Z|o6z`yqrU&yi;@_7GHs^#1XqB;i_F-Gd*U-!d&UYAemk%E;uhrl#Z{o}d5V zKJ9AXI5qn)!C`10b>H7@?>=)+>3@JLXU=vo!pim}Q97j!yW9!$jwlcXO@&BeJU?GB znuXtV*rbnGo)RrE5E<|55j;&BuIP7glE7$*BcHao+qaxJkQu%8L>N=hl(%QGO}uj? zj~y~`YMzzGD2XSJrBI;_Cs*tt9~q|#<0NwjwGMjD>bOI=pO&(Yu7ECU`zBnS`g@;O-lmk^1*1q0E)4tsP=ObaKgU1s#qhAJ z$p{F&mWRRn!NZN+A8!Nxl4u1D-7|}5%i}T)TZvMVQy=&3uH!0?ECeY^+FJ_s(Bq-K z1(ndjEeocR#G%I8^bMnQ58{wMBUF<7;MsZll)*QZG!d+VI526yLoLLe7+9d(rZ$k_&lUL-Z4w+-wr^juWH(mI+8D^86&B*@~;QMRO zbT;ZaQ-Q!`#voO%H^M6=H;d6NJfwF3KkIhym+lvlXFELXI=Pw0>Fn%d+^k ztZ|ZkG5NT-xY(6HbF4daba(H$w{-XT=k4RC(C?|En;XUIUol-=zrcvf$Mble)fyTa z@S*Z}ejYE}+uKuQiuv>fH(QYL&BuLR4-6pVKX7Y(#vb}iq#GF-!^Y(2)WzKlMz#Hu zce^6NzkdE!uB~H{$_3onb7f3&mXEaTy8m`V6cl7~dd*)yej@LP@m#0Py6`_(OotlE ztgcqtJaBGNRh6gz9|(SuzvN~6;(z_(#05PI-X|HelrcfBD4t&D1NjNAlER-lypk$I z4{bxKRH$F6j`GKFyg#m+#QE`%UE1V41iqUW+WFF+q^p}I_whxT6j3#TSXr--!QWZ( z#1oPjaCH}Krac|GCs$$JKRkyz**HF8OB+9$`jtK9 zp2f#brMw=W6BpEiLi|e-B6lNUS~jv5IGh=mi~piD!w#KG=|^)Mwk-`PuBOUKhA5uJ z@X5-_$)UQ-bmvo)15d;4%hid*HS=JscJ@;=FHeuxhh#??BZ~LwgG%obv#*)o4YL@KO5TN`d=%;|1yx`A^)y@$ z+Wl(_BO?^ZJq&8(2$gixF~##Rixl)X+?c?(8CIP&!w~*@%`UK~i7J*eLwMD#FD)LW z!JpTUz{h`+(4RJN;Ek#Q>RE9`D177uaZ8(afh9n+01Mr3I@DTR}lMxm2AD#^rgIw&<6`GcUuO$~H9TAss#W|AVBfjB2avn!%x1 zOIln?kw9^GD-^fl?(QC33WZXf6emc5;skehm*VaY!QDQd_nWnHSJuss`zPnz+561Q zmM3GwoX6CeFO`{TEhxzO)5JrTQ%iy|5;Pgtgl8wiOG3AXz9A)rcbcX`yZDX`^hFRz znjFjvNRI11hIo;ajBHs?G}X5+#~v>kGm8p+3kd-n0lon209;SOjrZrGfxdu`?fijn zC3aC?*#oVQKnzw`-N�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