-
Notifications
You must be signed in to change notification settings - Fork 72
Open
Labels
Description
I was adding a wrapper around pyxdf to load and tidy up xdf data in Neurokit when I stumbled upon these issues:
xdf-modules/pyxdf#79
xdf-modules/pyxdf#1
So I decided to give mnelab a try to see if what I was doing was correct, but I found an issue that happens when there was interruptions in the streaming:
import neurokit2 as nk
df, info = nk.read_xdf(
"raw/physio/sub-01/ses-S001/eeg/sub-01_ses-S001_task-HCT_run-001_eeg.xdf"
)
from mnelab.io.xdf import read_raw_xdf
df2 = read_raw_xdf(
"raw/physio/sub-01/ses-S001/eeg/sub-01_ses-S001_task-HCT_run-001_eeg.xdf",
stream_ids=[1, 2, 3, 4, 5],
fs_new=2000,
).to_data_frame()
df2.index = df.index
plt.close()
fig, ax = plt.subplots(nrows=3)
for c in ["AF7"]:
ax[0].plot(info["data"][3][c], label="original", color="blue")
ax[1].plot(df[c], label="NK", color="green")
ax[2].plot(df2[c], label="mnelab", color="orange")
plt.legend()
plt.show()
Essentially I plotted:
- in blue, the original signal from Muse EEG sampled at ~250He
- in orange, the resampling at 2000 Hz by NK based on pandas that is timestamp-based
- in blue the one by mnelab
There is an interruption at the beginning at the stream, but mnelab probably interpolates linearly which distorts the whole thing.
I can send you that xdf file by email if you need :)
(also tagging my friend @pmavros as this might be relevant to our eeg processing)