add ieeg dataset
3 changed files+85−1
benchcompress/src/benchcompress/datasets/__init__.pymodified+8−1View file
@@ -2,8 +2,15 @@ from .bernoulli import datasets as bernoulli_datasets
22 from .gaussian import datasets as gaussian_datasets
33 from .electrophysiology import datasets as real_datasets
44 from .seismic import datasets as seismic_datasets
5+from .ieeg import datasets as ieeg_datasets
56
6-datasets_list = [bernoulli_datasets, gaussian_datasets, real_datasets, seismic_datasets]
7+datasets_list = [
8+ bernoulli_datasets,
9+ gaussian_datasets,
10+ real_datasets,
11+ seismic_datasets,
12+ ieeg_datasets,
13+]
714
815 datasets = []
916 for d in datasets_list:
benchcompress/src/benchcompress/datasets/ieeg/__init__.pyadded+62−0View file
@@ -0,0 +1,62 @@
1+import numpy as np
2+import os
3+import requests
4+import pyedflib
5+
6+SOURCE_FILE = "ieeg/__init__.py"
7+
8+
9+def _load_long_description():
10+ current_dir = os.path.dirname(os.path.abspath(__file__))
11+ md_path = os.path.join(current_dir, "ieeg.md")
12+ with open(md_path, "r", encoding="utf-8") as f:
13+ return f.read()
14+
15+
16+LONG_DESCRIPTION = _load_long_description()
17+
18+tags = ["real", "electrophysiology", "ieeg", "timeseries", "1d", "float", "continuous"]
19+
20+
21+def _load_ieeg_openneuro_005592() -> np.ndarray:
22+ """Load data from OpenNeuro dataset 005592.
23+
24+ Returns:
25+ Array containing concatenated data from first 10 channels
26+ """
27+ url = "https://s3.amazonaws.com/openneuro.org/ds005592/sub-01/ses-01/ieeg/sub-01_ses-01_task-sws_run-01_ieeg.edf?versionId=Wzkwm2FFGDOkhswsxPeqvZr3m5toyWlj"
28+ edf_filename = "sub-01_ieeg.edf"
29+
30+ # Download if needed
31+ if not os.path.exists(edf_filename):
32+ print(f"Downloading {edf_filename}...")
33+ response = requests.get(url)
34+ with open(edf_filename, "wb") as f:
35+ f.write(response.content)
36+
37+ # Load and concatenate channels
38+ f = pyedflib.EdfReader(edf_filename)
39+ max_channels = 10
40+ n_signals = min(f.signals_in_file, max_channels)
41+
42+ # Read and concatenate first n_signals
43+ signals = []
44+ for i in range(n_signals):
45+ signals.append(f.readSignal(i))
46+ concatenated = np.concatenate(signals).astype(np.float32)
47+
48+ f.close()
49+ return concatenated
50+
51+
52+datasets = [
53+ {
54+ "name": "ieeg-005592",
55+ "version": "1",
56+ "description": "iEEG recording from OpenNeuro dataset ds005592, first 10 channels concatenated.",
57+ "create": lambda: _load_ieeg_openneuro_005592(),
58+ "tags": tags,
59+ "source_file": SOURCE_FILE,
60+ "long_description": LONG_DESCRIPTION,
61+ }
62+]
benchcompress/src/benchcompress/datasets/ieeg/ieeg.mdadded+15−0View file
@@ -0,0 +1,15 @@
1+# iEEG Dataset
2+
3+This dataset contains intracranial EEG (iEEG) recordings from OpenNeuro dataset ds005592. The data consists of the first 10 channels concatenated into a single continuous time series.
4+
5+## Data Source
6+
7+OpenNeuro dataset ds005592:
8+- Dataset URL: https://openneuro.org/datasets/ds005592
9+- Specific file: sub-01/ses-01/ieeg/sub-01_ses-01_task-sws_run-01_ieeg.edf
10+
11+## Data Properties
12+
13+- Type: Intracranial EEG recordings
14+- Format: Concatenated time series from first 10 channels
15+- Values: 32-bit floating point numbers representing voltage measurements