eegdash 0.4.0.dev150__tar.gz → 0.4.0.dev173498563__tar.gz

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.

Files changed (75) hide show
  1. {eegdash-0.4.0.dev150/eegdash.egg-info → eegdash-0.4.0.dev173498563}/PKG-INFO +1 -1
  2. eegdash-0.4.0.dev173498563/docs/source/_templates/autosummary/module.rst +65 -0
  3. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/conf.py +29 -0
  4. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/dataset_summary/bubble.rst +4 -0
  5. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/dataset_summary/kde.rst +4 -0
  6. eegdash-0.4.0.dev173498563/docs/source/dataset_summary/sankey.rst +20 -0
  7. eegdash-0.4.0.dev173498563/docs/source/dataset_summary/table.rst +27 -0
  8. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/dataset_summary.rst +10 -6
  9. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/index.rst +4 -1
  10. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/user_guide.rst +21 -16
  11. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/__init__.py +1 -1
  12. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/dataset/dataset_summary.csv +1 -1
  13. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563/eegdash.egg-info}/PKG-INFO +1 -1
  14. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash.egg-info/SOURCES.txt +2 -0
  15. eegdash-0.4.0.dev150/docs/source/dataset_summary/table.rst +0 -174
  16. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/LICENSE +0 -0
  17. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/MANIFEST.in +0 -0
  18. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/README.md +0 -0
  19. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/Makefile +0 -0
  20. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/api/api.rst +0 -0
  21. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/api/api_core.rst +0 -0
  22. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/api/api_features.rst +0 -0
  23. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/install/install.rst +0 -0
  24. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/install/install_pip.rst +0 -0
  25. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/install/install_source.rst +0 -0
  26. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/docs/source/sg_execution_times.rst +0 -0
  27. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/api.py +0 -0
  28. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/bids_eeg_metadata.py +0 -0
  29. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/const.py +0 -0
  30. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/data_utils.py +0 -0
  31. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/dataset/__init__.py +0 -0
  32. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/dataset/dataset.py +0 -0
  33. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/dataset/registry.py +0 -0
  34. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/downloader.py +0 -0
  35. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/__init__.py +0 -0
  36. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/datasets.py +0 -0
  37. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/decorators.py +0 -0
  38. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/extractors.py +0 -0
  39. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/__init__.py +0 -0
  40. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/complexity.py +0 -0
  41. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/connectivity.py +0 -0
  42. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/csp.py +0 -0
  43. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/dimensionality.py +0 -0
  44. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/signal.py +0 -0
  45. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/spectral.py +0 -0
  46. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/feature_bank/utils.py +0 -0
  47. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/inspect.py +0 -0
  48. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/serialization.py +0 -0
  49. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/features/utils.py +0 -0
  50. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/hbn/__init__.py +0 -0
  51. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/hbn/preprocessing.py +0 -0
  52. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/hbn/windows.py +0 -0
  53. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/logging.py +0 -0
  54. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/mongodb.py +0 -0
  55. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/paths.py +0 -0
  56. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash/utils.py +0 -0
  57. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash.egg-info/dependency_links.txt +0 -0
  58. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash.egg-info/requires.txt +0 -0
  59. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/eegdash.egg-info/top_level.txt +0 -0
  60. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/pyproject.toml +0 -0
  61. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/setup.cfg +0 -0
  62. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_api.py +0 -0
  63. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_bids_dependencies.py +0 -0
  64. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_cache_folder_suffix.py +0 -0
  65. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_challenge_kwargs.py +0 -0
  66. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_correctness.py +0 -0
  67. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_dataset.py +0 -0
  68. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_dataset_registration.py +0 -0
  69. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_downloader.py +0 -0
  70. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_eegdash.py +0 -0
  71. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_init.py +0 -0
  72. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_minirelease.py +0 -0
  73. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_mongo_connection.py +0 -0
  74. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_offline.py +0 -0
  75. {eegdash-0.4.0.dev150 → eegdash-0.4.0.dev173498563}/tests/test_query.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eegdash
3
- Version: 0.4.0.dev150
3
+ Version: 0.4.0.dev173498563
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
@@ -0,0 +1,65 @@
1
+ {{ fullname | escape | underline}}
2
+
3
+ .. automodule:: {{ fullname }}
4
+ :members:
5
+ :undoc-members:
6
+ :show-inheritance:
7
+ :member-order: bysource
8
+
9
+ {% block attributes %}
10
+ {%- if attributes %}
11
+ .. rubric:: {{ _('Module Attributes') }}
12
+
13
+ .. autosummary::
14
+ {% for item in attributes %}
15
+ {{ item }}
16
+ {%- endfor %}
17
+ {% endif %}
18
+ {%- endblock %}
19
+
20
+ {%- block functions %}
21
+ {%- if functions %}
22
+ .. rubric:: {{ _('Functions') }}
23
+
24
+ .. autosummary::
25
+ {% for item in functions %}
26
+ {{ item }}
27
+ {%- endfor %}
28
+ {% endif %}
29
+ {%- endblock %}
30
+
31
+ {%- block classes %}
32
+ {%- if classes %}
33
+ .. rubric:: {{ _('Classes') }}
34
+
35
+ .. autosummary::
36
+ {% for item in classes %}
37
+ {{ item }}
38
+ {%- endfor %}
39
+ {% endif %}
40
+ {%- endblock %}
41
+
42
+ {%- block exceptions %}
43
+ {%- if exceptions %}
44
+ .. rubric:: {{ _('Exceptions') }}
45
+
46
+ .. autosummary::
47
+ {% for item in exceptions %}
48
+ {{ item }}
49
+ {%- endfor %}
50
+ {% endif %}
51
+ {%- endblock %}
52
+
53
+ {%- block modules %}
54
+ {%- if modules %}
55
+ .. rubric:: Modules
56
+
57
+ .. autosummary::
58
+ :toctree:
59
+ :recursive:
60
+ {% for item in modules %}
61
+ {{ item }}
62
+ {%- endfor %}
63
+ {% endif %}
64
+ {%- endblock %}
65
+
@@ -293,6 +293,14 @@ EEGDash currently exposes **{dataset_count} OpenNeuro EEG datasets** that are
293
293
  registered dynamically from mongo database. The table below summarises
294
294
  the distribution by experimental type as tracked in the summary file.
295
295
 
296
+ Base Dataset API
297
+ ----------------
298
+
299
+ .. toctree::
300
+ :maxdepth: 1
301
+
302
+ eegdash.dataset.EEGChallengeDataset
303
+
296
304
  .. list-table:: Dataset counts by experimental type
297
305
  :widths: 60 20
298
306
  :header-rows: 1
@@ -314,6 +322,22 @@ All Datasets
314
322
  """
315
323
 
316
324
 
325
+ BASE_DATASET_TEMPLATE = """{notice}.. _api_eegdash_challenge_dataset:
326
+
327
+ .. currentmodule:: eegdash.dataset
328
+
329
+ EEGChallengeDataset
330
+ ===================
331
+
332
+ .. autoclass:: eegdash.dataset.EEGChallengeDataset
333
+ :members:
334
+ :undoc-members:
335
+ :show-inheritance:
336
+ :member-order: bysource
337
+
338
+ """
339
+
340
+
317
341
  def _write_if_changed(path: Path, content: str) -> bool:
318
342
  """Write ``content`` to ``path`` if it differs from the current file."""
319
343
  existing = path.read_text(encoding="utf-8") if path.exists() else None
@@ -540,6 +564,11 @@ def _generate_dataset_docs(app) -> None:
540
564
  if _write_if_changed(index_path, index_content):
541
565
  LOGGER.info("[dataset-docs] Updated %s", index_path.relative_to(app.srcdir))
542
566
 
567
+ base_content = BASE_DATASET_TEMPLATE.format(notice=AUTOGEN_NOTICE)
568
+ base_path = dataset_dir / "eegdash.dataset.EEGChallengeDataset.rst"
569
+ if _write_if_changed(base_path, base_content):
570
+ LOGGER.info("[dataset-docs] Updated %s", base_path.relative_to(app.srcdir))
571
+
543
572
  generated_paths: set[Path] = set()
544
573
  for name in dataset_names:
545
574
  title = f"eegdash.dataset.{name}"
@@ -1,3 +1,7 @@
1
+ .. title:: Dataset landscape
2
+
3
+ .. rubric:: Dataset landscape
4
+
1
5
  .. raw:: html
2
6
 
3
7
  <figure class="eegdash-figure" style="margin: 0 0 1.25rem 0;">
@@ -1,3 +1,7 @@
1
+ .. title:: Participant Distribution by Modality
2
+
3
+ .. rubric:: Distribution of Sample Sizes Varies by Experimental Modality
4
+
1
5
  .. raw:: html
2
6
 
3
7
  <figure class="eegdash-figure" style="margin: 0 0 1.25rem 0;">
@@ -0,0 +1,20 @@
1
+ .. title:: Dataset flow
2
+
3
+ .. rubric:: Sankey diagrams of EEGDash Datasets by Population, Modality, and Cognitive Domain
4
+
5
+ .. raw:: html
6
+
7
+ <figure class="eegdash-figure" style="margin: 0 0 1.25rem 0;">
8
+
9
+ .. raw:: html
10
+ :file: ../_static/dataset_generated/dataset_sankey.html
11
+
12
+ .. raw:: html
13
+
14
+ <figcaption class="eegdash-caption">
15
+ Figure: Dataset flow across population, modality, and cognitive domain.
16
+ Link thickness is proportional to the total number of subjects, and the tooltip
17
+ reports both subject and dataset counts. Hover and click legend entries to
18
+ explore specific segments.
19
+ </figcaption>
20
+ </figure>
@@ -0,0 +1,27 @@
1
+ .. title:: EEG Datasets Table
2
+
3
+ .. rubric:: EEG Datasets Table
4
+
5
+ The data in EEG-DaSh originates from a collaboration involving 25 laboratories, encompassing 27,053 participants. This extensive collection includes M-EEG data, which is a combination of EEG and MEG signals. The data is sourced from various studies conducted by these labs,
6
+ 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.
7
+
8
+ In addition, EEG-DaSh will incorporate a subset of the data converted from `NEMAR <https://nemar.org/>`__, which includes 330 MEEG BIDS-formatted datasets, further expanding the archive with well-curated, standardized neuroelectromagnetic data.
9
+
10
+ .. raw:: html
11
+
12
+ <figure class="eegdash-figure" style="margin: 0 0 1.25rem 0;">
13
+
14
+ .. raw:: html
15
+ :file: ../_static/dataset_generated/dataset_summary_table.html
16
+
17
+ .. raw:: html
18
+
19
+ <figcaption class="eegdash-caption">
20
+ Table: Sortable catalogue of EEG‑DaSh datasets. Use the “Filters” button to open column filters;
21
+ click a column header to jump directly to a filter pane. The Total row is pinned at the bottom.
22
+ * means that we use the median value across multiple recordings in the dataset, and empty cells
23
+ when the metainformation is not extracted yet.
24
+ </figcaption>
25
+ </figure>
26
+
27
+ Pathology, modality, and dataset type now surface as consistent color-coded tags so you can scan the table at a glance.
@@ -10,13 +10,11 @@
10
10
 
11
11
  .. rst-class:: dataset-summary-article
12
12
 
13
- Datasets
14
- =========
13
+ Datasets Catalog
14
+ ================
15
15
 
16
16
  To leverage recent and ongoing advancements in large-scale computational methods and to ensure the preservation of scientific data generated from publicly funded research, the EEG-DaSh data archive will create a data-sharing resource for MEEG (EEG, MEG) data contributed by collaborators for machine learning (ML) and deep learning (DL) applications.
17
17
 
18
- The archive is currently still in :bdg-danger:`beta testing` mode, so be kind.
19
-
20
18
  .. raw:: html
21
19
 
22
20
  <script src="https://cdn.plot.ly/plotly-3.1.0.min.js"></script>
@@ -27,10 +25,16 @@ The archive is currently still in :bdg-danger:`beta testing` mode, so be kind.
27
25
 
28
26
  .. include:: dataset_summary/table.rst
29
27
 
30
- .. tab-item:: Participant KDE
28
+ .. tab-item:: Participant Distribution
31
29
 
32
30
  .. include:: dataset_summary/kde.rst
33
31
 
34
- .. tab-item:: Landscape
32
+ .. tab-item:: Dataset Flow
33
+
34
+ .. include:: dataset_summary/sankey.rst
35
+
36
+ .. tab-item:: Scatter of Sample Size vs. Recording Duration
35
37
 
36
38
  .. include:: dataset_summary/bubble.rst
39
+
40
+ The archive is currently still in :bdg-danger:`beta testing` mode, so be kind.
@@ -20,11 +20,14 @@ EEG Dash Homepage
20
20
 
21
21
 
22
22
  .. rst-class:: h4 text-center font-weight-light my-4
23
-
24
23
  The EEG-DaSh data archive will establish a data-sharing resource for MEEG (EEG, MEG) data, enabling
25
24
  large-scale computational advancements to preserve and share scientific data from publicly funded
26
25
  research for machine learning and deep learning applications.
27
26
 
27
+ .. rst-class:: text-center
28
+
29
+ **Note:** The "DaSh" in EEG-DaSh stands for **Data Share**.
30
+
28
31
  The EEG-DaSh data archive is a collaborative effort led by the University of California, San Diego (UCSD) and Ben-Gurion University of the Negev (BGU) and partially funded by the National Science Foundation (NSF). All are welcome to contribute to the https://github.com/sccn/EEGDash project.
29
32
 
30
33
  The archive is currently still in :bdg-danger:`beta testing` mode, so be kind.
@@ -1,16 +1,21 @@
1
1
  .. _user_guide:
2
2
 
3
+ :html_theme.sidebar_secondary.remove: true
4
+
5
+ .. currentmodule:: eegdash.api
6
+
7
+
3
8
  User Guide
4
9
  ==========
5
10
 
6
- This guide provides a comprehensive overview of the ``eegdash`` library, focusing on its core data access object, ``EEGDashDataset``. You will learn how to use this object to find, access, and manage EEG data for your research and analysis tasks.
11
+ This guide provides a comprehensive overview of the :mod:`eegdash` library, focusing on its core data access object, :class:`~eegdash.api.EEGDashDataset`. You will learn how to use this object to find, access, and manage EEG data for your research and analysis tasks.
7
12
 
8
13
  The EEGDash Object
9
14
  ------------------
10
15
 
11
- While :class:`~eegdash.EEGDashDataset` is the main tool for loading data for machine learning, the :class:`~eegdash.EEGDash` object provides a lower-level interface for directly interacting with the metadata database. It is useful for exploring the available data, performing complex queries, or managing metadata records.
16
+ While :class:`~eegdash.api.EEGDashDataset` is the main tool for loading data for machine learning, the :class:`~eegdash.api.EEGDash` object provides a lower-level interface for directly interacting with the metadata database. It is useful for exploring the available data, performing complex queries, or managing metadata records.
12
17
 
13
- Initializing ``EEGDash``
18
+ Initializing EEGDash
14
19
  ~~~~~~~~~~~~~~~~~~~~~~~~
15
20
 
16
21
  You can create a client to connect to the public database like this:
@@ -38,25 +43,25 @@ The ``find()`` method allows you to query the database for records matching spec
38
43
  records_advanced = eegdash.find(query)
39
44
  print(f"Found {len(records_advanced)} records with advanced query.")
40
45
 
41
- ``EEGDash`` vs. ``EEGDashDataset``
46
+ EEGDash vs. EEGDashDataset
42
47
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
48
 
44
49
  It's important to understand the distinction between these two objects:
45
50
 
46
- - **EEGDash**: Use this for querying and managing metadata. It returns a list of dictionaries, where each dictionary is a record from the database.
47
- - **EEGDashDataset**: Use this when you need to load EEG data for analysis or machine learning. It returns a PyTorch-compatible dataset object where each item can load the actual EEG signal.
51
+ - :class:`~eegdash.api.EEGDash`: Use this for querying and managing metadata. It returns a list of dictionaries, where each dictionary is a record from the database.
52
+ - :class:`~eegdash.api.EEGDashDataset`: Use this when you need to load EEG data for analysis or machine learning. It returns a PyTorch-compatible dataset object where each item can load the actual EEG signal.
48
53
 
49
- In general, you will use ``EEGDashDataset`` for most of your data loading needs.
54
+ In general, you will use :class:`~eegdash.api.EEGDashDataset` for most of your data loading needs.
50
55
 
51
56
  The EEGDashDataset Object
52
57
  -------------------------
53
58
 
54
- The :class:`~eegdash.EEGDashDataset` is the primary entry point for working with EEG recordings in ``eegdash``. It acts as a high-level interface that allows you to query a metadata database and load corresponding EEG data, either from a remote source or from a local cache.
59
+ The :class:`~eegdash.api.EEGDashDataset` is the primary entry point for working with EEG recordings in :mod:`eegdash`. It acts as a high-level interface that allows you to query a metadata database and load corresponding EEG data, either from a remote source or from a local cache.
55
60
 
56
- Initializing ``EEGDashDataset``
61
+ Initializing EEGDashDataset
57
62
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58
63
 
59
- To get started, you need to create an instance of ``EEGDashDataset``. The two most important parameters are ``cache_dir`` and ``dataset``.
64
+ To get started, you need to create an instance of :class:`~eegdash.api.EEGDashDataset`. The two most important parameters are ``cache_dir`` and ``dataset``.
60
65
 
61
66
  - ``cache_dir``: This is the local directory where ``eegdash`` will store downloaded data.
62
67
  - ``dataset``: The identifier of the dataset you want to work with (e.g., ``"ds002718"``).
@@ -80,7 +85,7 @@ This will create a dataset object containing all recordings from ``ds002718``. T
80
85
  Querying for Specific Data
81
86
  --------------------------
82
87
 
83
- ``EEGDashDataset`` offers powerful filtering capabilities, allowing you to select a subset of recordings based on various criteria. You can filter by task, subject, session, or run.
88
+ :class:`~eegdash.api.EEGDashDataset` offers powerful filtering capabilities, allowing you to select a subset of recordings based on various criteria. You can filter by task, subject, session, or run.
84
89
 
85
90
  Filtering by Task
86
91
  ~~~~~~~~~~~~~~~~~
@@ -162,11 +167,11 @@ For more complex queries, you can pass a MongoDB-style query dictionary directly
162
167
  Working with Local Data (Offline Mode)
163
168
  --------------------------------------
164
169
 
165
- ``eegdash`` also supports working with local data that you have already downloaded or manage separately. By setting ``download=False``, you can instruct ``EEGDashDataset`` to use local BIDS-compliant data instead of accessing the database or remote storage.
170
+ :mod:`eegdash` also supports working with local data that you have already downloaded or manage separately. By setting ``download=False``, you can instruct :class:`~eegdash.api.EEGDashDataset` to use local BIDS-compliant data instead of accessing the database or remote storage.
166
171
 
167
172
  To use this feature, your data must be organized in a BIDS-like structure within your ``cache_dir``. For example, if your ``cache_dir`` is ``./eeg_data`` and your dataset is ``ds002718``, the files should be located at ``./eeg_data/ds002718/``.
168
173
 
169
- Here is how to use ``EEGDashDataset`` in offline mode:
174
+ Here is how to use :class:`~eegdash.api.EEGDashDataset` in offline mode:
170
175
 
171
176
  .. code-block:: python
172
177
 
@@ -179,12 +184,12 @@ Here is how to use ``EEGDashDataset`` in offline mode:
179
184
 
180
185
  print(f"Found {len(local_dataset)} local recordings.")
181
186
 
182
- When ``download=False``, ``eegdash`` will scan the specified directory for EEG files and construct the dataset from the local file system. This is useful for environments without internet access or when you want to work with your own curated datasets.
187
+ When ``download=False``, :mod:`eegdash` will scan the specified directory for EEG files and construct the dataset from the local file system. This is useful for environments without internet access or when you want to work with your own curated datasets.
183
188
 
184
189
  Accessing Data from the Dataset
185
190
  -------------------------------
186
191
 
187
- Once you have your ``EEGDashDataset`` object, you can access individual recordings as if it were a list. Each item in the dataset is an ``EEGDashBaseDataset`` object, which contains the metadata and methods to load the actual EEG data.
192
+ Once you have your :class:`~eegdash.api.EEGDashDataset` object, you can access individual recordings as if it were a list. Each item in the dataset is an :class:`~eegdash.data_utils.EEGDashBaseDataset` object, which contains the metadata and methods to load the actual EEG data.
188
193
 
189
194
  .. code-block:: python
190
195
 
@@ -199,4 +204,4 @@ Once you have your ``EEGDashDataset`` object, you can access individual recordin
199
204
  print(f"Sampling frequency: {raw.info['sfreq']} Hz")
200
205
  print(f"Number of channels: {len(raw.ch_names)}")
201
206
 
202
- This provides a powerful and flexible way to integrate ``eegdash`` into your data analysis pipelines, whether you are working with remote or local data.
207
+ This provides a powerful and flexible way to integrate ``eegdash`` into your data analysis pipelines, whether you are working with remote or local data.
@@ -18,4 +18,4 @@ _init_mongo_client()
18
18
 
19
19
  __all__ = ["EEGDash", "EEGDashDataset", "EEGChallengeDataset", "preprocessing"]
20
20
 
21
- __version__ = "0.4.0.dev150"
21
+ __version__ = "0.4.0.dev173498563"
@@ -198,7 +198,7 @@
198
198
  197,ds003751,38,38,1,128,250,19.95,4.71 GB,5057922307,0,ds003751,Healthy,other,Multisensory,Affect
199
199
  198,ds003421,80,20,1,257,1000,11.604,76.77 GB,82433418198,0,ds003421,Healthy,10-20,Multisensory,Decision-making
200
200
  199,ds002158,117,20,1,,,0.0,428.59 GB,460190030981,0,ds002158,Healthy,10-20,Visual,Affect
201
- 200,ds004951,23,11,1,63,1000,29.563,22.00 GB,23627352274,0,ds004951,?,,Tactile,Learning
201
+ 200,ds004951,23,11,1,63,1000,29.563,22.00 GB,23627352274,0,ds004951,,,Tactile,Learning
202
202
  201,ds004802,38,38,1,65,"2048,512",0.0,29.34 GB,31504070800,0,ds004802,Other,,Visual,Affect
203
203
  202,ds004816,20,20,1,63,1000,0.0,23.31 GB,25028989553,0,ds004816,Healthy,,Visual,Attention
204
204
  203,ds005873,2850,125,1,2,256,11935.09,117.21 GB,125851664268,0,,,,,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eegdash
3
- Version: 0.4.0.dev150
3
+ Version: 0.4.0.dev173498563
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
@@ -8,11 +8,13 @@ docs/source/dataset_summary.rst
8
8
  docs/source/index.rst
9
9
  docs/source/sg_execution_times.rst
10
10
  docs/source/user_guide.rst
11
+ docs/source/_templates/autosummary/module.rst
11
12
  docs/source/api/api.rst
12
13
  docs/source/api/api_core.rst
13
14
  docs/source/api/api_features.rst
14
15
  docs/source/dataset_summary/bubble.rst
15
16
  docs/source/dataset_summary/kde.rst
17
+ docs/source/dataset_summary/sankey.rst
16
18
  docs/source/dataset_summary/table.rst
17
19
  docs/source/install/install.rst
18
20
  docs/source/install/install_pip.rst
@@ -1,174 +0,0 @@
1
- .. rubric:: EEG Datasets Table
2
-
3
- The data in EEG-DaSh originates from a collaboration involving 25 laboratories, encompassing 27,053 participants. This extensive collection includes M-EEG data, which is a combination of EEG and MEG signals. The data is sourced from various studies conducted by these labs,
4
- 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.
5
-
6
- In addition, EEG-DaSh will incorporate a subset of the data converted from `NEMAR <https://nemar.org/>`__, which includes 330 MEEG BIDS-formatted datasets, further expanding the archive with well-curated, standardized neuroelectromagnetic data.
7
-
8
- .. raw:: html
9
-
10
- <figure class="eegdash-figure" style="margin: 0 0 1.25rem 0;">
11
-
12
- .. raw:: html
13
- :file: ../_static/dataset_generated/dataset_summary_table.html
14
-
15
- .. raw:: html
16
-
17
- <figcaption class="eegdash-caption">
18
- Table: Sortable catalogue of EEG‑DaSh datasets. Use the “Filters” button to open column filters;
19
- click a column header to jump directly to a filter pane. The Total row is pinned at the bottom.
20
- * means that we use the median value across multiple recordings in the dataset, and empty cells
21
- when the metainformation is not extracted yet.
22
- </figcaption>
23
- </figure>
24
-
25
- Pathology, modality, and dataset type now surface as consistent color-coded tags so you can scan the table at a glance and reuse the same visual language as the model catalog.
26
-
27
- .. raw:: html
28
-
29
- <!-- jQuery + DataTables core -->
30
- <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
31
- <link rel="stylesheet" href="https://cdn.datatables.net/v/bm/dt-1.13.4/datatables.min.css"/>
32
- <script src="https://cdn.datatables.net/v/bm/dt-1.13.4/datatables.min.js"></script>
33
-
34
- <!-- Buttons + SearchPanes (+ Select required by SearchPanes) -->
35
- <link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.4.2/css/buttons.dataTables.min.css">
36
- <script src="https://cdn.datatables.net/buttons/2.4.2/js/dataTables.buttons.min.js"></script>
37
- <link rel="stylesheet" href="https://cdn.datatables.net/select/1.7.0/css/select.dataTables.min.css">
38
- <link rel="stylesheet" href="https://cdn.datatables.net/searchpanes/2.3.1/css/searchPanes.dataTables.min.css">
39
- <script src="https://cdn.datatables.net/select/1.7.0/js/dataTables.select.min.js"></script>
40
- <script src="https://cdn.datatables.net/searchpanes/2.3.1/js/dataTables.searchPanes.min.js"></script>
41
-
42
- <style>
43
- /* Styling for the Total row (placed in tfoot) */
44
- table.sd-table tfoot td {
45
- font-weight: 600;
46
- border-top: 2px solid rgba(0,0,0,0.2);
47
- background: #f9fafb;
48
- /* Match body cell padding to keep perfect alignment */
49
- padding: 8px 10px !important;
50
- vertical-align: middle;
51
- }
52
-
53
- /* Right-align numeric-like columns (2..8) consistently for body & footer */
54
- table.sd-table tbody td:nth-child(n+2),
55
- table.sd-table tfoot td:nth-child(n+2) {
56
- text-align: right;
57
- }
58
- /* Keep first column (Dataset/Total) left-aligned */
59
- table.sd-table tbody td:first-child,
60
- table.sd-table tfoot td:first-child {
61
- text-align: left;
62
- }
63
- </style>
64
-
65
- <script>
66
- // Helper: robustly extract values for SearchPanes when needed
67
- function tagsArrayFromHtml(html) {
68
- if (html == null) return [];
69
- // If it's numeric or plain text, just return as a single value
70
- if (typeof html === 'number') return [String(html)];
71
- if (typeof html === 'string' && html.indexOf('<') === -1) return [html.trim()];
72
- // Else parse any .tag elements inside HTML
73
- var tmp = document.createElement('div');
74
- tmp.innerHTML = html;
75
- var tags = Array.from(tmp.querySelectorAll('.tag')).map(function(el){
76
- return (el.textContent || '').trim();
77
- });
78
- return tags.length ? tags : [tmp.textContent.trim()];
79
- }
80
-
81
- // Helper: parse human-readable sizes like "4.31 GB" into bytes (number)
82
- function parseSizeToBytes(text) {
83
- if (!text) return 0;
84
- var s = String(text).trim();
85
- var m = s.match(/([\d,.]+)\s*(TB|GB|MB|KB|B)/i);
86
- if (!m) return 0;
87
- var value = parseFloat(m[1].replace(/,/g, ''));
88
- var unit = m[2].toUpperCase();
89
- var factor = { B:1, KB:1024, MB:1024**2, GB:1024**3, TB:1024**4 }[unit] || 1;
90
- return value * factor;
91
- }
92
-
93
- $(function () {
94
- var $table = $('#datasets-table');
95
- if (!$table.length) {
96
- return;
97
- }
98
- if ($.fn.DataTable && $.fn.DataTable.isDataTable($table[0])) {
99
- return;
100
- }
101
-
102
- // 1) Move the "Total" row into <tfoot> so sorting/filtering never moves it
103
- var $tbody = $table.find('tbody');
104
- var $total = $tbody.find('tr').filter(function(){
105
- return $(this).find('td').eq(0).text().trim() === 'Total';
106
- });
107
- if ($total.length) {
108
- var $tfoot = $table.find('tfoot');
109
- if (!$tfoot.length) $tfoot = $('<tfoot/>').appendTo($table);
110
- $total.appendTo($tfoot);
111
- }
112
-
113
- // 2) Initialize DataTable with SearchPanes button
114
- var FILTER_COLS = [1,2,3,4,5,6];
115
- // Detect the index of the size column by header text
116
- var sizeIdx = (function(){
117
- var idx = -1;
118
- $table.find('thead th').each(function(i){
119
- var t = $(this).text().trim().toLowerCase();
120
- if (t === 'size on disk' || t === 'size') idx = i;
121
- });
122
- return idx;
123
- })();
124
-
125
- var table = $table.DataTable({
126
- dom: 'Blfrtip',
127
- paging: false,
128
- searching: true,
129
- info: false,
130
- language: {
131
- search: 'Filter dataset:',
132
- searchPanes: { collapse: { 0: 'Filters', _: 'Filters (%d)' } }
133
- },
134
- buttons: [{
135
- extend: 'searchPanes',
136
- text: 'Filters',
137
- config: { cascadePanes: true, viewTotal: true, layout: 'columns-4', initCollapsed: false }
138
- }],
139
- columnDefs: (function(){
140
- var defs = [
141
- { searchPanes: { show: true }, targets: FILTER_COLS }
142
- ];
143
- if (sizeIdx !== -1) {
144
- defs.push({
145
- targets: sizeIdx,
146
- render: function(data, type) {
147
- if (type === 'sort' || type === 'type') {
148
- return parseSizeToBytes(data);
149
- }
150
- return data;
151
- }
152
- });
153
- }
154
- return defs;
155
- })()
156
- });
157
-
158
- // 3) UX: click a header to open the relevant filter pane
159
- $table.find('thead th').each(function (i) {
160
- if ([1,2,3,4].indexOf(i) === -1) return;
161
- $(this).css('cursor','pointer').attr('title','Click to filter this column');
162
- $(this).on('click', function () {
163
- table.button('.buttons-searchPanes').trigger();
164
- setTimeout(function () {
165
- var idx = [1,2,3,4].indexOf(i);
166
- var $container = $(table.searchPanes.container());
167
- var $pane = $container.find('.dtsp-pane').eq(idx);
168
- var $title = $pane.find('.dtsp-title');
169
- if ($title.length) $title.trigger('click');
170
- }, 0);
171
- });
172
- });
173
- });
174
- </script>