# CANNs：连续吸引子神经网络研究工具包——神经动力学建模的模块化解决方案

> CANNs 是一个基于 BrainPy 和 JAX 构建的连续吸引子神经网络研究工具包，提供模型集合、任务生成器、分析工具和完整的 ASA 流程，支持从模拟到结果分析的全套研究工作流。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-27T23:44:49.000Z
- 最近活动: 2026-05-27T23:52:50.604Z
- 热度: 165.9
- 关键词: CANN, 连续吸引子神经网络, BrainPy, JAX, 神经动力学, 计算神经科学, 网格细胞, 位置细胞, TDA, 拓扑数据分析, Python
- 页面链接: https://www.zingnex.cn/forum/thread/canns
- Canonical: https://www.zingnex.cn/forum/thread/canns
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者：** Routhleck (He Sichao, Tuerhong Aiersi, She Shangjun, Chu Tianhao, Wu Yuling, Zuo Junfeng, Wu Si)
- **来源平台：** GitHub
- **原始标题：** CANNs: Continuous Attractor Neural Networks Toolkit
- **原始链接：** https://github.com/Routhleck/canns
- **发布时间：** 2026年5月27日

---

## 项目概述

CANNs（Continuous Attractor Neural Networks Toolkit）是一个专为连续吸引子神经网络研究设计的 Python 工具包。它基于 [BrainPy](https://github.com/brainpy/BrainPy) 和 [JAX](https://github.com/jax-ml/jax) 构建，并可选地使用 Rust 加速的 [canns-lib](https://github.com/Routhleck/canns-lib) 来处理性能关键例程（如 TDA/Ripser 和任务生成）。

该工具包整合了模型集合、任务生成器、分析器和 ASA 流程（GUI/TUI），使研究人员能够在一个统一的工作流中运行模拟并分析结果。API 将模型、任务、分析器和训练器分离，确保实验的模块化和可扩展性。

---

## 核心架构设计

CANNs 库遵循模块化架构，由两个核心原则指导：**关注点分离**和**通过基类实现可扩展性**。

### 五层架构

```
应用层 (Pipeline 编排)
    ↓
功能层 (Task, Trainer, Analyzer, Utils 模块)
    ↓
核心模型层 (CANN 实现)
    ↓
基础层 (BrainPy/JAX + Rust FFI 后端)
    ↓
硬件层 (CPU/GPU/TPU 支持)
```

### 五个独立模块

1. **Models (canns.models)**：定义神经网络动力学
   - 基础 CANN（1D/2D，SFA）
   - 分层路径整合模型
   - Theta 扫描模型
   - 脑启发模型（Amari-Hopfield、线性/脉冲层）

2. **Tasks (canns.task)**：生成实验范式和输入数据
   - 平滑跟踪
   - 群体编码
   - 模板匹配
   - 开环/闭环导航

3. **Analyzers (canns.analyzer)**：提供可视化和分析工具
   - 能量景观
   - 调谐曲线
   - 光栅图/发放率图
   - TDA 和解码工具
   - 细胞分类

4. **Trainers (canns.trainer)**：实现脑启发模型的学习规则
   - HebbianTrainer
   - 可扩展的基类设计

5. **Pipeline (canns.pipeline)**：编排完整工作流
   - ASA 流程（GUI/TUI）
   - 端到端工作流：预处理 → TDA → 解码 → 结果可视化

每个模块专注于单一职责：模型不生成输入数据，任务不分析结果，分析器不修改参数。这种分离确保了可维护性、可测试性和可扩展性。

---

## 核心功能特性

### 模型集合

- **基础 CANN**：1D/2D 连续吸引子网络，支持 SFA（Synaptic Facilitation and Depression）
- **分层路径整合**：模拟动物导航中的路径整合机制
- **Theta 扫描模型**：模拟海马体 theta 振荡期间的扫描行为
- **脑启发模型**：Amari-Hopfield 网络、线性层、脉冲神经网络层

### 任务生成器

- **SmoothTracking**：平滑跟踪任务，模拟连续运动刺激
- **PopulationCoding**：群体编码任务，研究神经群体如何编码信息
- **TemplateMatching**：模板匹配任务
- **Navigation**：开环和闭环导航任务

### 分析器套件

- **能量景观可视化**：展示网络状态的能量分布
- **调谐曲线分析**：研究神经元对特定刺激的响应特性
- **光栅图和发放率图**：可视化神经活动的时间模式
- **拓扑数据分析（TDA）**：使用持续同调分析神经活动的高维结构
- **解码工具**：从神经活动中解码位置、方向等信息
- **细胞分类**：自动识别网格细胞、位置细胞等细胞类型

### ASA 流程与 GUI

ASA（Analysis Suite Application）流程提供了一个完整的端到端工作流：

- **预处理**：数据清洗和准备
- **TDA 分析**：拓扑数据分析
- **解码**：从神经活动中提取信息
- **结果可视化**：CohoMap、CohoSpace、PathCompare、FR、FRM、GridScore 等专用可视化工具

GUI 界面使非编程背景的研究人员也能轻松使用这些功能。

---

## 快速入门示例

以下是一个 1D CANN 平滑跟踪的完整示例：

```python
import brainpy.math as bm
from canns.analyzer.visualization import PlotConfigs, energy_landscape_1d_animation
from canns.models.basic import CANN1D
from canns.task.tracking import SmoothTracking1D

# 设置模拟时间步长
bm.set_dt(0.1)

# 构建模型
cann = CANN1D(num=512)

# 构建跟踪任务
task = SmoothTracking1D(
    cann_instance=cann,
    Iext=(0.0, 0.5, 1.0, 1.5),
    duration=(5.0, 5.0, 5.0),
    time_step=bm.get_dt(),
)
task.get_data()

# 单步模拟回调
def step(t, stimulus):
    cann(stimulus)
    return cann.u.value, cann.inp.value

# 运行模拟循环
us, inputs = bm.for_loop(
    step,
    operands=(task.run_steps, task.data),
)

# 使用能量景观动画可视化
config = PlotConfigs.energy_landscape_1d_animation(
    time_steps_per_second=int(1 / bm.get_dt()),
    fps=20,
    title="Smooth Tracking 1D",
    xlabel="State",
    ylabel="Activity",
    show=True,
)

energy_landscape_1d_animation(
    data_sets={"u": (cann.x, us), "Iext": (cann.x, inputs)},
    config=config,
)
```

---

## 安装指南

### CPU 版本

```bash
pip install canns
```

### GPU 加速版本（Linux）

```bash
# CUDA 12
pip install canns[cuda12]

# CUDA 13
pip install canns[cuda13]

# TPU
pip install canns[tpu]
```

### GUI 版本（ASA 流程）

```bash
pip install canns[gui]
```

使用 uv 安装：

```bash
uv pip install canns
```

---

## 学术引用

如果在研究中使用了 CANNs，请按以下格式引用：

```bibtex
@software{he_2026_canns,
  author = {He, Sichao and Tuerhong, Aiersi and She, Shangjun and Chu, Tianhao and Wu, Yuling and Zuo, Junfeng and Wu, Si},
  title = {CANNs: Continuous Attractor Neural Networks Toolkit},
  month = feb,
  year = 2026,
  publisher = {Zenodo},
  version = {v1.0.0},
  doi = {10.5281/zenodo.18453893},
  url = {https://doi.org/10.5281/zenodo.18453893}
}
```

---

## 项目意义

CANNs 填补了神经科学计算工具的一个重要空白：

1. **统一的工作流**：将模型定义、任务生成、模拟运行和结果分析整合到一个工具包中
2. **高性能计算**：基于 JAX 的自动微分和 GPU 加速，支持大规模神经网络模拟
3. **模块化设计**：研究人员可以轻松地扩展基类，添加自定义模型和分析方法
4. **开源生态**：与 BrainPy 生态系统深度集成，受益于活跃的社区支持

对于研究连续吸引子网络、网格细胞、位置细胞和导航神经机制的科研人员，CANNs 提供了一个强大而灵活的研究平台。
