Distributed Brain EEG Integration System
[!NOTE] 最新の実装状況は 機能実装ステータス (Remaining Functionality) を参照してください。
概要
このシステムは、EvoSpikeNetの分散スパイキングニューラルネットワーク(SNN)シミュレーションから、リアルタイムでEEGを生成し、WebSocket経由で配信します。
アーキテクチャ
コンポーネント
- Distributed Brain Simulator (
DistributedBrainSimulator) - 複数の脳領域(前頭前野、運動野、視覚野、聴覚野)を並列シミュレーション
- 各領域はLIFニューロンの集団として実装
-
リアルタイムでスパイクトレインを生成
-
Spike-to-EEG Converter (
SpikeToEEGConverter) - スパイクトレインを連続的なEEG信号に変換
- Alpha関数カーネルを使用したシナプス後電位(PSP)のモデリング
-
背景振動(アルファ、ベータ、ガンマ波)の追加
-
WebSocket Server (
DistributedBrainEEGServer) - 100Hzでリアルタイム配信
- 4チャンネル(脳領域ごと)のEEGデータ
- フロントエンドEEG Visualizerと統合
脳領域とEEGチャンネルのマッピング
| チャンネル | 脳領域 | 特徴周波数 | 機能 |
|---|---|---|---|
| Ch1 | 前頭前野 (PFC) | 12 Hz (α波) | 実行機能、意思決定 |
| Ch2 | 運動野 | 20 Hz (β波) | 運動計画と実行 |
| Ch3 | 視覚野 | 40 Hz (γ波) | 視覚処理 |
| Ch4 | 聴覚野 | 30 Hz (高β/低γ波) | 音声処理 |
実装詳細
1. スパイクトレインの生成
各脳領域は、LIFニューロンモデルを使用してスパイクを生成:
# LIF neuron dynamics
V(t+1) = V(t) * leak + I_syn(t) + I_ext(t)
if V(t) >= threshold:
spike = 1
V(t) = reset_potential
パラメータ:
- threshold: 1024 (固定点表現)
- leak: 230/256 ≈ 0.9 (減衰係数)
- reset_potential: 0
2. スパイク-EEG変換
スパイクトレインは、生理学的に妥当なAlpha関数カーネルで畳み込み:
kernel(t) = (t/τ) * exp(1 - t/τ)
EEG(t) = spike_train(t) ⊗ kernel(t)
τ: シナプス時定数 (10ms)kernel_size: 50ms
3. 背景振動の追加
各脳領域の特徴的な周波数成分を追加:
oscillation(t) = A * sin(2π * f * t + φ)
EEG_final(t) = EEG_spikes(t) + oscillation(t) + noise(t)
4. リアルタイムストリーミング
WebSocketサーバーは100Hzで以下の形式でデータを配信:
{
"timestamp": 1769832375.04,
"data": {
"Ch1": 1.23,
"Ch2": -0.45,
"Ch3": 2.11,
"Ch4": 0.87
}
}
実装状況(更新: 2026-03-11)
evospikenet/eeg_integration/comparative_analysis.pyに安定化パッチを適用し、フェーズ同期・比較解析の統計処理(Rayleigh 検定、wPLI)の数値安定性を向上させました。- EEG 関連のユニットテスト(比較解析含む)はコンテナ内で実行済み:
tests/unit/eeg_integration/test_comparative_analysis.py→ 16 passed, 20 warnings。 - 既存の EEG パイプライン改善:
eeg_translator.pyのデータ検証強化、spectrum_converter.pyの wavelet 名互換 (morlet→morl) 対応、device_interface.pyのドライバ互換修正を行い、多数の EEG 統合テストが通過しています。 - (2026-03-11 追記)
BrainSimulationエイリアス修正・deploy_genome()追加・genome-driven forward pass・apply_weight_delta()を含む Phase D 統合が完了し、DistributedBrainNodeがゲノム進化の結果を直接推論に活用できるようになっています(詳細は「ゲノム駆動推論パイプライン」セクション参照)。 - 残作業: OpenBCI ドライバの
disconnect()状態遷移(DISCONNECTEDへの復帰)に関するテスト1件の修正が残っています。
使用方法
1. 分散脳EEGサーバーの起動
# Dockerコンテナ内で実行
docker-compose exec dev python scripts/start_distributed_brain_eeg_server.py
# または、バックグラウンドで実行
docker-compose exec -d dev python scripts/start_distributed_brain_eeg_server.py
注: リポジトリ設定により dev サービスは profiles: ["full"] に移動しています。通常の docker compose up では起動しません。dev を起動するには次のようにプロファイルを指定してください:
docker compose --profile full up -d dev
2. EEG Visualizerでの表示
- ブラウザで http://localhost:8052/eeg-visualizer にアクセス
- Connection Type を
WebSocketに設定 - WebSocket URL は
ws://evospikenet-dev:8765(デフォルト)
注: evospikenet-dev はコンテナ名です。ホストから接続する場合は dev コンテナが起動しておりポートが公開されていることを確認してください。dev を起動していない場合は上記のプロファイル指定で起動するか、ws://localhost:8765 を使用してください(ホストへポートマッピングが有効な場合)。
4. Connect ボタンをクリック
3. コマンドラインでのテスト
import asyncio
import json
import websockets
async def test():
async with websockets.connect('ws://localhost:8765') as ws:
await ws.send(json.dumps({'type': 'start'}))
# 10サンプル受信
for i in range(10):
msg = await ws.recv()
data = json.loads(msg)
print(f"Sample {i+1}: {data['data']}")
asyncio.run(test())
パフォーマンス
システム要件
- CPU: 2コア以上推奨
- メモリ: 2GB以上
- ネットワーク: 低レイテンシ (<10ms)
スループット
- シミュレーション: 1000 timesteps/秒
- EEG生成: 100 samples/秒
- WebSocket配信: 100 Hz
- レイテンシ: <20ms (シミュレーション → 配信)
スケーラビリティ
- ニューロン数: 最大10,000ニューロン/領域
- 脳領域数: 最大8領域
- 同時接続: 最大10クライアント
生物学的妥当性
1. ニューロンモデル
LIFモデルは、実際の皮質ニューロンの基本的な挙動を捉えています: - 漏れ積分 - 閾値発火 - 不応期
2. EEG生成メカニズム
実際のEEG信号は、数千〜数百万のニューロンの同期した活動から生成されます: 1. 樹状突起でのシナプス後電位(PSP) 2. 皮質表面への電流の総和 3. 頭蓋骨と頭皮による減衰
このシミュレーションは、以下を実装: - PSPのAlpha関数モデリング - 複数ニューロンの活動の線形総和 - 背景ノイズと振動の追加
3. 周波数帯域
各脳領域の特徴的な周波数は、神経科学的知見に基づいています:
| 周波数帯域 | 範囲 | 関連する脳領域 | 機能 |
|---|---|---|---|
| δ (デルタ) | 0.5-4 Hz | 深部構造 | 深睡眠 |
| θ (シータ) | 4-8 Hz | 海馬 | 記憶形成 |
| α (アルファ) | 8-13 Hz | 後頭葉 | 安静状態 |
| β (ベータ) | 13-30 Hz | 運動野 | 覚醒、集中 |
| γ (ガンマ) | 30-100 Hz | 全般 | 認知処理 |
拡張可能性
カスタム脳領域の追加
regions = [
BrainRegionConfig(
name="Hippocampus",
num_neurons=150,
base_frequency=7.0, # Theta rhythm
firing_rate=20.0,
connectivity=0.20,
region_type="excitatory",
),
# ... 他の領域
]
高度なニューロンモデル
# Izhikevichモデルへの切り替え
<!-- from evospikenet.core import IzhikevichNeuronLayer -->
model = IzhikevichNeuronLayer(
num_neurons=100,
a=0.02,
b=0.2,
c=-65,
d=8
)
分散処理の有効化
<!-- TODO: update or remove - import failport DistributedBrainExecutor -->
executor = DistributedBrainExecutor(
node_id="eeg-coordinator",
target_nodes=["pfc-0", "motor-0", "visual-0"]
)
await executor.start_eeg_processing(eeg_stream)
生物模倣オーバーレイ(BiomimeticAdapter)⭐ NEW 2026-02-25
DistributedBrainExecutor は、EEG 処理パイプラインに BiomimeticAdapter を統合しています。
設定の enable_biomimetic=True(デフォルト)で有効になり、以下の生物学的調整を各コマンドに付与します。
主要メソッド
| メソッド | 入力 | 出力 | 説明 |
|---|---|---|---|
rhythm_metrics(eeg_data) |
EEG ndarray | delta_power, alpha_power |
δ/α 帯域パワーを抽出 |
modulatory_gain(conf, meta, rhythms) |
信頼度・メタデータ・リズム | 0.6〜1.6 のゲイン | ドーパミン/ノルアドレナリン相当の可塑性倍率 |
homeostasis_scale(metadata) |
エネルギー/認知負荷/発達段階 | 0.5〜1.5 のスケール | ホメオスタシス制約スケール係数 |
dev_gain() |
config.development_stage |
0.5〜1.5 のゲイン | 発達段階に応じた成長利得 |
sleep_state(metadata, now_ns) |
sleep_pressure, attention | sleep buffer サイズ・圧力 | 高睡眠圧力時にコマンドをバッファリング |
設定例
from evospikenet.eeg_integration.distributed_brain_executor import (
DistributedBrainConfig, DistributedBrainExecutor
)
config = DistributedBrainConfig(
enable_biomimetic=True, # 生物模倣オーバーレイを有効化
low_latency_mode=False, # True にすると生物模倣処理をスキップして低遅延化
development_stage=0.8, # 0.0(初期)〜 1.0(成熟)
energy_budget=1.0, # 0.0〜1.0: 利用可能エネルギー割合
sleep_buffer_seconds=3.0, # 睡眠バッファの保持時間(秒)
)
executor = DistributedBrainExecutor(config=config)
生物模倣メタデータの確認
コマンドの metadata["biomimetic"] に以下が格納されます:
{
"delta_power": 0.12,
"alpha_power": 0.34,
"modulatory_gain": 1.18,
"homeostasis_scale": 0.95,
"dev_gain": 1.04,
"sleep": { "size": 0, "pressure": 0.1 }
}
低レイテンシモード
リアルタイム BCI などの用途では low_latency_mode=True を推奨します。
生物模倣計算をスキップし、EEG→コマンド変換のレイテンシを最小化します。
config = DistributedBrainConfig(low_latency_mode=True)
executor = DistributedBrainExecutor(config=config)
トラブルシューティング
接続エラー
ConnectionClosedError: received 1011 (internal error)
解決策:
1. サーバーログを確認: docker-compose exec dev tail -f /tmp/distributed_brain_eeg.log
2. サーバーが起動しているか確認: docker-compose exec dev ps -ef | grep distributed_brain
3. ポート8765が使用中でないか確認
低フレームレート
EEG Visualizerでフレームレートが低い場合:
-
サーバーのサンプリングレートを下げる:
server = DistributedBrainEEGServer(sampling_rate=50.0) # 100 → 50 Hz -
ニューロン数を減らす:
BrainRegionConfig(num_neurons=50) # 100 → 50
メモリ不足
RuntimeError: CUDA out of memory
解決策: 1. CPUモードで実行 2. バッチサイズを減らす 3. ニューロン数を減らす
生物模倣統合(BrainSimulationFramework)
BrainSimulationFramework は biomimetic/ 全モジュールと DistributedBrainExecutor の間をつなぐ統合レイヤーです。
クイックスタート
from evospikenet.brain_simulation import BrainSimulationFramework
# 生物模倣モードで分散脳シミュレーション起動
framework = BrainSimulationFramework(enable_biomimetic=True)
result = framework.run_simulation(duration=1000)
# → 発達・制御・STDP・エネルギー・海馬・睡眠の 6 フェーズを順次実行
# DMN アイドルサイクル(デフォルトモードネットワーク)
import asyncio
activities = asyncio.run(framework.run_idle_phase(duration_s=10.0))
# 全モジュール状態スナップショット取得
status = framework.biomimetic_status()
print(status)
Izhikevich ニューロン回路(B-2)
DistributedBrainEEGServer で利用している NeuralCircuitModeler は neuron_type="izhikevich" を指定することで Izhikevich モデルバックエンドに切り替えられます:
from evospikenet.brain_simulation import NeuralCircuitModeler, NeuralCircuitConfig
cfg = NeuralCircuitConfig(num_neurons=100, num_inputs=10, connectivity=0.2)
circuit = NeuralCircuitModeler(cfg, neuron_type="izhikevich")
spikes, membrane_v = circuit.simulate_timestep(input_current=0.5, t=0)
| モデル | 特徴 | 適用場面 |
|---|---|---|
"lif" (デフォルト) |
軽量・高速 | 大規模脳領域シミュレーション |
"izhikevich" |
RS/IB/CH/FS/LTS 等 多様な発火パターン | 皮質層型リアリスティック回路 |
皮質トポロジー登録(B-3)
from evospikenet.biomimetic import CorticalTopologyGenerator
from evospikenet.brain_simulation import BrainRegionIntegrator
gen = CorticalTopologyGenerator()
integrator = BrainRegionIntegrator()
added = integrator.add_cortical_topology(gen, nx_cols=4, ny_cols=4)
# 16 カラムを BrainRegionConfig として登録、隣接 √2 mm 内で小世界接続
STDP ↔ NeuromodulatorGate(A-3)
from evospikenet.plasticity import STDP
from evospikenet.biomimetic import NeuromodulatorGate
gate = NeuromodulatorGate()
stdp = STDP.with_neuromodulation(gate)
# ドーパミン/ACh レベルに応じて学習率をリアルタイム変調
biomimetic_status() の主要フィールド
{
"stdp_connected_gate": True,
"sleep_consolidation_replay": True,
"izhikevich_circuits": 1,
"cortical_columns_registered": 16,
"neuromodulator_registry_linked": True,
"efference_copy_adaptive": True,
"mirror_neuron_default_classifier": True,
"dmn_idle_phase_available": True,
}
評価スコア:
docs-dev/biomimetic_integration_evaluation.mdv2.0 — 8.7/10(Phase A/B 全 11 項目完了)
ゲノム駆動推論パイプライン(Phase D — 2026-03-11)
Phase D 統合により、進化エンジンが生成したゲノムを DistributedBrainNode に直接展開できるようになりました。
これにより EEG → 分散脳 の推論ループにゲノム進化の結果が組み込まれます。
フロー概要
DistributedEvolutionEngine.run_evolution()
└─→ best_genome (EvoGenome)
│
▼ deploy_to_nodes([pfc, motor, memory])
DistributedBrainNode.deploy_genome(genome)
│
▼ GenomeToBrainConverter().instantiate(genome)
InstantiatedBrain (nn.Module)
│
▼ _process_brain_command() 内
genome-driven forward pass → confidence 補正
コード例
import asyncio
from evospikenet.distributed_evolution_engine import DistributedEvolutionEngine
from evospikenet.distributed_brain_node import DistributedBrainNode
# 進化実行
engine = DistributedEvolutionEngine(config={"population_size": 50})
best = asyncio.run(engine.run_evolution(generations=50))
# 分散脳ノードへ展開
pfc_node = DistributedBrainNode("pfc", config={"neuron_count": 1000})
motor_node = DistributedBrainNode("motor", config={"neuron_count": 512})
engine.deploy_to_nodes([pfc_node, motor_node])
# 展開確認
for node in [pfc_node, motor_node]:
print(node.get_stats()["genome_deployed"]) # True
STDP 可塑性の重みへの即時反映
EEG ストリームから得た STDP デルタを InstantiatedBrain の重みにリアルタイム適用できます:
delta = brain.apply_plasticity_update("pfc", spike_history, synapse_matrix)
if delta is not None:
brain.apply_weight_delta("pfc", delta, learning_rate=1e-4)
BrainSimulation エイリアス
DistributedBrainNode が内部で使用する BrainSimulation クラスは
BrainSimulationFramework のラッパーエイリアスです(brain_simulation.py 末尾に定義)。
enable_biomimetic=True で初期化した場合と同等の生物模倣機能が利用できます。
参照
論文
- Dayan & Abbott (2001). Theoretical Neuroscience
- Buzsáki (2006). Rhythms of the Brain
- Izhikevich (2007). Dynamical Systems in Neuroscience
EvoSpikeNet ドキュメント
- Brain Simulation Brief
- Biomimetic Integration Plan
biomimetic_integration_evaluation.mdREADME.md- Distributed Brain Architecture
ライセンス
Copyright 2026 Moonlight Technologies Inc. All Rights Reserved.