Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
b3481d3
Sinc the documentation (#223)
bruAristimunha Jan 8, 2026
c9bd6e0
Use API dataset summary for CI docs (#224)
bruAristimunha Jan 12, 2026
3c3dc6b
Fix warning spam during EEGChallengeDataset download (#226)
bruAristimunha Jan 12, 2026
9fee4b7
feat: Mass Ingestion Fixes and Optimization (#227)
bruAristimunha Jan 13, 2026
4d623aa
Merge branch 'develop' into main
bruAristimunha Jan 13, 2026
d185e2c
double release
bruAristimunha Jan 13, 2026
f78f3bd
fix(docs): remove circular dependency in Makefile catch-all rule
bruAristimunha Jan 13, 2026
2e3e7dd
fix(docs): add explicit no-op rule for Makefile to prevent catch-all …
bruAristimunha Jan 13, 2026
7d8ef53
fix(docs): explicitely define html target recipe to fix silent failure
bruAristimunha Jan 13, 2026
0a936f2
updating the Makefile
bruAristimunha Jan 13, 2026
b3157b8
[MNT] Deploying the webpage (#230)
bruAristimunha Jan 13, 2026
eccb62a
fix: correct documentation build output path from build/html to _buil…
bruAristimunha Jan 13, 2026
9bfd70a
docs: parallelize dataset rst generation with ThreadPoolExecutor
bruAristimunha Jan 15, 2026
1e4c685
Docs: Parallelize build, improve aesthetics, and fix quickstart (#232)
bruAristimunha Jan 16, 2026
781829a
Update README.md
bruAristimunha Jan 20, 2026
a8b9043
feat: Add clinical breakdown and dataset growth plots to documentation
bruAristimunha Jan 20, 2026
d1a45a2
Merge main into develop to sync branches
bruAristimunha Jan 20, 2026
19bbb75
Merge remote-tracking branch 'origin/develop' into improving-the-desc…
bruAristimunha Jan 20, 2026
3c57ddd
docs: Move citation to page top and enhance metadata mapping
bruAristimunha Jan 20, 2026
6d91505
fix(digest): improve MEG metadata extraction and fix name variable bug
bruAristimunha Jan 20, 2026
f4c3e5d
feat(ingestion): add mandatory validation with data quality checks
bruAristimunha Jan 20, 2026
9613b3a
feat(schema): add tags structure for dataset classification
bruAristimunha Jan 20, 2026
94a26aa
feat(docs): update prepare_summary_tables to consume tags structure
bruAristimunha Jan 20, 2026
ea1553b
feat(docs): add README section and use computed fields from API
bruAristimunha Jan 20, 2026
46b459e
fix(docs): use computed_title from API for dataset pages
bruAristimunha Jan 21, 2026
bddf54d
feat(docs): update plot scripts and summary tables for tags structure
bruAristimunha Jan 21, 2026
7d215d0
feat(nemar): add NEMAR CLI support for dataset fetching
bruAristimunha Jan 21, 2026
c1810f1
fix: standardize bids_relpath as canonical key + improve docs
bruAristimunha Jan 21, 2026
37faa8a
updating details about the documentation
bruAristimunha Jan 21, 2026
2a9781a
docs: add feedback section with GitHub issue button for dataset pages
bruAristimunha Jan 21, 2026
d213d89
feat(docs): replace categorization with tags in dataset pages
bruAristimunha Jan 21, 2026
1b56c80
fix(plots): remove redundant titles from growth and clinical breakdow…
bruAristimunha Jan 21, 2026
17d53a1
feat(plots): add modality toggle to ridgeline chart
bruAristimunha Jan 21, 2026
a6a2a52
fix(plots): convert numpy arrays to lists for Plotly compatibility
bruAristimunha Jan 21, 2026
f457474
fix(plots): improve clinical breakdown color scheme and data handling
bruAristimunha Jan 21, 2026
cc338ec
fix(plots): improve plot scaling and color consistency
bruAristimunha Jan 21, 2026
f84cbd3
feat(api): add chart-data endpoint support and improve API usage
bruAristimunha Jan 22, 2026
a147277
chore: gitignore CLAUDE.md and .claude folder for privacy
bruAristimunha Jan 22, 2026
a03c100
feat(plots): improve chart rendering and add DOI date fallback
bruAristimunha Jan 22, 2026
f0d687a
Delete .env.example
bruAristimunha Jan 22, 2026
7d0c133
refactor: move nested functions to module level for PEP8 compliance
bruAristimunha Jan 22, 2026
de21501
refactor: eliminate all nested function definitions for PEP8 compliance
bruAristimunha Jan 22, 2026
b1c4723
refactor(colours): auto-generate case aliases for color mappings
bruAristimunha Jan 22, 2026
305da16
revert: remove NEMAR CLI support, restore GitHub-only approach
bruAristimunha Jan 22, 2026
f68ed4e
refactor: move imports to module level for PEP8 compliance
bruAristimunha Jan 22, 2026
44fe526
feat(parsers): add VHDR, SNIRF, and MEF3 metadata parsers
bruAristimunha Jan 22, 2026
a91a712
refactor(schemas): remove deprecated Paradigm class
bruAristimunha Jan 22, 2026
7502cef
fix(deps): pin pandas<2.2 for wfdb compatibility
bruAristimunha Jan 22, 2026
4891578
fix(pre-commit): remove PLC0415 rule for lazy imports
bruAristimunha Jan 22, 2026
3af33b9
test(schemas): remove test for deprecated Paradigm class
bruAristimunha Jan 22, 2026
a7e7b5b
test(schemas): add parametrized contract tests for schema sync
bruAristimunha Jan 22, 2026
ddd470d
refactor: consolidate utilities in plot_dataset and ingestion parsers
bruAristimunha Jan 22, 2026
35a40bb
Fix ntimes handling and dataset utilities
bruAristimunha Jan 22, 2026
9d43757
fix(tests): update registry tests for correct field mappings
bruAristimunha Jan 22, 2026
4de92e8
Fix SVD entropy for older numpy
bruAristimunha Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 92 additions & 4 deletions .github/workflows/doc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ on:
push:
branches:
- "main"
- "develop"
pull_request:
branches:
- '*' # all branches, including forks

permissions:
contents: write
pull-requests: write

jobs:
docs:
Expand Down Expand Up @@ -114,11 +116,97 @@ jobs:
cd docs
uv run make html

# New step to deploy the docs to the gh-pages branch
- name: Deploy to GitHub Pages
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
# Upload documentation as artifact for all builds
- name: Upload documentation artifact
uses: actions/upload-artifact@v4
with:
name: documentation-html
path: ./docs/_build/html
retention-days: 14

# Deploy PR preview to surge.sh (optional - requires SURGE_TOKEN secret)
- name: Deploy PR Preview
if: github.event_name == 'pull_request'
id: deploy-preview
continue-on-error: true
env:
SURGE_TOKEN: ${{ secrets.SURGE_TOKEN }}
run: |
if [ -z "$SURGE_TOKEN" ]; then
echo "SURGE_TOKEN not configured, skipping live preview deployment"
exit 0
fi
npm install -g surge
DEPLOY_DOMAIN="eegdash-pr-${{ github.event.pull_request.number }}.surge.sh"
surge ./docs/_build/html $DEPLOY_DOMAIN --token $SURGE_TOKEN
echo "preview_url=https://$DEPLOY_DOMAIN" >> $GITHUB_OUTPUT

# Comment on PR with preview link
- name: Comment PR with Preview Link
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const previewUrl = '${{ steps.deploy-preview.outputs.preview_url }}' || '';
const artifactUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
const surgeSuccess = '${{ steps.deploy-preview.outcome }}' === 'success';

let body = `## 📚 Documentation Preview\n\n`;

if (surgeSuccess && previewUrl) {
body += `| Resource | Link |\n`;
body += `|----------|------|\n`;
body += `| 🌐 **Live Preview** | [${previewUrl}](${previewUrl}) |\n`;
body += `| 📦 Download Artifact | [View Workflow Run](${artifactUrl}) |\n\n`;
body += `> This preview will be available for 14 days. The live preview updates with each push to this PR.`;
} else {
body += `📦 **[Download Documentation Artifact](${artifactUrl})**\n\n`;
body += `> Download the \`documentation-html\` artifact from the workflow run to view the docs locally.\n\n`;
body += `💡 *To enable live previews, add a \`SURGE_TOKEN\` secret to this repository. See [surge.sh](https://surge.sh) for setup instructions.*`;
}

// Find existing comment
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});

const botComment = comments.find(comment =>
comment.user.type === 'Bot' &&
comment.body.includes('Documentation Preview')
);

if (botComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
body: body
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: body
});
}
# we are only deploying from develop for now onwards
# # Deploy the docs to the gh-pages branch (main and develop)
# - name: Deploy to GitHub Pages (main)
# if: github.event_name == 'push' && github.ref == 'refs/heads/main'
# uses: peaceiris/actions-gh-pages@v4
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# publish_dir: ./docs/_build/html
# destination_dir: archive
# keep_files: true

- name: Deploy to GitHub Pages (develop)
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/build/html
publish_dir: ./docs/_build/html
cname: eegdash.org
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ jobs:
- name: Run Tests
env:
EEGDASH_API_TOKEN: ${{ secrets.EEGDASH_API_TOKEN }}
run: pytest -vvv -s --tb=long --durations=0 --log-cli-level=INFO --cov=eegdash --cov-report=xml tests --verbose
run: pytest -vvv -s --tb=long --durations=0 --log-cli-level=INFO --cov=eegdash --cov-report=xml -o "addopts=-ra --durations=10" tests --verbose

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,11 @@ cover
data/
digestion_output/
dist/
# Documentation
docs/_build/
docs/build/
docs/auto_examples/
docs/auto_tutorials/
docs/build/
docs/modules/generated/
docs/source/_static/dataset_generated/
docs/source/api/api_dataset.rst
Expand All @@ -59,3 +61,5 @@ tests/.testeegdash/
tests/data/
*/*/test_cache/*
test_cache/*
CLAUDE.md
.claude/
11 changes: 10 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ repos:
- --select=E,W,F,D,I,NPY201
- --ignore=E402,E501,D100,D101,D102,D103,D104,D105,D107,D205,D400,D415,D417,F403,D401,E741,E722,D419
files: ^(eegdash|docs|notebooks|scripts|tests)/
exclude: (\.ipynb$|docs/prepare_summary_tables\.py$)
exclude: (\.ipynb$)
- id: ruff
name: ruff examples
args:
Expand Down Expand Up @@ -53,3 +53,12 @@ repos:
hooks:
- id: blacken-docs
exclude: ^.github|CONTRIBUTING.md|README.md|docs/|examples/|notebooks/|scripts/|tests/
- repo: local
hooks:
- id: no-nested-functions
name: Check for nested function definitions
entry: python scripts/check_nested_functions.py
language: python
types: [python]
files: ^(eegdash|docs|scripts)/
exclude: (\.ipynb$|docs/source/generated/|docs/_build/)
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[![Downloads](https://pepy.tech/badge/eegdash)](https://pepy.tech/project/eegdash)
[![Coverage](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Feegdash%2FEEGDash%2Fmain%2Fcoverage.json&query=%24.totals.percent_covered_display&suffix=%25&label=coverage)](https://github.com/eegdash/EEGDash/blob/main/coverage.json)

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.
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

## Data source

Expand Down
23 changes: 23 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
coverage:
precision: 2
round: down
range: "60...100"

status:
project:
default:
# Allow coverage to drop by up to 5% before failing
threshold: 5%
# Only fail if coverage drops below 60%
target: 60%
patch:
default:
# New code should have at least 70% coverage
target: 70%
# Allow some flexibility for patches
threshold: 10%

comment:
layout: "reach,diff,flags,files"
behavior: default
require_changes: false
27 changes: 15 additions & 12 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# Minimal makefile for Sphinx documentation
#

SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build
BUILDDIR = _build
PKG ?= eegdash
APIDIR := $(SOURCEDIR)/api

.PHONY: help clean apidoc html html-noplot html-fast

help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: apidoc
apidoc:
# Generate full API docs, then prune duplicates covered by autosummary
@rm -f "$(APIDIR)"/dataset/eegdash.features*
Expand All @@ -18,24 +21,23 @@ apidoc:


# Standard build runs examples
html: apidoc
html: apidoc
python prepare_summary_tables.py --target $(BUILDDIR)
$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

# Fast build: do NOT execute examples (sphinx-gallery)
.PHONY: html-noplot
html-noplot: apidoc
html-noplot: apidoc
@python prepare_summary_tables.py --target $(BUILDDIR)
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" \
$(SPHINXOPTS) -D sphinx_gallery_conf.plot_gallery=0 $(O)

# Very fast build: limit datasets to 5
.PHONY: html-fast
html-fast: apidoc
@EEGDASH_DOC_LIMIT=5 python prepare_summary_tables.py --target $(BUILDDIR)
@EEGDASH_DOC_LIMIT=5 $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" \
$(SPHINXOPTS) -D sphinx_gallery_conf.plot_gallery=0 $(O)

# Custom clean target to remove generated API docs and build files
.PHONY: clean
clean:
@echo "Removing generated API documentation..."
@rm -rf "$(APIDIR)/dataset"
Expand All @@ -47,12 +49,13 @@ clean:
@rm -rf "$(SOURCEDIR)/generated"
@rm -rf "$(SOURCEDIR)/gen_modules"
@echo "Removing build directory..."
@rm -rf "$(BUILDDIR)"
@rm -rf "$(BUILDDIR)" build
@echo "Clean completed."

.PHONY: help apidoc
Makefile: ;
# Catch-all target for other sphinx-build formats
# Prevent Makefile from matching the catch-all rule
Makefile: ;

%: Makefile
@python prepare_summary_tables.py --target $(BUILDDIR)
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
python prepare_summary_tables.py --target $(BUILDDIR)
$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
2 changes: 2 additions & 0 deletions docs/plot_dataset/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Plot generation utilities for EEGDash documentation."""

from .bubble import generate_dataset_bubble # noqa: F401
from .clinical_breakdown import generate_clinical_stacked_bar # noqa: F401
from .colours import ( # noqa: F401
CANONICAL_MAP,
COLUMN_COLOR_MAPS,
Expand All @@ -9,6 +10,7 @@
TYPE_COLOR_MAP,
hex_to_rgba,
)
from .growth import generate_dataset_growth # noqa: F401
from .plot_sankey import generate_dataset_sankey # noqa: F401
from .ridgeline import generate_modality_ridgeline # noqa: F401
from .treemap import generate_dataset_treemap # noqa: F401
Loading