Use this model doc whenever the user wants to run IBGNN (Interpretable Brain Graph Neural Network) for fMRI phenotype prediction. IBGNN is a PyG-based GNN with a learnable MLP message function over [x_i, x_j, edge_attr], designed for connectome-based brain disorder analysis with post-hoc edge-mask explainer support.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill ibgnn --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ibgnn?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-ibgnn)More formats (shields.io, HTML) on the badges page.
---
name: ibgnn
description: "Use this model doc whenever the user wants to run IBGNN (Interpretable Brain Graph Neural Network) for fMRI phenotype prediction. IBGNN is a PyG-based GNN with a learnable MLP message function over [x_i, x_j, edge_attr], designed for connectome-based brain disorder analysis with post-hoc edge-mask explainer support."
license: MIT License (NeuroClaw custom skill - freely modifiable within the project)
layer: base
skill_type: model
dependencies:
- fmri-skill
- run_models
---
# IBGNN Model Doc
## Overview
IBGNN (Interpretable Brain Graph Neural Network) 是面向脑连接组分析的可解释 GNN。核心组件是 MPConv —— 在 GCN 归一化基础上,将消息计算从简单加权聚合改为 `MLP([x_i, x_j, edge_attr])` 学习消息函数。模型与 post-hoc 边遮罩 explainer 配合使用,可提取对预测重要的边子图。
- Paper: Cui et al., 2022, "Interpretable Graph Neural Networks for Connectome-Based Brain Disorder Analysis",MICCAI
- Official code: https://github.com/HennyJie/IBGNN
- NeuroClaw reimplementation: `models/ibgnn/`(移除 explainer 用的 edge_flag 机制,仅保留 encoder)
- Primary input: PyG Data graph(与 BrainGNN 共享数据格式)
- Primary output: phenotype prediction(可选 attention/重要边解释)
**Research use only.**
---
## NeuroClaw 实现要点
1. **MPConv 核心**:每条边的消息 = `Linear([x_i, x_j, edge_attr])`,比 GCN 多一层非线性表达。
2. **GCN 归一化**:边权 |corr| 经过对称归一化(与 GCN 相同),再注入 self-loop。
3. **去除 edge_flag**:原版用于 explainer 屏蔽边,普通 forward 中 edge_flag 是全 1 tensor,NeuroClaw 直接砍掉以简化代码。
4. **正边权约束**:`edge_attr.abs()` 后传入,与 BrainGNN 同样做法(softmax 类操作需要非负)。
5. **任务统一接口**:classification (`nclass=N`) 与 regression (`nclass=1, task='regression'`) 一套代码。
6. **PyG 2.7 兼容**:`torch_scatter.scatter_add` 已被 `torch_geometric.utils.scatter(reduce='sum')` 替代。
7. **数据复用**:直接复用 BrainGNN 的 `NeuroClawFCDataset`,无需额外预处理。
---
## Quick Start (NeuroClaw 内部)
### 前置条件
- conda env: `neuroclaw` (Python 3.11)
- 已有 `data/braingnn_input/<atlas>/sub-*.pt` 文件(与 BrainGNN 共享)
### 训练(分类,单 fold 冒烟测试)
```bash
python skills/ibgnn/scripts/train_reference.py \
--atlas aal_116 \
--labels-csv data/hcp_gender_labels.csv \
--fold 0 --n-epochs 10 --batch-size 16
```
### 训练(回归,HCP age)
```bash
python skills/ibgnn/scripts/train_reference.py \
--atlas schaefer_100_7net \
--labels-csv data/hcp_age_labels.csv \
--task regression --fold 0 --n-epochs 50
```
---
## 核心文件
| 文件 | 作用 |
|---|---|
| `models/ibgnn/net/ibgnn.py` | 模型定义:MPConv + IBGConv stack + MLP head |
| `models/ibgnn/scripts/data_adapter.py` | 数据适配(薄封装复用 `models.braingnn`) |
| `skills/ibgnn/scripts/train_reference.py` | K-fold CV 训练参考实现 |
---
## 模型架构
```
Input PyG Data (x=[N,N], edge_index, edge_attr, batch)
-> abs(edge_attr) -> gcn_norm with self-loops
-> MPConv(N, hidden) + ReLU + Dropout
-> MPConv(hidden, hidden) (n_gnn_layers 层)
-> global_mean_pool (或 sum)
-> MLP head: Linear(hidden, hidden) + ReLU + shortcut + Linear(hidden, nclass)
Output: logits
```
每条边的消息:`msg(i,j) = Linear([h_i; h_j; edge_weight])`
---
## 关键训练参数
| 参数 | 论文默认 | NeuroClaw 默认 | 说明 |
|---|---|---|---|
| `--lr` | 1e-4 | 1e-3 | 论文 1e-4,对齐其他模型用 1e-3 |
| `--wd` | 1e-5 | 5e-4 | 权重衰减 |
| `--hidden-dim` | 128 | 128 | GNN/MLP 隐藏维度 |
| `--n-gnn-layers` | 2-3 | 2 | MPConv 堆叠层数 |
| `--n-mlp-layers` | 1 | 1 | MLP head 深度 |
| `--pooling` | mean | mean | 'mean' 或 'sum' |
| `--n-epochs` | 100 | 50 | 与其他模型对齐 |
| `--batch-size` | 16 | 16 | |
---
## 调试经验与注意事项
1. **`edge_attr.abs()` 必须**:FC 矩阵带负相关,但 GCN 归一化和消息聚合假设非负权重,否则归一化得到 NaN。
2. **MPConv 参数量**:消息 MLP `Linear(2*hidden+1, hidden)`,每层约 `(2H+1)*H` 参数,比 GCN 重 ~2 倍。
3. **n_gnn_layers 选择**:论文 2-3 层最优;超过 3 层会过平滑。
4. **shortcut connection**:MLP head 内 `h = net(x) + shortcut(x)`,避免深网络梯度衰减。
5. **PyG 2.7 兼容**:使用 `torch_geometric.utils.scatter` 替代已废弃的 `torch_scatter.scatter_add`。
6. **数据复用**:与 BrainGNN 共享 `NeuroClawFCDataset`,无需重复加载/缓存。
7. **Explainer 未移植**:原 repo 的 `main_explainer.py`(GNNExplainer 后处理)暂未移植,若需可补充。
---
## NeuroClaw 委托规则
- ROI 生成和预处理:委托 `fmri-skill`
- HCP 数据下载/编排:委托 `hcpya-skill` / `hcpa-skill` / `hcpd-skill` / `hcpep-skill`
- 依赖检查:`dependency-planner` + `conda-env-manager`
- 执行路由:`claw-shell`
执行前需明确计划确认。
---
## Reference
- Cui H, Dai W, Zhu Y, Li X, He L, Yang C. 2022. Interpretable Graph Neural Networks for Connectome-Based Brain Disorder Analysis. MICCAI.
- Official repository: https://github.com/HennyJie/IBGNN
- BrainGB benchmark by same author: https://github.com/HennyJie/BrainGB
- NeuroClaw BrainGNN skill (共享数据格式): `skills/brain_gnn/SKILL.md`
Created At: 2026-05-19 01:30 HKT
Last Updated At: 2026-05-19 01:30 HKT
Author: chengwang96
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!