NONMEM 7.1.0

From: Thomas Ludden Date: September 04, 2009 technical Source: mail-archive.com
Dear NONMEM Users: We hope to begin shipping NONMEM 7.1.0 late next week. Included with the CD will be a hardcopy of the Release Notes as of 4SEP2009. Since the CD goes to a contact person and not necessarily to the end-user, the contents of these Notes are being posted to nmusers. On the CD will be files named readme_7.1.0.pdf (and .txt). The readme contains important information about installation. Also, after installation, the guides folder will contain a document named intro7.pdf. Please read this document thoroughly. The new methods included in NONMEM 7.1.0 either require or are facilitated by restatement of models in a particular form. For your convenience copies of the release notes, the readme_7.1.0.pdf and intro7.pdf files are available at the ftp site given below. We are still working on the installation on addtional platforms, e.g., Sun Studio 12. New information will be sent to nmusers email list when available, and will be put in the ftp site. Please check the ftp site for the latest information before installing NONMEM 7. To facilitate the handling of inquiries during what is anticipated to be a very busy time, please use e-mail instead of a phone call. Questions regarding licensing and invoicing should be directed to [email protected] Technical questions should be directed to [email protected] where they will be triaged to the appropriate individual(s). The NONMEM Development Team ************************************************ Release Notes for NONMEM 7.1.0 4 September 2009 NONMEM 7 Release Notes will be updated periodically and the latest version can be found at ftp://nonmem.iconplc.com/Public/nonmem7/Release_Notes_Plus <ftp://nonmem.iconplc.com/Public/nonmem7/Release_Notes_Plus> I. The NONMEM License File NONMEM 7.1.0 uses a license file, nonmem.lic, to alert the user regarding the license expiration date. Program execution cannot be initiated after the stated expiration date unless replaced by a new license file with a new expiration date obtained from Icon Development Solutions. The NONMEM 7.1.0 CD is shipped with a temporary license file with an expiration date of 15 OCT 2009. When the CD is received, the contact person should send an e-mail message to [email protected] requesting a permanent license. The message should include the company name and department or, if an individual license, the individuals name. The new license file will be provided as an e-mail attachment. This file should replace the previous license file in the directory named license. II. Known Problems The following 8 problems were known at the time the NONMEM 7.1.0 CD's were reproduced. These items are also included in the "readme_7.1.0" file on the CD. 1) Installation on an HP 64-bit machine with Windows XP Professional x64 and Intel Fortran 9.1 64-bit was successful without optimizations but failed with the default optimizations due to /Ob1gyti. The workaround is to copy the contents of the CD to a directory. In SETUP7.bat change the line if "%f%" == "ifort" set op=/Gs /nologo /nbs /w /Ob1gyti /Qprec_div /4Yportlib /traceback to if "%f%" == "ifort" set op=/Gs /nologo /nbs /w /Qprec_div /4Yportlib /traceback save SETUP7.bat and repeat the installation from the directory. 2) Installations on Windows Vista, 32- and 64-bit, using Intel Fortran have been successful. However, installations on Windows Vista, 64-bit, using gfortran or g95 and on Solaris using the Sun Studio 12 version of f95 have failed. (But see update below.) Installations on Windows Vista, 32-bit, using gfortran and g95 have not been tested. 3) Run-time control keys do not work for Mac OS X with g95 and gfortran. 4) The following message may occur in Linux, Mac OS X or Solaris, and indicates that there is insufficient memory to run NONMEM (typically, with 'big ' sizes): nmfe7: line 65: 12232 Killed ./nonmem $1 $3 -licfile=$lfile Edit resource/SIZES.f90 and supply smaller values . Retype the SETUP7 command, with options "same rec" instead of "big norec" 5) If the dimension of SIGMA in the model is greater than 6 then the MAXPTHETA and LTH variables in SIZES must be modified. MAXPTHETA >= NTHETA + NSIGMA*(NSIGMA+1)/2 where NTHETA and NSIGMA are the number of THETA's and SIGMA's, respectively, in the model. LTH should be set equal to the value of MAXPTHETA. Edit resource\SIZES.f90 (Linux: resource/SIZES.f90) and supply the appropriate values . Retype the SETUP7 command, with options "same rec" instead of "big norec" or "reg norec". 6) Whenever SIZES is changed it is necessary to recompile NONMEM using the rec option for the SETUP7 command. With Windows, SETUP7.bat may not warn the user that SIZES has been changed. 7) In some cases the $COVARIANCE record may be incorrectly parsed resulting in an NM-TRAN error message. If this problem occurs, place the $COVARIANCE record prior to the first $ESTIMATION record in the control stream. 8) It has been reported that installation on Windows 7 using SETUP7.bat requires that the line call .\util\dotest.bat %f% be removed from SETUP7.bat. In addition, the User Account Control must be set to "do not notify" prior to installation. It can be turned back on after installation is complete. Update to Known Problems Correction to item 2 above and in the readme_7.1.0 file on the CD. NONMEM 7.1.0 has been successfully installed on Vista 64-bit using gfortran v.4.5.0 Correction to Item 7 above and in the readme_7.1.0 file. Another workaround is to include the option UNCOND (or COND, if that is your preference), e.g. $COVAR PRINT=S UNCOND The latest information about Known Problems will be posted to the nmusers listserve. III. Compiler Related Information gfortran: The name of the variable for the path to the lib directory differs across platforms. LD_LIBRARY_PATH is used for Linux and Unix. LIBRARY_PATH is used for Windows. ar command: It may be necessary to provide a full path name for the ar command if multiple Fortran compilers are available. ifort: for faster run times (as much as 8%) delete the /traceback option from the "set op" command of SETUP7.bat or delete the -traceback option from the "op=" command in SETUP7. Then reinstall in the same directory. E.g., MS-DOS: cd c:\nm7 SETUP7 c:\nm7 c:\nm7 ifort y link same rec Linux: cd /opt/nm7 /bin/bash SETUP7 /opt/nm7 /opt/nm7 ifort y ar same rec See the readme_7.1.0 file on the CD for additional information about compilers. IV. Re-installing NONMEM 7 with changes If NONMEM 7 has been installed in a given directory, it can be re-installed in a new directory. The CD is no longer necessary. E.g., cd old-directory SETUP7 old-directory new-directory ifort y link big rec A different compiler, or different options (e.g. big vs. reg) may be specified. Option rec must be specified to recompile. If, however, changes have been made to a file in a subdirectory (e.g., SIZES.f90 in directory resource), then do not use SETUP7 or SETUP7.bat in this way. All files in subdirectories will be replaced with files from nonmem7r.zip and nonmem7e.zip. Thus, the modified SIZES.f90 will be replaced by the original. Instead, the operating system's copy command should be used to create the new directory. E.g., MS-DOS: xcopy /S /Q old-directory new-directory Unix: cp -R old-directory new-directory Now re-install with option "same rec" MS-DOS: cd new-directory SETUP7 new-directory new-directory ifort y link same rec Unix: cd new-directory /bin/bash SETUP7 new-directory new-directory ifort y ar same rec V. Information Regarding Stable Model Development for Monte Carlo Methods This section should be appended to "Intro to 7, I.30, Advanced Topics" The Monte Carlo EM and Bayesian methods create samples of etas from multi-variate or normal or t distributions. Because of this, some extreme eta values may be randomly selected and sent to the user-developed model specified in $PK, $PRED, $DES, and/or $ERROR. Usually these extreme eta positions are rejected by the Monte Carlo algorithm because of the poor resulting objective function. But occasionally, floating point overflows, divide by zero, or domain errors may occur, which can result in failure of the analysis. This may occur especially when beginning an analysis at poor initial parameter values. At present, NONMEM is unable to recover from some of these errors, but in future versions we hope to provide more robust recovery algorithms. Here are some suggestions to provide a more robust user model that protects against domain errors or floating point overflows, or allows NONMEM to reject these positions of eta that cause them and continue the analysis. If it is impossible to calculate the prediction due to the values of parameters (thetas or etas) from NONMEM, then the EXIT statement should be used to tell NONMEM that the parameters are inappropriate. The EXIT statement allows NONMEM to reject the present set of etas by setting an error condition index, which is in turn detected by classical NONMEM algorithms as well as the Monte Carlo algorithms. With the NOABORT switch of the $EST statement set, NONMEM may then recover and continue the analysis. For example, if you have an expression that uses LOG(X) You may wish to flag all non-positive values and let NONMEM know when the present eta values are unacceptable by inserting: IF(X<=0.0) EXIT LOG(X) On some occasions, you may need to have the calculations complete, then this expression could be transformed to: LOG(ABS(X)+1.0E-300) to avoid arguments to LOG that are non-positive. If you have an expression which is ultimately exponentiated, then there is a potential for floating point overflow. An expression such as EXP(X) Which is likely to cause a floating point overflow could be filtered with IF(X>100.0) EXIT EXP(X) Again, if the calculation must complete, such as when evaluating a user-defined likelihood, then you can place a limiting value, taking care that it causes little first derivative discontinuity: EXPP=THETA(4)+F*THETA(5) ;Put a limit on EXPP, as it will be exponentiated, to avoid floating ; overflow IF(EXPP.GT.40.0) EXPP=40.0 F_FLAG=1 ; Categorical data ; IF EXPP>40, then A>1.0d+17, A/B approaches 1, 1/B approaches 0 and Y ; is approximately DV A=DEXP(EXPP) B=1+A Y=DV*A/B+(1-DV)/B ; a likelihood If your code uses SQRT() phrases, the expression within parentheses should be always positive. Sometimes expressions are calculated to near zero but slightly negative values, such as -1.1234444555E-16. Such values may legitimately be 0, but square rooting a negative number could result in failure of analysis. In such cases, the difficulty is due to the finite precision of the computer (e.g.,rounding error causing a value to be negative that would be non-negative on a machine with infinite precision) then the code should be written so as to produce the correct result. To protect against this, SQRT(X) could be converted to SQRT(ABS(X)) Or SQRT(SQRT(X*X)) The EXIT statement should not be used in such near-zero cases. It could lead to a failure in NONMEM with a message containing text such as DUE TO PROXIMITY OF NEXT ITERATION EST. TO A VALUE AT WHICH THE OBJ. FUNC. IS INFINITE An EXIT may still be issued for values of X that are clearly negative because of erroneous inputs, and you may wish to flag this calculation, so that the estimation algorithm rejects this position: IF(X<=-1.0E-06) EXIT SQRT(ABS(X)) Such protection codes described above need not be inserted for every LOG(), EXP, or SQRT, but only if your analysis fails frequently or tends to be sensitive to initial values.