Attractor landscape methodology for working memory in neural circuits. Analyzes how persistent neural activity patterns form stable attractor states that encode and maintain information during delay periods. Uses dynamical systems theory, bifurcation analysis, and manifold reconstruction to characterize working memory mechanisms.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add hiyenwong/ai_collection --skill neuro-attractor-landscape-working-memory --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Neuro Attractor Landscape Working Memory?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hiyenwong-neuro-attractor-landscape-working-memory-ai-collection)More formats (shields.io, HTML) on the badges page.
---
name: neuro-attractor-landscape-working-memory
category: neuroscience
description: "Attractor landscape methodology for working memory in neural circuits. Analyzes how persistent neural activity patterns form stable attractor states that encode and maintain information during delay periods. Uses dynamical systems theory, bifurcation analysis, and manifold reconstruction to characterize working memory mechanisms."
trigger: "attractor landscape, working memory, persistent activity, dynamical systems neural, bifurcation analysis, neural manifold, delay activity, ring attractor"
version: 1.0.0
created: 2026-04-18
source: "arxiv:2505.21031"
---
## Attractor Landscape Working Memory Methodology
### Core Concept
Working memory is implemented through persistent neural activity patterns that form stable attractor states in the neural state space. This methodology uses dynamical systems theory to characterize how neural circuits maintain information during delay periods through attractor dynamics, analyzing the geometry and stability of these attractor landscapes.
### Theoretical Foundation
#### 1. Attractor Types in Working Memory
- **Point attractors**: Stable fixed points encoding discrete items (e.g., specific spatial locations)
- **Ring attractors**: Continuous attractor manifolds for circular variables (e.g., head direction, color hue)
- **Line attractors**: One-dimensional manifolds for continuous variables (e.g., accumulated evidence)
- **Discrete attractor networks**: Multiple stable states for categorical memory
#### 2. Dynamical Systems Framework
Neural population dynamics: dx/dt = f(x) + I(t) + noise
Where x is the neural state vector, f(x) defines the autonomous dynamics, and I(t) is external input.
#### 3. Bifurcation Analysis
Working memory emerges through bifurcations:
- **Saddle-node bifurcation**: Creation of stable/unstable fixed point pairs
- **Hopf bifurcation**: Transition to oscillatory dynamics
- **Pitchfork bifurcation**: Symmetry breaking creating multiple attractors
### Implementation
#### Attractor Landscape Reconstruction
```python
import numpy as np
from sklearn.decomposition import PCA
from scipy.integrate import odeint
class AttractorLandscapeAnalyzer:
def __init__(self, n_components=3):
self.n_components = n_components
self.pca = PCA(n_components=n_components)
self.dynamics_model = None
def reduce_dimensionality(self, neural_data):
"""Project neural activity to low-dimensional manifold"""
return self.pca.fit_transform(neural_data)
def fit_dynamics(self, reduced_data, dt=0.01):
"""Learn the vector field from observed trajectories"""
X = reduced_data[:-1]
dX = (reduced_data[1:] - reduced_data[:-1]) / dt
# Fit linear + nonlinear dynamics
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import Ridge
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
self.dynamics_model = Ridge(alpha=1.0)
self.dynamics_model.fit(X_poly, dX)
self.poly = poly
def find_fixed_points(self, grid_bounds, resolution=20):
"""Find fixed points in the learned vector field"""
grids = [np.linspace(b[0], b[1], resolution) for b in grid_bounds]
mesh = np.meshgrid(*grids, indexing='ij')
points = np.stack([m.flatten() for m in mesh], axis=1)
# Evaluate vector field
points_poly = self.poly.transform(points)
velocities = self.dynamics_model.predict(points_poly)
speeds = np.linalg.norm(velocities, axis=1)
# Identify low-velocity regions (potential fixed points)
threshold = np.percentile(speeds, 5)
fixed_points = points[speeds < threshold]
return fixed_points, speeds
def analyze_stability(self, fixed_point, n_perturbations=100):
"""Analyze stability of a fixed point through perturbation analysis"""
eigenvalues = []
for _ in range(n_perturbations):
perturbation = np.random.randn(len(fixed_point)) * 0.01
x_perturbed = fixed_point + perturbation
# Linearize dynamics around fixed point
x_poly = self.poly.transform(x_perturbed.reshape(1, -1))
dx = self.dynamics_model.predict(x_poly).flatten()
# Estimate Jacobian via finite differences
J = np.zeros((len(fixed_point), len(fixed_point)))
eps = 1e-5
for i in range(len(fixed_point)):
x_plus = fixed_point.copy()
x_plus[i] += eps
x_plus_poly = self.poly.transform(x_plus.reshape(1, -1))
dx_plus = self.dynamics_model.predict(x_plus_poly).flatten()
x_minus = fixed_point.copy()
x_minus[i] -= eps
x_minus_poly = self.poly.transform(x_minus.reshape(1, -1))
dx_minus = self.dynamics_model.predict(x_minus_poly).flatten()
J[:, i] = (dx_plus - dx_minus) / (2 * eps)
eigenvalues.append(np.linalg.eigvals(J))
return np.mean(eigenvalues, axis=0)
def simulate_trajectory(self, initial_state, duration=100, dt=0.01):
"""Simulate neural trajectory from initial state"""
def vector_field(x, t):
x_poly = self.poly.transform(x.reshape(1, -1))
return self.dynamics_model.predict(x_poly).flatten()
t = np.arange(0, duration, dt)
trajectory = odeint(vector_field, initial_state, t)
return trajectory
```
#### Ring Attractor Analysis
```python
def analyze_ring_attractor(neural_data, n_angles=360):
"""Detect and characterize ring attractor structure"""
from sklearn.manifold import Isomap
# Embed in 2D
iso = Isomap(n_components=2, n_neighbors=10)
embedded = iso.fit_transform(neural_data)
# Compute angular position
angles = np.arctan2(embedded[:, 1], embedded[:, 0])
# Check for circular topology
# 1. Continuity: nearby angles should have similar neural states
sorted_idx = np.argsort(angles)
sorted_embedded = embedded[sorted_idx]
continuity = np.mean(np.diff(np.linalg.norm(sorted_embedded, axis=1)))
# 2. Wrap-around: first and last points should be close
wrap_distance = np.linalg.norm(sorted_embedded[0] - sorted_embedded[-1])
return {
'angles': angles,
'embedded': embedded,
'continuity': continuity,
'wrap_distance': wrap_distance,
'is_ring': wrap_distance < np.percentile(
[np.linalg.norm(embedded[i] - embedded[j])
for i in range(100) for j in range(i+1, min(i+100, len(embedded)))],
5
)
}
```
### Key Insights from Attractor Research
1. **Attractor Dimensionality**: Working memory capacity is limited by the dimensionality of the attractor manifold. Higher-dimensional manifolds can store more information but are less stable.
2. **Noise-Induced Drift**: Even stable attractors exhibit diffusion along the manifold due to noise, causing gradual memory degradation. The diffusion coefficient predicts behavioral precision.
3. **Input-Dependent Remapping**: External inputs can reshape the attractor landscape, creating new attractors or destabilizing existing ones.
4. **Multi-Stability**: Some working memory tasks require the network to maintain multiple possible states simultaneously, requiring careful balance of excitation and inhibition.
### Pitfalls
1. **Overfitting Dynamics Model**: High-degree polynomial models may fit noise rather than true dynamics. Use cross-validation on held-out trajectories.
2. **Ignoring Slow Drift**: Neural recordings often contain slow non-stationarities that can be mistaken for attractor dynamics. Detrend data before analysis.
3. **Insufficient Sampling**: Attractor reconstruction requires dense sampling of state space. Sparse data leads to incorrect manifold estimates.
4. **Confounding Attractors with Transients**: Distinguish true attractors (stable states) from slow transients that appear stable but eventually decay.
### Validation Methods
1. **Perturbation Experiments**: Apply targeted perturbations and verify that trajectories return to the same attractor.
2. **Cross-Task Generalization**: Verify that the same attractor structure appears across different task conditions.
3. **Model Predictions**: Use the learned dynamics to predict neural activity during novel conditions.
4. **Comparison with Lesion Data**: Predict how removing specific neural populations affects attractor stability, compare with experimental lesion studies.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!