ravepipeline

Lifecycle: experimental R-CMD-check CRAN status ravepipeline status badge

The goal of ravepipeline is to provide pipeline infrastructure for Reproducible Analysis and Visualization of Intracranial Electroencephalography (RAVE). The package defines high-level class to build, compile, set, execute, and share neuroscience 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 full features, please install additional packages:

# install.packages(c("remotes", "visNetwork", "rpymat"))

# Install development version
remotes::install_github("dipterix/ravepipeline")

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

# Configure Python environment if needed
rpymat::configure_conda()

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)