Skip to contents

The goal of ravepipeline is to provide infrastructure for Reproducible Analysis and Visualization of Intracranial Electroencephalography (RAVE). The package defines high-level class to build, compile, set, execute, and share intracranial analysis pipelines. Both R and Python are supported with Markdown and shiny dashboard templates for extending and building customized pipelines.

We offers several built-in pipelines, see repository rave-ieeg/rave-pipelines for details.

More documentation is available at rave.wiki

Installation

Please check out our full installation guide on how to install ‘RAVE’

For developers, or those who do not need the integrated features, you can install the development version from GitHub with:

# install.packages("pak")

pak::pak("dipterix/ravepipeline")

# Download built-in pipelines
ravepipeline::ravepipeline_finalize_installation("always")

Run analysis pipelines

This example requires you to download RAVE demo data, which comes with the full installations.

The built-in pipelines include Power Explorer, a powerful tool to group stimuli for time-frequency analysis and visualization. Here’s an example of how to use it on our demo data set:

https://github.com/user-attachments/assets/75fe0f88-58ca-46ee-a831-f22abbaa5343

library(ravepipeline)

# list all the pipelines
pipeline_list()

# Run power explorer
power_explorer <- pipeline("power_explorer")

# List all runnable pipeline targets
power_explorer$target_table

# set inputs for analysis
power_explorer$set_settings(
  project_name = "demo", 
  subject_code = "DemoSubject", 
  loaded_electrodes = "13-16,24", 
  epoch_choice = "auditory_onset", 
  epoch_choice__trial_starts = -1L, 
  epoch_choice__trial_ends = 2L, 
  reference_name = "default", 
  baseline_settings = list(
    window = list(c(-1, -0.5)),
    scope = "Per frequency, trial, and electrode", 
    unit_of_analysis = "decibel"), 
  analysis_electrodes = "14", 
  first_condition_groupings = list(
    list(label = "audio_visual", conditions = c("known_av", "meant_av", "last_av", "drive_av")),
    list(label = "auditory_only", conditions = c("last_a", "drive_a", "known_a", "meant_a")), 
    list(label = "visual_only", conditions = c("last_v", "drive_v", "known_v", "meant_v"))), 
  condition_variable = "Condition", 
  analysis_settings = list(
    list(label = "AudStart", event = "Trial Onset", 
         time = 0:1, frequency = c(70L, 150L))),
  enable_second_condition_groupings = FALSE, 
  enable_custom_ROI = FALSE, 
  omnibus_includes_all_electrodes = TRUE
)


# Run pipeline to obtain the power of frequency over time
time_freq_data <- power_explorer$run("by_frequency_over_time_data")

# Load up custom pipeline functions
pipeline_functions <- power_explorer$shared_env()

# plot the result
pipeline_functions$plot_by_frequency_over_time(time_freq_data)

# visualize the results
power_explorer$visualize(glimpse = TRUE, aspect_ratio = 10)