--- title: "Simple PK Analysis with AplosNCA" author: "Nathan Teuscher" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Simple PK Analysis} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## 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. ```{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", "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)") # Upload file # Simulated - in real use, call aplos_upload_file("ex1-data.csv", upload_result, token) print("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. ```{r load-configs} 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. ```{r execute-analysis} # 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)") ``` ## 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 simple PK analysis! Explore the unzipped results for calculated parameters. For more advanced workflows, see other vignettes or the function documentation. ```{r session-info} sessionInfo() ```