Read ephys data

ieegio supports reading from multiple data formats, such as EDF(+)/BDF(+), BrainVision, BCI2000, BlackRock NEV/NSx. Most of these readers have similar interface.

To start, please load ieegio. This vignette uses sample data. Please feel free to replace the sample path with your own data path.

library(ieegio)
edf_path <- ieegio_sample_data("edfPlusD.edf")

Here is a basic example that reads in the sample EDF data and creates a FileCache object that stores the signals channel-by-channel for fast access:

edf <- read_edf(edf_path, verbose = FALSE)
print(edf)

You can check header, channel table, and annotations via the following methods:

header <- edf$get_header()
str(header)

chan_tbl <- edf$get_channel_table()
print(chan_tbl, nrows = 2, topn = 2)

annot <- edf$get_annotations()
annot

You can also query a channel by calling the get_channel method.

# get Channel 1
channel <- edf$get_channel(1)
channel

The channel contains the following elements:

Using such information, it is straightforward to plot the channel data:

plot(
  x = channel$time, y = channel$value,
  xlab = "Time", ylab = channel$info$Unit,
  main = channel$info$Label,
  type = "p", pch = ".", col = "green", lwd = 2
)