Topological sensitivity analysis of connectome-constrained neural networks. Studies how network topology affects dynamical behavior and sensitivity to perturbations in brain connectome models. Applicable to robust brain dynamics analysis and lesion studies.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add hiyenwong/ai_collection --skill topological-sensitivity-connectome-constraints --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Topological Sensitivity Connectome Constraints?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hiyenwong-topological-sensitivity-connectome-constraints-ai-collection)More formats (shields.io, HTML) on the badges page.
---
name: topological-sensitivity-connectome-constraints
description: Topological sensitivity analysis of connectome-constrained neural networks. Studies how network topology affects dynamical behavior and sensitivity to perturbations in brain connectome models. Applicable to robust brain dynamics analysis and lesion studies.
version: 1.0.0
author: Research Synthesis
license: MIT
metadata:
hermes:
tags: [brain-network, topology, connectome, sensitivity-analysis, neural-dynamics]
---
# Topological Sensitivity Connectome Constraints
## Overview
Methodology for analyzing how brain network topology constrains neural dynamics and determines sensitivity to perturbations. Combines topological data analysis (TDA) with connectome-constrained neural modeling to understand structure-function relationships.
## Core Concepts
### Topological Constraints
- **Connectome topology**: Structural wiring patterns constrain possible dynamics
- **Persistent homology**: Topological features at multiple scales
- **Simplicial complexes**: Higher-order interactions beyond pairwise connectivity
- **Topological invariants**: Features preserved under continuous deformation
### Sensitivity Analysis
- **Structural perturbation**: How changes in connectivity affect dynamics
- **Functional sensitivity**: How topology determines response to stimulation
- **Robustness analysis**: Identifying critical vs. redundant connections
- **Lesion simulation**: Virtual lesion studies on connectome models
### Key Metrics
- **Betti numbers**: Count of topological holes at each dimension
- **Persistence diagrams**: Birth-death of topological features across scales
- **Euler characteristic**: Alternating sum of Betti numbers
- **Topological similarity**: Distance between connectivity patterns
## Implementation
```python
import numpy as np
from scipy.spatial.distance import pdist, squareform
def compute_weighted_clique_complex(adjacency, threshold):
"""Build weighted clique complex from adjacency matrix."""
n = adjacency.shape[0]
cliques = {0: list(range(n)), 1: [], 2: [], 3: []}
# 0-simplices (nodes)
# 1-simplices (edges)
for i in range(n):
for j in range(i+1, n):
if adjacency[i, j] > threshold:
cliques[1].append((i, j))
# 2-simplices (triangles)
for edge1 in cliques[1]:
for edge2 in cliques[1]:
if edge1[0] != edge2[0] and edge1[1] != edge2[1]:
triangle = tuple(sorted(set(edge1) | set(edge2)))
if len(triangle) == 3:
if all(adjacency[triangle[i], triangle[j]] > threshold
for i in range(3) for j in range(i+1, 3)):
if triangle not in cliques[2]:
cliques[2].append(triangle)
return cliques
def betti_numbers_from_cliques(cliques):
"""Compute Betti numbers from clique counts."""
counts = [len(cliques[k]) for k in sorted(cliques.keys())]
# Euler characteristic
euler = sum((-1)**k * counts[k] for k in range(len(counts)))
# Betti numbers (simplified)
b0 = 1 # Connected components
b1 = counts[1] - counts[0] + b0 # Loops
b2 = counts[2] - counts[1] + b0 - b1 # Voids
return {'b0': b0, 'b1': max(0, b1), 'b2': max(0, b2)}
def topological_sensitivity(adjacency, perturbation_strength=0.1):
"""Measure topological sensitivity to structural perturbations."""
n = adjacency.shape[0]
# Original topology
original_cliques = compute_weighted_clique_complex(adjacency, np.mean(adjacency))
original_betti = betti_numbers_from_cliques(original_cliques)
# Perturbed topology
noise = np.random.randn(n, n) * perturbation_strength
perturbed = adjacency + noise
perturbed_cliques = compute_weighted_clique_complex(perturbed, np.mean(perturbed))
perturbed_betti = betti_numbers_from_cliques(perturbed_cliques)
# Sensitivity = change in Betti numbers
sensitivity = {}
for k in ['b0', 'b1', 'b2']:
sensitivity[k] = abs(perturbed_betti[k] - original_betti[k])
return sensitivity
def persistence_diagram(adjacency, max_scale=1.0, num_scales=50):
"""Compute approximate persistence diagram."""
thresholds = np.linspace(0, max_scale, num_scales)
betti_history = []
for t in thresholds:
cliques = compute_weighted_clique_complex(adjacency, t)
betti = betti_numbers_from_cliques(cliques)
betti_history.append(betti)
return betti_history
```
## Applications
- **Lesion studies**: Predict effects of structural damage on brain function
- **Brain stimulation**: Identifying robust vs. sensitive stimulation targets
- **Neurodegenerative diseases**: Understanding topology-driven vulnerability
- **Developmental disorders**: Topological differences in atypical connectomes
## References
- Petri, G. et al. (2014). Homological scaffolds of brain functional networks. Journal of The Royal Society Interface.
- Sizemore, A. et al. (2019). Cliques and cavities in the human connectome. Journal of Computational Neuroscience.
## Related
- [[brain-network-topology]]
- [[brain-higher-order-structures]]
- [[tda-neuroscience]]
- [[motif-based-filtrations-persistent-homology-framework-graph]]
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!