Jump to content


Photo

Incorporating a gene with 3 phenotypes in POPPK


  • Please log in to reply
12 replies to this topic

#1 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 15 November 2013 - 05:00 PM

Hi,

I am having a gene in my POPPK model which has 3 phenotypes- homozygous (0), heterozygous( 1) and variant/variant (2). I also have Michaelis Menten elimination and the

Km equation is (as it is in the software):

 

Km=tvKm x e^(dKmd_2B691*X(2B69==1)) X e^(^(dKmd_2B692*X(2B69==2)) x e^Km (1)

 

The reason I am confused is that I am calculating the V, Km and Vmax values for each patient, so that I can fix them and then add the metabolite model.

 

So based on eq.1 , heterozygous and variant phenotypes can be estimated (2B69==1) and (2B69==2), but what about the homozygous (0)?

 

I thought that the formula should be like this:

Km=tvKm x e^(dKmd_2B691*X*(2-X))* e^(dKmd_2B692*X*(X-1)) e^nKm (eq.2)

 

where,

homo X(2B69==1) = 0 and X(2B69==2)=0

hetero1 X(2B69==1) = 1 and X(2B69==2)=0

hetero2 X(2B69==1) = 0 and X(2B69==2)=2

 

Any suggestions?

 

Thanks,

Georgia



#2 Samer Mouksassi

Samer Mouksassi

    Advanced Member

  • Val_Members
  • PipPipPip
  • 90 posts

Posted 15 November 2013 - 05:27 PM

Hi Georgia,

 

This is similar to any categorical covariate with 3 or more categories:

The default in phoenix will give an equation like below here I have a covariate with values: 1,2,3,4.

Phoenix nlme will assume that the reference level ( here BBPcat= 1) is equal to tvCL then each other level will have a multiplicative effect with respect to this level

e.g.

stparm(Cl = tvCl * exp(dCldBBPcat2*(BBPcat==2)) * exp(dCldBBPcat3*(BBPcat==3)) * exp(dCldBBPcat4*(BBPcat==4)) * exp(nCl))

 

you can also write this equation like this

 

stparm(Cl = exp(log(tvCl) *(BBPcat==1)) * exp(dCldBBPcat2*(BBPcat==2)) * exp(dCldBBPcat3*(BBPcat==3)) * exp(dCldBBPcat4*(BBPcat==4)) * exp(nCl))

 

in your case why you want to "freeze" the individual estimate and also estimate a covariate effect on it ? I am not sure what you are trying to do if you want to fix the km to the previously estimated value you can just have it

stparm(km= (name of column that has the individual km value))

 

Please clarify more what you intend to do

 

Samer



#3 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 15 November 2013 - 05:36 PM

Hi Samer,

 

Thanks for your reply.

 

I want to freeze the estimates for the parent drug so that I will add the metabolite model and get the estimates for the metabolite. I am using a two-step approach, I don't want to estimate at the same time both parent drug and metabolite. Does this make sense?

 

So, for the zero value, the software will assume tvKm if I got it right and while I do my Km calculations for each individual, the homozygous type will be equal to tvKm. However, this is not obvious in the equation provided by the software.

 

Is it ok if my homozygous category is zero or should be 1?

 

Thanks,

Georgia



#4 Samer Mouksassi

Samer Mouksassi

    Advanced Member

  • Val_Members
  • PipPipPip
  • 90 posts

Posted 15 November 2013 - 05:43 PM

Hi Georgia,

 

I cannot figure out from your very limited code what is your model and what you are trying to do can you please copy paste all of your model code ?

What is the structure of your data i.e. you have a column called genotype and then you have three different values ? please include first few lines of your dataset and the coding you are using

 

Doing a two step approach of parent metabolite is a commonly used method.

 

note Phoenix does not really need the variable to have a particular value you can have any value in your dataset how you should interpret the equation below is like this

 

cl = tvcl

if bbcat =2 then cl = tvCl * exp(dCldBBPcat2*(BBPcat==2))

if bbcat =3 then cl = tvCl * exp(dCldBBPcat2*(BBPcat==3))

if bbcat =4 then cl = tvCl * exp(dCldBBPcat2*(BBPcat==4))

 

any value in your dataset other than 2/3/4 will default to your reference =tvcl you don't need it to be zero

 stparm(Cl = tvCl * exp(dCldBBPcat2*(BBPcat==2)) * exp(dCldBBPcat3*(BBPcat==3)) * exp(dCldBBPcat4*(BBPcat==4)) * exp(nCl))



#5 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 15 November 2013 - 05:49 PM

Yes, I have you have a column called cyp2B6 and then I have three different values (0, 1, 2).

This is my code for the parent drug and the metabolite.

 

 

test(){

    deriv(A1 = - Vmax * C / (Km + C))

deriv(A2=Vmax*C/(Km+C)-Clmet*Cmet)

    dosepoint(A1)

    C = A1 / V

Cmet=A2/Vmet

    error(CEps = 1)

 

observe(CObsmet=Cmet*exp(CEpsmet))

 

stparm(V=VI)

 

stparm(Km=KmI)

stparm(Vmax=VmaxI)

stparm(Clmet=tvClmet*exp(nClmet))

stparm(Vmet=tvVmet*exp(nVmet))

 

covariate(VI)

covariate(KmI, VmaxI)

fixef(tvClmet = c (, 1500, ))

fixef(tvVmet = c (, 40000, ))

 randef(diag(nClmet, nVmet ) = c(0.04, 0.04))

}



#6 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 15 November 2013 - 05:59 PM

I will also send you the parent's drug code in a while, as I have borrowed my laptop with the software to a colleague!

 

Thanks,

Georgia



#7 Samer Mouksassi

Samer Mouksassi

    Advanced Member

  • Val_Members
  • PipPipPip
  • 90 posts

Posted 15 November 2013 - 06:03 PM

ok

sounds good you are using the previously calculated parent parameter as covaraites

you are also assuming that 100% of your parent transforms into your metabolite

 

if you are in your parent model and you have this equation:

stparm(Cl = tvCl * exp(dCldBBPcat2*(BBPcat==2)) * exp(dCldBBPcat3*(BBPcat==3)) * exp(dCldBBPcat4*(BBPcat==4)) * exp(nCl))

when you output the individual clearance you don't need to worry how to compute it yourself nlme will give you each individual clearance in the table then you merge this value and then the correct clearance for each patient will be used.

 

of course you can compute it and it is simple provided you know the different variables in the equation: ( please copy paste the phoenix code as is there is typos in the equation below

 

Km=tvKm x exp(dKmd_2B691*(2B69==1)) X exp((dKmd_2B692*(2B69==2)) x exp(nkm)

 

so above to get each individual km value ask for it in the table without forgetting to have when covariate set list of covariate used in your model or second option will be like this

 

patient genotype not equal 1 and not equal 2 then

tvKm x exp(nkm)

genotype = 1 tvKm x exp(dKmd_2B691*(2B69==1)) xexp(nkm)

genotype = 2 tvKm x exp(dKmd_2B692*(2B69==2)) xexp(nkm)



#8 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 15 November 2013 - 06:09 PM

Well, it seems that I assume that 100% of my parent drug is transformed into metabolite, but actually I don't. It is a certain fraction that is transformed, but this fraction is unknown to me for my data.

So I am doing the modeling like that and I will either use the 70%, as it has been reported to literature, or I am thinking to incorporate metabolic ratio, but since I do not have linear kinetics I can't use it and I am thinking over it.

Do you have any suggestions?

 

Thanks,

georgia



#9 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 15 November 2013 - 08:59 PM

Hi, This is how I wrote my parent's drug code after your suggestions-is it correct?

 

test(){

    deriv(A1 = - Vmax * C / (Km + C))

    dosepoint(A1)

    C = A1 / V

    error(CEps = 1)

    observe(CObs = C * exp(CEps))

    stparm(V = tvV * (wt/mean(wt))^dVdwt * exp(nV))

    stparm(Km = tvKm * exp(dKmd_2B6_91*(_2B6_9==1)) * exp(dKmd_2B6_92*(_2B6_9==2)) * exp(nKm))

patient genotype not equal 1 and not equal 2 then

tvKm*ex(nKm)

genotype= 1 tvKm*exp(dKmd_2B6_91*(_2B6_9==1)) * exp(nKm))

genotype= 2 tvKm*exp(dKmd_2B6_92*(_2B6_9==2)) * exp(nKm))

    stparm(Vmax = tvVmax * exp(nVmax))

    covariate(wt)

    covariate(_2B6_9())

    fixef(tvV = c(, 150000, ))

    fixef(tvKm = c(, 10.5, ))

    fixef(tvVmax = c(, 250000, ))

    fixef(dVdwt(enable=1) = c(, 0.5, ))

    fixef(dKmd_2B6_91(enable=2) = c(, 0.5, ))

    fixef(dKmd_2B6_92(enable=2) = c(, 0.5, ))

    ranef(diag(nV, nKm, nVmax) = c(0.04, 0.04, 0.04))

}

 

Thanks for your help,

Georgia



#10 Samer Mouksassi

Samer Mouksassi

    Advanced Member

  • Val_Members
  • PipPipPip
  • 90 posts

Posted 18 November 2013 - 11:52 AM

Hi,

you code did not validate in phoenix pml make sure to comment out the 3 lines that are explanations see below if you can attach the project I can check if all is fine otherwise you can check a naive pooled fit first ( fast run) to see if estimates make sense.

Samer

 

 

test(){

deriv(A1 = - Vmax * C / (Km + C))

dosepoint(A1)

C = A1 / V

error(CEps = 1)

observe(CObs = C * exp(CEps))

stparm(V = tvV * (wt/mean(wt))^dVdwt * exp(nV))

stparm(Km = tvKm * exp(dKmd_2B6_91*(_2B6_9==1)) * exp(dKmd_2B6_92*(_2B6_9==2)) * exp(nKm))

#patient genotype not equal 1 and not equal 2 then

#tvKm*ex(nKm)

#genotype= 1 tvKm*exp(dKmd_2B6_91*(_2B6_9==1)) * exp(nKm))

#genotype= 2 tvKm*exp(dKmd_2B6_92*(_2B6_9==2)) * exp(nKm))

stparm(Vmax = tvVmax * exp(nVmax))

covariate(wt)

covariate(_2B6_9())

fixef(tvV = c(, 150000, ))

fixef(tvKm = c(, 10.5, ))

fixef(tvVmax = c(, 250000, ))

fixef(dVdwt(enable=1) = c(, 0.5, ))

fixef(dKmd_2B6_91(enable=2) = c(, 0.5, ))

fixef(dKmd_2B6_92(enable=2) = c(, 0.5, ))

ranef(diag(nV, nKm, nVmax) = c(0.04, 0.04, 0.04))

}



#11 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 18 November 2013 - 07:52 PM

Hi,

This is my code

test(){

deriv(A1 = - Vmax * C / (Km + C))

deriv(A2=Vmax*C/(Km+C)-Clmet*Cmet)

dosepoint(A1)

C = A1 / V

Cmet=A2/Vmet

error(CEps = 1)

 

observe(CObsmet=Cmet*exp(CEpsmet))

 

stparm(V=VI)

 

stparm(Km=KmI)

stparm(Vmax=VmaxI)

stparm(Clmet=tvClmet*exp(nClmet))

stparm(Vmet=tvVmet*exp(nVmet))

 

covariate(VI)

covariate(KmI, VmaxI)

fixef(tvClmet = c (, 1500, ))

fixef(tvVmet = c (, 40000, ))

randef(diag(nClmet, nVmet ) = c(0.04, 0.04))

}

 

and I have the following warnings to resolve:

Can map column 'VI' in Main or Dosing setup (or extra column definition text)

Can map column 'KmI' in Main or Dosing setup (or extra column definition text)

Can map column 'VmaxI' in Main or Dosing setup (or extra column definition text)

Optional Main column 'CObsmet' is not mapped (I HAVE ALREADY MAPPED & KEEPS SHOWING)

No observations are mapped (ALREADY MAPPED)

Variable 'CEpsmet' undefined



#12 Georgia Charkoftaki

Georgia Charkoftaki

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 18 November 2013 - 08:01 PM

Hi again,

 

Thanks for your help-

I resolved the issues and the model run!

 

 

Georgia



#13 shekhar.udct@gmail.com

shekhar.udct@gmail.com

    Newbie

  • Members
  • Pip
  • 6 posts

Posted 15 June 2018 - 11:18 AM

Hi Samer, 

 

I am new to population modeling and covariate analysis. 

 

i am trying to learn basic things of POP modeling. eg. i didnt get  the term highlighted in yellow.

 

"stparm(V = tvV * (wt/mean(wt))^dVdwt * exp(nV))"

 

if you can comment on this it would be great. 

 

i encounter some more equations like

 

stparm(Cl = tvCl * (Wt/mean(Wt))^dCldWt * exp(dCldCxxxTreatment1*(CxxxTreatment==1)) * exp(nCl))

 

If you could share some literature which talks about this code, i would be very delighted. 

 

Kindly do the needful. 

 

Regards, 

 

Shekhar

 

 

 

 

Hi, you code did not validate in phoenix pml make sure to comment out the 3 lines that are explanations see below if you can attach the project I can check if all is fine otherwise you can check a naive pooled fit first ( fast run) to see if estimates make sense. Samer test(){ deriv(A1 = - Vmax * C / (Km + C)) dosepoint(A1) C = A1 / V error(CEps = 1) observe(CObs = C * exp(CEps)) stparm(V = tvV * (wt/mean(wt))^dVdwt * exp(nV)) stparm(Km = tvKm * exp(dKmd_2B6_91*(_2B6_9==1)) * exp(dKmd_2B6_92*(_2B6_9==2)) * exp(nKm)) #patient genotype not equal 1 and not equal 2 then #tvKm*ex(nKm) #genotype= 1 tvKm*exp(dKmd_2B6_91*(_2B6_9==1)) * exp(nKm)) #genotype= 2 tvKm*exp(dKmd_2B6_92*(_2B6_9==2)) * exp(nKm)) stparm(Vmax = tvVmax * exp(nVmax)) covariate(wt) covariate(_2B6_9()) fixef(tvV = c(, 150000, )) fixef(tvKm = c(, 10.5, )) fixef(tvVmax = c(, 250000, )) fixef(dVdwt(enable=1) = c(, 0.5, )) fixef(dKmd_2B6_91(enable=2) = c(, 0.5, )) fixef(dKmd_2B6_92(enable=2) = c(, 0.5, )) ranef(diag(nV, nKm, nVmax) = c(0.04, 0.04, 0.04)) }






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users