From: "Wixley, Dick" <Dick.Wixley@solvay.com>
Subject: Software and procedures for conducting and reporting on NONMEM analyses in clinical reports
Date: Mon, 29 May 2000 10:13:49 +0200

Dear Fellow users,

Since becoming a regular NONMEM user for the analysis of Clinical PK/PD studies I have become confronted with the problem of extracting a sufficient and accurate reporting of the statistical analysis from NONMEM output. Having arrived at the point of writing my own SAS code to read NONMEM report files I suddenly realised that I was about to re-invent a very well-known wheel.

I would be very appreciative of any help in this regard. Either in the form of SAS code or references to possible commercially available software tools for the purpose.

Thanks in advance.

Dick Wixley

 

*****

 

 

From: ABoeckmann <alison@c255.ucsf.edu>
Subject: Re: Software and procedures for conducting and reporting on NONMEM analyses in clinical reports
Date: Tue, 30 May 2000 09:17:35 -0700 (PDT)

Dick,

I wrote a Fortran program nmsee5, which extracts the important parts from a NONMEM output. When used with the grep command, it is quite flexible.

It can be found at
ftp://pkpd.icon.palo-alto.med.va.gov/nonmem.dir/NMSEE.dir

You can use your web browser. Follow the link from http://c255.ucsf.edu to "NONMEM Project Group", then to the "NONMEM Users Repository", then to "NONMEM Repository located here", and then to the ftp directory NMSEE.DIR

Alison Boeckmann

 

 

*****

 

 

From: "Jill B. Fiedler-Kelly" <jbf@cognigencorp.com>
Date: Wed, 31 May 2000 15:04:30 -0400 (EDT)
Subject: Software and procedures for conducting and reporting on NONMEM analyses in clinical reports

Dear Dick,

PERSPECTIVE Hypertext Data Analysis Mapping, a commercially available software program developed by Pharmaceutical Outcomes Research (with which I am affiliated) extracts and reports information from NONMEM output.

Please visit: www.cognigencorp.com or e-mail me for further information.

Sincerely,
Jill Fiedler-Kelly
______________________________________
Jill Fiedler-Kelly, M.S.
Vice President, Population PK/PD
Pharmaceutical Outcomes Research, Inc.
435 Lawrence Bell Drive, Suite 7
Williamsville, NY 14221
(v) 716.633.3463, ext. 228
(f) 716.633.7404
(e) jbf@cognigencorp.com
http://www.cognigencorp.com/

 

 

*****

 

 

From: Nick Holford <n.holford@auckland.ac.nz>
Subject: Re: Software and procedures for conducting and reporting on NONMEM analyses in clinical reports
Date: Thu, 01 Jun 2000 07:32:33 +1200

Dick,

Wings for NONMEM is a free software system which extracts and reports NONMEM output (among other things).

Please visit: http://www.geocities.com/wfn2k for further information (web based user guide and download package).

Nick
--
Nick Holford, Dept Pharmacology & Clinical Pharmacology
University of Auckland, Private Bag 92019, Auckland, New Zealand
email:n.holford@auckland.ac.nz tel:+64(9)373-7599x6730 fax:373-7556
http://www.phm.auckland.ac.nz/Staff/NHolford/nholford.htm

 

 

*****

 

 

From: "Sale, Mark" <ms93267@glaxowellcome.com>
Subject: RE: Software and procedures for conducting and reporting on NONME M analyses in clinical reports
Date: Wed, 31 May 2000 16:12:47 -0400

Dick,
My two cents worth on compiling NONMEM statistical output:
We use NONMEM a lot for simulation and Bootstrap as well as some semi automated analyses, using Excel macros as a front end. We've found that it is pretty easy to modify the Cfiles.for file to output all the info automatically. With Alisons and Stuarts permission I'd be happy to share this version of Cfiles.for with anyone. The output (written to a file called parms) for one run is given below. The number of thetas, etas and eps are needed in order to read the vectors and R squared matrix into the Excel macro (you need to know how many columns and rows to read in). Upper and lower limits are needed to test if the value of theta hit a boundary (there's probably a better way to do this, but I haven't found it)

Mark


OBJ 0.3797139E+03
SUCCESS 0 0
NUMBER OF THETAS
11 11
NUMBER OF ETAS AND EPS
3 2 2
NTHP,NETP,NEPP
LOWER BOUND AND UPPER BOUND
0.00000E+00 0.10000E+07
0.00000E+00 0.10000E+07
0.00000E+00 0.10000E+07
0.00000E+00 0.10000E+07
0.00000E+00 0.10000E+07
-0.10000E+01 0.10000E+01
0.00000E+00 0.10000E+07
0.00000E+00 0.00000E+00
-0.10000E+07 0.10000E+07
-0.10000E+07 0.10000E+07
-0.10000E+07 0.10000E+07
THETA
0.5903068E+01
0.4449646E+00
0.1790151E+03
0.3204727E+00
0.7880275E-01
0.6936011E+00
0.1101479E-01
0.0000000E+00
-0.8234533E-02
0.6420390E-02
-0.4426185E+00
SE THETA
0.2238780E+01
0.1237273E+00
0.4673713E+02
0.1235160E+00
0.5437505E-01
0.3821208E-01
0.8225896E-02
0.1000000E+11
0.1872639E-02
0.4723597E-02
0.2507842E+00
OMEGA
0.2867055E+01 -0.3069114E+00 0.0000000E+00
-0.3069114E+00 0.8495351E-01 0.0000000E+00
0.0000000E+00 0.0000000E+00 0.1041822E+00
SE OMEGA
0.1983845E+01 0.1810840E+00 0.1000000E+11
0.1810840E+00 0.1925736E-01 0.1000000E+11
0.1000000E+11 0.1000000E+11 0.2862607E-01
SIGMA
0.1107726E+00 0.0000000E+00
0.0000000E+00 0.1000000E-05
SE SIGMA
0.1674749E-01 0.1000000E+11
0.1000000E+11 0.1000000E+11
R^2 MATRIX
1.000 -0.878 0.716 -0.889 -0.876 -0.616 0.362 -0.071 -0.369 0.187
0.956 -0.730 -0.064 0.366 0.344 0.000

-0.878 1.000 -0.740 0.832 0.926 0.788 -0.359 0.066 0.505 -0.397
-0.894 0.784 0.068 -0.356 -0.341 0.000

0.716 -0.740 1.000 -0.746 -0.847 -0.530 0.335 -0.647 -0.059 0.175
0.674 -0.343 -0.367 -0.003 0.638 0.000

-0.889 0.832 -0.746 1.000 0.850 0.575 -0.044 0.055 0.263 -0.372
-0.881 0.540 0.395 -0.370 -0.382 0.000

-0.876 0.926 -0.847 0.850 1.000 0.745 -0.330 0.236 0.373 -0.225
-0.843 0.587 0.224 -0.166 -0.534 0.000

-0.616 0.788 -0.530 0.575 0.745 1.000 -0.104 0.009 0.591 -0.275
-0.640 0.521 0.103 -0.297 -0.327 0.000

0.362 -0.359 0.335 -0.044 -0.330 -0.104 1.000 -0.351 -0.133 -0.219
0.278 -0.391 0.420 -0.028 0.200 0.000

-0.071 0.066 -0.647 0.055 0.236 0.009 -0.351 1.000 -0.423 0.153
-0.008 -0.198 0.274 0.468 -0.440 0.000

-0.369 0.505 -0.059 0.263 0.373 0.591 -0.133 -0.423 1.000 -0.132
-0.374 0.570 -0.324 -0.590 0.013 0.000

0.187 -0.397 0.175 -0.372 -0.225 -0.275 -0.219 0.153 -0.132 1.000
0.442 -0.404 -0.189 0.281 -0.267 0.000

0.956 -0.894 0.674 -0.881 -0.843 -0.640 0.278 -0.008 -0.374 0.442
1.000 -0.794 -0.059 0.419 0.212 0.000

-0.730 0.784 -0.343 0.540 0.587 0.521 -0.391 -0.198 0.570 -0.404
-0.794 1.000 -0.386 -0.523 0.106 0.000

-0.064 0.068 -0.367 0.395 0.224 0.103 0.420 0.274 -0.324 -0.189
-0.059 -0.386 1.000 0.188 -0.346 0.000

0.366 -0.356 -0.003 -0.370 -0.166 -0.297 -0.028 0.468 -0.590 0.281
0.419 -0.523 0.188 1.000 -0.195 0.000

0.344 -0.341 0.638 -0.382 -0.534 -0.327 0.200 -0.440 0.013 -0.267
0.212 0.106 -0.346 -0.195 1.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000

 

*****

 

 

From: ABoeckmann <alison@c255.ucsf.edu>
Subject: NONMEM results
Date: Thu, 1 Jun 2000 13:51:20 -0700 (PDT)

Dick Wixley asked about "the problem of extracting a sufficient and accurate reporting of the statistical analysis from NONMEM output."

One response was from Mark Sale, who said he has a special version of the NONMEM CFILES routine to obtain this information "on the fly", i.e., using code that is part of the NONMEM executable, rather than extracting it from the NONMEM output.

In fact, NONMEM allows anyone to write code that saves quantities of interest in an external file. I've posted email on this topic before, but I will repeat it here because the code is somewhat garbled in the NMUSERS email archive.

- Alison
===================

The final parameter estimates, standard errors, and other quantities are available in NONMEM read-only commons ROCM6, ROCM7, ROCM8, and ROCM9. These are discussed in Guide VIII, or try "nmhelp rocm6" etc.

If you use $PRED, you can obtain them in a block of code that tests for ICALL.EQ.3.

Or if you use PREDPP, you can use code such as the following in an INFN routine. E.g., if the code is in a file named myinfn, then specify
$SUBROUTINES ... INFN=myinfn

Here's the code. It is suitable for diagonal omega and sigma, but needs some modification for full omega or sigma. (Constants 40 and 30 in the declarations for THETAF etc. should be the same as the values given to LTH and LVR in file NSIZES, in case you changed those values.) It also performs a pass thru the data file to obtain individual etas, which you may delete if you do not want them.



SUBROUTINE INFN(ICALL,THETA,DATREC,INDXS,NEWIND)
DIMENSION THETA(*),DATREC(*),INDXS(*)
DOUBLE PRECISION THETA
COMMON /ROCM6/ THETAF(40), OMEGAF(30,30), SIGMAF(30,30)
COMMON /ROCM7/ SETH(40),SEOM(30,30),SESIG(30,30)
COMMON /ROCM8/ OBJECT
COMMON /ROCM9/ IERE,IERC
DOUBLE PRECISION THETAF, OMEGAF, SIGMAF
DOUBLE PRECISION OBJECT
REAL SETH,SEOM,SESIG
DOUBLE PRECISION ETA(10)
INTEGER J,I
INTEGER IERE,IERC
INTEGER MODE
INTEGER NTH,NETA,NEPS
C THE NEXT 3 LINES SHOULD BE EDITED FOR THE NUMBERS OF ETAs, THETAs
C AND EPSILONs IN YOUR PROBLEM
NTH=8
NETA=6
NEPS=2
IF (ICALL.EQ.0) THEN
OPEN(49,FILE='ETA')
OPEN(50,FILE='OBJECT')
OPEN(51,FILE='THETA')
OPEN(52,FILE='SETHETA')
OPEN(53,FILE='OMEGA')
OPEN(54,FILE='SEOMEGA')
OPEN(55,FILE='SIGMA')
OPEN(56,FILE='SESIGMA')
OPEN(57,FILE='IERE_C')
ENDIF
C THE NEXT 11 LINES WRITE INDIVIDUAL ETAS IF 'POSTHOC'
C OPTION CHOSEN IN THE ESTIMATION STEP
IF (ICALL.EQ.3) THEN
MODE=0
CALL PASS(MODE)
MODE=1
20 CALL PASS(MODE)
IF (MODE.EQ.0) GO TO 30
IF (NEWIND.NE.2) THEN
CALL GETETA(ETA)
WRITE (49,97) (ETA(I),I=1,NETA)
ENDIF
GO TO 20
30 CONTINUE
WRITE (50,99) OBJECT
WRITE (51,99) (THETAF(J),J=1,NTH)
WRITE (52,99) (SETH(J),J=1,NTH)
7000 WRITE (53,99) (OMEGAF(J,J),J=1,NETA)
WRITE (54,99) (SEOM(J,J),J=1,NETA)
7999 WRITE (55,99) (SIGMAF(J,J),J=1,NEPS)
WRITE (56,99) (SESIG(J,J), J=1,NEPS)
WRITE (57,98) IERE,IERC
ENDIF
99 FORMAT (20F15.8)
98 FORMAT (2I8)
97 FORMAT (F8.0, 10E15.8)
RETURN
END

With (say) $OMEGA BLOCK(3) .... the change is as follows:

Locate:
NETA=6
7000 WRITE (53,99) (OMEGAF(J,J),J=1,NETA)
WRITE (54,99) (SEOM(J,J),J=1,NETA)

Change to:
NETA=3
7000 WRITE (53,99) ((OMEGAF(J,I),J=1,I),I=1,NETA)
WRITE (54,99) ((SEOM(J,I),J=1,I),I=1,NETA)