Back to the Top
The following message was posted to: PharmPK
Dear all of you,
I have been trying to write a model in WinNonmix for oral dosing with
zero order input and parallel Michaelis-Menten and first-order
elimination. The problem I have when using the written model is that
early concentrations are estimated very high and later concentrations
low. The data I'm trying to fit to the model is during steady state and
I have no data in the early phases. I've attached the code below. Can
somebody tell me if there is an error in the model? Any help would be
highly appreciated!
In addition, as I'm still not firm with model writing in WinNonmix, is
there anybody around who could explain what exactly the subroutine
ndose does? So far I just included it in all of my models, but when I
don't call the subroutine but instead just say ndose = con(1) the
output of WinNonmix is the same. What do I need the subroutine for?
Thanks for your help
Nele
--
Nele Plock
Freie Universitaet Berlin
Institute of Pharmacy
Dept. Clinical Pharmacy
Kelchstr. 31
D-12169 Berlin
Germany
tel: +49 (0) 30 838-50625
fax: +49 (0) 30 838-50711
email: nplock.-at-.zedat.fu-berlin.de
--
The used model is as follows:
!* con(1) = # doses
!* con(2) = dose 1
!* con(3) = time of dose 1
!* etc.
subroutine usrmod(mode, funcno, dta, f, p, dz, s, con, x, z, wt, y,
objfn)
implicit none
integer mode, funcno
real*8 p(1), con(1), x, f, s(1), z(1), dz(1), dta(1), wt(1), y, objfn
real*8 v, k0, vmax, km, coef, t, dose, cl, k10, ti, INP
integer nn, ndose, k, i
v = p(1)
vmax = p(2)
km = p(3)
cl = p(4)
ti = p(5)
if (mode == 2) then
f = z(1)
else if (mode == 5) then
else if (mode == 4) then
nn = idint(con(1) + 1.0d-4)
call n_dose(nn, x, con, 3, 2, ndose)
if (ndose == 0) then
f = 0.0d0
else
k = 3 + (ndose - 1) * 2
t = x - con(k)
dose = con(k-1)
k0 = dose / ti
INP = 0.0d0
if (t < ti) then
INP = k0
endif
if (x == 0.0d0) z(1) = 0.0d0
endif
else if (mode == 3) then
k10 = cl / v
dz(1) = INP / v - (vmax * z(1)) / (km + z(1)) - k10 * z(1)
end if
contains
subroutine n_dose(nn, t, con, fst, inc, ndose)
implicit none
integer nn, fst, inc, ndose
real*8 t, con(:)
integer i, k
k = fst
do i = 1, nn
if (con(k) > t) exit
k = k + inc
end do
ndose = i - 1
end subroutine n_dose
end subroutine usrmod
PharmPK Discussion List Archive Index page
Copyright 1995-2010 David W. A. Bourne (david@boomer.org)