import mne, torch, neuroencoder as ne
from neuroencoder import MRL
from mne.datasets import eegbci
mne.set_log_level("ERROR")
model = MRL.from_pretrained()
all_emb, all_files = [], []
for s in [1, 2, 3, 4, 5]:
for r in [1, 2, 4, 6, 8, 10]:
f = eegbci.load_data(subjects=s, runs=r, verbose=False)[0]
raw = mne.io.read_raw_edf(f, preload=True, verbose=False)
eegbci.standardize(raw)
# Sliding window: 30s epochs, 1s hop
images = ne.preprocess(
raw.get_data(),
sfreq=raw.info["sfreq"],
channel_names=raw.ch_names,
stride_seconds=1.0,
)
emb = model.predict(images, dim=192)
all_emb.append(emb)
all_files.extend([f.split("/")[-1]] * len(emb))
ne.explore(torch.cat(all_emb), filename=all_files, epoch_seconds=1.0)