7강 NONMEM 2016-04-19

PMIPP PMPPP PMSIM - GOLD STANDARD - 아미트립틴 Diff Eq를 쓰는거다.

Parent Metabolite Individual PK Parameter

CMT1 | ka CMT2 <-> CMT3 | CMT4(Metabolite)가 또 있을 수 있다. 순차적으로 모델링하는게 기본이다.

Parent를 먼저 estimate한다. 먼저 parent의 individual PK parameter를 구한다. 그 후 Parent를 Fix|고정된 상황에서 Metabolite로 계산을 또 한다.

가장 적합한건 two compartment.

PM에서는 몰농도로 바꾸는것이 원칙이다.

D1이란 무엇이냐? 1st-order kinetics의 가정을 생각해보자. 약이 GI에 들어갔을때 dissolution/disintegration이 되었다는 가정이 있는데 실제론 태블릿 형태로 들어간다. Bolus가 아닌 zero order로 들어간다. 그러다가 first order로 바뀐다. D1도 reserved term이다. (GI tract)

우리가 하는건 농도이다. NONMEM은 amt로 한다. scaling factor가 이런 변환을 해주는거다.

PMSIM | SIMULTANEOUS 동시에 fitting한다.

$PROBLEM 201 P: ROOT F:FOCEI
$INPUT ID TIME AMT RATE DV MDV CMT ; 1.5시간에 보면 CMT4의 농도가 나와있다.
$DATA PM.csv ACCEPT(CMT.LE.3) IGNORE=@
$SUBS ADVAN6 TRANS1 TOL=6 ; ADVAN6는 $DS(Differential eq.)를 쓴다는 뜻이다. Flexible하다.
$MODEL NCOMP=3  ; 

  COMP = (DEPOT, DEFDOSE)
  COMP = (CENTRAL, DEFOBS)
  COMP = (PERIPH)

$PK

   V2           = THETA(1) * EXP(ETA(1)) 
   V3           = THETA(2)
   CL20         = THETA(3) * EXP(ETA(2))
   Q23          = THETA(4)
   KA           = THETA(5) * EXP(ETA(3))
   D1           = THETA(6)* EXP(ETA(4))

   S2           = V2 / 1000   ;  dose in umole, conc in nmole/L, volume in L

   K            = CL20/V2 
   HALF         = LOG(2) / K 

$DES ; compartment별로 화살표를 재구성한거다.
   DADT(1) = -A(1)*KA
   DADT(2) =  A(1)*KA + A(3)*Q23/V3 - A(2)*(CL20/V2+Q23/V2)
   DADT(3) =  A(2)*Q23/V2 - A(3)*Q23/V3 ; Central CMT로 들어오는거다.

$ERROR

  Y     = F + EPS(1) + F*EPS(2)

;------INITIAL ESTIMATES - THETA-----------------------

$THETA 

  (0, 15)
  (0, 270)
  (0, 35)
  (0, 25)
  (0, 0.3)
  (0, 0.5)


;-----INITIAL ESTIMATES - OMEGA-------------------------

$OMEGA BLOCK(2)
       1
       0.2 1

$OMEGA BLOCK(2)
       0.5
       0.2 0.5


$SIGMA 0.000001 FIX
       0.2

$ESTIMATION MAXEVAL=9999 PRINT=2 METHOD=COND INTER MSFO=201.MSF
$COVARIANCE PRINT=E

$TABLE ID TIME MDV CWRES NPDE
       FILE=201.FIT NOPRINT ONEHEADER
$TABLE ID AMT
       ETA(1) ETA(2) ETA(3) ETA(4)
       FILE=201.PAR NOPRINT ONEHEADER FIRSTONLY NOAPPEND
$TABLE ID KA D1 V2 V3 Q23 CL20
       FILE=201.IPK NOPRINT ONEHEADER FIRSTONLY NOAPPEND ; 이 파일에 다 들어간다.

===

06 # 20160412

COVARIATE

IIV 인터인디비주얼 베리에이션 unexplainable | explainable Z 몸무게라고 해보자

CL=THETA(1) WEIGHT를 알면 CL을 추정할 수 있을 것이다. Zav | 이건 WTaverage이다. 이를 나누어주면, WEIGHT평균인 사람

변하는 모양에 따라서 다양한게 있을 수 있다.

V=(THETA(1)-THETA(2)SEX)EXP(ETA(1))

=== 실습 Genotype data가 있다. GENE | 1은 wild type 0은 variant - drug metabolizing enzyme 단회투약하여 120시간까지 관찰함 MDV - missing인지 아닌지.

=== 201.OUT success 4897 - object function value 440줄 TH4 - 3.82의 standard deviation 3.35 453줄 STANDARD ERROR BLOCK -ETA2 추정치는 4.13E-02 | 실제에서 0을 포함하게 되어 OMEGA BLOCK을 제거해줘야한다. 덩치가 큰 사람은 CL - V2 | 클리어런스랑 V랑 둘다 클 수 있어서 independent한게 아니다. 따라서 OMEGA BLOCK을 제거해야한다. 0.1 ETA1 0.05 0.3 ETA2 0.02 0.1 0.3 ETA3 코베리언스가 있기에 같이 추정해라. 에타2와 3간의 core.(0.1) - central과 있을 거다. biologically 맞는거다. STANDARD ERROR가 크다는건 추정을 잘 못한다는 뜻이다.

만약 이걸 basic model로 선정을 했다면. CL - genotype으로 CL의 interindividual variation설명한거다. 모델링이 굉장히 잘 됐으면 ETA(1)은 CL의 개인차 variance를 genotype으로 나눴다(설명했다) - 전체 size가 정해졌는데.. 따라서 genotype을 설명했으면 1-GENE모델에서 오메가는 작아질거다.

ETA1이 줄었다. COVARIATE 1-1이 줄었다. ETA1은 clearance의 interindividual variation. R을 사용해서 그림을 그려본다.

=== BOOTSTRAP - 통계에서 MEAN, SE 왜 하냐? 전체를 다 보기 위해서 한다. 전체를 추정하기 위해서 한다. 따라서 RANDOM하게 모아야 한다. 정규분포 가정을 하는데 위배할 때가 있다. NON PARAMETRIC인 경우 있듯이. 여기선 1.96을 사용하는 등의 Z를 가정하지 않는다. 전체를 다 구해서 95% 5% confidence interval을 구한다.

===

202.CTl

$PROBLEM PK Modeling with Covariates $INPUT ID TIME AMT DV MDV GENE

$DATA 02_SOPK.csv IGNORE=@ ; AMT (mg), DV (microg/l)

$SUBROUTINES ADVAN4 TRANS4

$PK

TVCLW = THETA(1) TVCLV = THETA(2) TVV2 = THETA(3) TVQ = THETA(4) TVV3 = THETA(5) TVKA = THETA(6)

CL = (TVCLW(1-GENE) + TVCLVGENE) * EXP(ETA(1)) ; 맨 뒤에건 unexplained 그리고 GENE이 1인경우 앞에게 날라가고 1이 아니면 뒤에게 나랄감

; drug metabolizing enz = CL에 영향을 줄거다. CL이 GENOTYPE에 따라 다를 수 있기 때문에 나눠준거다. V2 = TVV2 EXP(ETA(2)) Q = TVQ V3 = TVV3 EXP(ETA(3)) KA = TVKA * EXP(ETA(4))

S2 = V2 / 1000 K = CL / V2 K23 = Q / V2 K32 = Q / V3

$ERROR

IPRED = F W = SQRT(THETA(7)2 + THETA(8)2 IPRED*2)

Y = IPRED + W * EPS(1)

$THETA

(0, 8) ; TVCL, Wild Genotype (0, 4) ; TVCL, Variant Genotype (0, 22) ; TVV2 (0, 180) ; TVQ (0, 52) ; TVV3 (0, 0.4) ; TVKA (0, 0.5) ; Additive Residual Variability (0, 0.3) ; Proportional Residual Variability

$OMEGA BLOCK(3) 0.1 0.05 0.3 0.02 0.1 0.3

$OMEGA 0.2

$SIGMA 1 FIX

$ESTIMATION PRINT=2 MAXEVALS=9999 METHOD=COND INTER MSFO=202.MSF $COV PRINT=E $TABLE ID TIME MDV IPRED CWRES NPDE FILE=202.FIT NOPRINT ONEHEADER $TABLE ID GENE ETA(1) ETA(2) ETA(3) ETA(4) FILE=202.PAR NOPRINT ONEHEADER FIRSTONLY NOAPPEND $TABLE ID KA V2 V3 CL Q GENE FILE=202.IPK NOPRINT ONEHEADER FIRSTONLY NOAPPEND

===

201.CTL

$PROBLEM PK Modeling with Covariates
$INPUT ID TIME AMT DV MDV GENE

$DATA 02_SOPK.csv IGNORE=@
; AMT (mg), DV (microg/l)

$SUBROUTINES ADVAN4 TRANS4

$PK

  TVCL  = THETA(1)
  TVV2  = THETA(2)
  TVQ   = THETA(3)
  TVV3  = THETA(4)
  TVKA  = THETA(5)

; 파라메터 하나가 3.84이상 떨어질 수 있어. qchisq(0.95,1)=3.84 파라메터 하나가 추가가 되면 object function 값이 3.84떨어져야 한다. 파라메터 두개 추가하면 qchisq(0.95,2)=5.99, 세개면 7.81, 네개면 9.48 Two compartment에서 파라메터 네개되면 투에서 더 rationale이 있는거다.
CL = TVCL EXP(ETA(1)) V2 = TVV2 EXP(ETA(2)) Q = TVQ V3 = TVV3 EXP(ETA(3)) KA = TVKA EXP(ETA(4))

S2 = V2 / 1000 K = CL / V2 K23 = Q / V2 K32 = Q / V3

$ERROR

IPRED = F W = SQRT(THETA(6)2 + THETA(7)2 IPRED*2)

Y = IPRED + W * EPS(1)

$THETA

(0, 8) ; TVCL, Wild Genotype (0, 22) ; TVV2 (0, 180) ; TVQ (0, 52) ; TVV3 (0, 0.4) ; TVKA (0, 0.5) ; Additive Residual Variability (0, 0.3) ; Proportional Residual Variability

$OMEGA BLOCK(3) 0.1 0.05 0.3 0.02 0.1 0.3

$OMEGA 0.2

$SIGMA 1 FIX

$ESTIMATION PRINT=2 MAXEVALS=9999 METHOD=COND INTER MSFO=201.MSF $COV PRINT=E $TABLE ID TIME MDV IPRED CWRES NPDE FILE=201.FIT NOPRINT ONEHEADER $TABLE ID GENE ETA(1) ETA(2) ETA(3) ETA(4) FILE=201.PAR NOPRINT ONEHEADER FIRSTONLY NOAPPEND $TABLE ID KA V2 V3 CL Q GENE

   FILE=201.IPK NOPRINT ONEHEADER FIRSTONLY NOAPPEND

=== 201.PAR는 ETA1은 omega값이다. CL=THETA(1)*EXP(ETA(1)) ; ETA1은 오메가1.1끼리의 covariance를 분산으로 출력한 값이다. 2.11E-01 | 201.OUT

이러한 ETA1 하에서 분포가 X축인 CLi(individual clearance) - 분산 2.11E-01인 로그정규분포에서 나온거고 개인의 individual ETA값을 구할 수 있고 따라서 수식에 의해서 CLi가 정해진다.

#
############### BASIC DIAGNOSTIC PLOT
#

setwd("C:\07_Lecture7\nm")

PAR <- read.table("C:\07_Lecture7\nm\202.PAR", skip = 1, header = T)

###### Exploration of Covariates

pdf("Covariate_Exploration.pdf", width=9, height=9) par(mfrow=c(1,1), tck=0.02, bty="l", oma=c(0,0,2,1), las=1)

plot(PAR)

lines(lowess(PAR), col="red")

abline(0, 0, lty=2, lwd=1, col=1) mtext(outer=T, side=3, "Exploration of Covariates for PK_202", cex=1) par(las=0) mtext(outer=T, side=4, date(), cex=0.5)

dev.off()

#