This RMarkdown file executes run type of batch simulation. The script utilizes the gastroPlusAPI package to communicate with the GastroPlus X 10.2 service.A batch simulation allows you to run multiple defined simulations for any number of compounds or scenarios.
The output from the batch simulation run is then used to create a Cp-time plot.
To customize your study with this script for a different simulation / project / variables, please make changes to the set-input-information code-chunk.
Configure required packages
-
Load other necessary packages(tidyverse) required to execute the data manipulation and visualization in the script
-
Load gastroPlusAPI package
library(tidyverse)
library(gastroPlusAPI)
Set working directory
Set working directory as the current source editor context
if (rstudioapi::isAvailable()){
current_working_directory <- dirname(rstudioapi::getSourceEditorContext()$path)
setwd(current_working_directory)
}
Start GPX Service
Establishes a connection to the GastroPlus service, which allows R to communicate with GastroPlus through its API
gpx_service <- start_service(verbose=FALSE)
✔ Configured the GastroPlus Service
gpx_service$is_alive()
[1] TRUE
Setup Input Information
Make modification to the variables in this chunk to customize your workflow.
project_path: Location of the gpx project
simulation_name: Simulation name that will be included to the run
run_name: Name of the run that will be created
observed_data_group_names & observed_data_series_names: Observed data details to be used for plotting. Details can be retrieved by get_exposure_data().
project_path <- "../../ProjectFiles/GPX Library.gpproject"
simulation_name <- "Metoprolol Tartrate 200mg PO tablet"
run_name <- "BatchSimRun"
compound_name <- "Metoprolol Tartrate"
observed_data_group_name <- "Metoprolol Tartrate PO Cp time"
observed_data_series_name <- "Metoprolol Tartrate Exposure Plasma"
Execute the Run
Based on the details mentioned in the previous code chunk, the batch simulation run will be created, executed and results will be shown
#Load the project
open_project(project_path)
#Create run and execute simulation
create_run(run_name = run_name, run_type = RunType$BatchSimulation)
add_simulations_to_run(run_name = run_name, simulation_names = simulation_name)
execute_run(run_name = run_name)
Process Run Output
This section retrieves and processes the results from the batch simulation run, including:
Getting summary output with pharmacokinetic parameters
Identifying and retrieving the concentration-time series data
Retrieving observed data for comparison
#Get simulation keys and summary output
simulation_keys <- get_simulation_keys(run_name)
summary_output <- get_summary_output(run_name, simulation_keys$simulation_iteration_key_name)
#Get all available series outputs
available_conc_series <- get_available_series_output(run_name, OutputSeriesType$Concentration, simulation_name)
# Check whether we need to use compartmental or PBPK concentration data
# First try to find plasma concentration in systemic circulation (compartmental model)
plasma_concentration_series_descriptor <- paste(
compound_name,
CompartmentType$SystemicCirculation,
StateType$ConcentrationPlasma,
sep = " - "
)
# Alternative: check for venous return concentration (PBPK model)
venous_return_concentration_series_descriptor <- paste(
compound_name,
CompartmentType$VenousReturn,
StateType$ConcentrationPlasma,
sep = " - "
)
# Select the appropriate concentration-time descriptor based on availability
CpTime_descriptor <- ""
if(plasma_concentration_series_descriptor %in% available_conc_series$state_descriptor){
CpTime_descriptor <- plasma_concentration_series_descriptor
}else if(venous_return_concentration_series_descriptor %in% available_conc_series$state_descriptor) {
CpTime_descriptor <- venous_return_concentration_series_descriptor
}
# Get the concentration-time series data
series_data <- get_series_data(run_name, simulation_name, CpTime_descriptor)
#Get observed data of simulation
observed_series_key <- SeriesKey$new(group_type = ObservedDataGroupType$ExposureData,
group_name = observed_data_group_name,
series_type = ObservedDataSeriesType$UncertainConcentrationSeries,
series_name = observed_data_series_name)
# Get the observed data series
observed_series <- get_observed_series(observed_series_key)$series_as_data_frame()
Plot Results
Creates a concentration-time plot comparing the simulated results with observed data. This visualization helps assess the predictive performance of the simulation.
#Plotting
ggplot() +
geom_line(data=series_data,
mapping=aes(x=independent, y=dependent),
linewidth=1.25,
color="#051082") +
geom_point(data=observed_series,
mapping=aes(x=independent, y=dependent),
size = 3.5,
alpha=0.75,
shape=22,
color="#051082") +
theme_classic() +
labs(title= paste0(simulation_name," Cp-Time Graph"), x= paste("Time (", series_data$independent_unit[[1]], ")"), y=paste("Concentration (", series_data$dependent_unit[[1]], ")")) +
theme(
axis.title.x = element_text(face = "bold", size = 12),
axis.title.y = element_text(face = "bold", size = 12),
axis.text.x = element_text(face = "bold", size = 11),
axis.text.y = element_text(face = "bold", size = 11),
plot.title = element_text(hjust = 0.5, face = "bold", size = 12, color="#051082")
)
Kill GPX Service
gpx_service$kill()
[1] TRUE