placecell.analysis.spatial_1d#
1D spatial analysis functions for place cells in linear tracks / arms.
Functions
|
Compute 1D occupancy histogram. |
|
Compute smoothed and normalized 1D rate map. |
|
Compute unsmoothed 1D rate map. |
|
Compute 1D spatial information with shuffle significance test. |
|
Compute 1D split-half stability test. |
|
Compute 1D rate map, SI, stability, and place field for a unit. |
|
Apply 1D Gaussian smoothing with boundary normalization. |
- placecell.analysis.spatial_1d.gaussian_filter_normalized_1d(data: ndarray, sigma: float, segment_bins: list[int] | None = None) ndarray#
Apply 1D Gaussian smoothing with boundary normalization.
Uses zero-padding and normalizes by the kernel weight sum so that edge bins are not penalized.
- Parameters:
data (ndarray) – 1D array to smooth.
sigma (float) – Gaussian smoothing sigma in bins.
segment_bins (list[int] | None) – Bin boundary indices for independent segments (e.g.
[0, 50, 100, 200, 300]for 4 segments of varying length). Each segment[segment_bins[i]:segment_bins[i+1]]is smoothed independently. When None the whole array is smoothed as one.
- Return type:
ndarray
- placecell.analysis.spatial_1d.compute_occupancy_map_1d(trajectory_df: DataFrame, n_bins: int, pos_range: tuple[float, float], behavior_fps: float, spatial_sigma: float = 1.0, min_occupancy: float = 0.1, pos_column: str = 'pos_1d', segment_bins: list[int] | None = None) tuple[ndarray, ndarray, ndarray]#
Compute 1D occupancy histogram.
- Parameters:
trajectory_df (DataFrame) – Speed-filtered trajectory with pos_column.
n_bins (int) – Total number of spatial bins across all arms.
pos_range (tuple[float, float]) – (min, max) of the 1D position axis.
behavior_fps (float) – Behavior sampling rate.
spatial_sigma (float) – Gaussian smoothing sigma in bins.
min_occupancy (float) – Minimum occupancy in seconds.
pos_column (str) – Column name for position values.
segment_bins (list[int] | None) – Bin boundary indices for per-segment smoothing.
- Returns:
(occupancy_time, valid_mask, edges) – all 1D arrays.
- Return type:
tuple
- placecell.analysis.spatial_1d.compute_rate_map_1d(unit_events: DataFrame, occupancy_time: ndarray, valid_mask: ndarray, edges: ndarray, spatial_sigma: float = 1.0, pos_column: str = 'pos_1d', segment_bins: list[int] | None = None) ndarray#
Compute smoothed and normalized 1D rate map.
- Returns:
1D rate map normalized to 0-1 range. Invalid bins = NaN.
- Return type:
np.ndarray
- Parameters:
unit_events (DataFrame)
occupancy_time (ndarray)
valid_mask (ndarray)
edges (ndarray)
spatial_sigma (float)
pos_column (str)
segment_bins (list[int] | None)
- placecell.analysis.spatial_1d.compute_raw_rate_map_1d(unit_events: DataFrame, occupancy_time: ndarray, valid_mask: ndarray, edges: ndarray, pos_column: str = 'pos_1d') ndarray#
Compute unsmoothed 1D rate map.
- Parameters:
unit_events (DataFrame)
occupancy_time (ndarray)
valid_mask (ndarray)
edges (ndarray)
pos_column (str)
- Return type:
ndarray
- placecell.analysis.spatial_1d.compute_spatial_information_1d(unit_events: DataFrame, trajectory_df: DataFrame, occupancy_time: ndarray, valid_mask: ndarray, edges: ndarray, n_shuffles: int = 100, random_seed: int | None = None, min_shift_seconds: float = 0.0, behavior_fps: float = 20.0, si_weight_mode: str = 'amplitude', spatial_sigma: float = 0.0, pos_column: str = 'pos_1d', segment_bins: list[int] | None = None) tuple[float, float, ndarray]#
Compute 1D spatial information with shuffle significance test.
Same SI formula as 2D, applied to 1D bins. Circular shift shuffle.
- Returns:
tuple
- Return type:
(spatial_info, p_value, shuffled_sis)
- Parameters:
unit_events (DataFrame)
trajectory_df (DataFrame)
occupancy_time (ndarray)
valid_mask (ndarray)
edges (ndarray)
n_shuffles (int)
random_seed (int | None)
min_shift_seconds (float)
behavior_fps (float)
si_weight_mode (str)
spatial_sigma (float)
pos_column (str)
segment_bins (list[int] | None)
- placecell.analysis.spatial_1d.compute_stability_score_1d(unit_events: DataFrame, trajectory_df: DataFrame, occupancy_time: ndarray, valid_mask: ndarray, edges: ndarray, spatial_sigma: float = 1.0, behavior_fps: float = 20.0, min_occupancy: float = 0.1, n_split_blocks: int = 10, block_shift: float = 0.0, n_shuffles: int = 0, random_seed: int | None = None, min_shift_seconds: float = 0.0, si_weight_mode: str = 'amplitude', pos_column: str = 'pos_1d', segment_bins: list[int] | None = None) tuple[float, float, float, ndarray, ndarray, ndarray]#
Compute 1D split-half stability test.
Same interleaved block-splitting approach as 2D, with 1D rate maps.
- Returns:
tuple – rate_map_first, rate_map_second, shuffled_corrs)
- Return type:
(correlation, fisher_z, stability_p_val,
- Parameters:
unit_events (DataFrame)
trajectory_df (DataFrame)
occupancy_time (ndarray)
valid_mask (ndarray)
edges (ndarray)
spatial_sigma (float)
behavior_fps (float)
min_occupancy (float)
n_split_blocks (int)
block_shift (float)
n_shuffles (int)
random_seed (int | None)
min_shift_seconds (float)
si_weight_mode (str)
pos_column (str)
segment_bins (list[int] | None)
- placecell.analysis.spatial_1d.compute_unit_analysis_1d(unit_id: int, df_filtered: DataFrame, trajectory_df: DataFrame, occupancy_time: ndarray, valid_mask: ndarray, edges: ndarray, scfg: SpatialMap1DConfig, behavior_fps: float, random_seed: int | None = None, pos_column: str = 'pos_1d', segment_bins: list[int] | None = None) dict#
Compute 1D rate map, SI, stability, and place field for a unit.
Returns same dict keys as the 2D
compute_unit_analysis.- Parameters:
unit_id (int)
df_filtered (DataFrame)
trajectory_df (DataFrame)
occupancy_time (ndarray)
valid_mask (ndarray)
edges (ndarray)
scfg (SpatialMap1DConfig)
behavior_fps (float)
random_seed (int | None)
pos_column (str)
segment_bins (list[int] | None)
- Return type:
dict