1次速度の吸収過程のある1-コンパートメントモデル
経口投与時の血中濃度推移はこのモデルで表すことができます。
※ka: 吸収速度定数, ke: 消失速度定数
この連立微分方程式を解くと、血中濃度Cを表す式は以下のようになります。
Fは消化管からの吸収率(0≤F≤1)、Dは経口投与量です。
ここで、最高血中濃度に達する時間であるは、(1)式を微分して0(接線の傾きが0)とおくと得られます。
そして最高血中濃度のはこのを(1)式に代入すればOKです。
また、は(1)式を0-∞で定積分して
となります。
吸収過程と消失過程
(1)式の部分をAと置き換えると、経口投与後の血中濃度Cは指数関数で表される2つの濃度式に分けることができます。
この3つの式をグラフに描いてみます。
F = 1.0 # 消化管からの吸収率 D = 100 # 経口投与量(mg) vd = 12 # 分布容積(L) ka = 0.4 # 吸収速度定数(hr^-1) ke = 0.08 # 消失速度定数(hr^-1) lag_time = 0 # 溶解時間(hr)
各パラメータは適当にしましたが、消化管からの吸収が速やかな普通の(徐放錠などでない)薬を想定してka > keとしています。この条件下では、ある程度時間が経ったときの血中濃度推移のβ相(消失相)はc1(消失過程)で近似できることがわかります。
また、lag_timeは薬の溶解時間を表し、これがある場合の血中濃度推移のプロットは濃度式のtをt - lag_timeで置き換えます。は+lag_timeとするだけです。
これらのパラメータを使って計算した値は次のようになります。
A(縦軸との交点): 10.416666666666668 Tmax: 5.0294934763565635 Cmax 5.572835874803517 t_half: 8.664339756999317 AUC: 104.16666666666667
Aはグラフの縦軸との交点というだけで、薬物動態的に意味のある数字ではありません。後で使おうと思ってます。
今回はあらかじめka, keなどがわかっているものとしてグラフを描いてみましたが、次回は濃度データからこれらのパラメータを求める方法をやってみたいと思います。
www.yakupro.info
参考
- 統計学入門 14.2 内服モデル
- 薬物動態解析入門 はじめての薬物速度論
- 徹底解説 薬物動態の数学―微積分と対数、非線形
最後に今回のコードです。
import numpy as np import matplotlib.pyplot as plt # 1次吸収過程のある1コンパートメント経口投与モデル class PoOneComp: def __init__(self, F, D, vd, ka, ke, lag_time): self.F = F self.D = D self.vd = vd self.ka = ka self.ke = ke self.lag_time = lag_time self.A = (F * D * ka) / vd / (ka - ke) # 吸収過程 def absorption_process(self, t): return self.A * np.exp(-self.ka * (t - self.lag_time)) # 消失過程 def elimination_process(self, t): return self.A * np.exp(-self.ke * (t - self.lag_time)) # Cmax到達時間 def t_max(self): return np.log(self.ka / self.ke) / (self.ka - self.ke) + self.lag_time # 最高血中濃度 def c_max(self): return self.F * self.D / self.vd * (self.ka / self.ke) ** (self.ke / (self.ke - self.ka)) F = 1.0 # 消化管からの吸収率 D = 100 # 経口投与量(mg) vd = 12 # 分布容積(L) ka = 0.4 # 吸収速度定数(hr^-1) ke = 0.08 # 消失速度定数(hr^-1) lag_time = 0 # 溶解時間(hr) t = np.arange(0, 60, 0.1) po = PoOneComp(F, D, vd, ka, ke, lag_time) c_ab = po.absorption_process(t) c_eli = po.elimination_process(t) tmax = po.t_max() cmax = po.c_max() print('A(縦軸との交点): ', po.A) print('Tmax: ', tmax) print('Cmax', cmax) print('t_half: ', np.log(2) / ke) print('AUC: ', F * D / vd / ke) # 濃度式をプロット plt.plot(t, c_eli, color='blue', alpha=0.8, label='c1:消失過程') plt.plot(t, c_ab, color='red', alpha=0.8, label='c2:吸収過程') plt.plot(t, c_eli-c_ab, color='green', alpha=0.8, label='c1-c2') # tmaxに補助線を入れる plt.vlines(x=tmax, ymin=0, ymax=cmax, color='crimson', linestyles='dotted') # 軸ラベルを表示 plt.ylabel('conc[ug/mL]') plt.xlabel('time[hr]') plt.xlim(0, 60) plt.ylim(0, ) plt.grid(linestyle='dashed') plt.legend() plt.show()