Visualisation#

Multiple purpose-built live display windows — each dark-themed, Qt-native, and fully thread-safe. Push data from a background acquisition thread; all rendering happens on the main Qt thread via an internal 30 Hz timer.

RawPlot

Multi-channel scrolling M/EEG raw signal viewer

Dark-themed multi-channel raw signal display. All channels are stacked vertically with colour-coded traces and channel-name Y-axis labels, modelled on the standard M/EEG browser layout. All signal processing is applied from now: enabling a filter or re-reference leaves existing buffer data intact and processes only newly incoming chunks. A built-in Riemannian Potato detector can automatically flag artefacted segments in real time.

Left-click Y-axis label → toggle bad channel (greyed trace)
Double-click signal area → mark bad-segment start / end
Online filter — HP / LP / band-pass / notch (causal SOS)
Re-reference — Average, Mastoid (TP9/TP10), any single channel
Artifact correction — LMS, ASR, GEDAI, ORICA, Maxwell SSS
Riemannian Potato — automatic bad-segment detection (pyriemann)
SSP projector checkbox when info is provided
Export bad segments via raw_plot.to_annotations()
Vertical scrollbar + mouse-wheel channel paging
÷2 / ×2 amplitude scale · DC-removal toggle
raw_plot = RawPlot(
    ch_names=info["ch_names"],
    sfreq=1000,
    info=info,       # enables SSP projector checkbox
)
raw_plot.show()
# background acquisition thread:
raw_plot.push(chunk)   # shape (n_channels, n_samples)

See mne_rt.viz.RawPlot for the full API reference.