RE: Model building advice
From: "Eleveld, DJ" d.j.eleveld@anest.umcg.nl
Subject: RE: [NMusers] Model building advice
Date: Thu, April 28, 2005 7:04 am
Thank you for your suggestions...
Serge, i'm not exactly sure what you mean by 'node' in the intergration
routine, do you mean event?
I tried to use the bioavalibility parameter as Leonid Gibiansky suggested
in a mail to me. I added dose events (fixed size) at the appropriate times
into the appropriate compartment and manipulate the bioavalibility to change
the size of step but this does not work. I am not allowed to change
bioavalability constants in the $DES code. Neither may I change bioavailability
in the $ERROR code. When using fixed dose sizes and and fixed bioavalibility
then all the step changes will be the same. But I need the size of the step
change to change during the integration.
To better describe what I mean by step change in state variable, essentially
what I would like to have in my $DES and $ERROR code is:
$DES
...
DADT(5)=-POTK*A(5) ; Decay bewteen twitches
...
$ERROR
CALLFL=0
...
STEP=....
A(5)=A(5)+STEP ; Produce the step change
But I cannot manipulate A(5) within the $ERROR code.
The relevant part of the control stream is: (error line at the bottom)
-------Control stream--------
$PROB Potentiation fitting
$DATA potent.da2
$INPUT ID TIME DV CFLG MDV AMT RATE CMT
$SUBROUTINES ADVAN9 TOL=3
$MODEL NCOMPARTMENTS=5
NPARAMETERS=12
COMP(CENTRAL DEFDOSE)
COMP(PERIF1 NOOFF NODOSE)
COMP(PERIF2 NOOFF NODOSE)
COMP(EFFECT NOOFF NODOSE)
COMP(POTENT NOOFF)
$PK
CALLFL=1
V1=THETA(1)*EXP(ETA(1))
V2=THETA(2)*EXP(ETA(2))
V3=THETA(3)*EXP(ETA(3))
CL=THETA(4)*EXP(ETA(4))
Q3=THETA(6)*EXP(ETA(6))
Q2=(THETA(2)*(THETA(6)/THETA(3) + THETA(5)))*EXP(ETA(5))
S1=V1
KEO=THETA(7)*EXP(ETA(7))
EC50=THETA(8)*EXP(ETA(8))
GAMM=THETA(9)*EXP(ETA(9))
POTR=THETA(10)+ETA(10) ; r has normal dist
POTK=THETA(11)*EXP(ETA(11))
SCAL=THETA(12)*EXP(ETA(12))
$DES
C1=A(1)/V1 ; Conc in V1
C2=A(2)/V2 ; Conc in V2
C3=A(3)/V3 ; Conc in V3
DADT(1)=Q2*(C2-C1)+Q3*(C3-C1)-CL*C1 ; Change in V1
DADT(2)=Q2*(C1-C2) ; Change in V2
DADT(3)=Q3*(C1-C3) ; Change in V3
DADT(4)=(C1-A(4))*KEO ; Effect compartment conc
DADT(5)=-POTK*A(5) ; Decay potentiation
$ERROR
CALLFL=0
PTMP=A(5)
CPRE=A(1)/V1*EXP(ERR(1))
PD1=A(4)**GAMM ; Sigmoidal Emax model
NMB=PD1/(PD1+(EC50**GAMM))
RPRE=SCAL*(1+A(5))*(1-NMB)+ERR(2) ; Twitch in %
IF (DV.EQ.-999) RPRE=-999+ERR(2)
Y=CFLG*CPRE+(1-CFLG)*RPRE
; *** Step change once per twitch *** ERROR ***
IF (CFLG.NE.0) A(5)=A(5)+POTR*(1-NMB)
I hope this makes more clear what I mean by 'step' change in state variable.
Does anyone have any advice as to how I can achieve this kind of effect?
Thanks very much,
Doug Eleveld