RSA Module

Representational Similarity Analysis (RSA) for DRIADA.

This module provides tools for computing and comparing representational dissimilarity matrices (RDMs) from neural population data.

Representational Similarity Analysis (RSA) for comparing neural representations across conditions, time points, or brain regions.

Module Components

Usage Example

from driada.rsa import compute_rdm, compare_rdms, plot_rdm
import numpy as np

# Generate example neural data
# Shape: (n_neurons, n_conditions, n_timepoints)
n_neurons, n_conditions, n_timepoints = 50, 10, 100
neural_data = np.random.randn(n_neurons, n_conditions, n_timepoints)

# Prepare neural patterns: average activity per condition
# If you have 3D data (n_neurons, n_conditions, n_timepoints), average over time
# patterns shape: (n_conditions, n_neurons)
patterns = np.mean(neural_data, axis=2)  # Average over time

# Compute RDM from neural patterns
rdm = compute_rdm(patterns, metric='correlation')

# Compare with model RDM (must be same size)
model_rdm = np.random.rand(patterns.shape[0], patterns.shape[0])
np.fill_diagonal(model_rdm, 0)  # Diagonal should be 0
similarity = compare_rdms(rdm, model_rdm, method='spearman')

# Visualize
plot_rdm(rdm, title="Neural RDM")

# For experiments
from driada.rsa import compute_experiment_rdm
from driada.experiment import load_demo_experiment

# Load sample experiment
exp = load_demo_experiment()

# Method 1: Use behavioral variable as conditions
# Use trial_type which has discrete values
rdm, item_names = compute_experiment_rdm(
    exp,
    items='trial_type',  # Use behavioral variable name
    data_type='calcium',
    metric='correlation'
)