Information Theory Module
Information theory functions for DRIADA.
This module provides various information-theoretic measures including mutual information, entropy, and conditional information measures.
Information-theoretic measures for analyzing neural data, including entropy estimation, mutual information computation, and advanced corrections for finite data.
Module Components
Quick Links
- Core Data Structures
TimeSeries- Single time series containerMultiTimeSeries- Multi-dimensional time seriesCore Information Theory Classes - Base classes and main MI functions
- Mutual Information
get_mi()- Main MI computation functionconditional_mi()- Conditional MIinteraction_information()- Multi-variable interactionsMutual Information Functions - All MI-related functions
- Entropy Estimation
Entropy Estimation - Discrete and continuous entropy (JIT-optimized)
- Estimators
Information Estimators - GCMI (Gaussian copula) and KSG (k-nearest neighbors)
Usage Example
from driada.information import TimeSeries, get_mi
import numpy as np
# Create time series with matching lengths
n_samples = 1000
# Generate example data
spike_counts = np.random.poisson(3, n_samples) # Discrete spike counts
position = np.cumsum(np.random.randn(n_samples) * 0.1) # Continuous position
# Ensure data has no extreme outliers for GCMI
position = np.clip(position, np.percentile(position, 1), np.percentile(position, 99))
neural_data = TimeSeries(spike_counts, discrete=True)
behavior = TimeSeries(position, discrete=False)
# Compute mutual information
mi_value = get_mi(neural_data, behavior, estimator='gcmi')
# Conditional MI (X must be continuous)
from driada.information import conditional_mi
speed = np.abs(np.diff(position, prepend=position[0])) # Speed from position
speed_ts = TimeSeries(speed[:n_samples], discrete=False)
cmi = conditional_mi(behavior, neural_data, speed_ts) # I(position; spikes | speed)