CANNs Documentation¶
Welcome to the CANNs (Continuous Attractor Neural Networks) documentation! This library provides a unified, high-level API for building, training, and analyzing continuous attractor neural networks.
Visual Gallery¶
1D CANN Smooth TrackingReal-time dynamics during smooth tracking |
2D CANN Population Encoding
Spatial information encoding patterns |
Theta Sweep Analysis
Grid cell and head direction networks with theta rhythm modulation |
|
Bump Analysis
1D bump fitting and analysis |
Torus Topology Analysis
3D torus visualization and decoding |
- 🚀 Interactive Examples
Try the examples interactively:
📖 Table of Contents
Getting Started
Examples
API Reference
- API Reference
- src.canns
- src.canns.misc
- src.canns.task
- src.canns.models
- src.canns.typing
- src.canns.trainer
- src.canns.analyzer
- src.canns.pipeline
- src.canns.models.basic
- src.canns.models.hybrid
- src.canns.task.tracking
- src.canns.analyzer.utils
- src.canns.misc.benchmark
- src.canns.trainer.hebbian
- src.canns.analyzer.spatial
- src.canns.models.basic.cann
- src.canns.analyzer.plotting
- src.canns.analyzer.theta_sweep
- src.canns.pipeline.theta_sweep
- src.canns.task.navigation_base
- src.canns.models.brain_inspired
- src.canns.analyzer.plotting.energy
- src.canns.analyzer.plotting.tuning
- src.canns.analyzer.plotting.spikes
- src.canns.analyzer.plotting.config
- src.canns.analyzer.plotting.spatial
- src.canns.task.open_loop_navigation
- src.canns.analyzer.experimental_data
- src.canns.task.closed_loop_navigation
- src.canns.models.basic.theta_sweep_model
- src.canns.models.brain_inspired.hopfield
- src.canns.models.basic.hierarchical_model
- src.canns.analyzer.experimental_data.cann1d
- src.canns.analyzer.experimental_data.cann2d
About CANNs¶
Continuous Attractor Neural Networks (CANNs) are a class of neural network models characterized by their ability to maintain stable activity patterns in continuous state spaces. This library provides:
Rich Model Library: 1D/2D CANNs, SFA models, hierarchical networks
Task-Oriented Design: Path integration, smooth tracking, custom tasks
Powerful Analysis Tools: Real-time visualization, statistical analysis
High Performance: JAX-based computation with GPU/TPU support
Quick Installation¶
# Basic installation (CPU)
pip install canns
# GPU support (Linux)
pip install canns[cuda12]
# TPU support (Linux)
pip install canns[tpu]
Quick Example¶
Here’s a complete example showing how to create a 1D CANN, run a smooth tracking task, and visualize the results:
import brainstate
from canns.models.basic import CANN1D
from canns.task.tracking import SmoothTracking1D
from canns.analyzer.plotting import PlotConfigs, energy_landscape_1d_animation
# Set up environment and create 1D CANN network
brainstate.environ.set(dt=0.1)
cann = CANN1D(num=512)
cann.init_state()
# Define smooth tracking task with multiple target positions
task = SmoothTracking1D(
cann_instance=cann,
Iext=(1., 0.75, 2., 1.75, 3.),
duration=(10., 10., 10., 10.),
time_step=brainstate.environ.get_dt(),
)
task.get_data()
# Run simulation with compiled loop for efficiency
def run_step(t, inputs):
cann(inputs)
return cann.u.value, cann.inp.value
us, inps = brainstate.compile.for_loop(
run_step, task.run_steps, task.data,
pbar=brainstate.compile.ProgressBar(10)
)
# Visualize results with animation
config = PlotConfigs.energy_landscape_1d_animation(
title='1D CANN Smooth Tracking',
save_path='tracking_demo.gif'
)
energy_landscape_1d_animation(
{'Activity': (cann.x, us), 'Input': (cann.x, inps)},
config=config
)
Community and Support¶
GitHub Repository: https://github.com/routhleck/canns
Issue Reports: https://github.com/routhleck/canns/issues
Discussions: https://github.com/routhleck/canns/discussions