You did not provide an example Phoenix project file. Let me start with a standard 2-comp oral model in PML:
test(){
deriv(A1 = - (Cl * C) + (Aa * Ka)- (Cl2 * (C - C2)))
deriv(Aa = - (Aa * Ka))
deriv(A2 = (Cl2 * (C - C2)))
C = A1 / V
dosepoint(Aa, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)
C2 = A2 / V2
error(CEps = 1)
observe(CObs = C + CEps)
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
stparm(Ka = tvKa * exp(nKa))
stparm(V2 = tvV2 * exp(nV2))
stparm(Cl2 = tvCl2 * exp(nCl2))
fixef(tvV = c(, 1, ))
fixef(tvCl = c(, 1, ))
fixef(tvKa = c(, 1, ))
fixef(tvV2 = c(, 1, ))
fixef(tvCl2 = c(, 1, ))
ranef(diag(nV, nCl, nKa, nV2, nCl2) = c(1, 1, 1, 1, 1))
}
For a transit compartment, just add a transit statement:
test(){
#deriv(Aa = - (Aa * Ka))
transit(Aa, mtt, ntr, max=50, out=-Aa*Ka)
deriv(A1 = - (Cl * C) + (Aa * Ka)- (Cl2 * (C - C2)))
deriv(A2 = (Cl2 * (C - C2)))
C = A1 / V
dosepoint(Aa, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)
C2 = A2 / V2
error(CEps = 1)
observe(CObs = C + CEps)
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
stparm(Ka = tvKa * exp(nKa))
stparm(V2 = tvV2 * exp(nV2))
stparm(Cl2 = tvCl2 * exp(nCl2))
stparm(mtt = tvmtt)
stparm(ntr = tvntr)
fixef(tvV = c(, 1, ))
fixef(tvCl = c(, 1, ))
fixef(tvKa = c(, 1, ))
fixef(tvV2 = c(, 1, ))
fixef(tvCl2 = c(, 1, ))
fixef(tvmtt = c(,1,))
fixef(tvntr= c(,1,))
ranef(diag(nV, nCl, nKa, nV2, nCl2) = c(1, 1, 1, 1, 1))
}
For the delay-function that Keith suggested, a few additional changes need to be done:
test(){
#deriv(A1 = - (Cl * C) + (Aa * Ka)- (Cl2 * (C - C2)))
#deriv(Aa = - (Aa * Ka))
delayInfCpt( A1, mtt, ntr, out = - Cl*C - (Cl2 * (C - C2)))
deriv(A2 = (Cl2 * (C - C2)))
C = A1 / V
dosepoint(A1, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)
C2 = A2 / V2
error(CEps = 1)
observe(CObs = C + CEps)
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
#stparm(Ka = tvKa * exp(nKa))
stparm(V2 = tvV2 * exp(nV2))
stparm(Cl2 = tvCl2 * exp(nCl2))
stparm(mtt = tvmtt)
stparm(ntr = tvntr)
fixef(tvV = c(, 1, ))
fixef(tvCl = c(, 1, ))
#fixef(tvKa = c(, 1, ))
fixef(tvV2 = c(, 1, ))
fixef(tvCl2 = c(, 1, ))
fixef(tvmtt = c(,5,))
fixef(tvntr= c(,10,))
ranef(diag(nV, nCl, nKa, nV2, nCl2) = c(1, 1, 1, 1, 1))
}
Please let us know if you run into issues.
Bernd