Skip to content

Plot RSA

This demo shows how to visualise Representational Similarity Analysis (RSA) results.

What is RSA?

  • RDM (Representational Dissimilarity Matrix) captures pairwise differences between neural representations

  • RDM Timecourse shows how representational structure evolves over time

  • Model Correlations compare observed RDMs against theoretical models

Key Functions

FunctionPurpose
plot_rdm_heatmap(rsa_result)Display an RDM as a heatmap
plot_rdm_timecourse(rsa_result)Dissimilarity over time
plot_model_correlations(rsa_result)Model comparison over time

Key Parameters

ParameterFunctionDescription
time_pointplot_rdm_heatmapSpecific time (seconds or index); nothing = average
condition_pairsplot_rdm_timecourseWhich pairs to plot; :all = all
show_colorbarAllShow/hide colour bar
colormapAllColour map for the heatmap

What You'll Learn

  1. Plotting RDM heatmaps at specific time points or averaged

  2. Visualising dissimilarity timecourses for selected condition pairs

  3. Comparing neural RDMs against theoretical model predictions

Code Examples

Show Code
julia
# Demo: Plotting RSA Results
# Shows how to visualise Representational Similarity Analysis results:
# RDM heatmaps, dissimilarity timecourses, and model correlations.

using EegFun
# Note: EegFun.example_path() resolves bundled example data paths.
# When using your own data, simply pass the file path directly, e.g.:
# dat = EegFun.read_raw_data("/path/to/your/data.bdf")

#######################################################################
# LOAD DATA AND COMPUTE RSA
#######################################################################

dat = EegFun.read_raw_data(EegFun.example_path("data/bdf/example1.bdf"))
layout = EegFun.read_layout(EegFun.example_path("layouts/biosemi/biosemi72.csv"))
EegFun.polar_to_cartesian_xy!(layout)
dat = EegFun.create_eegfun_data(dat, layout)

EegFun.highpass_filter!(dat, 0.1)
EegFun.lowpass_filter!(dat, 30.0)

epoch_cfg = [
    EegFun.EpochCondition(name = "Condition1", trigger_sequences = [[1]]),
    EegFun.EpochCondition(name = "Condition2", trigger_sequences = [[2]]),
]
epochs = EegFun.extract_epochs(dat, epoch_cfg, (-0.2, 0.8))
EegFun.baseline!(epochs, (-0.2, 0.0))

# compute RSA
rsa_result = EegFun.rsa(epochs)

#######################################################################
# RDM HEATMAP — AVERAGE ACROSS TIME
#######################################################################

# visualise overall representational structure
EegFun.plot_rdm_heatmap(rsa_result)

#######################################################################
# RDM HEATMAP — SPECIFIC TIME POINT
#######################################################################

# RDM at 300 ms post-stimulus
EegFun.plot_rdm_heatmap(rsa_result, time_point = 0.3)

# RDM at time index 50
EegFun.plot_rdm_heatmap(rsa_result, time_point = 50)

#######################################################################
# DISSIMILARITY TIMECOURSE
#######################################################################

# plot dissimilarity over time for all condition pairs
EegFun.plot_rdm_timecourse(rsa_result)

# only specific pairs
EegFun.plot_rdm_timecourse(rsa_result, condition_pairs = [(1, 2)])

#######################################################################
# MODEL CORRELATIONS
#######################################################################

# compare RSA results against theoretical models
# (requires having run compare_models beforehand)
# EegFun.plot_model_correlations(rsa_result)

See Also