NONMEM input data

Published

October 2, 2025

CautionUnder construction

Data review

Important

Do a thorough exploratory data analysis before starting to model.

  • Tab-separated (less likely to be present in the actual data)
  • Start every dataset with a “Comment” column, the IGNORE=@ will then ignore a row if there is a text comment
    • The second column should be a REF column with each line number

Sparse vs Rich data

The “richness” of data has different meanings.

It can relate to ETAs and RSE/RUV. It can also relate to where on the PK-curve samples are taken. If samples are taken on in the absorption-phase (pre-Cmax), around Cmax, and in the elimination phase, and Ctrough (pre-dose), then it can be considered “rich” sampling.

  • PK Studies:
    • “Intensive studies” (Phase 1/2)
      • Few subjects (homogeneous)
      • Single dose
      • Frequent (rich) sampling
    • “Population studies” (Phase 3/4)
      • Many subjects (heterogeneous)
      • Multiple dose
      • Sparse sampling

ADDL and II

  • Additional Dose (ADDL): Describes how many additional doses
  • Interdose interval (II): Time between the additional doses
TIME AMT ADDL II DV
10 15 0 0 .
15 . . . 25.7
20 10 0 0 .
22 15 0 0 .
34 15 0 0 .
36 . . . 30.2

same as:

TIME AMT ADDL II DV
10 15 2 12 .
15 . . . 25.7
20 10 0 0 .
36 . . . 30.2
ID TIME=DAY DOSE ADDL II CYCLE
1 1 90 0 0 1
1 8 90 0 0 1
1 15 90 0 0 1
1 22 . 0 0 1
1 29 90 0 0 2
1 36 90 0 0 2
1 43 90 0 0 2
1 50 . 0 0 2
1 57 90 0 0 3
1 64 90 0 0 3
1 71 90 0 0 3
1 78 . 0 0 3
1 85 90 0 0 4
1 92 90 0 0 4
1 99 90 0 0 4
1 106 . 0 0 4

same as:

ID TIME=DAY DOSE ADDL II CYCLE
1 1 90 4 28 1
1 8 90 4 28 1
1 15 90 4 28 1
1 22 . 0 0 1

Modify the NONMEM-dataset, inside a model file

Let’s say TIME is all -99, and we want to modify it.

$INPUT ID TIME NTIME TAFD DV TYPE MDV EVID
       AMT CMT DOSE AGE SEX HT WT BMI BSA
       BLOQ COMMENT=DROP

$DATA data.csv IGNORE=@

$SUBROUTINE ADVAN=13 TOL=6

$MODEL
  COMP=(CENTRAL,DEFDOSE,DEFOBS)
  COMP=PERIPHERAL

$INFN
1  IF (ICALL == 1) THEN
2    DOWHILE(DATA)
3      IF (NEWIND < 2) START_TIME = TAFD
      TIME = TAFD - START_TIME
    ENDDO
  ENDIF

$PK
...
1
ICALL==1, the routine has been called for initialization at the beginning of a NONMEM problem, one such call per problem
2
DOWHILE loop over entire dataset
3
Modifying statements here. They will be considered as “original dataset” by NONMEM.

References