CANNs 文档

状态:稳定 Python 版本 持续维护 发行版本 许可证 DOI GitHub Stars 下载量 询问 DeepWiki 请我喝咖啡 CANNs Logo

欢迎使用 CANNs!

CANNs(Continuous Attractor Neural Networks toolkit)是基于 BrainPyJAX 构建的研究工具库,并可选使用 Rust 加速库 canns-lib 优化部分性能敏感例程(如 TDA/Ripser 与任务生成)。它集成模型集合、任务生成器、分析器、训练器与 ASA 流水线(GUI/TUI),以统一工作流完成仿真与分析。

架构

CANNs Architecture

CANNs 库的层级结构,展示五个层级:应用层(流水线编排)、功能层(任务/训练器/分析器/工具模块)、核心模型层(CANN 实现)、基础层 (BrainPy/JAX 与 Rust FFI 后端)以及硬件层(CPU/GPU/TPU 支持)。

核心特性

  • 模型集合:基础 CANN(1D/2D、SFA)、层级路径积分、theta-sweep 模型、类脑模型(如 Amari-Hopfield、线性/脉冲层)

  • 任务生成:平滑追踪、群体编码、模板匹配、开/闭环导航

  • 分析器能力:能量景观、调谐曲线、栅格/放电率图、TDA 与解码工具、细胞分类

  • ASA 流水线 & GUI/TUI:端到端流程(预处理、TDA、解码与结果可视化,如 CohoMap/CohoSpace/PathCompare/FR/FRM/GridScore)

  • 训练与扩展:HebbianTrainer 与统一基类便于扩展

  • 可选加速canns-lib 覆盖部分性能敏感例程

模型分析概览

Model Analysis Overview

神经动力学模型对比概览: (A) 一维 CANN,(B) 二维 CANN,(C) 网格细胞网络。

Analyzer Display

丰富的 Analyzer 可视化结果。

可视化展示

1D CANN 平滑追踪

1D CANN 平滑追踪

平滑追踪过程中的实时动力学

2D CANN 群体编码

2D CANN 编码

空间信息编码模式

🔬 Theta 扫描分析

Theta Sweep Animation

网格细胞和方向细胞网络中的 theta 节律调制

活动波包分析

Bump Analysis Demo

1D 活动波包拟合和分析

环面拓扑分析

Torus Bump Analysis

3D 环面可视化和解码

ASA 流水线(GUI/TUI)

ASA GUI 预览

ASA GUI 预览。

快速开始

安装 CANNs:

# 仅 CPU
pip install canns

# 可选加速(Linux)
pip install canns[cuda12]
pip install canns[cuda13]
pip install canns[tpu]

# GUI(ASA Pipeline)
pip install canns[gui]

可选(uv):

uv pip install canns

1D CANN 平滑追踪(导入 → 仿真 → 可视化):

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)

# 构建追踪任务(Iext 长度 = duration 长度 + 1)
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,
)

文档导航

语言: English | 中文

社区和支持

贡献

欢迎贡献!请查看我们的 贡献指南

引用

如果您在研究中使用了 CANNs,请引用:

@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}
}