library(campsis)

There are 2 ways to implement bioavailability in CAMPSIS:

In the first case, the simulation engine will take care of the bioavailability. In the second case, CAMPSIS will adapt automatically the amount injected through the dataset (AMT column).

Bioavailability implemented in model

Let's use a 2-compartment model with absorption compartment to illustrate how this can be achieved.

model <- model_suite$nonmem$advan4_trans4

For this example, we're going to define a bioavailability F1 for this absorption compartment.

First let's create a new parameter F1, log-normally distributed with a median of 0.75 and 10% CV.

model <- model %>% add(Theta(name="F1", value=0.75))
model <- model %>% add(Omega(name="F1", value=10, type="cv%"))

Now, let's add an equation to the drug model to define F1.

model <- model %>% add(Equation("F1", "THETA_F1*exp(ETA_F1)"))

Finally, we need to tell CAMPSIS that F1 corresponds to a bioavailability.

model <- model %>% add(Bioavailability(compartment=1, rhs="F1"))

Our persisted drug model would look like this:

model

Now, let's now give a simple bolus and simulate with and without F1.

ds1 <- Dataset(50) %>%
  add(Bolus(time=0, amount=1000)) %>%
  add(Observations(times=seq(0,24,by=0.5)))
results_f1 <- model %>% simulate(dataset=ds1, seed=1)
results_no_f1 <- model_suite$nonmem$advan4_trans4 %>% simulate(dataset=ds1, seed=1)
gridExtra::grid.arrange(shadedPlot(results_f1, "CONC"), shadedPlot(results_no_f1, "CONC"), nrow=1)

Bioavailability implemented in dataset

The same simulation can be performed by adapting the column AMT in the dataset.

First, we need to sample F1 values. This can be done as follows:

set.seed(1)
distribution <- ParameterDistribution(model=model, theta="F1", omega="F1")
f1Values <- (distribution %>% sample(as.integer(50)))@sampled_values

Then, we can inject these values into the dataset.

ds2 <- Dataset(50) %>%
  add(Bolus(time=0, amount=1000, f=f1Values)) %>%
  add(Observations(times=seq(0,24,by=0.5)))

Let's have a look at the dataset, in its table form, and if we look at the doses only:

ds2 %>% export(dest="RxODE") %>% dosingOnly() %>% head()

Finally, we can simulate the original model using this new dataset.

results_f1 <- model_suite$nonmem$advan4_trans4 %>% simulate(dataset=ds2, seed=1)
shadedPlot(results_f1, "CONC")


Calvagone/campsis documentation built on April 17, 2024, 5:33 a.m.