Modules
NONMEM uses FORTRAN module to share values. They supplement the subroutine arguments.
NONMEM-PRED modules
These modules contain values that are (for the most part) communicated from PRED to NONMEM. Prior to NONMEM 7 these values were COMMON blocks. Following is a list of the MODULE, the (old) COMMON, and a description of the variables.
- NMPRD_INT (NMPRD1) PRED return code and user message count (IERPRD,NETEXT)
- NMPRD_CHAR (NMPRD2) PRED user message (ETEXT)
- NMPRD_INT (NMPRD3) "Copying pass" flag and SAVE region size for NMPRD4 (COMACT,COMSAV)
- NMPRD4P (NMPRD4) PRED-defined items for tables and scatterplots
- NMPRD_REAL (NMPRD5) Correlation matrix for epsilon's.
- NMPRD_INT (NMPRD6) Return code from routine SIMEPS.
- NMPRD_REAL (NMPRD7) Simulated ETAs for tables and scatterplots.
- NMPRD_REAL (NMPRD8) PRED's "recursive" flag
- NMPRD_REAL (NMPRD9) Data record at ICALL 0, 1 and 3
- NMPR_INT (NMPR10) Control information for PRED repetition feature.
- NMPR_INT (NMPR11) Flags to override effect of NEW option on $SIMULATION record.
- NMPR_REAL (NMPR12) Conditional limits on observation.
- NMPR_REAL (NMPR13) Lower limits defining interval datum, and their derivatives.
- NMPR_REAL (NMPR14) Upper limits defining interval datum, and their derivatives.
- NMPR_INT (NMPR15) Skip control variable.
- NMPR_REAL (NMPR16) Parameter values produced during Simulation Step.
- NMPR_INT (NMPR17) Flag indicating character of PRED variable F.
NONMEM read-only modules
These modules contain read-only values that are communicated from NONMEM to PRED and other user-supplied routines.
- ROCM_REAL (ROCM0) Current theta (THETA)
- ROCM_REAL (ROCM1) DV, data items in current L1 record
- ROCM_INT (ROCM1C) Size of current L1 record (prior to NONMEN 7, this was combined with ROCM1).
- ROCM_INT (ROCM2) Number of L2 records and length of L2 record
- ROCM_REAL (ROCM3) Predictions and derivatives with current L1 record
- ROCM_REAL (ROCM4) Selected data from an individual record
- ROCM_INT (ROCM4) Selected data from an individual record
- ROCM_REAL (ROCM5) Predictions and derivatives with current L2 record
- ROCM_REAL (ROCM6) Initial/final theta, omega, sigma
- ROCM_REAL (ROCM7) Standard errors of estimates of theta, omega, sigma
- ROCM_REAL (ROCM8) Final value of the objective function
- ROCM_INT (ROCM9) Return codes from Estimation and Covariance Steps
- ROCM_INT (ROCM10) Simulation: no. of replications (total and current)
- ROCM_INT (ROCM11) Mixture: index of subpopulation (current and most probable)
- ROCM_INT (ROCM12) Second and first derivative flags for PRED
- ROCM_INT (ROCM13) Simulation: Final pass flag for PRED and CONTR
- NMPRD_INT (ROCM14) Problem and subproblem counters.
- NMPRD_INT (ROCM15) List of inactive ETAs.
- ROCM_REAL (ROCM16) The number of significant digits in the the vector of final estimates.
- ROCM_INT (ROCM17) New level 2 record flag
- ROCM_REAL (ROCM18) Nonparametric estimates: height and heights of cumulative marginals
- ROCM_REAL (ROCM22) Current value of omega.
- ROCM_REAL (ROCM25) Mixing probabilities
- ROCM_REAL (ROCM28) Superproblem printing indicator
- NMPRD_INT (ROCM29) Population vs. single-subject data flag.
- ROCM_REAL (ROCM31) Template record at ICALL=6.
- ROCM_INT (ROCM32) Number of the individual record and of the data record.
- ROCM_INT (ROCM34) NEWIND at ICALL 0, 1 and 3.
- ROCM_INT (ROCM35) Numbers of THETAs, ETAs and EPSILONs in the problem.
- ROCM_REAL (ROCM36) Individual's posterior variance-covariance matrix. No help entry.
- ROCM_INT (ROCM37) Indicator that Estimation Step is omitted and obj. func. is being evaluated for first time. No help entry.
- ROCM_REAL (ROCM38) Conditional limits for observations in individual record. No help entry.
- ROCM_REAL (ROCM39) Conditional limits for observation. No help entry.
- ROCM_REAL (ROCM40) Lower Limits defining interval datum, and their derivatives in individual record. No help entry.
- ROCM_REAL (ROCM41) Upper Limits defining interval datum, and their derivatives in individual record. No help entry.
- ROCM_REAL (ROCM42) Lower Limits defining interval datum, and their derivatives. No help entry.
- ROCM_REAL (ROCM43) Upper Limits defining interval datum, and their derivatives. No help entry.
- ROCM_REAL (ROCM44) Probability that observation is within (outside) limits.
- ROCM_REAL (ROCM45) Probability that category occurs.
- ROCM_INT (ROCM46) Number of individual records with observations, and indices of first and last such record.
- ROCM_REAL (ROCM47) Mixture probabilities with individual record containing template record.
- ROCM_INT (ROCM48) Length of individual record.
- ROCM_REAL (ROCM49) Prediction, residual, and weighted residual values for all methods, as well as normalized probability distribution error.
- ROCM_INT (ROCM50) ID data item for the individual contributions to the objective function.
- ROCM_REAL (ROCM50) Individual contributions to the objective function.
Module variables
The following names are reserved in all abbreviated code:
|
|
Names of modules and of variables in the modules are also reserved. 1 Below is a list of blocks of abbreviated code and the modules and variables that may be used. Second is a list of modules, the variables in the modules, and the blocks of abbreviated code in which these variables may be used.
|
|
For another view the list below shows the code blocks that have access to given variables.
|
|
NONMEM_RESERVED
Some internal NONMEM variables are not directly available in NM-TRAN abbreviated code and normally require verbatim code. A way around this is to put their MODULE definitions in an include file whose name starts with NONMEM_RESERVED (case-insensitive), then include that file at the start of any abbreviated-code block that needs them. After that, NM-TRAN treats those variables as allowed in abbreviated code, so they can be used without verbatim sections.
A list of variables has been compiled. They require judicious use.
The NONMEM_RESERVED_GENERAL file in the ..\util directory has a few
of the quite useful variables listed. It needs to be copied to the
present run directory so that NM-TRAN has access to it. Note that
there may be user-defined variable names in the control stream that
inadvertently have the same names as variables in
NONMEM_RESERVED_GENERAL, which may cause compiler errors. If so,
make a smaller version of NONMEM_RESERVED_GENERAL with a name also
starting with "NONMEM_RESERVED" that contains only those reserved
variables of interest.
For example, NONMEM_RESERVED_GENERAL contains
|
|
These variables can be used as shown in example 8:
|
|
ITER_REPORT contains the present iteration number as reported to the console or NONMEM report file. BAYES_EXTRA and BAYES_EXTRA_REQUEST are described in example8.ctl.
SIZES, FSIZES, PRSIZES
The three modules are used in NONMEM to customize variables' sizes.
File SIZES in the resources directory contains FORTRAN PARAMETER statements giving the default values of symbolic parameters used in source code. Constants from SIZES may be incorporated into the source code by means of the FORTRAN USE statement. Some of these constants describe array sizes.
Size parameters
See below the parameters, default values, and their purpose.
| NLUSER=100 | Maximum number of logical I/O units user may use. |
| LTH=100 | MAX. NO. OF THETA'S. Dynamically sized, or set by user via $SIZES record |
| LVR=30 | MAX. NO. OF ETA'S + EPS'S. Dynamically sized, or set by user via $SIZES record |
| LVR2=20 | MAX. NO. OF ETA'S PERMITTED WHEN LAPLACIAN METHOD IS USED. Value may be over-ridden by user via $SIZES record Value may be overridden by user via $SIZES record |
| NO=250 | MAX NO. OF OBSERVATION RECORDS / INDIVIDUAL RECORD |
| MMX=10 | MAX NO. OF MIXTURE SUBPOPULATIONS. Dynamically sized, or set by user via $SIZES record |
| LNP4=4000 | SIZE OF COMMON NMPRD4. Value may be over-ridden by user via $SIZES record |
| LSUPP=4050 | MAX. NO. OF POINTS OF SUPPORT WITH NONPARAMETRIC ESTIMATE. Value may be over-ridden by user via $SIZES record |
| LIM7=2 | SIZE OF BUFFER 7. DO NOT GO LOWER THAN 2. Value may be overridden by user via $SIZES record |
| LWS3=9000 | SIZE OF WORKING SPACE 3 AT LEAST AS LARGE AS: NS*NOETAS**2, Where NS is the No. of directions used with the Stieltjes method, and NOETAS is the number of ETA's. Value may be over-ridden by user via $SIZES record |
| MAXIDS=10000 | MAX. NO. OF INDIVIDUALS IN DATA SET. Dynamically sized, or set by user via $SIZES record |
| LIM1=10000 | SIZE OF BUFFER 1. Value may be over-ridden by user via $SIZES record |
| LIM2=100000 | SIZE OF BUFFER 2. Value may be over-ridden by user via $SIZES record |
| LIM3=10000 | SIZE OF BUFFER 3. DO NOT GO LOWER THAN 2. Value may be over-ridden by user via $SIZES record |
| LIM4=1000 | SIZE OF BUFFER 4: LIM4=NUMBER OF SUBJECTS. Value may be overridden by user via $SIZES record |
| LIM5=200 | SIZE OF BUFFER 5. Value may be over-ridden by user via $SIZES record |
| LIM6=400 | SIZE OF BUFFER 6. Value may be over-ridden by user via $SIZES record |
| LIM8=200 | SIZE OF BUFFER 8. Value may be over-ridden by user via $SIZES record |
| LIM10=100000 | SIZE OF BUFFER 10. Value may be over-ridden by user via $SIZES record |
| LIM11=25 | SIZE OF BUFFER 11. Value may be over-ridden by user via $SIZES record |
| LIM13=1000 | SIZE OF BUFFER 13: LIM13=NUMBER OF SUBJECTS. Value may be overridden by user via $SIZES record |
| LIM15=1000 | SIZE OF BUFFER 15: LIM15=NUMBER OF SUBJECTS. Value may be overridden by user via $SIZES record |
| LIM16=400 | SIZE OF BUFFER 16. Value may be over-ridden by user via $SIZES record |
| LSTEXT=70000 | AT LEAST (MAXOMEG*(MAXOMEG+1)/2+MAXPHETA+5)*NUMTEXT. LSTEXT is maximun number of characters to a single line of the raw output file specified by $EST FILE=. where NUMTEXT is number of characters needed to represent a number and its delimiter. For example, FORMAT=,1PE12.5 takes up NUMTEXT=13 characters. |
| LSFORM=2048 | LSFORM is the character length of FORMAT TFORMATL,RFORMATL, pertaining to the full length of LFORMAT, RFORMAT for the $TABLE record. |
| MAXRECID=200 | Maximum number of records in any individual record. For use by PREDPP. Value may be over-ridden by user via $SIZES record |
| PC=30 | MAX. NO. OF COMPARTMENTS MAXIMUM IS 99. Value may be over-ridden by user via $SIZES record |
| PCT=30 | MAX. NO. OF MODEL EVENT TIMES. Value may be over-ridden by user via $SIZES record |
| MAXNRDS=PC | MAXNRDS: MAX. NO. OF DELAY COMPARTMENTS FOR ADVAN16, ADVAN17, and ADVAN18. YOU MAY WANT TO MAKE IT LOWER THAN PC AND SAVE MEMORY Value may be over-ridden by user via $SIZES record |
| PAST_SIZE=4000 | RESOLUTION (NUMBER OF DETAILED POINTS) FOR DELAY COMPARTMENTS STORAGE FOR ADVAN16 AND ADVAN17. Value may be over-ridden by user via $SIZES record |
| PCT_BIG=10000 | MAX. NO. OF MODEL EVENT TIMES THAT NMTRAN CAN PROCESS. PG: SIZE OF GG; MAX. NO. OF BASIC+ADDITIONAL PK PARAMS.^M ! (MAXIMUM IS PCT+99) |
| PIR=700 | SIZE OF COMPACT DA/DP/DT ARRAYS. Value may be over-ridden by user via $SIZES record |
| PD=50 | CHANGED TO INCREASE DATA ITEMS PER DATA RECORD FROM 20 TO 50 IT IS ALSO SIZE OF VDATREC DATA ARRAY. THIS IS DONE TO SEPARATE VDATREC AND VRESWRES VARIABLES/ Dynamically sized, or set by user via $SIZES record. |
| MAXIC=90 | MAXIC: MAXIMUM NUMBER OF ACTIVE INFUSIONS FOR PREDPP. Value may be over-ridden by user via $SIZES record |
| PDT=500 | MAXIMUM NUMBER OF TABLE ITEMS/PRED-DEFINED ITEMS. Value may be over-ridden by user via $SIZES record |
| PAL=50 | NO. OF ADDITIONAL AND LAGGED DOSES. Value may be over-ridden by user via $SIZES record |
| MAXFCN=1000000 | MAX. NO. OF CALLS IN GENERAL NON-LINEAR MODELS IMAX IN MODULE PRCOM_INT OVERRIDES. Value may be over-ridden by user via $SIZES record |
| STIELTJ_SIZE=101 | The next four are for internal use, pertaining to various additional weighted residual diagnostics |
| MAXXNAME=40 | |
| MAXVRESWRES=39 | |
| MAXVRESN=9 | |
| MXNAME=40 | |
| DIMTMP=500 | RELATED TO THE NUMBER OF USER-DEFINED VARIABLES. Value may be over-ridden by user via $SIZES record |
| DIMCNS=500 | RELATED TO THE TOTAL NUMBER OF CONSTANTS. Value may be over-ridden by user via $SIZES record |
| DIMNEW=1000 | RELATED TO THE TOTAL NUMBER OF INTERMEDIATE VARIABLES. Value may be over-ridden by user via $SIZES record |
| DIMQ=99999 | ARRAY SIZE FOR LOGICAL CONDITIONS |
| FL=49 | LOGICAL UNIT NUMBER FOR FLIB |
| DIMVRB=1000 | MAX. NO. OF LINES OF VERBATIM CODE |
| PL=10 | MAXIMUM DEPTH OF NESTED IF STATEMENTS |
| NFUNCX=100 | MAXIMUM NUMBER OF USER FUNCTIONS. |
| NVECX=100 | MAXIMUM NUMBER OF USER VECTORS. |
| MAXOTHER=1000 | Maximum number of filenames listed on $SUBROUTINE OTHER=filename |
| SD=30 | LENGTH OF DATA LABEL |
| FSD=67000 | LENGTH OF CONTROL STREAM FILE STRING (ALSO, MULTIPLE LINES CONCATENATED WITH & MAY NOT EXCEED FSD) |
| FSD1=67001 | LENGTH OF CONTROL STREAM FILE STRING |
| SCO=30 | STRING LENGTH OF NUMBER IN $THETA, $OMEGA, $SGIGMA RECORDS. |
| SDF=24 | LENGTH OF DATA ITEM |
| NFSIZES=50 | NUMBER OF ITEMS LISTED IN FSIZES FILE |
| NPRSIZES=14 | NUMBER OF PREDPP ITEMS IN PRSIZES.F90 |
| CONSTANTS FOR Monte Carlo, EM methods | |
| MAX_EXTRA=20 | Numer of $EST statements allowed per problem |
| NPOPMIXMAX=10 | Now dynamically sized to MAXIMUM NUMBER OF SUB-POPULATIONS FOR MIXTURE MODELS MMX. Or, set by user via $SIZES record |
| MAXOMEG=70 | Now dynamically sizes to LVR, OR MAXIMUM OMEGA DIMENSION ETAS. Or, set by user via $SIZES record (but should be left alone) |
| MAXPTHETA=90 | Now dynamically sized to LTH, MAXIMUM NUMBER OF THETA, PLUS LOWER TRIANGLE OF SIGMA. THUS, IF NUMBER OF THETAS IS N, AND DIMENSION OF SIGMAS IS M, THEN NEED MAXPTHETA=N + M*(M+1)/2. OR, may be set by user via $SIZES record (but should be left alone). |
| MAXITER=210 | Maximum number of previous iterations to incorporate into Monte Carlo convergence tests Effective CITER is <=MAXITER |
| ISAMPLEMAX=10 | FOR SAEM METHOD, EFFECTIVE ISAMPLE<=ISAMPLEMAX |
| MAXSIDS=100 | MAXIMUM NUMER OF SUPER ID ITEMS IN DATA SET |
| MAXSIDL=0 | MAXIMUM LEVEL OF SUPER IDS. MAXSIDL=0 MEANS NO SUPER IDS. Default 0, until $LEVEL is used, in which case it will be dynamically sized. |
| MAXFTEXT=100 | Maximum of PRDERR message lines |
| PNM_MAXNODES=100 | MAXIMUM NUMBER OF PARALLELIZATION NODES |
| PNM_BUFFER_SIZE=100000 | Internal buffer size, for efficient packaging and sending between processes |
more information including descriptions of the buffers may be found in the INTRODUCTION TO NONMEM 7.
Changes with NONMEM v7.2+
There is only one version of SIZES (i.e., there is no longer a SIZES_reg or SIZES_big).
Many NONMEM and NM-TRAN arrays are allocated dynamically at run time.
NM-TRAN creates a subroutine FSIZESR for NONMEM. FSIZESR contains values for some parameters (e.g., LVR) that are exactly what is needed for the current problem, and contains 0's for parameters that NM-TRAN cannot assess. Default values for parameters that are 0 in FSIZESR are obtained by NONMEM from the file SIZES.f90.
Note that file FSIZES is a convenient reference for users but not used by NONMEM. SUBROUTINE FSIZESR in FSUBS is what is actually used during the NONMEM run.
NM-TRAN creates a file PRSIZES.f90 for PREDPP. PREDPP arrays are allocated statically but may be re-compiled at run time using parameters defined in prsizes.f90. Some constants in prsizes are assessed for the current problem; others are copied from default values in SIZES.f90.
The user may override many of the parameter values in FSIZES and prsizes with the $SIZES record. Any value specified by $SIZES will override both the default in SIZES.f90 and the value that NM-TRAN would have specified.
As of NONMEM 7.3, NMTRAN determines the maximum number of observation
records (MDV=0) that occur in any subject, among all data files used
in the entire control stream file. If this value is greater than the
NO value listed in SIZES.f90, it will set NO to this larger size.
Thus, users no longer have to be conscientious of sizing the NO
parameter. However, there is no guarantee that NMTRAN will
correctly assess NO for the entire scope of the control stream file
for all types of problems. Should this occur, NONMEM may issue an
error, and the user will need to set the NO value with a $SIZES
record.
Constants that may be changed with $SIZES record:
|
|
Consants that are also in prsizes:
|
|
REFERENCES: Guide Introduction_7
Change buffer sizes
The entire data set is not necessarily stored in memory at one time. It may be stored in a temporary disk file, and parts of it are brought into a memory buffer as needed. Some other large arrays are also stored on disk files. Of course, memory-file swapping of data set information leads to increased computer run-time. So the bigger the buffer size, the shorter may be the run time. The sizes of the NONMEM buffers are set by constants LIM1 to LIM16. The default settings of these constants are set in SIZES.f90. If these constants are not adequate, NONMEM will produce error messages such as the following.
|
|
Unlike most of the other dynamically changeable parameters, NMTRAN
does not determine the most appropriate LIM value for the problem, but
instructs NONMEM to use the default value specified in
resource§IZES.f90 by default. For many problems, the default LIM
values are high enough that all of the data may reside in memory
without resorting to the buffer files. For large data sets, buffer
files are likely to be used. The user may, however, select a LIM
value that is different from that specified in sizes.f90, via the
$SIZES record in the control stream file, e.g.:
|
|
It is not necessary to recompile NONMEM, just rerun the nmfe script, and the appropriate arrays will be allocated according to the user specified LIM value.
It is most desirable to set the LIM value that is the proper size for the run, so that the buffer file does not have to be used. With today’s very large memory computers, this should usually be alright to do without running out of memory. Below is a table describing the minimal allowable value for each LIM, and the value needed to prevent using the buffer file for a particular problem:
| LIM | Minimum Value | In-memory buffer size | Buffer file |
|---|---|---|---|
| 1 | MAXDREC | TOTDREC | 10,13,20,33 |
| 2 | MAXDREC | TOTDREC | 39,14 |
| 3 | 2 | MAXIDS | 12 |
| 4 | 2 | MAXIDS | 15,16 |
| 5 | 2 | MAXIDS | 17,18 |
| 6 | MAXDREC | TOTDREC | 7,19 |
| 7 | 2 | MAXDREC | 21,22 |
| 8 | 2 | MAXIDS | 23,24 |
| 9 (nm74, uses LIM1) | MAXDREC | TOTDREC | For simulation REWIND: 41,42,43,44 |
| 10 (nm74) | 10 | MAXIDS*(NPNIND+1) | 45,46 |
| 11 | 2 | NPROB | 31,32 |
| 12 (nm74, uses LIM6) | MAXDREC | TOTDREC | 47,48 |
| 13 | 2 | MAXIDS | 11 |
| 14 NOT USED | |||
| 15 | 2 | MAXIDS | 26,27 |
| 16 | MAXDREC | TOTDREC | 26,27 |
with
- MAXDREC= Largest number of data records in any one individual record (in any one subject)
- TOTDREC=total number of data records (lines) in largest data set to be used.
- NPNIND=Larger of MAXIDS and NPSUPP/NPSUPPE given on
$NONPrecord. - NPROB=Total number of problems in the control stream.
- LVR=Largest number of ETAs in any problem (including those listed in
$PRIOR)
As of NM73, the values for MAXDREC and TOTDREC are assessed by NMTRAN, and the user may take advantage of NMTRAN’s evaluation by using the –maxlim option to the nmfe75 script (see below). But NMTRAN may not always correctly assess these values. Thus, it is best if the user ascertains these values ahead of time by inspection of his largest data set among all of the problems to be used by the control stream file, and the largest number of parameters to be used. Then set the LIM values accordingly via the $SIZES record.
One can alternatively assess empirically whether file buffers are used, by beginning the run, allowing perhaps one iteration to transpire, then from another command window do a directory search for FILE*, (or WK* for worker files in parallelization problems, section I.76 Parallel Computing (NM72)
If any of the FILExx do not have 0 size, then they are being used. Interrupt the analysis, then increase the appropriate LIM value with the $SIZES record, delete the FILE* in case some remain due to a ctrl-C interrupt, rerun the problem, and look again for any non-zero sized FILE* again. Repeat as needed.
By default (-maxlim=0), NMTRAN will set the LIM values to those listed in sizes.f90, or to the minimum required, whichever is larger. As of NM73, if you set –maxlim=1 on the command line, then LIM1, LIM3, LIM4, LIM13, and LIM15 (those used during estimation, and therefore by workers in a parallelization problem), will be set to the size needed to assure no buffer files are used, and everything is stored in memory, for the particular prolem. If you set –maxlim=2, then LIM1, LIM2, LIM3, LIM4, LIM5, LIM6, LIM7, LIM8, LIM10, LIM11, LIM13, LIM15, and LIM16 are also sized to what is needed to assure that buffer files are not needed.
If you set -maxlim=3, then MAXRECID will also be sized, to MAXDREC, the largest number of records in any individual. MAXRECID sizes arrays involved in storing state variables during partial derivative estimates of SIGMAs and sigma like THETAs, to improve efficiency of the EM and Monte Carlo methods. When setting -maxlim=3, it is preferred to also use –tprdefault, or –prcompile, but not –prdefault, as NMTRAN’s optional resizing of the PREDPP size parameter MAXRECID may conflict with the –prdefault option.
To specify only a subset of LIM’s to be sized by NMTRAN, set –maxlim to a number list enclosed within parantheses, such as –maxlim=(1,2,3,11-16), which will have NMTRAN find size requirements for LIM1, LIM2, LIM3, LIM11, LIM13, LIM15, and LIM16 (LIM12 and LIM14 are not used). Enclosing the option in quotes “–maxlim=(1,2,3,11-16)” is required for some operating systems. For sizing MAXRECID, use the number 17. Setting maxlim=(1-17) is equivalent to –maxlim=3, whereas –maxlim=(3) means to have NMTRAN size only LIM3.
Buffers
A number of contiguous data records are stored in memory at any one time in buffers. If a large enough memory area can be made available for this purpose, then the entire data set can be stored in memory throughout the NONMEM run, and computing costs can be decreased. The following discussion of NONMEM buffers should not be confused with I/O buffers which are used by the operating system.
The size of buffer 1 is related to the number, LIM1, of data records stored in memory at any one time. A large proportion of data sets will consist of no more than 10000 data records. Consequently, the size of buffer 1 has been set to allow LIM1=10000 data records. The least number of data records allowable must exceed the largest number of data records used with any one subject, which rarely will be as large as 10000. Each data record consists of PD 8 byte double precision computer words, and the allocation of memory for buffer 1 is PD*(LIM1+3)*8 bytes.
Buffer 2 holds a number of contiguous residual records. For each data record, NONMEM generates prediction, residual and weighted residual data items, NPDE, EWRES, etc.; these data items comprise the residual record. The default size of buffer 2 is related to the number, LIM2, of residual records, stored in memory at any one time. The size of buffer 2 has been set to allow LIM2=100,000 residual records, for up to 100,000 data records. The least number of residual records allowable must exceed the largest number of data records used with any one subject. Each residual data record consists of 19 eight byte double precision computer words. The allocation of memory for buffer 2 is 19*(LIM2+3)*8 bytes.
Buffer 3 holds a number of contiguous subject header records for input data. The size of buffer 3 is related to the number, LIM3, of subject header records stored in memory at any one time. The default size of buffer 3 has been set to allow LIM3=1000 subject header records. Each subject header record consists of four 8 byte computer words. The allocation of memory for buffer 3 is 4*(LIM3+1)*8 bytes.
Buffer 4 holds a number of contiguous ETA records. For each subject, NONMEM generates values for ETA variables. The size of buffer 4 is related to the number, LIM4, of ETA records stored in memory at any one time. The size of buffer 4 has been set to allow LIM4=1000 ETA records. Each ETA record consists of MMX*LVR 8 byte double precision computer words. The allocation of memory for buffer 4 is MMX*LVR*(LIM4+3)*8.
Buffer 5 holds a number of contiguous mixture model records. For each subject record, NONMEM generates information about the component models of a mixture model; this information constitutes the mixture model record. The size of buffer 5 is related to the number, LIM5, of mixture model records stored in memory at any one time. The default size of buffer 5 has been set to allow LIM5=200 mixture model records. Each mixture model record consists of five 8 byte single precision computer words. The allocation of memory for buffer 5 is (MMX+1)*(LIM5+3)*8 bytes.
Buffer 6 holds a number of contiguous PRED-defined records. For each data record of a given subject record, NONMEM stores the values found in module NMPRD4; these values comprise the NMPRD4 record. The size of buffer 6 is related to the number, LIM6, of PRED-defined records stored in memory at any one time. The size of buffer 6 has been set to allow LIM6=400 PRED-defined records. The least number of PRED-defined records allowable must exceed the largest number of data records used with any one subject, which rarely will be as large as 400. Each PRED-defined record consists of PDT 8 byte double precision computer words. The allocation of memory for buffer 6 is PDT*(LIM6+3)*8 bytes.
Buffer 7 holds a number of contiguous NMPRD4 records for a single individual only. For each problem in a NONMEM run, NONMEM generates information about the problem; this constitutes the problem header record. The size of buffer 7 is related to the number, LIM7, of NMPRD4 records stored in memory at any one time. The size of buffer 7 has been set to allow LIM7=2 NMPRD4 records, which is generally fewer than the number of NMPRD4 records existing for any given subject. Each NMPRD4 record consists of (LIM7+2)*LNP4 8 byte double precision computer words. The default allocation of memory for buffer 7 is 4*LNP4*8 bytes.
The memory allocation of Buffer 8 is (LVR+1)*(LIM8+3) double precision values. The memory allocation of Buffer 10 is (LIM10+3) double precision values.
Buffer 11 holds a number of contiguous problem header records. The size of buffer 11 is related to the number, LIM11, of problem header records stored in memory at any one time. The size of buffer 11 has been set to allow LIM11=25 problem header records. Each problem header record consists of forty-two 8 byte integer computer words. The allocation of memory for buffer 11 is 42*(LIM11+3)*8= 9408 bytes.
The memory allocation of Buffer 13 is 404*(LIM13+3) double precision values.
After NONMEM VI, there are also buffers 15 and 16. The sizes of these buffers are related to constants LIM15 and LIM16. These buffers are used in DAT15 and DAT16. If LIM16 is , not adequate, NONMEM will produce error messages such as the following. TOT NO. OF RESIDUAL RECS IN BUFFER 16 IS LESS THAN NO. OF DATA RECS WITH SOME INDIVIDUAL
The memory allocation of Buffer 15 is LCM110*(LIM15+3) double precision values. The memory allocation of Buffer 16 is MMX*4*(LIM16+3) double precision values.
Buffers 1, 3, 4, 13, and 15 are used during an estimation step. To obtain the fastest analysis, even when the estimation is parallelized, you may want to optimize their LIM sizes.
With NONMEM 7.2 and higher, either upper or lower case may be used. Variables in modules whose names start ROCM or PROCM may be used only on the right. Variables in modules whose names start NMPR or PRDPK may always be used on the right and may sometimes be used on the left. Names of modules are reserved and may not be used in any block of abbreviated code.