NEURON software + Pythonで簡単なコンパートメントモデルを作る
A Simplifed Introduction to the NEURON Simulator —NEURON を使い回す— 第 3 版 (Python 版)
https://www.nips.ac.jp/huinfo/documents/NEURON_p03.pdf
https://www.nips.ac.jp/huinfo/documents/NEURON_PY02.pdf
SomaとDendriteのみの単純なモデル
code:python
# -*- coding: utf-8 -*-
#%%ライブラリのインポート
from neuron import h
import neuron
import numpy as np
import matplotlib.pyplot as plt
#%%
#インスタンスの作成
soma = h.Section()
#細胞体のサイズの設定
soma.diam = 30.0
soma.L = 30.0
#電位依存性チャネルの挿入
soma.insert("hh")
#leakチャネルの平衡電位の変更
#soma.el_hh = -40
#%%
#近位樹状突起の作成
ap_dend = h.Section()
#各種パラメータの設定
ap_dend.L = 500.0
ap_dend.diam = 2
ap_dend.nseg = 23
#樹状突起と細胞体を接続
ap_dend.connect(soma, 1.0, 0)
#%% シナプス入力
syn = h.AlphaSynapse(0.5, sec=ap_dend)
#シナプス入力のタイミング
syn.onset = 5.0
#入力時定数
syn.tau = 0.1
#入力コンダクタンス
syn.gmax = 0.05
#%%
#微分方程式の近似計算
cvode = h.CVode()
cvode.active(1)
#絶対誤差
cvode.atol(1.0e-5)
#%%
#計算結果の記録用のベクターの作成
#電位記録用ベクター
vv = h.Vector()
vv2 = h.Vector()
vv3 = h.Vector()
#時間用ベクター
tv = h.Vector()
#細胞体・樹状突起における電位の計算を行い結果をベクター(vv)に代入する
#数字はそのsectionにおける位置を表す
vv.record(soma(0.5)._ref_v)
vv2.record(ap_dend(0.3)._ref_v)
vv3.record(ap_dend(1.0)._ref_v)
#時間をtvに代入する
tv.record(h._ref_t)
#%%
#時間の指定
tstop = 20
#ステップの定義
dt = 0.01
#初期電位
v_init = -65.0
#諸々の初期化
h.finitialize(v_init)
h.fcurrent()
#計算の実行
neuron.run(tstop)
#%%
#hocのVectorをnumpyのarrayに変換
T = tv.as_numpy()
V_soma = vv.as_numpy()
V_ap_dend1 = vv2.as_numpy()
V_ap_dend2 = vv3.as_numpy()
#結果をプロット
ax = plt.subplot()
ax.plot(T, V_soma)
ax.plot(T, V_ap_dend1)
ax.plot(T, V_ap_dend2)
plt.show()