Another(?) ADVAN5 Problem
NONMEM Topic 17
Keywords: ADVAN5, Divide by Zero, VAX VMS, NOABORT option
Topic started by: SN=Maier%G=Gary%I=A%O=STERLING%OU1=PRD1%KODAK@mcimail.com (Gary Maier) - 1 Apr 94
This note is addressed to all nonmem users using a VAX/VMS system
(our version is 5.5-2).
The problem we are facing is that when we run a simple 2
compartment model using advan5 the program ends even before the
iteration process is invoked (the VAX gives a divide by zero error
message in the DDDFRS routine line 23). Yet the same code and data
set run successfully on a SUN system. If any users have some
suggestions as to what we can try we would be most appreciative.
(Interestingly a one compartment model runs without any problem)
Response from: (Sandra Lawrence)
I followed the installation guide for installing with the listed
adjustments. In the code attached, when I made a modification, I used a lower
case c to comment out the original code.
Double precision code was installed.
Install steps executed:
2.1.1 - file name change to redirect output
2.1.3 - changed to VAX values indicated on page 17
2.4a - NONMEM project team change - DATA SMALLS from 10e-40 to 10e-38
2.5 - change OPEN statements to open FSTREAM as old when running NONMEM from
NMTRAN procedure
2.7 - increase number of observations per subject from 50 to 500
Compiled code with command:
FORTRAN/LIST/NOOP/NOF77 NONMEM
This should provide a start.
Response from: gasparini@binfc1.jrf.be
VAX/VMS is not IEEE-based, that is, the precision of calculations is less than
on other systems. Probably Sun is IEEE-based (as is IBM, for example).
I try to circumvent these kind of errors by trying different sets of initial
estimates for the thetas. After a while iterations start, and one can try to
guess a certain direction.
(I work with the same version of VMS).
I hope this is of some help.
Response from: david-bourne@uokhsc.edu (David Bourne)
I was able to modify an example I had to run under ADVAN5 on the VAX [6610
VMS 5.5] as a fitting exercise without any errors. However I did stop it
short (by reducing the MAXEVALS, it was taking too long). I then developed
a simple fitting problem with one subject and it ran fine with ADVAN5 and
ADVAN4, except for the S MATRIX ALGORITHMICALLY SINGULAR (with both ADVANs)
which I guess is due to the small number of data points. These were very
simple examples but they seem to work. I would have compiled the program
with the FORTRAN default settings. I'd be happy to try a bigger problem - I
hadn't used these ADVANs before so may have made an error somewhere.
.....
Response from: david-bourne@uokhsc.edu (David Bourne)
I've been able to get the ADVAN4,TRANS3 control/data set working OK. I have
also got the ADVAN5 control/data working up to a point. It gets into the
estimation step and quits with:
ITERATION NO.: 5 OBJECTIVE VALUE: -0.4620E+03 NO. OF FUNC. EVALS.:16
CUMULATIVE NO. OF FUNC. EVALS.: 84
PARAMETER: 0.1471E+00 0.1593E+00 0.2208E+00 0.1696E+00 0.7005E-01 0.1034
-0.4224E-01
GRADIENT: 0.3169E+04 0.1221E+04 0.2882E+03 -0.8345E+03 -0.3778E+03 -0.4312
0.3047E+04
ITERATION NO.: 10 OBJECTIVE VALUE: -0.4932E+03 NO. OF FUNC. EVALS.:14
CUMULATIVE NO. OF FUNC. EVALS.: 155
PARAMETER: 0.1642E+00 0.2150E+00 0.2424E+00 0.2169E+00 0.7882E-01 0.1471
-0.3362E-01
GRADIENT: 0.3636E+04 -0.9969E+02 -0.1446E+02 -0.1907E+03 -0.3621E+03 -0.2671
0.7632E+04
PRED EXIT CODE = 1
INDIVIDUAL NO. 1 ID=0.12270030E+07 (WITHIN-INDIVIDUAL) DATA REC NO. 2
THETA=
1.83E+01 8.20E+01 6.29E+00 8.71E+02 5.84E+00
NUMERICAL DIFFICULTIES OBTAINING THE SOLUTION.
PROGRAM TERMINATED BY OBJ
MESSAGE ISSUED FROM ESTIMATION STEP
THERE ARE ERROR MESSAGES IN FILE PRDERR
there is a PRED error - EXIT CODE = 1. I haven't found this error in the
manuals I have access to at work. I've tried different initial values and I
get the error at different stages in the estimation step. My guess is that
certain combinations of parameter values are producing the error. Alison,
et al. are there different 'settings' that might help.
Response from: alison@c255.ucsf.EDU (ABoeckmann)
In any event, sorry, there are no 'settings' that will help ADVAN5.
I presume that you all include the NOABORT option on the $ESTIMATION
record so that NONMEM can back away from the "bad" thetas and try values
closer to the last good set of thetas.
Gary originally said:
The problem we are facing is that when we run a simple 2
compartment model using advan5 the program ends even before the
iteration process is invoked (the VAX gives a divide by zero error
message in the DDDFRS routine line 23).
David, are you trying Gary's problem on your Vax? If so, the fact that
no divide by zero occured points to some problem with the installation
on Gary's Vax. I suggest that PREDPP be read in from the original
installation tape, and that Gary verify that the source code for
ADVAN5, REXPON, and RXSUBS is exactly as read. Recompile them too.
Another possibility is that Gary uses a different (later?) version of
FORTRAN than David, or that he uses different compiler options. Gary
might try compiling without optimization, for example.
Response from: david-bourne@uokhsc.edu (David Bourne)
>In any event, sorry, there are no 'settings' that will help ADVAN5.
>I presume that you all include the NOABORT option on the $ESTIMATION
>record so that NONMEM can back away from the "bad" thetas and try values
>closer to the last good set of thetas.
No I haven't tried this. ... I have now. That was the 'setting' I needed.
It now seems to work OK. I didn't get exactly the same results as with the
ADVAN4 but I haven't looked at the results in detail - there are possibly
(significant) differences in the control.dat files.
>David, are you trying Gary's problem on your Vax?
I have now or at least a similar example that Gary provided.
>If so, the fact that
>no divide by zero occured points to some problem with the installation
>on Gary's Vax. I suggest that PREDPP be read in from the original
>installation tape, and that Gary verify that the source code for
>ADVAN5, REXPON, and RXSUBS is exactly as read. Recompile them too.
>Another possibility is that Gary uses a different (later?) version of
>FORTRAN than David, or that he uses different compiler options. Gary
>might try compiling without optimization, for example.
I agree - this difference, PRED EXIT CODE = 1 versus DIVIDE by ZERO,
suggests installation differences (problems).
Response from: david-bourne@uokhsc.edu (David Bourne)
It seems that I DID do an OPTIMIZE, that is
our default. I was just talking with our Computer Center Director and he
tells me that we use all the standard defaults (as listed below from the
Help Fortran screen)
Qualifiers
/ANALYSIS_DATA[=file-spec] D=/NOANALYSIS_DATA
/CHECK[=(option[,...])] D=/CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW)
/CONTINUATIONS=n D=/CONTINUATIONS=19
/CROSS_REFERENCE D=/NOCROSS_REFERENCE
/DEBUG[=(option[,...])] D=/DEBUG=(NOSYMBOLS,TRACEBACK)
/DESIGN[=option,...]) D=/NODESIGN
/DIAGNOSTICS[=file-spec] D=/NODIAGNOSTICS
/D_LINES D=/NOD_LINES
/DML
/EXTEND_SOURCE D=/NOEXTEND_SOURCE
/F77 D=/F77
/G_FLOATING D=/NOG_FLOATING
/I4 D=/I4
/LIBRARY
/LIST[=file-spec] D=/NOLIST
/MACHINE_CODE D=/NOMACHINE_CODE
/OBJECT[=file-spec] D=/OBJECT
/OPTIMIZE D=/OPTIMIZE
Note - default is OPTIMIZE
/PARALLEL D=/NOPARALLEL
/SHOW[=(option[,...])] D=/SHO=(NODICT,NOINCL,MAP,NOPREPROC,SINGL)
/STANDARD[=(option[,...])] D=/NOSTANDARD
/WARNINGS[=(option[,...])] D=/WARN=(GEN,NODECLAR,NOULTRIX,NOVAXELN)
He asked what VAX you were using and pointed out that the Vector Processing
VAXs use a different FORTRAN compiler.
See topic 15
End of Topic - 9 August 94