--- title: "Full PK Analysis with AplosNCA" author: "Nathan Teuscher" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Full PK Analysis} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Introduction This vignette demonstrates a full pharmacokinetic (PK) analysis using the Aplos NCA API via the `AplosNCA` package. It uploads a raw data file, performs data cleaning, calculates PK parameters, performs a post-NCA calculation, and creates tables and plots. We'll use example data (`ex2-data.csv`) and 5 configuration files (`ex2-data_cleaning.json`, `ex2-analysis.json`, `ex2-calcs.json`, `ex2-plots.json`, `ex2-tables.json`) included in the package. The example data includes concentration-time data for 12 subjects following administration of an extravascular dose under fed and fasted conditions. The data cleaning step will add treatment information, add units, and perform BLQ handling. The analysis will calculate the PK parameters. The custom calculations will calculate the relative bioavailability for AUC and Cmax for the fed condition. Then tables and plots will be created. **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. ```{r load-package} library(AplosNCA) # Load the package ``` ## Step 1: Load Credentials Load your Aplos NCA credentials securely from a local file. Do not hardcode them! ```{r load-creds} # 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. ```{r authenticate} # 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)") ``` ## Step 3: Upload Input Data Upload the example PK data file. ```{r upload-data} # Define your input file input_file <- system.file("extdata", "ex2-data.csv", package = "AplosNCA") # Get upload URL # Simulated - in real use, call aplos_get_upload_url("ex2-data.csv", url, token) upload_result <- list(data = list(fileId = "fake_file_id")) print("Upload URL retrieved (simulated)") # Upload file # Simulated - in real use, call aplos_upload_file("ex2-data.csv", upload_result, token) print("File uploaded (simulated)") ``` ## Step 4: Load Configurations Load the configuration files for the analysis. Each file includes specific configuration for that step in the analysis. ```{r load-configs} # Data cleaning data_cleaning_config_file <- system.file("extdata", "ex2-data_cleaning.json", package = "AplosNCA") data_cleaning <- readChar(data_cleaning_config_file, file.info(data_cleaning_config_file)$size) # PK analysis analysis_config_file <- system.file("extdata", "ex2-analysis.json", package = "AplosNCA") analysis <- readChar(analysis_config_file, file.info(analysis_config_file)$size) # Custom calculations calcs_config_file <- system.file("extdata", "ex2-calcs.json", package = "AplosNCA") calcs <- readChar(calcs_config_file, file.info(calcs_config_file)$size) # Custom tables tables_config_file <- system.file("extdata", "ex2-tables.json", package = "AplosNCA") tables <- readChar(tables_config_file, file.info(tables_config_file)$size) # Custom plots plots_config_file <- system.file("extdata", "ex2-plots.json", package = "AplosNCA") plots <- readChar(plots_config_file, file.info(plots_config_file)$size) ``` ## Step 5: Execute Analysis Submit the analysis for processing. ```{r execute-analysis} # Simulated - in real use, call aplos_execute_analysis(upload_result, data_cleaning = data_cleaning, # analysis = analysis, calcs = calcs, tables = tables, # plots = plots, url = api_url, token = token, name = "Simple PK Analysis Vignette") exec_id <- "fake_exec_id" print("Analysis executed (simulated)") ``` ## Step 6: Check Status Poll until the analysis is complete. ```{r check-status} # 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)") ``` ## Step 7: Download and Unzip Results If succeeded, download and unzip the results. ```{r download-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") } ``` ## Conclusion You've now run a full PK analysis! Explore the unzipped results for calculated parameters. For more information, see other vignettes or the function documentation. ```{r session-info} sessionInfo() ```