I've fixed it by increasing NPARAM until it worked (increasing to 7), but can anyone explain why I get this message for a 3 compartment model with additional compartments to output a time above a concentration threshold (#4) and AUC while above that concentration threshold (#5)? It appears that NONMEM wants additional parameters added to NPARAM when I added calculated value CC in the $DES block. What is also odd to me is that the fault is called on the line defining DADT(2). Thanks in advance. Paul
$SUBROUTINES ADVAN6 TOL=3
$MODEL NCOMP=5 NPARAM=6
COMP=(CENTRAL DEFDOSE DEFOBS)
COMP=(TISU1)
COMP=(TISU2)
COMP=(TTIME)
COMP=(AUCC)
;------------------PK BLOCK
$PK
MIC=0.12 ; SEEKING TIME AND AUC ABOVE 0.12 MCG/ML
TVCL = POP_CL
TVV1=POP_V1
TVQ2=POP_Q2
TVV2=POP_V2
TVQ3=POP_Q3
TVV3=POP_V3
CL=TVCL * EXP(ETA(1))
V1=TVV1 * EXP(ETA(2))
Q2=TVQ2 * EXP(ETA(3))
V2=TVV2 * EXP(ETA(4))
Q3=TVQ3 * EXP(ETA(5))
V3=TVV3 * EXP(ETA(6))
K10=CL/V1
K12=Q2/V1
K21=Q2/V2
K13=Q3/V1
K31=Q3/V3
;--------------------DES BLOCK
$DES
CC=A(1)/V1
RT=0
IF(CC.GT.MIC) RT=1
DADT(1) = - A(1) * (K10 + K12 + K13) + A(2) * K21 + A(3)*K31
DADT(2) = A(1) * K12 - A(2) * K21
DADT(3) = A(1) * K13 - A(3) * K31
DADT(4)=RT ; TIME ABOVE THRESHOLD TAT
DADT(5)=RT*CC ; AUC ABOVE THRESHOLD AUCAT
;----------------- ERROR MODEL ----------------------------------
$ERROR
IPRED = F
IRES=IPRED-DV
Y=IPRED * (1 + EPS(1)) + EPS(2)
IWRES=IRES/(IPRED * EPS(1) + EPS(2))
TAT=A(4)
AUCAT=A(5)
TIS2 = A(2)/V2
TIS3 = A(3)/V3
Paul Hutson, PharmD, BCOP
Professor
UWisc School of Pharmacy
T: 608.263.2496
F: 608.265.5421
ERROR NUMBER OF BASIC PK PARAMETERS EXCEEDS VALUE OF NPARAM IN $MODEL
4 messages
3 people
Latest: Jul 31, 2019
I've fixed it by increasing NPARAM until it worked (increasing to 7), but can
anyone explain why I get this message for a 3 compartment model with additional
compartments to output a time above a concentration threshold (#4) and AUC
while above that concentration threshold (#5)? It appears that NONMEM wants
additional parameters added to NPARAM when I added calculated value CC in the
$DES block. What is also odd to me is that the fault is called on the line
defining DADT(2). Thanks in advance. Paul
$SUBROUTINES ADVAN6 TOL=3
$MODEL NCOMP=5 NPARAM=6
COMP=(CENTRAL DEFDOSE DEFOBS)
COMP=(TISU1)
COMP=(TISU2)
COMP=(TTIME)
COMP=(AUCC)
;------------------PK BLOCK
$PK
MIC=0.12 ; SEEKING TIME AND AUC ABOVE 0.12 MCG/ML
TVCL = POP_CL
TVV1=POP_V1
TVQ2=POP_Q2
TVV2=POP_V2
TVQ3=POP_Q3
TVV3=POP_V3
CL=TVCL * EXP(ETA(1))
V1=TVV1 * EXP(ETA(2))
Q2=TVQ2 * EXP(ETA(3))
V2=TVV2 * EXP(ETA(4))
Q3=TVQ3 * EXP(ETA(5))
V3=TVV3 * EXP(ETA(6))
K10=CL/V1
K12=Q2/V1
K21=Q2/V2
K13=Q3/V1
K31=Q3/V3
;--------------------DES BLOCK
$DES
CC=A(1)/V1
RT=0
IF(CC.GT.MIC) RT=1
DADT(1) = - A(1) * (K10 + K12 + K13) + A(2) * K21 + A(3)*K31
DADT(2) = A(1) * K12 - A(2) * K21
DADT(3) = A(1) * K13 - A(3) * K31
DADT(4)=RT ; TIME ABOVE THRESHOLD TAT
DADT(5)=RT*CC ; AUC ABOVE THRESHOLD AUCAT
;----------------- ERROR MODEL ----------------------------------
$ERROR
IPRED = F
IRES=IPRED-DV
Y=IPRED * (1 + EPS(1)) + EPS(2)
IWRES=IRES/(IPRED * EPS(1) + EPS(2))
TAT=A(4)
AUCAT=A(5)
TIS2 = A(2)/V2
TIS3 = A(3)/V3
Paul Hutson, PharmD, BCOP
Professor
UWisc School of Pharmacy
T: 608.263.2496
F: 608.265.5421
Not sure why would we need NPARAM there, is it necessary? I think one can skip it.
On the different topic, expression for IWRES is not correct:
IWRES=IRES/(IPRED * EPS(1) + EPS(2))
This is the version that should be used:
IWRES=IRES/SQRT(IPRED**2 * SIGMA(1,1) + SIGMA(2,2))
Also it is more traditional to define IRES=DV-IPRED (negative residual corresponds to over-predictions; observed=predicted + residual error).
Regards
Leonid
Quoted reply history
On 7/29/2019 2:49 PM, Paul Hutson wrote:
> I’ve fixed it by increasing NPARAM until it worked (increasing to 7), but can anyone explain why I get this message for a 3 compartment model with additional compartments to output a time above a concentration threshold (#4) and AUC while above that concentration threshold (#5)? It appears that NONMEM wants additional parameters added to NPARAM when I added calculated value CC in the $DES block. What is also odd to me is that the fault is called on the line defining DADT(2). Thanks in advance. Paul
>
> $SUBROUTINES ADVAN6 TOL=3
>
> $MODEL NCOMP=5 NPARAM=6
>
> COMP=(CENTRAL DEFDOSE DEFOBS)
>
> COMP=(TISU1)
>
> COMP=(TISU2)
>
> COMP=(TTIME)
>
> COMP=(AUCC)
>
> ;------------------PK BLOCK
>
> $PK
>
> MIC=0.12 ; SEEKING TIME AND AUC ABOVE 0.12 MCG/ML
>
> TVCL = POP_CL
>
> TVV1=POP_V1
>
> TVQ2=POP_Q2
>
> TVV2=POP_V2
>
> TVQ3=POP_Q3
>
> TVV3=POP_V3
>
> CL=TVCL * EXP(ETA(1))
>
> V1=TVV1 * EXP(ETA(2))
>
> Q2=TVQ2 * EXP(ETA(3))
>
> V2=TVV2 * EXP(ETA(4))
>
> Q3=TVQ3 * EXP(ETA(5))
>
> V3=TVV3 * EXP(ETA(6))
>
> K10=CL/V1
>
> K12=Q2/V1
>
> K21=Q2/V2
>
> K13=Q3/V1
>
> K31=Q3/V3
>
> ;--------------------DES BLOCK
>
> $DES
>
> CC=A(1)/V1
>
> RT=0
>
> IF(CC.GT.MIC) RT=1
>
> DADT(1) = - A(1) * (K10 + K12 + K13) + A(2) * K21 + A(3)*K31
>
> DADT(2) = A(1) * K12 - A(2) * K21
>
> DADT(3) = A(1) * K13 - A(3) * K31
>
> DADT(4)=RT ; TIME ABOVE THRESHOLD TAT
>
> DADT(5)=RT*CC ; AUC ABOVE THRESHOLD AUCAT
>
> ;----------------- ERROR MODEL ----------------------------------
>
> $ERROR
>
> IPRED = F
>
> IRES=IPRED-DV
>
> Y=IPRED * (1 + EPS(1)) + EPS(2)
>
> IWRES=IRES/(IPRED * EPS(1) + EPS(2))
>
> TAT=A(4)
>
> AUCAT=A(5)
>
> TIS2 = A(2)/V2
>
> TIS3 = A(3)/V3
>
> Paul Hutson, PharmD, BCOP
>
> Professor
>
> UWisc School of Pharmacy
>
> T: 608.263.2496
>
> F: 608.265.5421
(1) I agree with Leonid: don't code NPARAM.
NPARAM is required when the user writes a Fortran DES routine, e.g.,
$SUBR DES=mydes
When $DES abbreviated code is present, NMTRAN will count the
basic PK parameters and set NPARAM in the generated MODEL routine.
For example, if you omit NPARAM from the $MODEL record,
the generated MODEL routine sets
NPAR=007
This is reported in the PREDPP portion of the NONMEM output:
MAXIMUM NO. OF BASIC PK PARAMETERS: 7
If both $DES and NPARAM are present, NPARAM must be at least
as large as the number counted by NMTRAN, but may not be smaller.
(NMTRAN uses the larger value in the MODEL routine.)
(2) You ask:
"It appears that NONMEM wants additional parameters added to NPARAM
when I added calculated value CC in the $DES block. "
The code in $PK is
MIC=0.12 ; SEEKING TIME AND AUC ABOVE 0.12 MCG/ML
The code in $DES is
CC=A(1)/V1
IF(CC.GT.MIC) RT=1
It is MIC that looks to NMTRAN like a basic PK parameter.
You can see the following code in subroutine PK in FSUBS:
P000002=MIC
GG(0002,1,1)=P000002
(3) You ask:
"What is also odd to me is that the fault is called on the line
defining DADT(2)."
I'll pass on this one. Sometimes NMTRAN may report an error on a
line near where the error is detected, not the exact line. It may
be easy to fix for this example and yet the fix may break some other
control stream.
-- Alison
Quoted reply history
On Wed, Jul 31, 2019, at 5:56 AM, Paul Hutson wrote:
> Hello, Leonid, and thank you for the correction on the IWRES and the
> suggestion on the IRES.
> Regarding NPARAM, you are correct, the model runs if the NPARM count is
> removed from the $MODEL statement. It was curious to me that if it
> was included that it was counting the calculated value CC in the $DES
> block as a parameter.
> Take care.
> Paul
>
> Paul Hutson, PharmD, BCOP
> Professor
> UWisc School of Pharmacy
> T: 608.263.2496
> F: 608.265.5421
>
> -----Original Message-----
> From: Leonid Gibiansky <[email protected]>
> Sent: Tuesday, July 30, 2019 11:53 PM
> To: Paul Hutson <[email protected]>; 'nmusers'
> <[email protected]>
> Subject: Re: [NMusers] ERROR NUMBER OF BASIC PK PARAMETERS EXCEEDS
> VALUE OF NPARAM IN $MODEL
>
> Not sure why would we need NPARAM there, is it necessary? I think one
> can skip it.
>
> On the different topic, expression for IWRES is not correct:
>
> IWRES=IRES/(IPRED * EPS(1) + EPS(2))
>
> This is the version that should be used:
>
> IWRES=IRES/SQRT(IPRED**2 * SIGMA(1,1) + SIGMA(2,2))
>
> Also it is more traditional to define IRES=DV-IPRED (negative residual
> corresponds to over-predictions; observed=predicted + residual error).
>
> Regards
> Leonid
>
>
> On 7/29/2019 2:49 PM, Paul Hutson wrote:
> > I've fixed it by increasing NPARAM until it worked (increasing to 7),
> > but can anyone explain why I get this message for a 3 compartment
> > model with additional compartments to output a time above a
> > concentration threshold (#4) and AUC while above that concentration
> > threshold (#5)?
> > It appears that NONMEM wants additional parameters added to NPARAM
> > when I added calculated value CC in the $DES block. What is also odd
> > to me is that the fault is called on the line defining DADT(2). Thanks
> > in advance. Paul
> >
> > $SUBROUTINES ADVAN6 TOL=3
> >
> > $MODEL NCOMP=5 NPARAM=6
> >
> > COMP=(CENTRAL DEFDOSE DEFOBS)
> >
> > COMP=(TISU1)
> >
> > COMP=(TISU2)
> >
> > COMP=(TTIME)
> >
> > COMP=(AUCC)
> >
> > ;------------------PK BLOCK
> >
> > $PK
> >
> > MIC=0.12 ; SEEKING TIME AND AUC ABOVE 0.12 MCG/ML
> >
> > TVCL = POP_CL
> >
> > TVV1=POP_V1
> >
> > TVQ2=POP_Q2
> >
> > TVV2=POP_V2
> >
> > TVQ3=POP_Q3
> >
> > TVV3=POP_V3
> >
> > CL=TVCL * EXP(ETA(1))
> >
> > V1=TVV1 * EXP(ETA(2))
> >
> > Q2=TVQ2 * EXP(ETA(3))
> >
> > V2=TVV2 * EXP(ETA(4))
> >
> > Q3=TVQ3 * EXP(ETA(5))
> >
> > V3=TVV3 * EXP(ETA(6))
> >
> > K10=CL/V1
> >
> > K12=Q2/V1
> >
> > K21=Q2/V2
> >
> > K13=Q3/V1
> >
> > K31=Q3/V3
> >
> > ;--------------------DES BLOCK
> >
> > $DES
> >
> > CC=A(1)/V1
> >
> > RT=0
> >
> > IF(CC.GT.MIC) RT=1
> >
> > DADT(1) = - A(1) * (K10 + K12 + K13) + A(2) * K21 + A(3)*K31
> >
> > DADT(2) = A(1) * K12 - A(2) * K21
> >
> > DADT(3) = A(1) * K13 - A(3) * K31
> >
> > DADT(4)=RT ; TIME ABOVE THRESHOLD TAT
> >
> > DADT(5)=RT*CC ; AUC ABOVE THRESHOLD AUCAT
> >
> > ;----------------- ERROR MODEL ----------------------------------
> >
> > $ERROR
> >
> > IPRED = F
> >
> > IRES=IPRED-DV
> >
> > Y=IPRED * (1 + EPS(1)) + EPS(2)
> >
> > IWRES=IRES/(IPRED * EPS(1) + EPS(2))
> >
> > TAT=A(4)
> >
> > AUCAT=A(5)
> >
> > TIS2 = A(2)/V2
> >
> > TIS3 = A(3)/V3
> >
> > Paul Hutson, PharmD, BCOP
> >
> > Professor
> >
> > UWisc School of Pharmacy
> >
> > T: 608.263.2496
> >
> > F: 608.265.5421
> >
>
>
--
Alison Boeckmann
[email protected]