Simple PK Analysis with AplosNCA

Nathan Teuscher

2026-04-02

Introduction

This vignette demonstrates a simple pharmacokinetic (PK) analysis using the Aplos NCA API via the AplosNCA package. It calculates PK parameters from concentration-time data.

We’ll use example data (ex1-data.csv) and configuration (ex1-analysis.json) included in the package. The example data included concentration-time data for 10 subjects following administration of an extravascular dose. In practice, replace these with your own files. Note that to use Aplos NCA, you must upload a file to the system, thus if you have a dataframe inside R with the concentration-time data, please write that to a CSV file which can then be uploaded to Aplos NCA.

Prerequisites: Set up your credentials in a local file (e.g., ~/.aplos_creds) as described in ?aplos_get_jwt. This vignette assumes the package functions are loaded.

library(AplosNCA)  # Load the package

Step 1: Load Credentials

Load your Aplos NCA credentials securely from a local file. Do not hardcode them!

# For vignette demonstration (offline), use fake credentials.
# In real use, source your .aplos_creds file.
creds <- list(
  COGNITO_CLIENT_KEY = "fake_key",
  COGNITO_USERNAME = "fake_user",
  COGNITO_PASSWORD = "fake_pass",
  COGNITO_REGION = "us-east-1",
  APLOS_API_URL = "https://api.app.aplos-nca.com"
)

Step 2: Authenticate

Obtain a JWT token for API access.

# Simulated for vignette - in real use, call aplos_get_jwt(creds$COGNITO_CLIENT_KEY, ...)
token <- "fake_token"
url <- creds$APLOS_API_URL
print("Authenticated (simulated)")
#> [1] "Authenticated (simulated)"

Step 3: Upload Input Data

Upload the example PK data file.

# Define your input file
input_file <- system.file("extdata", "ex1-data.csv", package = "AplosNCA")

# Get upload URL
# Simulated - in real use, call aplos_get_upload_url("ex1-data.csv", url, token)
upload_result <- list(data = list(fileId = "fake_file_id"))
print("Upload URL retrieved (simulated)")
#> [1] "Upload URL retrieved (simulated)"

# Upload file
# Simulated - in real use, call aplos_upload_file("ex1-data.csv", upload_result, token)
print("File uploaded (simulated)")
#> [1] "File uploaded (simulated)"

Step 4: Load Configurations

Load the analysis configuration (for PK parameter calculation). In this example, we only provide analysis; adjust for your needs.

analysis_config_file <- system.file("extdata", "ex1-analysis.json", package = "AplosNCA")
analysis <- readChar(analysis_config_file, file.info(analysis_config_file)$size)

Step 5: Execute Analysis

Submit the analysis for processing.

# Simulated - in real use, call aplos_execute_analysis(upload_result, analysis = analysis,url = api_url, 
#                                 token = token, name = "Simple PK Analysis Vignette")
exec_id <- "fake_exec_id"
print("Analysis executed (simulated)")
#> [1] "Analysis executed (simulated)"

Step 6: Check Status

Poll until the analysis is complete.

# Simulated polling - assume "succeeded" after delay - in real use, call exec_result <- aplos_execution_status(url = api_url, token = token, execution_id = exec_id, sleep=10)

exec_result <- list(data = list(status = "succeeded"))
print("Execution complete (simulated)")
#> [1] "Execution complete (simulated)"

Step 7: Download and Unzip Results

If succeeded, download and unzip the results.

if (exec_result$data$status == "succeeded") {
  # Simulated - in real use, call download_info <- aplos_download_results(url = api_url, token = token, execution_id = exec_id)
  # file_path <- aplos_fetch_results(download_info, dest_dir = "simple", unzip = TRUE)
} else {
  cat("Analysis failed; check status.\n")
}
#> NULL

Conclusion

You’ve now run a simple PK analysis! Explore the unzipped results for calculated parameters. For more advanced workflows, see other vignettes or the function documentation.

sessionInfo()
#> R version 4.4.3 (2025-02-28)
#> Platform: aarch64-apple-darwin20
#> Running under: macOS 26.3.1
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib 
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0
#> 
#> locale:
#> [1] C/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> time zone: America/Denver
#> tzcode source: internal
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] AplosNCA_1.0.1
#> 
#> loaded via a namespace (and not attached):
#>  [1] digest_0.6.38     R6_2.6.1          fastmap_1.2.0     xfun_0.54        
#>  [5] AzureAuth_1.3.4   magrittr_2.0.4    rappdirs_0.3.4    glue_1.8.0       
#>  [9] cachem_1.1.0      stringr_1.6.0     knitr_1.50        htmltools_0.5.8.1
#> [13] rmarkdown_2.30    lifecycle_1.0.5   cli_3.6.5         sass_0.4.10      
#> [17] jquerylib_0.1.4   compiler_4.4.3    rstudioapi_0.17.1 tools_4.4.3      
#> [21] evaluate_1.0.5    bslib_0.9.0       yaml_2.3.10       rlang_1.1.7      
#> [25] jsonlite_2.0.0    stringi_1.8.7