PK8-1

幾つかの消化管吸収性評価モデル

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
通常2~5週間以内に発送

設問1

logM-logM0 = -ka*tより ka = (logM0 - logM)/t = (log(100)-log(20*3.25))/15

> (log(100)-log(20*3.25))/15
[1] 0.02871886

Peff = ka*V/(2*pi*r*L)

ここで r = sqrt(0.1/pi)

> ka*1/(2*pi*0.178*12.5)/60
[1] 3.423782e-05 # cm/sec

設問2

単回灌流試験。水の吸収、分泌補正の項を 入れて、定常状態の幾つかの平均を取る。

設問3

plotしてみて直線になっているポイントを選択。

> time <- c(0,15,30,45,60)
> conc <- c(0,0.12,0.28,0.52,0.75)
> plot(time,conc)
> mylist = list(time=time[3:5],conc=conc[3:5])
> data <- data.frame(mylist)
> mylist = list(time=time[3:5],conc=conc[3:5]*2.6)
> data <- data.frame(mylist)
> res<-lm(conc ~ time,data)
> res

Call:
lm(formula = conc ~ time, data = data)

Coefficients:
(Intercept)         time  
   -0.48967      0.04073  

Peff = 0.04073/4.2/100 = 9.69762e-05

設問4

省略

PK7-2

PK-PD

multirtが必要なのだけど、これをRでどうやるかわからんのでスキップ

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
通常2~5週間以内に発送

PK7-1

PK-PDモデリング

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
通常2~5週間以内に発送

設問1

> data <- read.csv("/Users/kzfm/PK/pk7-1.csv")
> data
  time    Cp    E
k  0.0 0.000  0.0
a  0.2 0.309   NA
b  0.5 0.560 17.4
c  1.5 0.678 35.4
d  2.0 0.556 50.1
e  3.0 0.386   NA
f  4.0 0.259 50.4
g  6.0 0.115 40.3
h  8.0 0.051 27.8
i  9.0    NA 22.0
j 12.0    NA  9.3
> plot(data$Cp,data$E)

半時計周りのヒステリシス

pk7-1-1

設問2

pk7-1-2

> nls(Cp ~ alpha*(exp(-beta*time)-exp(-gamma*time)),data[c("time","Cp")],start=list(alpha=100,beta=10,gamma=0.1))
Nonlinear regression model
  model:  Cp ~ alpha * (exp(-beta * time) - exp(-gamma * time)) 
   data:  data[c("time", "Cp")] 
  alpha    beta   gamma 
-1.3322  1.8587  0.4085 
 residual sum-of-squares: 2.501e-07

Number of iterations to convergence: 8 
Achieved convergence tolerance: 8.835e-07 

ka = 1.8587
ke = 0.4085

つまりCp = -1.3322 (exp(-1.8587t)-exp(-0.4085*t))で

Ce = 1.3322*ke0/(ke0-0.4085)*exp(-0.4085*t) - \
1.3322*ke0/(ke0-1.8587)*exp(-1.8587*t) + 1.931666*ke0/((ke0-0.4085)*\
(ke0-1.8587))*exp(-ke0*t)

これをE=Emax*Ce/(EC50+Ce)=100*Ce/(EC50+Ce)に代入してフィッティング

> nls(E ~ 100*(1.3322*ke0/(ke0-0.4085)*exp(-0.4085*time) - \
1.3322*ke0/(ke0-1.8587)*exp(-1.8587*time) + 1.931666*ke0/((ke0-0.4085)* \
(ke0-1.8587))*exp(-ke0*time))/(EC50 + (1.3322*ke0/(ke0-0.4085)*exp(-0.4085*time) \
- 1.3322*ke0/(ke0-1.8587)*exp(-1.8587*time) + 1.931666*ke0/((ke0-0.4085)*\
(ke0-1.8587))*exp(-ke0*time))),data[c("time","E")],start=list(ke0=0.2,EC50=0.1))
Nonlinear regression model
  model:  E ~ 100 * (1.3322 * ke0/(ke0 - 0.4085) * exp(-0.4085 * time) \
 -      1.3322 * ke0/(ke0 - 1.8587) * exp(-1.8587 * time) + 1.931666 * \
 ke0/((ke0 - 0.4085) * (ke0 - 1.8587)) * exp(-ke0 * time))/ \
(EC50 + (1.3322 * ke0/(ke0 - 0.4085) * exp(-0.4085 * time) - 1.3322 *
ke0/(ke0 - 1.8587) * exp(-1.8587 * time) + 1.931666 * ke0/((ke0 - 0.4085) * (ke0 - 1.8587)) * exp(-ke0 * time))) 
   data:  data[c("time", "E")] 
   ke0   EC50 
0.4807 0.3595 
 residual sum-of-squares: 0.01642

Number of iterations to convergence: 6 
Achieved convergence tolerance: 2.781e-07 

結果

Ce = 8.869647*exp(-0.4085*t) + 0.4647232*exp(-1.8587*t) -9.332967*exp(-0.4807*t)

E = 100*(8.869647*exp(-0.4085*t) + 0.4647232*exp(-1.8587*t) - \
9.332967*exp(-0.4807*t))/(0.3595 + 8.869647*exp(-0.4085*t) + \
0.4647232*exp(-1.8587*t) - 9.332967*exp(-0.4807*t))

> plot(f,xlim=c(0,12),ylim=c(0,60),xlab="Time(hour)")
> plot(f,xlim=c(0,12),ylim=c(0,60),xlab="Time(hour)",ylab="E")
> par(new=T)
> plot(data$time,data$E,xlim=c(0,12),ylim=c(0,60),xlab="",ylab="",axes=F,type="p",col="blue")

pk7-1-3

設問3

CpとEの計算値も一致していることを確かめる

設問2のCeを求める際のラプラス変換があやふやだったのと、別解として用意されてあった連立微分方程式をRでフィッティングさせる方法が分からなかった。

PK5-3

ヒト in vivo の予測

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

> data$time
 [1]   1   2   3   5   7   8  10  20  30  60  90 120
> library(PK)
> data <- read.csv("/Users/kzfm/PK/pk53.csv")
> auc.complete(conc=data$conc, time=data$time)
Estimation for a complete data design

                  AUC      AUMC
observed     172.9950  7183.805
interpolated       NA        NA
infinity     220.5125 16772.150

血漿中濃度だから血液中濃度に変換

> RB = 1.2
> AUCb = 220.5125 * 1.2
> AUCb
[1] 264.615

0.265 umol*min/mL

肝での全代謝物をAUCbで除すればよいので

> CLh = (0.921+0.671)/0.265
> CLh
[1] 6.007547

> fp =0.78
> Rb = 1.20
> Fh = 1-CLh/Qh
> Fh
[1] 0.8998742

> F <- function(a){4*a/((1+a)^2*exp((a-1)/2/0.17)-(1-a)^2*exp(-(a+1)/2/0.17))-0.900}
> uniroot(f,c(0.1,10))
$root
[1] 1.035727

$f.root
[1] -2.312838e-05

$iter
[1] 11

$estim.prec
[1] 6.103516e-05

> res <- uniroot(f,c(0.1,10))

> RN <- (res$root^2 - 1)/(4*DN)
> CLh_uint = RN*Qh/fb
> CLh_uint
[1] 9.872855

> data = read.csv("/Users/kzfm/PK/pk53_2.csv")
> data
  time qrat qhuman
a    5  6.5    7.9
b   10 13.8   16.1
c   15 19.9   24.7
d   20 26.6   32.0
e   30 39.3   46.2
f   60 60.8   72.9
g   90 73.2   82.0

> rat_res <- lm(data$qrat[1:5]/0.1 ~ data$time[1:5])
> rat_res

Call:
lm(formula = data$qrat[1:5]/0.1 ~ data$time[1:5])

Coefficients:
   (Intercept)  data$time[1:5]  
         3.595          13.038  

> human_res <- lm(data$qhuman[1:5]/0.1 ~ data$time[1:5])
> human_res

Call:
lm(formula = data$qhuman[1:5]/0.1 ~ data$time[1:5])

Coefficients:
   (Intercept)  data$time[1:5]  
         8.784          15.314  

> CLh_uint_rat = 13.038/0.4*51.2/1000*44
> CLh_uint_human = 15.314/0.5*52.5/1000*24.3
> CLh_uint_rat
[1] 73.43002
> CLh_uint_human
[1] 39.07367

ラットのin vivoのデータとin vitroのデータの比からヒトのin vitroのデータを用いヒトin vivoを予測。本の計算はミクロソーム蛋白の量を間違ってる(問題文は0.1なのに0.5で計算してる)けど、最終的に比になっているので結果に影響はないようだ。

> CLh_uint_human * (9.872855/CLh_uint_rat)
[1] 5.253556

PK5-2

CYPの分子種毎のデータから肝クリアランスを予測

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

本のCYP2D6の計算間違ってるね。

> CLh_uint_3A4 = 0.0896 /(10 * 0.4)/0.056
> CLh_uint_1A2 = 0.0462 /(10 * 0.42)/0.110
> CLh_uint_2D6 = 0.0036 /(10 * 0.30)/0.04
> CLh_uint_3A4
[1] 0.4
> CLh_uint_1A2
[1] 0.1
> CLh_uint_2D6
[1] 0.03

体重あたりになおして

> CLh_uint = (CLh_uint_3A4 * 5 + CLh_uint_1A2 * 2.2 + CLh_uint_2D6 * 0.26)*24.3
> CLh_uint 
[1] 54.13554

あとはクリアランスとFhを求める

> fp = 0.2
> Rb = 0.4
> fb = fp/Rb
> Qh = 20
> DN = 0.17
> RN = fb*CLh_uint/Qh
> a = sqrt(1+4*RN*DN)
> Fh = 4*a/((1+a)^2*exp((a-1)/2/DN - (1-a)^2*exp(-(a+1)/2/DN)))
> Fh
[1] 0.3131986
> CLh = Qh*(1-Fh)
> CLh
[1] 13.73603

PK5-1

アニマルスケールアップによるヒトクリアランス予測

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

設問1

164.6/3*52.5*24.3/1000 CLh_uint = 69.99615 mL/min/kg

Fh = (Qh-CLh)/Qh

well-stirredはCLh = Qh*fb*CLh_uint/(Qh + fb*CLh_uint)

> Qh = 20
> fb = 0.08/0.64
> CLh = Qh*fb*CLh_uint/(Qh + fb*CLh_uint)
> CLh
[1] 6.086724
> Fh = (Qh-CLh)/Qh
> Fh
[1] 0.6956638

paralle tubeはCLh = Qh*(1-exp(-fb*CLh_uint/Qh))

> CLh = Qh*(1-exp(-fb*CLh_uint/Qh))
> CLh
[1] 7.086719
> Fh = (Qh-CLh)/Qh
> Fh
[1] 0.645664

dispersionは問題文から

> RN = fb*CLh_uint/Qh
> DN = 0.17
> a = sqrt(1+4*RN*DN)
> Fh = 4*a/((1+a)^2*exp((a-1)/2/DN - (1-a)^2*exp(-(a+1)/2/DN)))
> Fh
[1] 0.6615078
> CLh = Qh*(1-Fh)
> CLh
[1] 6.769845

設問2

ラットのクリアランス

> CLtot = 0.6/20*1000
> CLtot
[1] 30
> CLr = 0.2/20*1000
> CLr
[1] 10
> CLh = CLtot - CLr
> CLh
[1] 20

> GFR = 7.6
> Qr = 40.0
> B = CLr -fb*GFR
> CLr_uint = B*Qr/(Qr-B)/fb
> CLr_uint
[1] 120.1560

アロメトリー

> (92.5 * 60^0.88)/60
[1] 56.59311

> fb = 0.08/0.64
> Qr = 16
> GFR = 1.8
> CLr_uint = (92.5 * 60^0.88)/60
> CLr = fb*GFR + Qr*fb*CLr_uint/(Qr+fb*CLr_uint)
> CLr
[1] 5.130328

設問3

AUCb,iv = Dose/CLtot CLtot = CLh + CLr

ここでCLrは設問2で求めた。 CLhは設問1のを使えばいい。

設問4

AUCb,oral = Fg*Fh*Dose/CLtot 問題よりFg=1 あとは設問3と同様

PK4-2

脳内のレセプターと薬物の結合のシミュレーション

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

odesolveで血中濃度が時間依存的に減少するとき(時間の関数になっているとき)どういう風に書けばいいのか悩んだが

Cp <- dose/mwt*(50*exp(-0.1*t) + 125*exp(-0.025*t))

とtそのまま使えることがわかったので解決

library(odesolve)
times=c(0,(1:120))
params = c(fb=0.2,mwt=250, Kp=8.0, kon=2,koff=0.2,Rt=1,Vt=1,Q=1,dose=0.2)

dydt <- function(t,y,p){
fb <- p['fb']
Kp <- p['Kp']
kon <- p['kon']
koff <- p['koff']
Rt <- p['Rt']
Vt <- p['Vt']
Q <- p['Q']
dose <- p['dose']
mwt <- p['mwt']

Cp <- dose/mwt*(50*exp(-0.1*t) + 125*exp(-0.025*t))
Ct <- (Q*(Cp-y[1]/Kp)-kon*fb*y[1]/Kp*Rt*(1-y[2])+koff*Rt*y[2])/Vt
PHAI <- kon*fb*y[1]/Kp*(1-y[2])-koff*y[2]
return(list(c(Ct,PHAI)))
}

y <- lsoda(c(Ct=0.0,PHAI=0.0),times,dydt,params)

y02 <- y
params = c(fb=0.2,mwt=250, Kp=8.0, kon=2,koff=0.2,Rt=1,Vt=1,Q=1,dose=1)
y <- lsoda(c(Ct=0.0,PHAI=0.0),times,dydt,params)
y1 <- y
params = c(fb=0.2,mwt=250, Kp=8.0, kon=2,koff=0.2,Rt=1,Vt=1,Q=1,dose=5)
y <- lsoda(c(Ct=0.0,PHAI=0.0),times,dydt,params)
y5 <- y

plot(y02[,1],y02[,3],ylim=c(0,1.0),xlab="time(min)",ylab="Phai",type="l",col="red")
par(new=T)
plot(y1[,1],y1[,3],ylim=c(0,1.0),xlab="",ylab="",axes=F,type="l",col="blue")
par(new=T)
plot(y5[,1],y5[,3],ylim=c(0,1.0),xlab="",ylab="",axes=F,type="l",col="green")

pk4-2-1

plot(y2[,2],y5[,3],ylim=c(0,1.0),xlab="Cb",ylab="Phai",type="l",col="red")

pk4-2-2

ヒステリシスがみられる

PK4-1

PBPKモデリング

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

i.v.

library(odesolve)
params = c(Vh=44,Vr=8,Qh=58,Qr=45.6,Vsys=1000,Kph=1,Kpr=1,RB=1.5,fp=0.1,Fa=1,Vmax=1000,Km=0.1,GFR=6)
times=c(0,(1:240))

dydt <- function(t,y,p){
Vh <- p['Vh']
Vr <- p['Vr']
Qh <- p['Qh']
Qr <- p['Qr']
Vsys <- p['Vsys']
Kph <- p['Kph']
Kpr <- p['Kpr']
RB <- p['RB']
fp <- p['fp']
Fa <- p['Fa']
Vmax <- p['Vmax']
Km <- p['Km']
GFR <- p['GFR']
fb <- fp/RB
Cb <- (Qh*y[2]/Kph + Qr*y[3]/Kpr - Qh*y[1] - Qr*y[1])/Vsys
Ch <- (Qh*y[1] - (Vmax*fb*y[2]/Kph)/(Km+fb*y[2]/Kph) - Qh*y[2]/Kph)/Vh
Cr <- (Qr*y[1] - fb*GFR*y[1] - Qr*y[3]/Kpr)/Vr
Xu <- fb*GFR*y[1]
return(list(c(Cb,Ch,Cr,Xu)))
}

y <- lsoda(c(Cb=0.1,Ch=0.0,Cr=0.0,Xu=0.0),times,dydt,params)

par(mfrow=c(2,2))
plot(y[,1],y[,2],ylim=c(0,0.1),xlab="time(min)",ylab="Cb",type="l",col="red")
plot(y[,1],y[,3],ylim=c(0,0.01),xlab="time(min)",ylab="Ch",type="l",col="black")
plot(y[,1],y[,4],ylim=c(0,0.1),xlab="time(min)",ylab="Cr",type="l",col="green")
plot(y[,1],y[,5],ylim=c(0,0.8),xlab="time(min)",ylab="Xu",type="l",col="blue")

pk41_iv

p.o.

params = c(Vh=44,Vr=8,Qh=58,Qr=45.6,Vsys=1000,Kph=1,Kpr=1,RB=1.5,fp=0.1,Fa=1,Vmax=1000,Km=0.1,GFR=6,Dose=0.1,ka=0.1)
times=c(0,(1:240))

dydt <- function(t,y,p){
Vh <- p['Vh']
Vr <- p['Vr']
Qh <- p['Qh']
Qr <- p['Qr']
Vsys <- p['Vsys']
Kph <- p['Kph']
Kpr <- p['Kpr']
RB <- p['RB']
fp <- p['fp']
Fa <- p['Fa']
Vmax <- p['Vmax']
Km <- p['Km']
GFR <- p['GFR']
Dose <- p['Dose']
ka <- p['ka']
fb <- fp/RB
Cb <- (Qh*y[2]/Kph + Qr*y[3]/Kpr - Qh*y[1] - Qr*y[1])/Vsys
Ch <- (Qh*y[1] - (Vmax*fb*y[2]/Kph)/(Km+fb*y[2]/Kph) - Qh*y[2]/Kph + Dose*ka*Fa*exp(-ka*t))/Vh
Cr <- (Qr*y[1] - fb*GFR*y[1] - Qr*y[3]/Kpr)/Vr
Xu <- fb*GFR*y[1]
return(list(c(Cb,Ch,Cr,Xu)))
}

y <- lsoda(c(Cb=0.0,Ch=0.0,Cr=0.0,Xu=0.0),times,dydt,params)

par(mfrow=c(2,2))
plot(y[,1],y[,2],xlab="time(min)",ylab="Cb",type="l",col="red")
plot(y[,1],y[,3],xlab="time(min)",ylab="Ch",type="l",col="black")
plot(y[,1],y[,4],xlab="time(min)",ylab="Cr",type="l",col="green")
plot(y[,1],y[,5],xlab="time(min)",ylab="Xu",type="l",col="blue")

pk41_po

PK3-5

クリアランス

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

設問1

CLr = Dose/AUC * fe = Dose/AUC * [排泄量]/Dose = [排泄量]/AUC

> data <- read.csv("/Users/kzfm/PK/pk35a.csv")
> attach(data)
> data
  Dose  AUC     e
a  200  7.3  71.9
b  400 15.3 128.0
c  800 34.3 217.0

> CLr <- e/AUC
> CLr
[1] 9.849315 8.366013 6.326531

> F <- 0.85
> QH <- 1.5
> QR <- 1.2
> GFR <- 0.12
> fb <- 0.2
> Vd <- 100

設問2

> CLtot <- Dose*0.85/AUC
> CLtot
[1] 23.28767 22.22222 19.82507
> CLh <- CLtot - CLr
> CLh
[1] 13.43836 13.85621 13.49854

解答では E = 1-F = CLh/Qhから求めてた。 BAと消化管の吸収性から肝クリアランスの見積もりも可能。

設問3

> data2 <- read.csv("/Users/kzfm/PK/pk35b.csv")
> data2
   ve   conc
a   5  0.194
b  10  0.404
c  20  0.863
d  50  2.480
e 100  5.540
f 200 12.000

> CLtot <- data2[,"ve"]/data2[,"conc"]
> CLtot
[1] 25.77320 24.75248 23.17497 20.16129 18.05054 16.66667

> CLr <- CLtot -13.5
> CLr
[1] 12.273196 11.252475  9.674971  6.661290  4.550542  3.166667

設問4

CLrはGFRと腎尿細管分泌クリアランスの和 CLr = (1-FR)(fb*GFR + CLrs) CLrs = CLr - fb*GFR

> CLrs <- CLr -fb*GFR*60
> CLrs
[1] 10.833196  9.812475  8.234971  5.221290  3.110542  1.726667

設問5

CLrs_uint = CLrs*QR/fb*(QR-CLrs)

> CLrs_uint <- CLrs*QR*60/(fb*(QR*60-CLrs))
> CLrs_uint
[1] 63.75927 56.80385 46.49241 28.14766 16.25495  8.84546

> e <- nls(CLrs_uint ~ Vmax/(Km+data2[,"conc"]*fb),start=list(Vmax=10,Km=10))
> e
Nonlinear regression model
  model:  CLrs_uint ~ Vmax/(Km + data2[, "conc"] * fb) 
   data:  parent.frame() 
   Vmax      Km 
23.2331  0.3267 
 residual sum-of-squares: 0.2010

Number of iterations to convergence: 12 
Achieved convergence tolerance: 2.395e-07 

設問6

省略というかわからん

設問7

省略というかわからん

PK3-4

クリアランス

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

設問1

定常状態ではe*(-kelt) ~ Css_min/Css_maxであることを利用して

Css_avg = Css_max-Css_min/(ln(Css_max) - ln(Css_min))

> data <- read.csv("/Users/kzfm/PK/pk34.csv")
> data
     D Css_max Css_min    fe
a   60    14.1    9.55 0.082
b  120    22.2   14.80 0.098
c  300    45.0   30.50 0.076
d  600    90.8   62.30 0.090
e 1200   114.0   81.30 0.110
f 2400   146.0  105.00 0.091

> attach(data)
> Css_avg <- (Css_max - Css_min)/log(Css_max/Css_min)
> Css_avg
[1]  11.67764  18.25065  37.28122  75.65745  96.73056 124.37574

> plot(D,Css_avg,ylim=c(0,150))
> par(new=T)
> plot(D,Css_max,ylim=c(0,150),xlab="",ylab="",pch=2)
> par(new=T)
> plot(D,Css_min,ylim=c(0,150),xlab="",ylab="",pch=3)
> par(new=T)

plot

DoseとCpssに線形性がない。

設問2

定常状態の尿中排泄速度を定常状態の平均血中濃度で割る

> CLr <- (D/12*fe/60*1000)/Css_avg
> CLr
[1] 0.5851641 0.8949455 0.8494000 0.9913102 1.8952991 2.4388464

設問3

設問2からCLrが増加しており、これはfbの上昇、つまり血中蛋白結合の飽和が示唆される。