eegdash 0.3.9.dev182388821__py3-none-any.whl → 0.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of eegdash might be problematic. Click here for more details.
- eegdash/__init__.py +12 -1
- eegdash/api.py +297 -295
- eegdash/bids_eeg_metadata.py +297 -56
- eegdash/const.py +43 -0
- eegdash/data_utils.py +327 -430
- eegdash/dataset/__init__.py +19 -1
- eegdash/dataset/dataset.py +61 -33
- eegdash/dataset/dataset_summary.csv +255 -256
- eegdash/dataset/registry.py +163 -11
- eegdash/downloader.py +197 -0
- eegdash/features/datasets.py +323 -138
- eegdash/features/decorators.py +88 -3
- eegdash/features/extractors.py +203 -55
- eegdash/features/feature_bank/complexity.py +7 -3
- eegdash/features/feature_bank/dimensionality.py +1 -1
- eegdash/features/inspect.py +80 -5
- eegdash/features/serialization.py +49 -17
- eegdash/features/utils.py +75 -8
- eegdash/hbn/__init__.py +11 -0
- eegdash/hbn/preprocessing.py +61 -19
- eegdash/hbn/windows.py +157 -34
- eegdash/logging.py +54 -0
- eegdash/mongodb.py +55 -24
- eegdash/paths.py +28 -5
- eegdash/utils.py +29 -1
- {eegdash-0.3.9.dev182388821.dist-info → eegdash-0.4.0.dist-info}/METADATA +11 -59
- eegdash-0.4.0.dist-info/RECORD +37 -0
- eegdash-0.3.9.dev182388821.dist-info/RECORD +0 -35
- {eegdash-0.3.9.dev182388821.dist-info → eegdash-0.4.0.dist-info}/WHEEL +0 -0
- {eegdash-0.3.9.dev182388821.dist-info → eegdash-0.4.0.dist-info}/licenses/LICENSE +0 -0
- {eegdash-0.3.9.dev182388821.dist-info → eegdash-0.4.0.dist-info}/top_level.txt +0 -0
eegdash/logging.py
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Authors: The EEGDash contributors.
|
|
2
|
+
# License: GNU General Public License
|
|
3
|
+
# Copyright the EEGDash contributors.
|
|
4
|
+
|
|
5
|
+
"""Logging configuration for EEGDash.
|
|
6
|
+
|
|
7
|
+
This module sets up centralized logging for the EEGDash package using Rich for enhanced
|
|
8
|
+
console output formatting. It provides a consistent logging interface across all modules.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
|
|
13
|
+
from rich.logging import RichHandler
|
|
14
|
+
|
|
15
|
+
# Get the root logger
|
|
16
|
+
root_logger = logging.getLogger()
|
|
17
|
+
|
|
18
|
+
# --- This is the key part ---
|
|
19
|
+
# 1. Remove any handlers that may have been added by default
|
|
20
|
+
root_logger.handlers = []
|
|
21
|
+
|
|
22
|
+
# 2. Add your RichHandler
|
|
23
|
+
root_logger.addHandler(RichHandler(rich_tracebacks=True, markup=True))
|
|
24
|
+
# ---------------------------
|
|
25
|
+
|
|
26
|
+
# 3. Set the level for the root logger
|
|
27
|
+
root_logger.setLevel(logging.INFO)
|
|
28
|
+
|
|
29
|
+
# Now, get your package-specific logger. It will inherit the
|
|
30
|
+
# configuration from the root logger we just set up.
|
|
31
|
+
logger = logging.getLogger("eegdash")
|
|
32
|
+
"""The primary logger for the EEGDash package.
|
|
33
|
+
|
|
34
|
+
This logger is configured to use :class:`rich.logging.RichHandler` for
|
|
35
|
+
formatted, colorful output in the console. It inherits its base configuration
|
|
36
|
+
from the root logger, which is set to the ``INFO`` level.
|
|
37
|
+
|
|
38
|
+
Examples
|
|
39
|
+
--------
|
|
40
|
+
Usage in other modules:
|
|
41
|
+
|
|
42
|
+
.. code-block:: python
|
|
43
|
+
|
|
44
|
+
from .logging import logger
|
|
45
|
+
|
|
46
|
+
logger.info("This is an informational message.")
|
|
47
|
+
logger.warning("This is a warning.")
|
|
48
|
+
logger.error("This is an error.")
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
logger.setLevel(logging.INFO)
|
|
53
|
+
|
|
54
|
+
__all__ = ["logger"]
|
eegdash/mongodb.py
CHANGED
|
@@ -1,42 +1,66 @@
|
|
|
1
|
+
# Authors: The EEGDash contributors.
|
|
2
|
+
# License: GNU General Public License
|
|
3
|
+
# Copyright the EEGDash contributors.
|
|
4
|
+
|
|
5
|
+
"""MongoDB connection and operations management.
|
|
6
|
+
|
|
7
|
+
This module provides a thread-safe singleton manager for MongoDB connections,
|
|
8
|
+
ensuring that connections to the database are handled efficiently and consistently
|
|
9
|
+
across the application.
|
|
10
|
+
"""
|
|
11
|
+
|
|
1
12
|
import threading
|
|
2
13
|
|
|
3
14
|
from pymongo import MongoClient
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# These methods provide a high-level interface to interact with the MongoDB
|
|
7
|
-
# collection, allowing users to find, add, and update EEG data records.
|
|
8
|
-
# - find:
|
|
9
|
-
# - exist:
|
|
10
|
-
# - add_request:
|
|
11
|
-
# - add:
|
|
12
|
-
# - update_request:
|
|
13
|
-
# - remove_field:
|
|
14
|
-
# - remove_field_from_db:
|
|
15
|
-
# - close: Close the MongoDB connection.
|
|
16
|
-
# - __del__: Destructor to close the MongoDB connection.
|
|
15
|
+
from pymongo.collection import Collection
|
|
16
|
+
from pymongo.database import Database
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class MongoConnectionManager:
|
|
20
|
-
"""
|
|
20
|
+
"""A thread-safe singleton to manage MongoDB client connections.
|
|
21
|
+
|
|
22
|
+
This class ensures that only one connection instance is created for each
|
|
23
|
+
unique combination of a connection string and staging flag. It provides
|
|
24
|
+
class methods to get a client and to close all active connections.
|
|
25
|
+
|
|
26
|
+
Attributes
|
|
27
|
+
----------
|
|
28
|
+
_instances : dict
|
|
29
|
+
A dictionary to store singleton instances, mapping a
|
|
30
|
+
(connection_string, is_staging) tuple to a (client, db, collection)
|
|
31
|
+
tuple.
|
|
32
|
+
_lock : threading.Lock
|
|
33
|
+
A lock to ensure thread-safe instantiation of clients.
|
|
21
34
|
|
|
22
|
-
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
_instances: dict[tuple[str, bool], tuple[MongoClient, Database, Collection]] = {}
|
|
23
38
|
_lock = threading.Lock()
|
|
24
39
|
|
|
25
40
|
@classmethod
|
|
26
|
-
def get_client(
|
|
27
|
-
|
|
41
|
+
def get_client(
|
|
42
|
+
cls, connection_string: str, is_staging: bool = False
|
|
43
|
+
) -> tuple[MongoClient, Database, Collection]:
|
|
44
|
+
"""Get or create a MongoDB client for the given connection parameters.
|
|
45
|
+
|
|
46
|
+
This method returns a cached client if one already exists for the given
|
|
47
|
+
connection string and staging flag. Otherwise, it creates a new client,
|
|
48
|
+
connects to the appropriate database ("eegdash" or "eegdashstaging"),
|
|
49
|
+
and returns the client, database, and "records" collection.
|
|
28
50
|
|
|
29
51
|
Parameters
|
|
30
52
|
----------
|
|
31
53
|
connection_string : str
|
|
32
|
-
The MongoDB connection string
|
|
33
|
-
is_staging : bool
|
|
34
|
-
|
|
54
|
+
The MongoDB connection string.
|
|
55
|
+
is_staging : bool, default False
|
|
56
|
+
If True, connect to the staging database ("eegdashstaging").
|
|
57
|
+
Otherwise, connect to the production database ("eegdash").
|
|
35
58
|
|
|
36
59
|
Returns
|
|
37
60
|
-------
|
|
38
|
-
tuple
|
|
39
|
-
A tuple
|
|
61
|
+
tuple[MongoClient, Database, Collection]
|
|
62
|
+
A tuple containing the connected MongoClient instance, the Database
|
|
63
|
+
object, and the Collection object for the "records" collection.
|
|
40
64
|
|
|
41
65
|
"""
|
|
42
66
|
# Create a unique key based on connection string and staging flag
|
|
@@ -55,8 +79,12 @@ class MongoConnectionManager:
|
|
|
55
79
|
return cls._instances[key]
|
|
56
80
|
|
|
57
81
|
@classmethod
|
|
58
|
-
def close_all(cls):
|
|
59
|
-
"""Close all MongoDB client connections.
|
|
82
|
+
def close_all(cls) -> None:
|
|
83
|
+
"""Close all managed MongoDB client connections.
|
|
84
|
+
|
|
85
|
+
This method iterates through all cached client instances and closes
|
|
86
|
+
their connections. It also clears the instance cache.
|
|
87
|
+
"""
|
|
60
88
|
with cls._lock:
|
|
61
89
|
for client, _, _ in cls._instances.values():
|
|
62
90
|
try:
|
|
@@ -64,3 +92,6 @@ class MongoConnectionManager:
|
|
|
64
92
|
except Exception:
|
|
65
93
|
pass
|
|
66
94
|
cls._instances.clear()
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
__all__ = ["MongoConnectionManager"]
|
eegdash/paths.py
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
# Authors: The EEGDash contributors.
|
|
2
|
+
# License: GNU General Public License
|
|
3
|
+
# Copyright the EEGDash contributors.
|
|
4
|
+
|
|
5
|
+
"""Path utilities and cache directory management.
|
|
6
|
+
|
|
7
|
+
This module provides functions for resolving consistent cache directories and path
|
|
8
|
+
management throughout the EEGDash package, with integration to MNE-Python's
|
|
9
|
+
configuration system.
|
|
10
|
+
"""
|
|
11
|
+
|
|
1
12
|
from __future__ import annotations
|
|
2
13
|
|
|
3
14
|
import os
|
|
@@ -7,12 +18,21 @@ from mne.utils import get_config as mne_get_config
|
|
|
7
18
|
|
|
8
19
|
|
|
9
20
|
def get_default_cache_dir() -> Path:
|
|
10
|
-
"""Resolve
|
|
21
|
+
"""Resolve the default cache directory for EEGDash data.
|
|
22
|
+
|
|
23
|
+
The function determines the cache directory based on the following
|
|
24
|
+
priority order:
|
|
25
|
+
1. The path specified by the ``EEGDASH_CACHE_DIR`` environment variable.
|
|
26
|
+
2. The path specified by the ``MNE_DATA`` configuration in the MNE-Python
|
|
27
|
+
config file.
|
|
28
|
+
3. A hidden directory named ``.eegdash_cache`` in the current working
|
|
29
|
+
directory.
|
|
30
|
+
|
|
31
|
+
Returns
|
|
32
|
+
-------
|
|
33
|
+
pathlib.Path
|
|
34
|
+
The resolved, absolute path to the default cache directory.
|
|
11
35
|
|
|
12
|
-
Priority order:
|
|
13
|
-
1) Environment variable ``EEGDASH_CACHE_DIR`` if set.
|
|
14
|
-
2) MNE config ``MNE_DATA`` if set (aligns with tests and ecosystem caches).
|
|
15
|
-
3) ``.eegdash_cache`` under the current working directory.
|
|
16
36
|
"""
|
|
17
37
|
# 1) Explicit env var wins
|
|
18
38
|
env_dir = os.environ.get("EEGDASH_CACHE_DIR")
|
|
@@ -26,3 +46,6 @@ def get_default_cache_dir() -> Path:
|
|
|
26
46
|
|
|
27
47
|
# 3) Default to a project-local hidden folder
|
|
28
48
|
return Path.cwd() / ".eegdash_cache"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
__all__ = ["get_default_cache_dir"]
|
eegdash/utils.py
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
|
+
# Authors: The EEGDash contributors.
|
|
2
|
+
# License: GNU General Public License
|
|
3
|
+
# Copyright the EEGDash contributors.
|
|
4
|
+
|
|
5
|
+
"""General utility functions for EEGDash.
|
|
6
|
+
|
|
7
|
+
This module contains miscellaneous utility functions used across the EEGDash package,
|
|
8
|
+
including MongoDB client initialization and configuration helpers.
|
|
9
|
+
"""
|
|
10
|
+
|
|
1
11
|
from mne.utils import get_config, set_config, use_log_level
|
|
2
12
|
|
|
3
13
|
|
|
4
|
-
def _init_mongo_client():
|
|
14
|
+
def _init_mongo_client() -> None:
|
|
15
|
+
"""Initialize the default MongoDB connection URI in the MNE config.
|
|
16
|
+
|
|
17
|
+
This function checks if the ``EEGDASH_DB_URI`` is already set in the
|
|
18
|
+
MNE-Python configuration. If it is not set, this function sets it to the
|
|
19
|
+
default public EEGDash MongoDB Atlas cluster URI.
|
|
20
|
+
|
|
21
|
+
The operation is performed with MNE's logging level temporarily set to
|
|
22
|
+
"ERROR" to suppress verbose output.
|
|
23
|
+
|
|
24
|
+
Notes
|
|
25
|
+
-----
|
|
26
|
+
This is an internal helper function and is not intended for direct use
|
|
27
|
+
by end-users.
|
|
28
|
+
|
|
29
|
+
"""
|
|
5
30
|
with use_log_level("ERROR"):
|
|
6
31
|
if get_config("EEGDASH_DB_URI") is None:
|
|
7
32
|
set_config(
|
|
@@ -9,3 +34,6 @@ def _init_mongo_client():
|
|
|
9
34
|
"mongodb+srv://eegdash-user:mdzoMjQcHWTVnKDq@cluster0.vz35p.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0",
|
|
10
35
|
set_env=True,
|
|
11
36
|
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
__all__ = ["_init_mongo_client"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eegdash
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: EEG data for machine learning
|
|
5
5
|
Author-email: Young Truong <dt.young112@gmail.com>, Arnaud Delorme <adelorme@gmail.com>, Aviv Dotan <avivd220@gmail.com>, Oren Shriki <oren70@gmail.com>, Bruno Aristimunha <b.aristimunha@gmail.com>
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -25,25 +25,24 @@ Requires-Python: >=3.10
|
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
27
|
Requires-Dist: braindecode>=1.0
|
|
28
|
-
Requires-Dist: mne_bids>=0.
|
|
28
|
+
Requires-Dist: mne_bids>=0.17.0
|
|
29
29
|
Requires-Dist: numba
|
|
30
30
|
Requires-Dist: numpy
|
|
31
31
|
Requires-Dist: pandas
|
|
32
|
-
Requires-Dist: pybids
|
|
33
32
|
Requires-Dist: pymongo
|
|
34
33
|
Requires-Dist: python-dotenv
|
|
35
34
|
Requires-Dist: s3fs
|
|
36
|
-
Requires-Dist: scipy
|
|
37
35
|
Requires-Dist: tqdm
|
|
38
|
-
Requires-Dist: xarray
|
|
39
36
|
Requires-Dist: h5io>=0.2.4
|
|
40
37
|
Requires-Dist: pymatreader
|
|
41
38
|
Requires-Dist: eeglabio
|
|
42
39
|
Requires-Dist: tabulate
|
|
43
40
|
Requires-Dist: docstring_inheritance
|
|
41
|
+
Requires-Dist: rich
|
|
44
42
|
Provides-Extra: tests
|
|
45
43
|
Requires-Dist: pytest; extra == "tests"
|
|
46
44
|
Requires-Dist: pytest-cov; extra == "tests"
|
|
45
|
+
Requires-Dist: pytest-sugar; extra == "tests"
|
|
47
46
|
Requires-Dist: codecov; extra == "tests"
|
|
48
47
|
Requires-Dist: pytest_cases; extra == "tests"
|
|
49
48
|
Requires-Dist: pytest-benchmark; extra == "tests"
|
|
@@ -57,6 +56,7 @@ Requires-Dist: sphinx_gallery; extra == "docs"
|
|
|
57
56
|
Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
58
57
|
Requires-Dist: pydata-sphinx-theme; extra == "docs"
|
|
59
58
|
Requires-Dist: sphinx-autobuild; extra == "docs"
|
|
59
|
+
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
60
60
|
Requires-Dist: sphinx-sitemap; extra == "docs"
|
|
61
61
|
Requires-Dist: numpydoc; extra == "docs"
|
|
62
62
|
Requires-Dist: memory_profiler; extra == "docs"
|
|
@@ -64,10 +64,14 @@ Requires-Dist: ipython; extra == "docs"
|
|
|
64
64
|
Requires-Dist: lightgbm; extra == "docs"
|
|
65
65
|
Requires-Dist: plotly; extra == "docs"
|
|
66
66
|
Requires-Dist: nbformat; extra == "docs"
|
|
67
|
+
Requires-Dist: graphviz; extra == "docs"
|
|
68
|
+
Provides-Extra: digestion
|
|
69
|
+
Requires-Dist: pybids; extra == "digestion"
|
|
67
70
|
Provides-Extra: all
|
|
68
71
|
Requires-Dist: eegdash[docs]; extra == "all"
|
|
69
72
|
Requires-Dist: eegdash[dev]; extra == "all"
|
|
70
73
|
Requires-Dist: eegdash[tests]; extra == "all"
|
|
74
|
+
Requires-Dist: eegdash[digestion]; extra == "all"
|
|
71
75
|
Dynamic: license-file
|
|
72
76
|
|
|
73
77
|
# EEG-Dash
|
|
@@ -86,22 +90,6 @@ To leverage recent and ongoing advancements in large-scale computational methods
|
|
|
86
90
|
|
|
87
91
|
The data in EEG-DaSh originates from a collaboration involving 25 laboratories, encompassing 27,053 participants. This extensive collection includes MEEG data, which is a combination of EEG and MEG signals. The data is sourced from various studies conducted by these labs, involving both healthy subjects and clinical populations with conditions such as ADHD, depression, schizophrenia, dementia, autism, and psychosis. Additionally, data spans different mental states like sleep, meditation, and cognitive tasks. In addition, EEG-DaSh will incorporate a subset of the data converted from NEMAR, which includes 330 MEEG BIDS-formatted datasets, further expanding the archive with well-curated, standardized neuroelectromagnetic data.
|
|
88
92
|
|
|
89
|
-
## Featured data
|
|
90
|
-
|
|
91
|
-
The following HBN datasets are currently featured on EEGDash. Documentation about these datasets is available [here](https://neuromechanist.github.io/data/hbn/).
|
|
92
|
-
|
|
93
|
-
| DatasetID | Participants | Files | Sessions | Population | Channels | Is 10-20? | Modality | Size |
|
|
94
|
-
|---|---|---|---|---|---|---|---|---|
|
|
95
|
-
| [ds005505](https://nemar.org/dataexplorer/detail?dataset_id=ds005505) | 136 | 5393 | 1 | Healthy | 129 | other | Visual | 103 GB |
|
|
96
|
-
| [ds005506](https://nemar.org/dataexplorer/detail?dataset_id=ds005506) | 150 | 5645 | 1 | Healthy | 129 | other | Visual | 112 GB |
|
|
97
|
-
| [ds005507](https://nemar.org/dataexplorer/detail?dataset_id=ds005507) | 184 | 7273 | 1 | Healthy | 129 | other | Visual | 140 GB |
|
|
98
|
-
| [ds005508](https://nemar.org/dataexplorer/detail?dataset_id=ds005508) | 324 | 13393 | 1 | Healthy | 129 | other | Visual | 230 GB |
|
|
99
|
-
| [ds005510](https://nemar.org/dataexplorer/detail?dataset_id=ds005510) | 135 | 4933 | 1 | Healthy | 129 | other | Visual | 91 GB |
|
|
100
|
-
| [ds005512](https://nemar.org/dataexplorer/detail?dataset_id=ds005512) | 257 | 9305 | 1 | Healthy | 129 | other | Visual | 157 GB |
|
|
101
|
-
| [ds005514](https://nemar.org/dataexplorer/detail?dataset_id=ds005514) | 295 | 11565 | 1 | Healthy | 129 | other | Visual | 185 GB |
|
|
102
|
-
|
|
103
|
-
A total of [246 other datasets](datasets.md) are also available through EEGDash.
|
|
104
|
-
|
|
105
93
|
## Data format
|
|
106
94
|
|
|
107
95
|
EEGDash queries return a **Pytorch Dataset** formatted to facilitate machine learning (ML) and deep learning (DL) applications. PyTorch Datasets are the best format for EEGDash queries because they provide an efficient, scalable, and flexible structure for machine learning (ML) and deep learning (DL) applications. They allow seamless integration with PyTorch’s DataLoader, enabling efficient batching, shuffling, and parallel data loading, which is essential for training deep learning models on large EEG datasets.
|
|
@@ -113,47 +101,11 @@ EEGDash datasets are processed using the popular [braindecode](https://braindeco
|
|
|
113
101
|
## EEG-Dash usage
|
|
114
102
|
|
|
115
103
|
### Install
|
|
116
|
-
Use your preferred Python environment manager with Python > 3.
|
|
104
|
+
Use your preferred Python environment manager with Python > 3.10 to install the package.
|
|
117
105
|
* To install the eegdash package, use the following command: `pip install eegdash`
|
|
118
106
|
* To verify the installation, start a Python session and type: `from eegdash import EEGDash`
|
|
119
107
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
To use the data from a single subject, enter:
|
|
123
|
-
|
|
124
|
-
```python
|
|
125
|
-
from eegdash import EEGDashDataset
|
|
126
|
-
|
|
127
|
-
ds_NDARDB033FW5 = EEGDashDataset(
|
|
128
|
-
{"dataset": "ds005514", "task":
|
|
129
|
-
"RestingState", "subject": "NDARDB033FW5"},
|
|
130
|
-
cache_dir="."
|
|
131
|
-
)
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
This will search and download the metadata for the task **RestingState** for subject **NDARDB033FW5** in BIDS dataset **ds005514**. The actual data will not be downloaded at this stage. Following standard practice, data is only downloaded once it is processed. The **ds_NDARDB033FW5** object is a fully functional braindecode dataset, which is itself a PyTorch dataset. This [tutorial](https://github.com/sccn/EEGDash/blob/develop/notebooks/tutorial_eoec.ipynb) shows how to preprocess the EEG data, extracting portions of the data containing eyes-open and eyes-closed segments, then perform eyes-open vs. eyes-closed classification using a (shallow) deep-learning model.
|
|
135
|
-
|
|
136
|
-
To use the data from multiple subjects, enter:
|
|
137
|
-
|
|
138
|
-
```python
|
|
139
|
-
from eegdash import EEGDashDataset
|
|
140
|
-
|
|
141
|
-
ds_ds005505rest = EEGDashDataset(
|
|
142
|
-
{"dataset": "ds005505", "task": "RestingState"}, target_name="sex", cache_dir=".
|
|
143
|
-
)
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
This will search and download the metadata for the task 'RestingState' for all subjects in BIDS dataset 'ds005505' (a total of 136). As above, the actual data will not be downloaded at this stage so this command is quick to execute. Also, the target class for each subject is assigned using the target_name parameter. This means that this object is ready to be directly fed to a deep learning model, although the [tutorial script](https://github.com/sccn/EEGDash/blob/develop/notebooks/tutorial_sex_classification.ipynb) performs minimal processing on it, prior to training a deep-learning model. Because 14 gigabytes of data are downloaded, this tutorial takes about 10 minutes to execute.
|
|
147
|
-
|
|
148
|
-
### Automatic caching
|
|
149
|
-
|
|
150
|
-
By default, EEGDash caches downloaded data under a single, consistent folder:
|
|
151
|
-
|
|
152
|
-
- If ``EEGDASH_CACHE_DIR`` is set in your environment, that path is used.
|
|
153
|
-
- Else, if MNE’s ``MNE_DATA`` config is set, that path is used to align with other EEG tooling.
|
|
154
|
-
- Otherwise, ``.eegdash_cache`` in the current working directory is used.
|
|
155
|
-
|
|
156
|
-
This means that if you run the tutorial [scripts](https://github.com/sccn/EEGDash/tree/develop/notebooks), the data will only be downloaded the first time the script is executed and reused thereafter.
|
|
108
|
+
Please check our tutorial webpages to explore what you can do with [eegdash](https://eegdash.org/)!
|
|
157
109
|
|
|
158
110
|
## Education -- Coming soon...
|
|
159
111
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
eegdash/__init__.py,sha256=t5aGchFmv16iV1xtyON_Ba_6j2R7kdNou3OegrvPWIQ,697
|
|
2
|
+
eegdash/api.py,sha256=az7uUYrEvJfBtzvkzYKzXqEztDSCMsCmgIywpdzYqc8,38381
|
|
3
|
+
eegdash/bids_eeg_metadata.py,sha256=kEmFUe07tivkuIoC5T-YwfO4QQYJBxuc769ZBV1UCKo,16682
|
|
4
|
+
eegdash/const.py,sha256=9WMetN7YMQJbkN2PhzItxtVRZ4VBXLP82vFu9pY6xok,9066
|
|
5
|
+
eegdash/data_utils.py,sha256=LOA-8ShugnIXlqmGmmSClTCBr3khQSconmYAcvT_9tY,26528
|
|
6
|
+
eegdash/downloader.py,sha256=Z-9EEJildqJxIihwdtXc_h9kzCkuF9LWIwQEfyG9Huw,6030
|
|
7
|
+
eegdash/logging.py,sha256=OQ4jMtwv1h-gzjxmr3PCpcsKi5-3Nhd3r9PJ4UN7oQI,1467
|
|
8
|
+
eegdash/mongodb.py,sha256=9FJDeEebOD5RzNYfAf1lhr0R-pECAlnug6Sjhd9_oUw,3469
|
|
9
|
+
eegdash/paths.py,sha256=dKaDlF87q47KwP-5arAFwx83i5IwGgmEfPfNauEtkds,1499
|
|
10
|
+
eegdash/utils.py,sha256=u_fQ8DiA1b7dVLzwzZBhm8H-LUk6dga54WyqbbqYEJ4,1282
|
|
11
|
+
eegdash/dataset/__init__.py,sha256=HKDfV2DHBv63BqYLBWDMvU8jbFNRC7DqQbxL7RG1DKQ,863
|
|
12
|
+
eegdash/dataset/dataset.py,sha256=DnR6LoirPNV45MECq42MNtIPyhL7DTFuwPWavVWZmmA,8137
|
|
13
|
+
eegdash/dataset/dataset_summary.csv,sha256=YJX-BitOyo-5nsHBd3ECIY1u7lFBjMQAFfCUPLYEgpo,25289
|
|
14
|
+
eegdash/dataset/registry.py,sha256=5TOCWalA0RV7omRoYS0OzdcSaOTvXvqos74_Vj2jv0M,9127
|
|
15
|
+
eegdash/features/__init__.py,sha256=BXNhjvL4_SSFAY1lcP9nyGpkbJNtoOMH4AHlF6OyABo,4078
|
|
16
|
+
eegdash/features/datasets.py,sha256=5BQZMNwsUsugW05_qGSdKbCFVgI4KP8PGukLx5y8p2A,24569
|
|
17
|
+
eegdash/features/decorators.py,sha256=xK6-HcusPRnKcUCot3DEzkoRjlazd9OLVvq6R8JO0Nw,3826
|
|
18
|
+
eegdash/features/extractors.py,sha256=1srmgEsj0mFkkyQByFOsuL4r0ZpAQGdBPjiTpJWswQ8,11766
|
|
19
|
+
eegdash/features/inspect.py,sha256=IF3kv1T-uLm2KKwaKhlBBDMrqNFnrnKqKpEvkOu8gJA,3911
|
|
20
|
+
eegdash/features/serialization.py,sha256=ppRFvbd7qhrZBun61hJOY7e5X0HTTckcGh9dREMS2iI,3888
|
|
21
|
+
eegdash/features/utils.py,sha256=lK-epGlkRm9_psqsbgiWzan_gFC8BuizCRu44PSTvco,6092
|
|
22
|
+
eegdash/features/feature_bank/__init__.py,sha256=YsMXLC1FEtHL3IEw9pYw1fc5IY0x_hr2qWQowI5gZj8,2991
|
|
23
|
+
eegdash/features/feature_bank/complexity.py,sha256=eOLN0X_xaS15ZpLPDQcychuwjL459-FqZKYfOG51z-g,3366
|
|
24
|
+
eegdash/features/feature_bank/connectivity.py,sha256=bQ6KlxWm5GNpCS9ypLqBUr2L171Yq7wpBQT2tRQKTZ4,2159
|
|
25
|
+
eegdash/features/feature_bank/csp.py,sha256=jKPrmqBj7FliybNbg035cVZddvVSkhk9OazcscDpipU,3303
|
|
26
|
+
eegdash/features/feature_bank/dimensionality.py,sha256=Pit3YNxv64-qHUyz_5c3nBo4sFD5AnCE5mTwgnzSndc,3980
|
|
27
|
+
eegdash/features/feature_bank/signal.py,sha256=3Tb8z9gX7iZipxQJ9DSyy30JfdmW58kgvimSyZX74p8,3404
|
|
28
|
+
eegdash/features/feature_bank/spectral.py,sha256=bNB7skusePs1gX7NOU6yRlw_Gr4UOCkO_ylkCgybzug,3319
|
|
29
|
+
eegdash/features/feature_bank/utils.py,sha256=DGh-Q7-XFIittP7iBBxvsJaZrlVvuY5mw-G7q6C-PCI,1237
|
|
30
|
+
eegdash/hbn/__init__.py,sha256=hsI5pmIuYDzr--aE5UiToO-P9XL5fVRKahZzdsAodro,794
|
|
31
|
+
eegdash/hbn/preprocessing.py,sha256=xp0HBz8WGhLI5c2Zkk4QiVUzGoIZep8YypnHNZsUJ4o,3800
|
|
32
|
+
eegdash/hbn/windows.py,sha256=Z_fhG3kaHd5MAPg60FwFnxMJay8EzacXytUaCsOENGc,14408
|
|
33
|
+
eegdash-0.4.0.dist-info/licenses/LICENSE,sha256=asisR-xupy_NrQBFXnx6yqXeZcYWLvbAaiETl25iXT0,931
|
|
34
|
+
eegdash-0.4.0.dist-info/METADATA,sha256=UCnP4qTDgjFySFRIWhUfFv8F279oCF-q5he6-KQ_ACU,6920
|
|
35
|
+
eegdash-0.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
36
|
+
eegdash-0.4.0.dist-info/top_level.txt,sha256=zavO69HQ6MyZM0aQMR2zUS6TAFc7bnN5GEpDpOpFZzU,8
|
|
37
|
+
eegdash-0.4.0.dist-info/RECORD,,
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
eegdash/__init__.py,sha256=JV_edkvsUdIH15LC98ZUBjFdCPi7Y72URaxZwmAKUSk,290
|
|
2
|
-
eegdash/api.py,sha256=xuNi5mP8zFmTETbRkYajSS7ba320HaDeX7XzcR_t3ZU,40216
|
|
3
|
-
eegdash/bids_eeg_metadata.py,sha256=LZrGPGVdnGUbZlD4M_aAW4kEItzwTTeZFicH-jyqDyc,9712
|
|
4
|
-
eegdash/const.py,sha256=qdFBEL9kIrsj9CdxbXhBkR61R3CrTGSaj5Iq0YOACIs,7313
|
|
5
|
-
eegdash/data_utils.py,sha256=DZ-B03VleA9-mOUzGXcS4N18dVC2uFkFGXMFsKK8nUc,34166
|
|
6
|
-
eegdash/mongodb.py,sha256=GD3WgA253oFgpzOHrYaj4P1mRjNtDMT5Oj4kVvHswjI,2006
|
|
7
|
-
eegdash/paths.py,sha256=246xkectTxDAYcREs1Qma_F1Y-oSmLlb0hn0F2Za5Ss,866
|
|
8
|
-
eegdash/utils.py,sha256=7TfQ9D0LrAJ7FgnSXEvWgeHWK2QqaqS-_WcWXD86ObQ,408
|
|
9
|
-
eegdash/dataset/__init__.py,sha256=Qmzki5G8GaFlzTb10e4SmC3WkKuJyo1Ckii15tCEHAo,157
|
|
10
|
-
eegdash/dataset/dataset.py,sha256=YuyzmqN5M0itimzUD1NF1hcDwkb6fg91dRZtK6HbYOc,6521
|
|
11
|
-
eegdash/dataset/dataset_summary.csv,sha256=XF0vdHz77DFyVLTaET8lL5gQQ4r-q1xAfSDWH5GTPLA,23655
|
|
12
|
-
eegdash/dataset/registry.py,sha256=genOqAuf9cQBnHhPqRwfLP7S1XsnkLot6sLyJozPtf4,4150
|
|
13
|
-
eegdash/features/__init__.py,sha256=BXNhjvL4_SSFAY1lcP9nyGpkbJNtoOMH4AHlF6OyABo,4078
|
|
14
|
-
eegdash/features/datasets.py,sha256=kU1DO70ArSIy-LF1hHD2NN4iT-kJrI0mVpSkyV_OSeI,18301
|
|
15
|
-
eegdash/features/decorators.py,sha256=v0qaJz_dcX703p1fvFYbAIXmwK3d8naYGlq7fRVKn_w,1313
|
|
16
|
-
eegdash/features/extractors.py,sha256=H7h6tP3dKoRcjDJpWWAo0ppmokCq5QlhqMcehYwYV9s,6845
|
|
17
|
-
eegdash/features/inspect.py,sha256=PmbWhx5H_WqpnorUpWONUSkUtaIHkZblRa_Xyk7Szyc,1569
|
|
18
|
-
eegdash/features/serialization.py,sha256=snXuHVd0CoT2ese0iWi5RwZrVHCGc0oCZ8-SXqGY88I,2848
|
|
19
|
-
eegdash/features/utils.py,sha256=eM6DdyOpdVfNh7dSPykJ0WaTDtaGvkCQWAmW0G8v60Y,3784
|
|
20
|
-
eegdash/features/feature_bank/__init__.py,sha256=YsMXLC1FEtHL3IEw9pYw1fc5IY0x_hr2qWQowI5gZj8,2991
|
|
21
|
-
eegdash/features/feature_bank/complexity.py,sha256=iy9uaLInsYdxKZlXHTWlgEpP9fVI-v9TqLGfnS15-Eg,3258
|
|
22
|
-
eegdash/features/feature_bank/connectivity.py,sha256=bQ6KlxWm5GNpCS9ypLqBUr2L171Yq7wpBQT2tRQKTZ4,2159
|
|
23
|
-
eegdash/features/feature_bank/csp.py,sha256=jKPrmqBj7FliybNbg035cVZddvVSkhk9OazcscDpipU,3303
|
|
24
|
-
eegdash/features/feature_bank/dimensionality.py,sha256=j_Ds71Y1AbV2uLFQj8EuXQ4kzofLBlQtPV5snMkF7i4,3965
|
|
25
|
-
eegdash/features/feature_bank/signal.py,sha256=3Tb8z9gX7iZipxQJ9DSyy30JfdmW58kgvimSyZX74p8,3404
|
|
26
|
-
eegdash/features/feature_bank/spectral.py,sha256=bNB7skusePs1gX7NOU6yRlw_Gr4UOCkO_ylkCgybzug,3319
|
|
27
|
-
eegdash/features/feature_bank/utils.py,sha256=DGh-Q7-XFIittP7iBBxvsJaZrlVvuY5mw-G7q6C-PCI,1237
|
|
28
|
-
eegdash/hbn/__init__.py,sha256=U8mK64napnKU746C5DOwkX7W7sg3iW5kb_cVv2pfFq0,394
|
|
29
|
-
eegdash/hbn/preprocessing.py,sha256=7S_TTRKPKEk47tTnh2D6WExBt4cctAMxUxGDjJqq5lU,2221
|
|
30
|
-
eegdash/hbn/windows.py,sha256=DU_QruLOHQOttZbXCgtO4mjKaG3E5STWjMQ0_s-g0gw,9929
|
|
31
|
-
eegdash-0.3.9.dev182388821.dist-info/licenses/LICENSE,sha256=asisR-xupy_NrQBFXnx6yqXeZcYWLvbAaiETl25iXT0,931
|
|
32
|
-
eegdash-0.3.9.dev182388821.dist-info/METADATA,sha256=fLL2T760cfhM0fCyaJbPa41UJzNih7QsLbBwsQHzpGk,10348
|
|
33
|
-
eegdash-0.3.9.dev182388821.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
34
|
-
eegdash-0.3.9.dev182388821.dist-info/top_level.txt,sha256=zavO69HQ6MyZM0aQMR2zUS6TAFc7bnN5GEpDpOpFZzU,8
|
|
35
|
-
eegdash-0.3.9.dev182388821.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|