設定

概要

bionetliteは、BMTKのJSON形式の設定ファイル(config.json)を読み込み、Neuliteカーネル用の設定ヘッダファイル(config.h)を自動生成します。

設定ファイルの役割

BMTKのconfig.jsonファイルには、以下の情報が含まれます:

  • シミュレーション実行パラメータ(時間刻み幅、シミュレーション時間など)

  • ネットワークファイルのパス

  • 入力設定(電流注入など)

  • コンポーネントディレクトリのパス

bionetliteは、このconfig.jsonからNeuliteカーネルに必要なパラメータを抽出し、C言語のヘッダファイル(config.h)として出力します。

config.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)

入力設定(電流注入)

{
  "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)

注釈

bionetliteは input_typecurrent_clamp または moduleIClamp の入力を自動的に検出します。

コンポーネント設定

{
  "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を生成します:

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を生成します:

// 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は以下の場所に生成されます:

neulite/ # or {base_dir}_nl/
└── kernel/
    └── config.h

Neuliteカーネルのビルド時に、このconfig.hが自動的に使用されます。

高度な使用方法

simulation_configパラメータの使用

config.jsonを使用せず、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の自動生成を無効にする場合:

# 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) 形式の入力のみサポートしています。

次のステップ