Source code for neuralfieldmanifold.datasets

"""Bundled sample neural recordings and their sampling rates."""

from dataclasses import dataclass
from importlib.resources import as_file, files

import numpy as np

NAMES = ("monkey_lfp", "mouse_lfp")


[docs] @dataclass(frozen=True) class Recording: """One-dimensional raw sample, sampling rate in Hz, and sample name.""" signal: np.ndarray sampling_rate_hz: float name: str @property def duration_seconds(self): return len(self.signal) / self.sampling_rate_hz
[docs] def load(name): """Load a bundled raw neural recording. Parameters ---------- name : {"monkey_lfp", "mouse_lfp"} Monkey LFP is 20 seconds at 500 Hz. Mouse LFP is five seconds at 20 kHz. Returns ------- Recording One-dimensional signal, sampling rate in Hz, and sample name. The duration is available as duration_seconds. """ if name not in NAMES: raise ValueError(f"Unknown recording {name!r}; choose from {NAMES}") with as_file(files(__package__).joinpath(f"{name}.npz")) as path: with np.load(path, allow_pickle=False) as data: return Recording(data["signal"], float(data["sampling_rate_hz"]), name)