==== 設定 ==== 概要 ==== bionetliteは、BMTKのJSON形式の設定ファイル(config.json)を読み込み、Neuliteカーネル用の設定ヘッダファイル(config.h)を自動生成します。 設定ファイルの役割 ================== BMTKのconfig.jsonファイルには、以下の情報が含まれます: * シミュレーション実行パラメータ(時間刻み幅、シミュレーション時間など) * ネットワークファイルのパス * 入力設定(電流注入など) * コンポーネントディレクトリのパス bionetliteは、このconfig.jsonからNeuliteカーネルに必要なパラメータを抽出し、C言語のヘッダファイル(config.h)として出力します。 config.jsonの構造 ================= 基本的な実行設定 ---------------- .. code-block:: json { "run": { "tstop": 2000.0, "dt": 0.1, "spike_threshold": -15.0 } } * ``tstop``: シミュレーション時間(ms)(デフォルト: 1000.0) * ``dt``: 時間刻み幅(ms)(デフォルト: 0.1) * ``spike_threshold``: スパイク検出閾値(mV)(デフォルト: -15.0) 入力設定(電流注入) -------------------- .. code-block:: json { "inputs": { "current_clamp": { "input_type": "current_clamp", "module": "IClamp", "node_set": "all", "amp": 0.120, "delay": 500.0, "duration": 1000.0 } } } * ``amp``: 電流注入の振幅(nA)(デフォルト: 0.1) * ``delay``: 電流注入開始時刻(ms)(デフォルト: 500.0) * ``duration``: 電流注入の持続時間(ms)(デフォルト: 500.0) .. note:: bionetliteは ``input_type`` が ``current_clamp`` または ``module`` が ``IClamp`` の入力を自動的に検出します。 コンポーネント設定 ------------------ .. code-block:: json { "components": { "morphologies_dir": "$COMPONENT_DIR/morphologies", "biophysical_neuron_models_dir": "$COMPONENT_DIR/biophysical_neuron_models", "synaptic_models_dir": "$COMPONENT_DIR/synaptic_models" } } * ``morphologies_dir``: SWCファイルが格納されているディレクトリ * ``biophysical_neuron_models_dir``: イオンチャネルJSONファイルが格納されているディレクトリ * ``synaptic_models_dir``: シナプスモデルJSONファイルが格納されているディレクトリ config.hの自動生成 ================== bionetliteの使用方法 --------------------- bionetliteは、ネットワーク構築時に自動的にconfig.hを生成します: .. code-block:: python from bionetlite import NeuliteBuilder as NetworkBuilder # Auto-generate config.h from config.json net = NetworkBuilder('mcortex') net.add_nodes(...) net.build() net.save_nodes(output_dir='network') 生成されるconfig.h ------------------ bionetliteは、config.jsonから以下のようなconfig.hを生成します: .. code-block:: c // Automatically generated by bionetlite #pragma once #undef DEBUG // 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 ) // Set to 1 for allactive models // 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ミリ秒あたりのステップ数(int型) * ``SPIKE_THRESHOLD``: スパイク検出閾値(mV) * ``ALLACTIVE``: allactiveモデルの使用フラグ(0 or 1) * ``I_AMP``: 電流注入の振幅(nA) * ``I_DELAY``: 電流注入開始時刻(ms) * ``I_DURATION``: 電流注入の持続時間(ms) 出力場所 -------- config.hは以下の場所に生成されます: .. code-block:: text neulite/ # or {base_dir}_nl/ └── kernel/ └── config.h Neuliteカーネルのビルド時に、このconfig.hが自動的に使用されます。 高度な使用方法 ============== simulation_configパラメータの使用 ---------------------------------- config.jsonを使用せず、Pythonコード内で直接設定を指定することもできます: .. code-block:: python from bionetlite import NeuliteBuilder as NetworkBuilder from bmtk.utils.sonata.config import SonataConfig # Create SonataConfig object config = SonataConfig.from_dict({ 'run': { 'tstop': 3000.0, 'dt': 0.05, 'spike_threshold': -20.0 }, 'inputs': { 'current_clamp': { 'input_type': 'current_clamp', 'amp': 0.15, 'delay': 1000.0, 'duration': 2000.0 } } }) # Pass SonataConfig via simulation_config parameter net = NetworkBuilder('mcortex', simulation_config=config) net.add_nodes(...) net.build() net.save_nodes(output_dir='network') config.h生成の無効化 -------------------- config.hの自動生成を無効にする場合: .. code-block:: python # Disable by setting generate_config_h=False net = NetworkBuilder('mcortex', generate_config_h=False) この場合、既存のconfig.hファイルを使用するか、手動でconfig.hを作成する必要があります。 既存のBMTK configとの互換性 =========================== bionetliteは、既存のBMTKのconfig.json形式と完全に互換性があります。BMTKで使用していたconfig.jsonをそのまま使用できます。 ただし、以下の制限事項に注意してください: * **delay値**: Neuliteはdelay値を整数(int型)として扱います。config.jsonでは小数も指定できますが、bionetliteが内部で四捨五入して整数に変換します。 * **入力タイプ**: 現在、``current_clamp`` (IClamp) 形式の入力のみサポートしています。 次のステップ ============ * :doc:`basic_usage` - 基本的な使用方法 * :doc:`../api_reference/file_formats` - 生成されるファイルの詳細 * :doc:`../advanced/specification` - 制限事項の詳細 * :doc:`../getting_started/neulite_build` - Neuliteカーネルのビルド方法