Jump to content


Photo

Population PK/PD Model Dosing Regimen Simulation Assistance Requested

Population PK/PD Dosing Regimen Simulation Inhibitory effect pharmacokinetics pharmacodynamics

  • Please log in to reply
9 replies to this topic

#1 csheme

csheme

    Advanced Member

  • Members
  • PipPipPip
  • 59 posts

Posted 03 April 2016 - 02:24 PM

Hello,

 

I wanted to ask some input and advice from the community regarding a population PK/PD model I have been working on.

 

Our final model is a 2-compartment extravascular with an indirect response. More recently I have also added in an effect compartment to the indirect model which improved the log likelihood, so I plan to keep it in. The indirect model is an inhibitory response, inhibition limited of buildup. Do any of you also have experience adding an effect compartment into an indirect response model, does this logic make sense to basically add an additional delay in observed effect?

 

My general workflow has been to do the population PK first, obtain both the theta estimates by individual and generate a table with the parameters for each subject (Table 01 in the final PK model) Ka, V, V2, Cl, Cl2.

 

I then merge the PK parameters (Table 01 output) with the observed PD and fix the PK parameters to 1 but map the individual PK parameters as “covariates” that drive the PD.

 

The model runs fine, all diagnostics seem acceptable, the only parameter that we fixed is really the Imax set to 1 (this is necessary for our model). However, I have noticed that the Pop DV vs IPRED Log for Effect has improved substantially when we have IMAX unfixed ( usually estimates to 1.14). When we have Imax fixed to 1 the diagnostics seem to over predict at the lower end. That is my first question if there is anything to do about that, basically improving the model diagnostic while still keeping Imax fixed to 1 (not my major concern).

 

After I have the final model I then do some dosing regimen simulations for the population (weekly, monthly, and quarterly) for 10,20,30,40, 60,80, and 100mg doses.. This is where my real question is. I am asking how to fix the baseline value in my model. For example, we are inhibiting the production of a protein in plasma, and each of the individuals in the population will have different baseline levels of this protein. For my simulations I am getting a random baseline value for each of my dose cohorts, with such high variability.

Ideally I would like to fix this value, for example 3 separate simulations for 3 different fixed baselines (i.e. 300nM, 140nM, and 60nM) where all dose cohorts start at the same baseline, and looking at the inhibitory effect. 

 

It seems I am currently running into a problem for example where the 60mg cohort looks more potent then the 80mg cohort because the simulated baseline for the 60mg is lower then the 80mg (and each time I run the model this is random). I end up having to import so many simulation tables until I get one that looks decent. Each of the dose groups are randomly simulating to different baselines, sometimes the 100mg cohort is the highest baseline , whereby the 80mg cohort has a much lower baseline, so the raw values look different. Ideally it would be good to simulate each of these cohorts with the same “fixed” baseline.

 

 

I also have attached a photo.

 

Thank you for your great help and wish you all the very best!

 

1fc84dd.png


Edited by csheme, 16 April 2016 - 02:14 PM.


#2 smouksassi1

smouksassi1

    Advanced Member

  • Val_Members
  • PipPipPip
  • 232 posts
  • LocationMontreal

Posted 04 April 2016 - 01:35 PM

Hello csheme,

I have seen effect compartments added on top of indirect response models. Sometimes the data does not allow the identifiability of such a model but let us put this aside for now.

You might want to think in terms of the mechanisms behind the delay and why an indirect response Kin kout model is not enough to account for the delay ? is a chain of transit compartments better suited to model the delays in your cases ?
 

Using the sequential PK /PD approach where you use individual PK parameters is fine you might want later on to fit the whole model in order to get a more realistic standard errors but often time these models are very hard to fit. ( When you "fix" the individual parameters of PK you are asuming that these parameters are the "truth" ignoring all the error on them)


Regarding controlling the baseline depending on you model you might want to reparametrize you model to have:
Baseline as a parameter and then kout so you can control the baseline and its variability rather than kin and kout.

 

Baseline = Kin / Kout

 

so if kin and kout are random of course Baseline will be random !


Your project has too many models not sure which one is the one to look at.



#3 csheme

csheme

    Advanced Member

  • Members
  • PipPipPip
  • 59 posts

Posted 04 April 2016 - 01:58 PM

Thank you for your reply.

 

I am attaching a photograph of the final model in my workflow.

 

I would like to ask how to fix the baseline kin/kout as a parameter.

 

http://x70i.imgup.net/Baseline93e3.png

 

Comments from Admin : Click the button 'Use full Editor' to post attachments

 

It's the model PK indirect Response DVID2 PD Obs (IMAX FIXED)

withing the sub worflow "NONMEM dataset...."

Attached Thumbnails

  • PK indirect Response DVID2 PD Obs (IMAX FIXED).jpg

Edited by Simon Davis, 07 April 2016 - 08:40 AM.


#4 serge guzy

serge guzy

    Advanced Member

  • Members
  • PipPipPip
  • 485 posts

Posted 07 April 2016 - 07:26 PM

Thank you for your reply.

 

I am attaching a photograph of the final model in my workflow.

 

I would like to ask how to fix the baseline kin/kout as a parameter.

 

http://x70i.imgup.net/Baseline93e3.png

 

Comments from Admin : Click the button 'Use full Editor' to post attachments

 

It's the model PK indirect Response DVID2 PD Obs (IMAX FIXED)

withing the sub worflow "NONMEM dataset...."

Dear cscheme

If you want to fix the baseline to one fixed value, you can always do the following

Suppose your PD response is called A3 and you want to fix for each patients the initial baseline to let say 100

You add the following code

 

sequence{A3=100}

 

This means that at t=0, A3 is set to 100 for every patient.

 

kin and kout are still preserved and different for each patient but everybody starts at 100.

I do not like it personally as if you start your experiment at steady state before giving the drug, then A3=kin/kout for the basic indirect response models.

May be here you have another model but at least if this is what you want you will get it.

 

Fixing kin and kout to one unique value like kin=100 and kout=1 is not a good idea as you change the whole dynamic of your system.

 

Best

Serge



#5 serge guzy

serge guzy

    Advanced Member

  • Members
  • PipPipPip
  • 485 posts

Posted 07 April 2016 - 09:21 PM

Dear cscheme

If you want to fix the baseline to one fixed value, you can always do the following

Suppose your PD response is called A3 and you want to fix for each patients the initial baseline to let say 100

You add the following code

 

sequence{A3=100}

 

This means that at t=0, A3 is set to 100 for every patient.

 

kin and kout are still preserved and different for each patient but everybody starts at 100.

I do not like it personally as if you start your experiment at steady state before giving the drug, then A3=kin/kout for the basic indirect response models.

May be here you have another model but at least if this is what you want you will get it.

 

Fixing kin and kout to one unique value like kin=100 and kout=1 is not a good idea as you change the whole dynamic of your system.

 

Best

Serge

I have a better solution for you that will keep the individual dynamic of each patient.

If you want to have everybody starting at the same initial baseline , let say 100, then you do the following

 

double(baseline)

sequence{A3=kin/kout

baseline=kin/kout}

# A3 is the effect

# you now define the change from baseline

 

changebasepercent=100+(  (A3-baseline)/baseline*100)

 

The double statement is necessary because baseline change/is defined in the sequence statement and is nto defined as a state variable like A3(A state variable is the left part of the differential equation not including the d/dt.

 

When you define baseline in sequence as being kin/kout, you will have the baseline defined only once for each patient. It will not change anymore even though kin/kout change with time.

 

Then everybody will start at 100 and when you get let say 300 it means that that patient increases his response by a factor 2.

 

When you do that you still preserve the dynamic of each patient. It is a sort of normalization.

 

What I suggested before would imply that each patient does not start at its steady state level which is kin/kout and if even it was not a steady state level at t=0, anyway the arbitrary 100 would not reflect the right value for any patient.

 

The new proposed code would be correct for each patient.

note that this would help you for the graph as everybody would start at 100.

I hope it helps.

best

Serge



#6 csheme

csheme

    Advanced Member

  • Members
  • PipPipPip
  • 59 posts

Posted 16 April 2016 - 02:12 PM

Thank you Serge for your great help!

 

I will update the code in my model

 

double(baseline)

sequence{A3=kin/kout

baseline=kin/kout}

# A3 is the effect

# you now define the change from baseline

 

changebasepercent=100+(  (A3-baseline)/baseline*100)


Edited by csheme, 16 April 2016 - 02:16 PM.


#7 j.pereira

j.pereira

    Advanced Member

  • Members
  • PipPipPip
  • 38 posts

Posted 18 April 2016 - 02:07 PM

I just saw this post. Wouldn't it also be possible to fix the baseline using a fixed effect and a freeze?

 

stparm(BASE=tvBASE)

fixef(tvBASE(freeze) = c(,100,))

sequence{A3=BASE}



#8 csheme

csheme

    Advanced Member

  • Members
  • PipPipPip
  • 59 posts

Posted 20 April 2016 - 10:50 PM

I do have a problem.

 

When I fix the baseline for my simulations, when I select 200 replicates, I am only seeing 1 individual in the dataset (n=1) so I am not able to do any descriptive statistics.

 

When I do not fix baseline for my simulations, when I select 200 replicates, I see 200 individual simulations, so I can do the descriptive statistics and see the CI bands.

 

I am attempting to calculate the confidence intervals for the fixed baseline model, but am not able to because there is only a single (n=1), if I add more individuals to the sim table, the data is the exact same for the other individuals, can anyone advise why this is happening?

 

Thanks

 

This is what my sample code looks like

 

test(){
deriv(E = Baseline *Kout * (1 - Imax * C / (C + IC50)) - Kout * E)
cfMicro(A1, Cl / V, Cl2 / V, Cl2 / V2, first = (Aa = Ka))
dosepoint(Aa)
C = A1 / V
sequence{E = Baseline}
error(EEps = 7.77817)
observe(EObs = E + EEps)
error(CEps = 0.288982)
observe(CObs = C * (1 + CEps))
stparm(Ka = tvKa * exp(nKa))
stparm(V = tvV * exp(nV))
stparm(V2 = tvV2 * exp(nV2))
stparm(Cl = tvCl * exp(nCl))
stparm(Cl2 = tvCl2 * exp(nCl2))
stparm(Ke0 = tvKe0 * exp(nCl2))
stparm(Baseline =tvBaseline *exp(nBaseline))
stparm(Kout = tvKout * exp(nKout))
stparm(Imax = tvImax)
stparm(IC50 = tvIC50 * exp(nIC50))
fcovariate(Grp)
fixef(tvKa = c(, 4.64492, ))
fixef(tvV = c(, 10.7419, ))
fixef(tvV2 = c(, 140.239, ))
fixef(tvCl = c(, 71.5707, ))
fixef(tvCl2 = c(, 6.5672, ))
fixef(tvKe0 = c(, 1, ))
fixef(tvBaseline = c(, 139.5, ))
fixef(tvKout = c(, 0.0465205, ))
fixef(tvImax(freeze) = c(, 1, ))
fixef(tvIC50 = c(, 11.5075, ))
ranef(diag(nBaseline, nKe0, nKin, nKout, nIC50, nKa, nV, nV2, nCl, nCl2) = c(0, 0, 1.159, 0.149, 0.495, 0.041, 0.13, 0.347, 0.099, 0.193))
}

Edited by csheme, 20 April 2016 - 10:52 PM.


#9 csheme

csheme

    Advanced Member

  • Members
  • PipPipPip
  • 59 posts

Posted 21 April 2016 - 04:47 PM

My original code before fixing baseline

 

test(){
 deriv(E = Kin * (1 - Imax * C / (C + IC50)) - Kout * E)
 cfMicro(A1, Cl / V, Cl2 / V, Cl2 / V2, first = (Aa = Ka))
 dosepoint(Aa)
 C = A1 / V
 sequence{E = Kin / Kout}
 error(CEps = 0.288982)
 observe(CObs = C * (1 + CEps))
 error(EEps = 7.68462)
 observe(EObs = E + EEps)
 stparm(Ka = tvKa * exp(nKa))
 stparm(V = tvV * exp(nV))
 stparm(V2 = tvV2 * exp(nV2))
 stparm(Cl = tvCl * exp(nCl))
 stparm(Cl2 = tvCl2 * exp(nCl2))
 stparm(Kin = tvKin * exp(nKin))
 stparm(Kout = tvKout * exp(nKout))
 stparm(Imax = tvImax * exp(nImax))
 stparm(IC50 = tvIC50 * exp(nIC50))
 fcovariate(Grp)
 fixef(tvKa = c(, 4.64492, ))
 fixef(tvV = c(, 10.7419, ))
 fixef(tvV2 = c(, 140.239, ))
 fixef(tvCl = c(, 71.5707, ))
 fixef(tvCl2 = c(, 6.5672, ))
 fixef(tvKin = c(, 1.77403, ))
 fixef(tvKout = c(, 0.0361728, ))
 fixef(tvImax = c(, 1.31556, ))
 fixef(tvIC50 = c(, 18.9986, ))
 ranef(diag(nV, nCl, nKin, nKout, nV2, nCl2, nImax, nIC50, nKa) = c(0.13, 0.099, 1.19, 0.081, 0.347, 0.193, 1, 0.323, 0.041))
}
 



#10 csheme

csheme

    Advanced Member

  • Members
  • PipPipPip
  • 59 posts

Posted 21 April 2016 - 04:50 PM

Link to simulation table with fixed baseline https://www.dropbox....seline.csv?dl=0

 

 

Link to simulation table with nonfixed baseline https://www.dropbox....seline.csv?dl=0







Also tagged with one or more of these keywords: Population PK/PD, Dosing Regimen, Simulation, Inhibitory effect, pharmacokinetics, pharmacodynamics

2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users