==================================== Tutorial 1: 単一細胞の定常電流入力 ==================================== 概要 ==== このチュートリアルでは、単一の生物物理学的ニューロンに対して定常電流入力を行う最もシンプルな例を示します。 .. seealso:: 対応するBMTKチュートリアル: `Tutorial: Single Cell Simulation with Current Injection `_ bionetからbionetliteへの変更 ============================== **変更が必要なのはimport文だけです。** それ以外のコードは完全に同じです。 **変更前(BMTK):** .. code-block:: python from bmtk.builder.networks import NetworkBuilder **変更後(bionetlite):** .. code-block:: python from bionetlite import NeuliteBuilder as NetworkBuilder コード例 ============== .. code-block:: python from bionetlite import NeuliteBuilder as NetworkBuilder # Create network net = NetworkBuilder('mcortex') # Add a single biophysical neuron net.add_nodes( N=1, pop_name='Scnn1a', model_type='biophysical', model_template='ctdb:Biophys1.hoc', dynamics_params='472363762_fit.json', morphology='Scnn1a_473845048_m.swc' ) # Build the network net.build() # Save to files net.save_nodes(output_dir='sim_ch01/network') 生成されるファイル ================== このシミュレーションでは以下のファイルが生成されます: _population.csv ------------------------------ ポピュレーション情報を含むファイル。単一のニューロンの生物物理学的特性を定義します。 .. code-block:: text id,pop_name,model_type,morphology,dynamics_params,... 0,Scnn1a,biophysical,Scnn1a_473845048_m.swc,472363762_fit.json,... __connection.csv -------------------------- シナプス接続情報を含むファイル。このチュートリアルではシナプス接続は定義されていないため、ファイルの中身は空です(ヘッダーのみ)。 .. note:: Neuliteカーネルの実行のためにはconnectionファイルが必要です。接続が存在しない場合、空のファイルが生成されます。 処理済みswcファイル ------------------- Neulite用に前処理された形態ファイルが生成されます。 このファイルは `Perisomatic model `_ に従って処理されており、以下の変更が加えられています: * 実際の軸索形態を簡略化された人工軸索に置き換え * ゼロベースのインデックスへの変換 * 深さ優先探索によるソート .. note:: Perisomatic modelの詳細については、:doc:`../advanced/specification` を参照してください。 Neuliteが生成するファイル ========================= bionetliteは以下のディレクトリ内にファイルを生成します: * スクリプトに ``base_dir`` が設定されている場合: ``{base_dir}_nl/`` * ``base_dir`` が設定されていない場合: ``neulite/`` **ディレクトリ構造** .. code-block:: text sim_ch01_nl/ ├── mcortex_population.csv ├── mcortex_mcortex_connection.csv ├── kernel/ │ └── config.h └── data/ ├── Scnn1a_473845048_m.swc └── 472363762_fit.csv mcortex_population.csv ---------------------- Neulite用のポピュレーションファイル。カラム構成は以下の通りです: .. code-block:: text #n_cell,n_comp,name,swc_file,ion_file 1,3682,default_100_100,data/Scnn1a_473845048_m.swc,data/472363762_fit.csv * ``#n_cell``: Number of cells * ``n_comp``: Number of compartments * ``name``: Population name * ``swc_file``: Path to SWC morphology file * ``ion_file``: Path to ion channel parameter file mcortex_mcortex_connection.csv ------------------------------- Neulite用の接続ファイル。このチュートリアルでは接続がないため、ヘッダーのみのファイルが生成されます: .. code-block:: text #pre nid,post nid,post cid,weight,tau_decay,tau_rise,erev,delay,e/i kernel/config.h --------------- Neuliteカーネル用のコンパイル時設定ファイル。BMTKのconfig.jsonから自動生成されます: .. code-block:: c // Automatically generated by bionetlite #pragma once // Simulation parameters #define TSTOP ( 2000.0 ) #define DT ( 0.1 ) #define INV_DT ( ( int ) ( 1.0 / ( DT ) ) ) // Neuron parameters #define SPIKE_THRESHOLD ( -15.0 ) #define ALLACTIVE ( 0 ) // Current injection parameters #define I_AMP ( 0.12 ) #define I_DELAY ( 500.0 ) #define I_DURATION ( 1000.0 ) このファイルには以下のパラメータが含まれます: * ``TSTOP``: シミュレーション時間(ms) * ``DT``: タイムステップ(ms) * ``INV_DT``: 1ミリ秒あたりのステップ数 * ``SPIKE_THRESHOLD``: スパイク検出閾値(mV) * ``I_AMP``: 電流注入の振幅(nA) * ``I_DELAY``: 電流注入開始時刻(ms) * ``I_DURATION``: 電流注入の持続時間(ms) .. note:: config.hはNeuliteカーネルのビルド時に使用されるため、このファイルを変更した場合はカーネルの再ビルドが必要です。 Neuliteカーネルのビルドと実行 ============================= ステップ1: カーネルソースの展開 ------------------------------- Neuliteのkernelディレクトリの内容をbionetliteが生成したkernelディレクトリにコピーします。config.hはbionetliteが生成済みなので除外します: .. code-block:: bash rsync -av --exclude='config.h' /path/to/neulite/kernel/ sim_ch01_nl/kernel/ ステップ2: カーネルのビルド --------------------------- kernelディレクトリに移動してビルドします。config.hは既にbionetliteによって生成されています: .. code-block:: bash cd sim_ch01_nl/kernel make ステップ3: バイナリの配置 ------------------------- ビルドしたバイナリファイル ``nl`` を1階層上にコピーします: .. code-block:: bash cp nl ../ ステップ4: シミュレーションの実行 --------------------------------- bionetliteが生成したディレクトリに移動して、シミュレーションを実行します: .. code-block:: bash cd .. ./nl mcortex_population.csv mcortex_mcortex_connection.csv シミュレーション結果ファイル ---------------------------- Neuliteカーネル実行後、以下のテキストファイルが生成されます: **s.dat** - スパイク時刻データ スペース区切りのテキスト形式で、各行に1つのスパイクイベントを記録: .. code-block:: text Time(ms) NeuronID 125.3 0 156.8 0 189.2 0 * 1列目: スパイクが発生した時刻(ms) * 2列目: スパイクを発生させたニューロンのID **v.dat** - 膜電位データ スペース区切りのテキスト形式で、各行に全ニューロンの膜電位を記録: .. code-block:: text Time(ms) Neuron0_Vm Neuron1_Vm ... 0.0 -65.0 -65.0 0.1 -64.8 -64.9 0.2 -64.6 -64.8 * 1列目: 時刻(ms) * 2列目以降: 各ニューロンのソーマ膜電位(mV) .. note:: これらのファイルはテキスト形式(ASCII)なので、Pythonのnumpyやpandasで簡単に読み込めます。 BMTKとの実行結果の比較 ====================== .. figure:: ../_static/voltage_comparison_tutorial1.png :width: 600px :align: center :alt: BMTK と Neulite の実行結果の比較(dt=0.025) dt=0.025での `BMTK `_ と Neulite の実行結果を比較したプロット。 次のステップ ============ * :doc:`tutorial02_spike_input` - スパイク入力を使用したシミュレーション * :doc:`../user_guide/basic_usage` - より詳細な使用方法 .. note:: このチュートリアルの完全なコード例とデータファイルは、リポジトリのexamplesディレクトリにあります。