import numpy as np
import matplotlib.pyplot as plt
概要¶
- 蛍光プローブ(カルシウム指示薬):化学的指示薬と遺伝子工学的指示薬
- プローブの反応速度:反応速度が応答波形に与える影響
- プローブの解離定数:解離定数が応答感度に与える影響
- プローブの緩衝作用:競合阻害の可能性
- まとめ & 発展課題
1. 蛍光プローブ
- Probeとは、"探査する道具" のこと。例:宇宙探査機(Space probe)
- 蛍光プローブ(fluorescent probe) は、「生物を調べること」が目的。様々な分子を可視化することができる。
- 細胞内/細胞/組織/器官/個体など、様々なスケールで使われる。
- 例としては、カルシウム($\mathrm{Ca}^{2+}$)指示薬が挙げられる。$\mathrm{Ca}^{2+}$ は炎症・代謝・筋収縮・記憶・免疫など、非常に多くの生命現象に関わるので重要!最近では、カエルの形態形成における細胞骨格変化やマウスの社会性行動におけるニューロン発火などで利用されている。
カルシウム($\mathrm{Ca}^{2+}$)指示薬の分類¶
- 化学的指示薬(Chemical indicator)
- キレート剤(EGTA)を改変した小分子
- in vitro(生体外)でしか使えない
- 遺伝子工学的指示薬(GECI)
- 生物由来の蛍光タンパク質を改変した高分子
- 遺伝子組み換えによって細胞自身に作らせる
- in vivo(生体内)でも使える
各種 $\mathrm{Ca}^{2+}$ 指示薬¶
名称 | 励起波長(nm) | 蛍光波長(nm) | $\mathrm{Ca}$ 錯体解離定数 $\mathrm{K_d}$(nM) | 摘要 |
---|---|---|---|---|
Quin2 | 339 | 492 | 115 | |
Fura2 | 340/380 | 510 | 224 | 2波長励起・1波長蛍光 |
Fluo3 | 508 | 527 | 0.4 | |
Indo1 | 330 | Ca free: 485 Ca bind: 410 |
250 | 1波長励起・2波長蛍光 |
Rhod2 | 553 | 576 | 1000 | |
Fluo4 | 493 | 518 | 345 | |
Cameleon | 各波長 | 各波長 | 各濃度 | 遺伝子工学的指示薬、多数の変異体がある。 |
GCaMP | 各波長 | 各波長 | 各濃度 | 遺伝子工学的指示薬、多数の変異体がある。 |
参考HP:飯野研@東大医
反応の定式化¶
$\mathrm{Ca}^{2+}$ 指示薬は基本的にはキレート剤($\mathrm{Ca}^{2+}$ と複合体を形成する)であり、$\mathrm{Ca}^{2+}$ 指示薬の応答は分子間相互作用として以下のようにモデル化できる。
$$\mathrm{Ca}^{2+}\text{indicator} + \mathrm{Ca}^{2+}\overset{k_{\mathrm{f}}}{\underset{k_{\mathrm{b}}}{\rightleftarrows}}\mathrm{Ca}^{2+}\cdot\mathrm{Ca}^{2+}\text{indicator}$$- 順反応速度: $\mathbf{v}_{\mathrm{f}}=\mathrm{k}_{\mathrm{f}} \cdot\left[\mathrm{Ca}^{2+} \text { indicator }\right] \cdot\left[\mathrm{Ca}^{2+}\right]$
- 逆反応速度: $\mathbf{v}_{\mathrm{b}}=\mathrm{k}_{\mathrm{b}} \cdot\left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \text { indicator }\right]$
したがって、$\mathrm{k}_{\mathrm{f}}, \mathrm{k}_{\mathrm{b}}$ の値が大きいほどそれぞれの反応速度が大きい。
また、平衡状態では両方向の反応速度が等しいため、以下の式が成り立つ。
$$\begin{aligned} &\mathrm{k}_{\mathrm{f}} \cdot\left[\mathrm{Ca}^{2+} \text { indicator }\right] \cdot\left[\mathrm{Ca}^{2+}\right]=\mathrm{k}_{\mathrm{b}} \cdot\left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \text { indicator }\right]\\ &\mathrm{K}_{\mathrm{d}}=\frac{\mathrm{k}_{\mathrm{b}}}{\mathrm{k}_{\mathrm{f}}}=\frac{\left[\mathrm{Ca}^{2+}\mathrm{indicator}\right] \cdot\left[\mathrm{Ca}^{2+}\right]}{\left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \mathrm{indicator}\right]}\end{aligned}$$この時、$\mathrm{K_d} = \mathrm{k_b/k_f}$ を解離定数と呼び、基質親和性が高いほどこの値が小さくなることがわかる。
さらに、カルシウムと結合しているプローブの割合を $\mathrm{P}$ とおくと、
$$ \begin{aligned} \mathrm{P} &=\frac{\left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \text { indicator }\right]}{\left[\mathrm{Ca}^{2+} \text { indicator }\right]_{\mathrm{all}}}\\ &=\frac{\left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \text { indicator }\right]}{\left[\mathrm{Ca}^{2+} \text { indicator }\right] + \left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \text { indicator }\right]}\\ &= \frac{1}{\frac{\left[\mathrm{Ca}^{2+} \text { indicator }\right]}{\left[\mathrm{Ca}^{2+} \cdot \mathrm{Ca}^{2+} \text { indicator }\right]} + 1}\\ &= \frac{1}{\frac{\mathrm{K_d}}{\left[\mathrm{Ca}^{2+}\right]} + 1}\\ &= \frac{\left[\mathrm{Ca}^{2+}\right]}{\mathrm{K_d} + \left[\mathrm{Ca}^{2+}\right]} \end{aligned} $$よって、両辺逆数を取ると、
$$\frac{1}{\mathrm{P}} = \mathrm{K_d}\cdot\frac{1}{\left[\mathrm{Ca}^{2+}\right]} + 1$$となり、$1/\mathrm{P}$ が $1/\left[\mathrm{Ca}^{2+}\right]$ に対する1次関数となることがわかる。
本実習で検証するポイント
2. プローブの反応速度
課題1:$\mathrm{Ca}^{2+}$ プローブのカルシウム結合¶
ステップ $\mathrm{Ca}^{2+}$ 刺激($t=20$ において $0\ \mathrm{nM}\Rightarrow100\ \mathrm{nM}$ ) を与えた時の $\mathrm{Ca}^{2+}$ 指示薬(Indo1)の応答をシミュレートしなさい。また、グラフ($19.95-20.05\ \mathrm{sec}$)を拡大して、プローブの応答を詳細に観察しなさい。(発展課題)
$\mathrm{Ca}$ 指示薬 | $\mathrm{K_d\ (nM)}$ | $\mathrm{k_f(1/M/sec)}$ | $\mathrm{k_b(1/sec)}$ |
---|---|---|---|
Indol | $191$ | $9.4\times10^8$ | $180$ |
A = 0 # カルシウムの濃度
B = 1e-6 # プローブの濃度(1 µM)
AB = 0 # 複合体の濃度
kf = 9.4 * 10**8
kb = 180
dt = 0.0001 # 0.0001sec 刻み
time = np.arange(0,40,dt)
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
CaComplex = np.zeros(len(time))
for i,t in enumerate(time):
dA = 0 # NOTE: バッファーの仮定(カルシウム濃度は一定に保たれる。)
dB = (-kf*A*B + kb*AB) * dt
dAB = (kf*A*B - kb*AB) * dt
if t==20: dA += 1e-7 # 100 nM
A+=dA; B+=dB; AB+=dAB
Ca[i]=A; Probe[i]=B; CaComplex[i]=AB # 記録
yticks = [0,0.5,1,1.5,2] # 軸を綺麗に表示するため
plt.plot(time,Ca,label="$\mathrm{Ca}^{2+}$", color="blue")
plt.plot(time,Probe, label="$\mathrm{CaProbe}$", color="red")
plt.plot(time,CaComplex, label="$\mathrm{Complex}$", color="black")
plt.title("Simulation result [kadai1]")
plt.xlabel("time (sec)")
plt.ylabel("conc.(M) ×$10^{-6}$")
plt.yticks([i*1e-6 for i in yticks],yticks)
plt.legend()
plt.show()
発展課題¶
yticks = [0,0.5,1,1.5,2] # 軸を綺麗に表示するため
plt.plot(time,Ca,label="$\mathrm{Ca}^{2+}$", color="blue")
plt.plot(time,Probe, label="$\mathrm{CaProbe}$", color="red")
plt.plot(time,CaComplex, label="$\mathrm{Complex}$", color="black")
plt.title("Simulation result [kadai1+]")
plt.xlabel("time (sec)")
plt.ylabel("conc.(M) ×$10^{-6}$")
plt.yticks([i*1e-6 for i in yticks],yticks)
plt.xlim(19.95,20.05) # 追加
plt.legend()
plt.show()
課題2.1:$\mathrm{Ca}^{2+}$ プローブのカルシウム結合¶
~化学的指示薬(反応速度定数が大きいプローブ)~
先ほどの反応系で、$100\ \mathrm{nM}$ パルス $\mathrm{Ca}^{2+}$ 刺激を与えた時の $\mathrm{Ca}^{2+}$ 指示薬(Indo1)の応答をシミュレートしなさい。
A = 0 # カルシウムの濃度
B = 1e-6 # プローブの濃度(1 µM)
AB = 0 # 複合体の濃度
kf = 9.4 * 10**8
kb = 180
dt = 0.0001 # 0.0001sec 刻み
time = np.arange(0,60,dt)
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
CaComplex = np.zeros(len(time))
for i,t in enumerate(time):
dA = 0 # NOTE: バッファーの仮定(カルシウム濃度は一定に保たれる。)
dB = (-kf*A*B + kb*AB) * dt
dAB = (kf*A*B - kb*AB) * dt
if t==20: dA += 1e-7 # 100 nM
if t==40: dA -= 1e-7
A+=dA; B+=dB; AB+=dAB
Ca[i]=A; Probe[i]=B; CaComplex[i]=AB # 記録
yticks = [0,0.5,1,1.5] # 軸を綺麗に表示するため
plt.plot(time,Ca,label="$\mathrm{Ca}^{2+}$", color="blue")
plt.plot(time,Probe, label="$\mathrm{CaProbe}$", color="red")
plt.plot(time,CaComplex, label="$\mathrm{Complex}$", color="black")
plt.title("Simulation result [kadai2.1]")
plt.xlabel("time (sec)")
plt.ylabel("conc.(M) ×$10^{-6}$")
plt.yticks([i*1e-6 for i in yticks],yticks)
plt.legend()
plt.show()
課題2.2:$\mathrm{Ca}^{2+}$ プローブのカルシウム結合¶
~遺伝子工学的指示薬(反応速度定数が大きいプローブ)~
Cameleon3.6に $100\ \mathrm{nM}$ のパルスカルシウム刺激を与えた時の応答波形をシミュレーションしなさい。
$\mathrm{Ca}$ 指示薬 | $\mathrm{K_d\ (nM)}$ | $\mathrm{k_f(1/M/sec)}$ | $\mathrm{k_b(1/sec)}$ |
---|---|---|---|
Cameleon 3.60 | $215$ | $1.33\times10^6$ | $0.33$ |
Cameleon-Nano 15 | $15$ | $2.36\times10^7$ | $0.33$ |
Indol | $191$ | $9.4\times10^8$ | $180$ |
A = 0 # カルシウムの濃度
B = 1e-6 # プローブの濃度(1 µM)
AB = 0 # 複合体の濃度
kf = 1.33 * 10**6
kb = 0.33
dt = 0.0001 # 0.0001sec 刻み
time = np.arange(0,60,dt)
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
CaComplex = np.zeros(len(time))
for i,t in enumerate(time):
dA = 0 # NOTE: バッファーの仮定(カルシウム濃度は一定に保たれる。)
dB = (-kf*A*B + kb*AB) * dt
dAB = (kf*A*B - kb*AB) * dt
if t==20: dA += 1e-7 # 100 nM
if t==40: dA -= 1e-7
A+=dA; B+=dB; AB+=dAB
Ca[i]=A; Probe[i]=B; CaComplex[i]=AB # 記録
yticks = [0,0.5,1,1.5] # 軸を綺麗に表示するため
plt.plot(time,Ca,label="$\mathrm{Ca}^{2+}$", color="blue")
plt.plot(time,Probe, label="$\mathrm{CaProbe}$", color="red")
plt.plot(time,CaComplex, label="$\mathrm{Complex}$", color="black")
plt.title("Simulation result [kadai2.2]")
plt.xlabel("time (sec)")
plt.ylabel("conc.(M) ×$10^{-6}$")
plt.yticks([i*1e-6 for i in yticks],yticks)
plt.legend()
plt.show()
プローブの応答は必ずしもカルシウム波形を正確に反映しているわけではない!!
→プローブを使う際は、応答速度に注意が必要!!
課題3:$\mathrm{Ca}^{2+}$ プローブと反応速度定数¶
~遺伝子工学的指示薬~
Cameleon 3.6にパルス幅 $50\ \mathrm{msec},100\ \mathrm{nM}$ のカルシウムインパルス刺激を $10$ 回行った時の応答をシミュレートしなさい。刺激間隔は $0.5, 1, 2$ 秒とする。
spans = [0.5,1,2]
fig = plt.figure(figsize=(16,4))
for j,span in enumerate(spans):
ax = fig.add_subplot(1,3,j+1)
#=== パラメータ ===
A = 0 # カルシウムの濃度
B = 1e-6 # プローブの濃度(1 µM)
AB = 0 # 複合体の濃度
kf = 1.33 * 10**6
kb = 0.33
count = 10 # カルシウムインパルス刺激回数
duration = 0.05 # 継続時間(50 msec)
time = np.arange(0,span*count,dt)
#=== 記憶場所 ===
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
CaComplex = np.zeros(len(time))
#=== シミュレーション ===
for i,t in enumerate(time):
dA = 0 # NOTE: バッファーの仮定(カルシウム濃度は一定に保たれる。)
dB = (-kf*A*B + kb*AB) * dt
dAB = (kf*A*B - kb*AB) * dt
if np.isclose(t%span, 0): dA += 1e-7 # 100 nM
if np.isclose(t%span, duration): dA -= 1e-7
A+=dA; B+=dB; AB+=dAB
Ca[i]=A; Probe[i]=B; CaComplex[i]=AB # 記録
#=== プロット ===
yticks = [0,0.5,1,1.5,2] # 軸を綺麗に表示するため
ax.scatter(time,Ca,label="$\mathrm{Ca}^{2+}$", color="blue", s=3)
ax.plot(time,Probe, label="$\mathrm{CaProbe}$", color="red")
ax.plot(time,CaComplex, label="$\mathrm{Complex}$", color="black")
ax.set_title("Simulation result [kadai3] span={}[s]".format(span))
ax.set_xlabel("time (sec)")
ax.set_ylabel("conc.(M) ×$10^{-7}$")
ax.set_yticks([i*1e-7 for i in yticks], yticks)
ax.set_ylim(0,2*1e-7)
ax.legend()
plt.tight_layout()
plt.show()
※ $y$ 軸の目盛りに注目すればわかるが、カルシウム $\mathrm{Ca^{2+}}$ 濃度が見えないのは、目盛り内に収まっていないから。
3. プローブの解離定数
課題4:$\mathrm{Ca}^{2+}$ イメージングの応答感受性について¶
~検出限界の問題~
以下のそれぞれのプローブにステップカルシウム刺激を与えた際の応答波形とドーズレスポンスを調べなさい。
$\mathrm{Ca}$ 指示薬 | $\mathrm{K_d\ (nM)}$ | $\mathrm{k_f(1/M/sec)}$ | $\mathrm{k_b(1/sec)}$ |
---|---|---|---|
Cameleon 3.60 | $215$ | $1.33\times10^6$ | $0.33$ |
Cameleon-Nano 15 | $15$ | $2.36\times10^7$ | $0.33$ |
ドーズレスポンス(用量反応曲線)
ドーズレスポンス(用量反応曲線)とは、生物に対して化学物質や物理的作用を与えたときに、その作用強度と生物が示す反応の関係性を表す曲線のこと。
params = {
"Cameleon3.6":
{
"kf": 1.33*10**6,
"kb": 0.33,
},
"Cameleon-Nano15":
{
"kf": 2.36*10**7,
"kb": 0.33,
}
}
names = ["Cameleon3.6", "Cameleon-Nano15"]
dt = 0.0001 # 0.1 msec 刻み
time = np.arange(0,40,dt)
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
CaComplex = np.zeros(len(time))
dCas = [1e-7*i for i in range(21)]
ticks_cons = [0,0.5,1,1.5,2]
ticks_dose_cameleon3_6 = [i for i in range(10)]
ticks_dose_cameleonNano = [0,0.2,0.4,0.6,0.8,1]
fig = plt.figure(figsize=(18,10))
for c,name in enumerate(names):
kb = params[name]["kb"]
kf = params[name]["kf"]
Complex_max = []
l_A ="$\mathrm{Ca}^{2+}$"
l_B ="$\mathrm{CaProbe}$"
l_AB="$\mathrm{Complex}$"
ax = fig.add_subplot(2,2,c+1)
for dca in dCas:
A=0; B=1e-6; AB=0 # 濃度の初期化
for i,t in enumerate(time):
dA = 0 # NOTE: バッファーの仮定(カルシウム濃度は一定に保たれる。)
dB = (-kf*A*B + kb*AB) * dt
dAB = (kf*A*B - kb*AB) * dt
if t==20: dA += dca # NOTE: ここを調節する。
A+=dA; B+=dB; AB+=dAB
Ca[i]=A; Probe[i]=B; CaComplex[i]=AB
Complex_max.append(AB)
ax.plot(time,Ca, color="blue", alpha=0.5, label=l_A)
ax.plot(time,Probe, color="red", alpha=0.5, label=l_B)
ax.plot(time,CaComplex,color="black", alpha=0.5, label=l_AB)
l_A=None; l_B=None; l_AB=None
ax.set_title("Simulation result {}".format(name))
ax.set_xlabel("time (sec)")
ax.set_ylabel("conc.(M) ×$10^{-6}$")
ax.set_yticks([i*1e-6 for i in ticks_cons])
ax.set_yticklabels(ticks_cons)
ax.legend()
#=== Dose response ===
ax = fig.add_subplot(2,2,2+(c+1))
ax.plot(dCas,Complex_max)
ax.set_title("Dose response {}".format(name))
ax.set_xlabel("$\mathrm{Ca}^{2+}$ conc.(M) ×$10^{-6}$")
ax.set_xticks([i*1e-6 for i in ticks_cons])
ax.set_xticklabels(ticks_cons)
if name == "Cameleon3.6":
ax.set_yticks([i*1e-7 for i in ticks_dose_cameleon3_6])
ax.set_yticklabels(ticks_dose_cameleon3_6)
ax.set_ylabel("$\mathrm{Ca-probe}$ complex cons.(M) × $10^{-7}$")
else:
ax.set_yticks([i*1e-6 for i in ticks_dose_cameleonNano])
ax.set_yticklabels(ticks_dose_cameleonNano)
ax.set_ylabel("$\mathrm{Ca-probe}$ complex cons.(M) × $10^{-6}$")
plt.tight_layout()
plt.show()
Cameleon-Nano15の方は感度が高く、定量性が失われていることがわかる。
課題5:$\mathrm{Ca}^{2+}$ イメージングの応答感受性について¶
~検出限界の問題~
以下のそれぞれのプローブに $100\mathrm{nM}$ および $5\mathrm{nM}$ の繰り返し矩形波刺激を与えた時にどの様な応答波形になるかシミュレートしなさい。
$\mathrm{Ca}$ 指示薬 | $\mathrm{K_d\ (nM)}$ | $\mathrm{k_f(1/M/sec)}$ | $\mathrm{k_b(1/sec)}$ |
---|---|---|---|
Cameleon 3.60 | $215$ | $1.33\times10^6$ | $0.33$ |
Cameleon-Nano 15 | $15$ | $2.36\times10^7$ | $0.33$ |
params = {
"Cameleon3.6":
{
"kf": 1.33*10**6,
"kb": 0.33,
},
"Cameleon-Nano15":
{
"kf": 2.36*10**7,
"kb": 0.33,
}
}
names = ["Cameleon3.6", "Cameleon-Nano15"]
dt = 0.0001 # 0.1 msec 刻み
time = np.arange(0,400,dt)
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
CaComplex = np.zeros(len(time))
span=20 # 20 secごとに刺激のスイッチをひねる。
dCas = [100*1e-9, 5*1e-9]
fig = plt.figure(figsize=(18,10))
for c,name in enumerate(names):
kb = params[name]["kb"]
kf = params[name]["kf"]
for r,dca in enumerate(dCas):
ax = fig.add_subplot(2,2,r*2+c+1)
flag = 1
A=0; B=1e-6; AB=0
for i,t in enumerate(time):
dA = 0 # NOTE: バッファーの仮定(カルシウム濃度は一定に保たれる。)
dB = (-kf*A*B + kb*AB) * dt
dAB = (kf*A*B - kb*AB) * dt
if i%int(span/dt) == 0:
dA += dca*flag
flag*=-1
A+=dA; B+=dB; AB+=dAB
Ca[i]=A; Probe[i]=B; CaComplex[i]=AB
ax.scatter(time,Ca, color="blue", label="$\mathrm{Ca}^{2+}$", s=3)
ax.plot(time,Probe, color="red", label="$\mathrm{CaProbe}$")
ax.plot(time,CaComplex,color="black", label="$\mathrm{Complex}$")
ax.set_title("Simulation result input={}nM".format(int(dca * 1e9)))
ax.set_xlabel("time (sec)")
ax.set_ylabel("conc.(M) ×$10^{-6}$")
ax.set_yticks([i*1e-7 for i in range(1,11)])
ax.set_yticklabels([round(i*0.1,1) for i in range(1,11)])
ax.set_ylim(0,1e-6)
ax.legend()
plt.tight_layout()
plt.show()
Cameleon 3.60の方は感度が低く、定量性が失われていることがわかる。
4. プローブの緩衝作用
kf0 = 1.33*1e6
kb0 = 0.33
kf1 = 1.5*1e8
kb1 = 23
dt = 0.00001
time = np.arange(0,5,dt)
Ca = np.zeros(len(time))
Probe = np.zeros(len(time))
Protein = np.zeros(len(time))
ABcomplex = np.zeros(len(time))
AZcomplex = np.zeros(len(time))
As = [0.2 * 1e-4 * i for i in range(21)]
Bs = [1e-4, 0] # + Probe / - Probe
fig = plt.figure(figsize=(18,10))
yticks = [0,0.2,0.4,0.6,0.8,1,1.2]
for r,b in enumerate(Bs):
CaProteinComplexMax = []
ax = fig.add_subplot(2,2,r*2+1)
l_Ca = "$\mathrm{Ca}$"
l_Probe = "$\mathrm{Probe}$"
l_Protein = "$\mathrm{Protein}$"
l_AB = "$\mathrm{CaProbeComplex}$"
l_AZ = "$\mathrm{CaProteinComplex}$"
for a in As:
A=a; B=b; Z=1e-4; AB=0; AZ=0
for i,t in enumerate(time):
dA = (-kf1*A*B - kf0*A*Z + kb0*AZ + kb1*AB) * dt
dB = (-kf1*A*B + kb1*AB) * dt
dZ = (-kf0*A*Z + kb0*AZ) * dt
dAB = (kf1*A*B - kb1*AB) * dt
dAZ = (kf0*A*Z - kb0*AZ) * dt
A+=dA; B+=dB; Z+=dZ; AB+=dAB; AZ+=dAZ
Ca[i]=A; Probe[i]=B; Protein[i]=Z; ABcomplex[i]=AB; AZcomplex[i]=AZ
CaProteinComplexMax.append(AZ)
ax.plot(time,Ca, label=l_Ca, color="blue", alpha=0.5)
ax.plot(time,Probe, label=l_Probe, color="red", alpha=0.5)
ax.plot(time,Protein, label=l_Protein, color="cyan", alpha=0.5)
ax.plot(time,ABcomplex, label=l_AB, color="black", alpha=0.5)
ax.plot(time,AZcomplex, label=l_AZ, color="green", alpha=0.5)
l_Ca=None; l_Probe=None; l_Protein=None; l_AB=None; l_AZ=None;
# plt.yticks([1e-5*i for i in range(1,13,2)],[round(0.1*i,1) for i in range(1,13,2)])
ax.set_xlabel("time (sec)")
ax.set_ylabel("conc.(M) ×$10^{-4}$")
ax.set_ylim(0,1e-4)
ax.set_title("Simulation result initial Probe={}".format(b))
ax.set_yticks([i*1e-4 for i in yticks])
ax.set_yticklabels(yticks)
ax.legend()
ax = fig.add_subplot(2,2,r*2+2)
ax.plot(As, CaProteinComplexMax, label="CaProteinComplex")
ax.set_xlabel("input CaConc. ×$10^{-4}$")
ax.set_ylabel("CaProbeComplex")
ax.set_yticks([i*1e-4 for i in yticks])
ax.set_yticklabels(yticks)
ax.legend()
plt.tight_layout()
plt.show()
$\mathrm{Ca}^{2+}$ プローブは内在性のたんぱく質と $\mathrm{Ca}^{2+}$ に競合的に結合するため、同じ量のカルシウムが存在しても形成される複合体の量が異なることがわかる。
課題7:プローブと細胞内の応答の関係¶
カルシウム振動する細胞にプローブを加えて振動がどの様に変調されるか観察しなさい。加えるプローブ量は $2,20,200\ \mathrm{\mu M}$ とする
参考:Model of Intercellular Calcium Oscillations in Hepatocytes: Synchronization of Heterogeneous Cells
K3=0.12
K4=0.12
rou=0.02
new0=0.2
newc=4
new3=9
new4=3.6
K0=2.5
P=2
alpha=2
beta=0.1
d1=0.3
d2=0.4
d3=0.2
dp=0.2
da=0.4
k1=40
k2=0.02
gamma=0
kon=9.4*1e2
koff=180
dt = 0.0001
time = np.arange(0,500,dt)
PlasmaCa = np.zeros(len(time))
ERCa = np.zeros(len(time))
Probe = np.zeros(len(time))
ProbeComplex = np.zeros(len(time))
Probe_cons = [200,20,2]
fig = plt.figure(figsize=(16,4))
for j,y_init in enumerate(Probe_cons):
x = 0 # PlasmaCa
y=y_init # Probe
z = 2.2 # ERCa
w = 0 # ProbeComplex
ax = fig.add_subplot(1,3,j+1)
for i,t in enumerate(time):
Jin = new0+newc*P/(K0+P) # Ca influx from Plasma membrane
Jout = new4*(x**2)/(K4**2+x**2) # Ca efflux from Plasma membrane
Jrel = (k1* ((d2*P*x*(d1+P)/(d3+P))**3) / ((dp+P)**3 * (da+x)**3 * (d2*(d1+P)/(d3+P)+x)**3 )+k2)*(z-(1+beta)*x)/beta # Ca release from ER
Jserca = new3* x**2 / (K3**2+x**2) # Ca uptake to ER
Jprobe = -kon*x*y+koff*w; # Complex net reduction rate
v1 = rou*(Jin-Jout+Jprobe) # d(Ca)/dt from plasma
v2 = rou*alpha*(Jrel-Jserca) # d(Ca)/dt from ER
dx = (v1+v2) * dt
dy = Jprobe * dt
dz = v1 * dt
dw = -Jprobe * dt
x+=dx; y+=dy; z+=dz; w+=dw;
PlasmaCa[i]=x; ERCa[i]=z; Probe[i]=y; ProbeComplex[i]=w
ax.plot(time, PlasmaCa, label="PlasmaCa")
ax.plot(time, ERCa, label="ERCa")
ax.plot(time, Probe, label="Probe")
ax.plot(time, ProbeComplex, label="ProbeComplex")
ax.set_title("simulation result initial Probe={}µL".format(y_init))
ax.set_xlabel("time (sec)")
ax.set_ylabel("conc.(µM)")
ax.legend()
plt.tight_layout()
plt.show()
- プローブ濃度が高すぎる($200\ \mathrm{\mu M}$)場合→細胞内応答が阻害される。
- プローブ濃度が適正な($20\ \mathrm{\mu M}$)場合→細胞内カルシウムの変動が見える。
- プローブ濃度が低い($200\ \mathrm{\mu M}$)場合→プローブの応答が小さい。
まとめ
発展課題(割愛)