canns.analyzer.data.cell_classification.core.grid_cells¶
Grid Cell Classification
Implementation of gridness score algorithm for identifying and characterizing grid cells.
Based on the MATLAB gridnessScore.m implementation.
Attributes¶
Classes¶
Analyzer for computing gridness scores from spatial autocorrelograms. |
|
Results from gridness score computation. |
Functions¶
|
Compute 2D spatial autocorrelation of a firing rate map. |
Module Contents¶
- class canns.analyzer.data.cell_classification.core.grid_cells.GridnessAnalyzer(threshold=0.2, min_orientation=15.0, min_center_radius=2, num_gridness_radii=3)[source]¶
Analyzer for computing gridness scores from spatial autocorrelograms.
This implements the rotation-correlation method for quantifying hexagonal grid patterns in neural firing rate maps.
- Parameters:
threshold (float, optional) – Normalized threshold for contour detection (0-1). Default is 0.2.
min_orientation (float, optional) – Minimum angular difference between fields (degrees). Default is 15.
min_center_radius (int, optional) – Minimum center field radius in pixels. Default is 2.
num_gridness_radii (int, optional) – Number of adjacent radii to average for gridness score. Default is 3.
Examples
>>> analyzer = GridnessAnalyzer() >>> # Assume we have a 2D rate map >>> autocorr = compute_2d_autocorrelation(rate_map) >>> result = analyzer.compute_gridness_score(autocorr) >>> print(f"Gridness score: {result.score:.3f}") >>> print(f"Grid spacing: {result.spacing}")
Notes
Based on gridnessScore.m from the MATLAB codebase.
References
The gridness score algorithm computes correlations between the autocorrelogram and rotated versions at 30°, 60°, 90°, 120°, and 150°. The score is: min(r_60°, r_120°) - max(r_30°, r_90°, r_150°)
This exploits the 60° rotational symmetry of hexagonal grids.
- compute_gridness_score(autocorr)[source]¶
Compute gridness score from a 2D autocorrelogram.
- Parameters:
autocorr (np.ndarray) – 2D autocorrelogram of a firing rate map
- Returns:
result – Complete gridness analysis results
- Return type:
- Raises:
ValueError – If autocorr is not 2D or if center field cannot be detected
- class canns.analyzer.data.cell_classification.core.grid_cells.GridnessResult[source]¶
Results from gridness score computation.
- ellipse: numpy.ndarray[source]¶
- orientation: numpy.ndarray[source]¶
- peak_locations: numpy.ndarray | None = None[source]¶
- spacing: numpy.ndarray[source]¶
- canns.analyzer.data.cell_classification.core.grid_cells.compute_2d_autocorrelation(rate_map, overlap=0.8)[source]¶
Compute 2D spatial autocorrelation of a firing rate map.
This is a convenience wrapper around the autocorrelation function from the correlation module.
- Parameters:
rate_map (np.ndarray) – 2D firing rate map
overlap (float, optional) – Overlap percentage (0-1). Default is 0.8.
- Returns:
autocorr – 2D autocorrelogram
- Return type:
np.ndarray
Examples
>>> rate_map = np.random.rand(50, 50) >>> autocorr = compute_2d_autocorrelation(rate_map) >>> print(autocorr.shape)
Notes
Based on autocorrelation.m from the MATLAB codebase.