講義日程¶
# | 日付 | 内容 |
---|---|---|
1 | 7/9 | イントロ |
2 | 7/10 | プローブと信号 |
3 | 7/11 | 実験結果からの数理モデル作成 |
4 | 7/12 | 時間パターンに対する選択的応答 |
5 | 7/16 | スイッチ応答とメモリ、振動現象 |
6 | 7/17 | トランスオミクス解析1 |
7 | 7/18 | トランスオミクス解析2 |
8 | 7/19 | 質疑応答 |
本日の目標
とにかく手を動かしてMatlabに慣れる。
1. [Matlab](https://jp.mathworks.com/help/matlab/)とは
- 米国MathWorks社の数値解析ソフトウェア(有償)
- 長所
- ベクトル、行列計算が得意
- グラフ表示機能なども充実
- 対話形式とプログラム形式の両方に対応
- 対話形式(初学者向き)
- 命令を一つずつ実行する。電卓と同様。
- プログラム形式
- 複数の命令をまとめて実行
2. シグナル伝達(経路)とは
- 細胞は外界などからの信号(シグナル)を受けて応答をする。
- シグナルを受けてからから応答の様式を決定するまでの情報を伝える(シグナル伝達)経路を指す。
- シグナル分子のリン酸化やセカンドメッセンジャーによる生化学反応がその実行を担う。
3. 何故モデルを作成する?
- シミュレーション出来る!
- PC上で様々な実験ができる!
- どんな応答か予測できる!
- 理解が深まる!
経路の特性を理解する一つの方法として、説明したい現象を表現するモデルを作成し、解析する手法がある。
→生化学反応を微分方程式で表現した生化学反応の微分方程式モデルは、反応の動的特性を解析上で非常に強力である。
本授業では微分方程式モデルの作成の仕方、そして解析例を基に、シグナル伝達経路解析の様式を学ぶ。
課題:モデルの作成(分子間相互作用)¶
微分方程式を作成し、その時間変動をプロットする。
$$\underset{\mathrm{initial}\ =\ 0.5}{\mathrm{A}} + \underset{\mathrm{initial}\ =\ 1}{\mathrm{B}} \overset{K_{\mathrm{f}}=0.1}{\underset{K_{\mathrm{b}}=0.1}{\rightleftarrows}} \underset{\mathrm{initial}\ =\ 0}{\mathrm{AB}}$$微分方程式¶
$$ \begin{aligned} \frac{d[A]}{d t} &=-K_f \times[A] \times[B]+K_b \times[A B] \\ \frac{d[B]}{d t} &=-K_f \times[A] \times[B]+K_b \times[A B] \\ \frac{d[A B]}{d t} &=K_f \times[A] \times[B]-K_b \times[A B] \end{aligned} $$※ $K_d = K_b / K_f$
In [1]:
import numpy as np
import matplotlib.pyplot as plt
In [2]:
baseK = np.array([i for i in range(1,10,2)])
In [3]:
print(baseK)
In [4]:
scales = [0.1,0.01,0.001]
In [5]:
def simulation(ax,Kf,Kb,scale,flag,min_t=0,max_t=100,dt=0.01,A=0.5,B=1,AB=0):
time = np.arange(min_t, max_t, dt)
lst = np.zeros((3,len(time)))
As = np.zeros(len(time))
Bs = np.zeros(len(time))
ABs = np.zeros(len(time))
for i,t in enumerate(time):
dA = (-Kf*A*B + Kb*AB) * dt
dB = (-Kf*A*B + Kb*AB) * dt
dAB = ( Kf*A*B - Kb*AB) * dt
A+=dA; B+=dB; AB+=dAB
As[i] = A
Bs[i] = B
ABs[i] = AB
labelA = None if flag else "A"
labelB = None if flag else "B"
labelAB = None if flag else "AB"
ax.plot(time, As, color="blue", label=labelA)
ax.plot(time, Bs, color="green", label=labelB)
ax.plot(time, ABs, color="red", label=labelAB)
return ax
In [6]:
fig = plt.figure(figsize=(16,4))
for i,scale in enumerate(scales):
ax = fig.add_subplot(1,3,i+1)
for flag,k in enumerate(baseK*scale):
ax = simulation(ax,k,k,scale,flag)
ax.set_title("simulation result: K scale={}".format(scale))
ax.set_xlabel("time")
ax.set_ylabel("concentration")
ax.legend()
plt.tight_layout()
plt.show()
まとめ
初期値が同じ場合、同じ $K_d$ の値を持つ $[K_f,K_b]$ の組み合わせにおいてグラフのA【最終値】は同じとなるが、A【最終値】に達するまでのB【時間】が異なる。このような条件の場合、$K_b$ の値がC【大きい】ほどA【最終値】に達するB【時間】は早くなり、D【小さい】ほど遅くなる。
これが、反応の刺激に対する応答性に関与している。
In [ ]: