Plot Triggers
This demo demonstrates visualizing event markers and triggers in continuous EEG data to verify timing and event sequences.
What are Triggers?
Triggers (also called event markers or stimulus codes) are time-stamped codes that mark when experimental events occurred during recording:
Stimulus presentations
Participant responses
Experimental conditions
Trial boundaries
Hardware events
etc.
Trigger Cleaning
EegFun automatically cleans triggers by default removing consecutive duplicates. For example, the raw sequence 0 0 1 1 0 0 2 2 2 0 becomes 0 0 1 0 0 0 2 0 0 0. This ensures each trigger represents a single event rather than a sustained hardware signal.
Trigger Visualization Functions
trigger_count:
Summary statistics of all trigger codes
Counts of each trigger type
Identifies missing or unexpected triggers
plot_trigger_overview:
Visual representation of trigger occurrences
Color-coded by trigger type
Shows distribution across recording
plot_trigger_timing:
Inter-trigger intervals (ITIs)
Timing precision verification
Use Cases
Quality control:
Verify triggers were recorded correctly
Confirm expected trigger counts
Identify missing or duplicate triggers
Timing analysis:
Check inter-stimulus intervals
Verify experimental timing
Troubleshooting:
Identify spurious triggers
Find timing drift or jitter
Filtering Triggers
Use ignore_triggers to exclude specific codes:
Filter out hardware markers
Remove boundary codes
Focus on experimental events only
Workflow Summary
This demo shows trigger visualization workflows:
Count Triggers
Load raw data
Count triggers before processing
Verify expected trigger codes exist
Create Data Structure
Load layout and create EegFun structure
Count triggers again to verify preservation
Visualize Overview
Plot trigger distribution
Optionally ignore certain trigger codes
Assess trigger patterns
Analyze Timing
Plot inter-trigger intervals
Verify timing consistency
Identify timing issues
Code Examples
Show Code
# Demo: Trigger Visualization
# Shows trigger/event marker visualization in continuous data.
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")
# read raw data
dat = EegFun.read_raw_data(EegFun.example_path("data/bdf/example1.bdf"));
# basic trigger count from raw file
count = EegFun.trigger_count(dat)
# read and prepare layout file
layout = EegFun.read_layout(EegFun.example_path("layouts/biosemi/biosemi72.csv"));
# create EegFun data structure (EegFun.ContinuousData)
dat = EegFun.create_eegfun_data(dat, layout);
# basic trigger count from EegFun data structure
count = EegFun.trigger_count(dat)
# trigger overview
EegFun.plot_trigger_overview(dat)
# trigger overview with ignored triggers
EegFun.plot_trigger_overview(dat; ignore_triggers = [3, 253])
# trigger timing i.e, when did each trigger occur and interval between triggers
EegFun.plot_trigger_timing(dat)
# trigger timing with ignored triggers (timing interval is updated)
EegFun.plot_trigger_timing(dat; ignore_triggers = [3])