Modeling and Simulating Fraction metabolized !

Dear Colleagues,

I am working with determination of fraction metabolized to specific metabolite on an example data with parent and single metabolite monitored. The following is the code:

test(){
deriv(Apar = - (Clpar * Cpar) + (Aa * Kapar)- (CLP2M1 * Cpar))
urinecpt(A0 = (Clpar * Cpar))
deriv(Aa = - (Aa * Kapar))
deriv(Amet1 = (CLP2M1 * Cpar)- (CLmet * Cmet1)- (Q * (Cmet1 - C2met1)))
urinecpt(A0 = (CLmet * Cmet1))
deriv(A2met1 = (Q * (Cmet1 - C2met1)))
Cpar = Apar / Vpar
dosepoint(Aa, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)
error(CEpspar = 0.235409)
observe(CObsPar = Cpar * (1 + CEpspar))
Cmet1 = Amet1 / Vmet1
error(CEpsmet = 0.0619265)
observe(CObsMet1 = Cmet1 * (1 + CEpsmet))
C2met1 = A2met1 / V2met1
stparm(Vpar = tvVpar * exp(nVpar))
stparm(Clpar = tvClpar * (1-tvFm) * exp(nClpar))
stparm(Kapar = tvKapar * exp(nKapar))
stparm(Vmet1 = tvVmet1 * exp(nVmet1))
stparm(CLP2M1 = tvCLP2M1 * tvFm * exp(nCLP2M1))
stparm(CLmet = tvCLmet * exp(nCLmet))
stparm(V2met1 = tvV2met1 * exp(nV2met1))
stparm(Q = tvQ * exp(nQ))
stparm(Fm = tvFm + nFm)
fixef(tvVpar = c(, 2021.15, ))
fixef(tvClpar = c(, 466.684, ))
fixef(tvKapar = c(, 0.735001, ))
fixef(tvVmet1 = c(, 4.89425, ))
fixef(tvCLP2M1 = c(, 51.0343, ))
fixef(tvCLmet = c(, 0.763239, ))
fixef(tvV2met1 = c(, 14.4499, ))
fixef(tvQ = c(, 2.65606, ))
fixef(tvFm = c(, 0.414985, ))
ranef(diag(nCLP2M1, nVmet1, nVpar, nClpar, nCLmet, nKapar, nQ, nV2met1, nFm) = c(1.3678402E-09, 4.2464908E-07, 1.4313581E-08, 0.070875967, 0.015232041, 3.8340021E-05, 0.076137689, 0.0072988723, 0.31193941))
}

Is the model code and error code appropriate for Fm ?

Using the above final parameters tried to simulate the structural parameters but the Fm value for few replicates is negative (see below table) . Why ?

if i have another metabolite (M2) along with M1 can i write the code in this way

Clparent = tvCLpar * (1-tvFm1*tvFm2)
CLpar2M1 = tvCLpar2M1 * tvFm1 *exp(nCLpar2M1))
CLpar2M2 = tvCLpar2M2 * tvFm2 *exp(nCLpar2M2))

In this regard how to constrain the Fm between 0 and 1 ?

Any help is appreciated !

Thanks in advance

Raghav

Dear Raghav

Your code is not correct.

I corrected it for you.

Look into it and let me know if you need further clarifications.

best Regards

Serge

test(){
deriv(Apar = - (Clpar * Cpar) + (Aa * Kapar)- (CLP2M1 * Cpar))
urinecpt(A0 = (Clpar * Cpar))
deriv(Aa = - (Aa * Kapar))
deriv(Amet1 = (CLP2M1 * Cpar)- (CLmet * Cmet1)- (Q * (Cmet1 - C2met1)))
urinecpt(A0 = (CLmet * Cmet1))
deriv(A2met1 = (Q * (Cmet1 - C2met1)))
Cpar = Apar / Vpar
dosepoint(Aa, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)
error(CEpspar = 0.235409)
observe(CObsPar = Cpar * (1 + CEpspar))
Cmet1 = Amet1 / Vmet1
error(CEpsmet = 0.0619265)
observe(CObsMet1 = Cmet1 * (1 + CEpsmet))
C2met1 = A2met1 / V2met1
stparm(Vpar = tvVpar * exp(nVpar))

Fm=ilogit(Fmlogit)
Clpar=Clparbase*(1-Fm)
stparm(Clparbase = tvClpar * exp(nClpar))
stparm(Kapar = tvKapar * exp(nKapar))
stparm(Vmet1 = tvVmet1 * exp(nVmet1))
CLP2M1=CLP2M1base* Fm
stparm(CLP2M1base = tvCLP2M1* exp(nCLP2M1))
stparm(CLmet = tvCLmet * exp(nCLmet))
stparm(V2met1 = tvV2met1 * exp(nV2met1))
stparm(Q = tvQ * exp(nQ))
stparm(Fmlogit = tvFmlogit + nFm)
fixef(tvVpar = c(, 2021.15, ))
fixef(tvClpar = c(, 466.684, ))
fixef(tvKapar = c(, 0.735001, ))
fixef(tvVmet1 = c(, 4.89425, ))
fixef(tvCLP2M1 = c(, 51.0343, ))
fixef(tvCLmet = c(, 0.763239, ))
fixef(tvV2met1 = c(, 14.4499, ))
fixef(tvQ = c(, 2.65606, ))
fixef(tvFmlogit = c(, 0, ))
ranef(diag(nCLP2M1, nVmet1, nVpar, nClpar, nCLmet, nKapar, nQ, nV2met1, nFm) = c(1.3678402E-09, 4.2464908E-07, 1.4313581E-08, 0.070875967, 0.015232041, 3.8340021E-05, 0.076137689, 0.0072988723, 0.31193941))
}

Raghav, please edit your post to remove the ‘pasted’ table and just attach a csv or xls of the results, as you cans see the pasted table hasn’t formatted well and is very hard to read/use.

thanks, Simon.

Hi serge,

thank you for the reply…

I used the code for simulating parent and metabolite concentrations and got the structural parameters (attached excel).

In the theta tab the value tvClpar = Clparbase in simulation results and tvCLP2M1 = CLP2M1base in simulation results. Am i missing anything in the code (below) ?

Do we have to convert the Fmlogit value or is considered as Fm ? Can i use the similar code for n number of metabolites for e.g., Fm1logit for metabolite 1 , Fm2 logit for metabolite 2 and so on…?

test(){

deriv(Apar = - (Clpar * Cpar) + (Aa * Kapar)- (CLP2M1 * Cpar))

urinecpt(A0 = (Clpar * Cpar))

deriv(Aa = - (Aa * Kapar))

deriv(Amet1 = (CLP2M1 * Cpar)- (CLmet * Cmet1)- (Q * (Cmet1 - C2met1)))

urinecpt(A0 = (CLmet * Cmet1))

deriv(A2met1 = (Q * (Cmet1 - C2met1)))

Cpar = Apar / Vpar

dosepoint(Aa, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)

error(CEpspar = 0.306664)

observe(CObsPar = Cpar * (1 + CEpspar))

Cmet1 = Amet1 / Vmet1

error(CEpsmet = 0.0571486)

observe(CObsMet1 = Cmet1 * (1 + CEpsmet))

C2met1 = A2met1 / V2met1

stparm(Vpar = tvVpar * exp(nVpar))

Fm=ilogit(Fmlogit)

Clpar=Clparbase*(1-Fm)

stparm(Clparbase = tvClpar * exp (nClpar))

stparm(Clpar = tvClpar * exp(nClpar))

stparm(Kapar = tvKapar * exp(nKapar))

stparm(Vmet1 = tvVmet1 * exp(nVmet1))

CLP2M1=CLP2M1base*Fm

stparm(CLP2M1base = tvCLP2M1 * exp(nCLP2M1))

stparm(CLmet = tvCLmet * exp(nCLmet))

stparm(V2met1 = tvV2met1 * exp(nV2met1))

stparm(Q = tvQ * exp(nQ))

stparm(Fmlogit = tvFmlogit + (nFm))

fixef(tvVpar = c(, 2142.77, ))

fixef(tvClpar = c(, 268.794, ))

fixef(tvKapar = c(, 0.785727, ))

fixef(tvVmet1 = c(, 4.20894, ))

fixef(tvCLP2M1 = c(, 27.585, ))

fixef(tvCLmet = c(, 0.669164, ))

fixef(tvV2met1 = c(, 12.4944, ))

fixef(tvQ = c(, 2.12017, ))

fixef(tvFmlogit = c(, 0.646212, ))

ranef(diag(nCLP2M1, nVmet1, nVpar, nClpar, nCLmet, nKapar, nQ, nV2met1, nFm) = c(1.4750872E-09, 3.0422995E-08, 1.5435671E-08, 0.019206833, 9.9474367E-07, 3.9076854E-05, 0.084969186, 2.8793351E-10, 1.1823622E-07))}

Thanks in advance,

Raghav

simtbl02.xls (357 KB)