UUPharmacometrics / PsN

Perl-Speaks-NONMEM
https://uupharmacometrics.github.io/PsN
GNU General Public License v2.0
65 stars 19 forks source link

ABBR REPLACE with nm743 not supported? #134

Open Kunelis opened 5 years ago

Kunelis commented 5 years ago

Dear all,

I'm trying to run some code with inter occassion variability, with the replacement feature as implemented in nm73. I coded the IOV using the following code, exactly as written in the nonmem help:

$ABBR REPLACE ETA(OCC_CL)=ETA(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)

$PK

TVCL = THETA(1); TVCL
TVV1 = THETA(2); TVV1 TVQ = THETA(3); TVQ TVV2 = THETA(4); TVV2

; CL=TVCL EXP(ETA(1)+ETA(OCC_CL)) V1 = TVV1 EXP(ETA(2)) Q = TVQ EXP(ETA(3)) V2 = TVV2 EXP(ETA(4))

S1 = V1 ; conversion of amount in comp-1 to concentration ;

OCC is defined in the dataset with integers 1-17. When starting this model using PsN and Pirana (execute -clean=3 -nm_version=nm743 Run010.mod), I get the following error:

Starting NMTRAN

AN ERROR WAS FOUND IN THE CONTROL STATEMENTS.

AN ERROR WAS FOUND ON LINE 10 AT THE APPROXIMATE POSITION NOTED: ETA(OCC_CL)=ETA(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21) X THE CHARACTERS IN ERROR ARE: ( 15 UNKNOWN CONTROL RECORD. NMtran failed. There is no output for model 1. Contents of FMSG:

AN ERROR WAS FOUND IN THE CONTROL STATEMENTS.

AN ERROR WAS FOUND ON LINE 10 AT THE APPROXIMATE POSITION NOTED: ETA(OCC_CL)=ETA(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21) X THE CHARACTERS IN ERROR ARE: ( 15 UNKNOWN CONTROL RECORD.

Not restarting this model. F:1 .. execute done

I appears not to support the parenthesis in the ABBR code? Interestingly (and that is the reason why I post this issue on the PsN git), the code does run without error when I execute the model directly via nmfe. So it appears that there is an issue with using PsN in combination with this ABBR code. Help would be much appreciated!

I use windows 10, Perl v5.24.3, PsN 4.8.1, NONMEM 7.4.3.

Regards, Cornelis Smit

PhD Candidate St. Antonius Hospital Nieuwegein, The Netherlands Leiden University Leiden, the Netherlands

rikardn commented 5 years ago

Thanks for reporting this issue!

A disclaimer first: this way of coding with ABBR is not in general supported by PsN. Some tools that needs to find ETAs in the abbreviated code will not function properly if you would use for example ETA(CL) in your code.

That being said, I would expect a regular execute to work. Unfortunately I am unable to reproduce this behaviour. Could you perhaps share an example that I could test. Either a minimal example that could be posted here or if you don't want to make it public you could send an example to me directly. Otherwise a similar snippet of code from your psn.mod that was created in your rundir/NM_run1 would be interesting to see.

Kunelis commented 5 years ago

Hi Rikard,

Please find attached the model code and a small portion of the dataset (had to change the model and data file to .txt in order to be able to upload it here).

dataset_psn.txt model.txt

rikardn commented 5 years ago

Thanks. The model you attached cannot run with either psn or nmfe. Putting the $ABBR all in one line makes it work for nmfe but still not with PsN as PsN thinks that the line is too long and splits it before running. Normally NONMEM allows these kind of splits over lines, but this turns out to be a special case which PsN cannot handle.

Luckily there is an easy workaround using continuation lines:

$ABBR REPLACE&
           ETA(OCC_CL)=ETA(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)
Kunelis commented 5 years ago

Indeed it's difficult to reproduce the problem. I can't run both nfme and psn using the uploaded model/data, strange. Your workaround does the trick though, thanks!

Cheers, Cornelis