From 3cca121adaa57e14879b857be0637af9e1ab37b1 Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Wed, 18 Feb 2026 08:02:31 -0800 Subject: [PATCH 1/5] Replace Jupyter/Python with Chart.js, extract join page Replace the Python/seaborn code block in news.qmd with two Chart.js bar charts (goal ratings and participant estimates) using pre-computed values from the survey data. No Python, Jupyter, or freeze cache needed. Move the collaboration invitation content from news.qmd to a new join.qmd page and add it to the navbar. Restructure news entries with date headers in reverse chronological order. Remove requirements.txt and freeze: auto from _quarto.yml since no computational documents remain. Fixes the CI failure (ModuleNotFoundError: nbformat) caused by news.qmd requiring a Python kernel at build time. Closes #14, closes #15 --- _quarto.yml | 5 +- join.qmd | 36 ++++++++++ news.qmd | 183 +++++++++++++++++++++-------------------------- requirements.txt | 4 -- 4 files changed, 118 insertions(+), 110 deletions(-) create mode 100644 join.qmd delete mode 100644 requirements.txt diff --git a/_quarto.yml b/_quarto.yml index 8748fcc..481b441 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -13,6 +13,8 @@ website: text: Team - href: datasets.qmd text: Datasets + - href: join.qmd + text: Join format: html: @@ -21,6 +23,3 @@ format: toc: true grid: sidebar-width: 40px - -execute: - freeze: auto \ No newline at end of file diff --git a/join.qmd b/join.qmd new file mode 100644 index 0000000..c6234c0 --- /dev/null +++ b/join.qmd @@ -0,0 +1,36 @@ +--- +title: "Join EEGManySteps" +--- + +We invite you to collaborate on the **EEGManySteps** initiative, aimed at understanding how different setups in mobile electroencephalography (EEG) experiments influence the results. EEGManySteps is an international, inter-institute effort focused on collecting and analyzing EEG data across multiple laboratories to investigate these influences, starting with a specific focus on gait-related features. + +We are currently forming the decision-making structure of the initiative, which may change through further open discussions. + +## How to Participate + +Please let us know via email ([eegmanysteps@gmail.com](mailto:eegmanysteps@gmail.com)) if you would like to assume one of the following roles: + +1. **Steering Committee Member** +2. **Advisory Board Member** +3. **Data Set Contributor** +4. **Analyst** + +Each role is described below. Please note that the roles of Steering Committee Member and Advisory Board Member cannot be chosen simultaneously. The final decision on your commitment can follow after some period when the responsibilities are better defined with mutual agreement. + +## Role Definitions + +**Steering Committee Members** +Expected to attend monthly meetings and take on specific tasks within the project. +*Minimal requirement: Authorship in one or more peer-reviewed MoBI paper or extensive experience in similar open science projects. Minimum active period at least 1 year.* + +**Advisory Board Members** +Provide background support and feedback during quarterly/biannual meetings to guide the project's direction. +*Minimal requirement: First or last author in a peer-reviewed MoBI/Biomechanics paper or extensive experience in similar open science projects. Minimum active period at least 1 year.* + +**Data Set Contributors** +Provide access to EEG datasets recorded in mobile settings. Detailed requirements are still to be determined. +*Minimal requirement: Responsible for the acquisition, curation, or formatting of mobile EEG data.* + +**Analysts** +Participate in analyzing specific research questions related to mobile EEG data. +*Minimal requirement: Experience with the analysis of biomechanical or MoBI data.* diff --git a/news.qmd b/news.qmd index 89e8490..6355223 100644 --- a/news.qmd +++ b/news.qmd @@ -1,78 +1,93 @@ --- -title: "EEGManySteps Initiative Collaboration Invitation" -date: "08/12/2024" -jupyter: python3 -execute: - echo: false +title: "News" --- ## Goals definition with AB +*December 2024* + We had the second meeting of SC and AB December 3rd, 2024. The meeting was used as an opportunity to discuss the goals and refine the scope of the project. Additionally, members of the SC and AB were invited to complete a survey on the project goals. A summary of the results can be found below, based on the raw data [here](./files/ab_meeting_survey_2024-12.tsv). The meeting slides can be found [here](./files/slides_ab_meeting_12_24.pdf). +**Survey summary** (26 respondents): + +The survey asked participants to rate four proposed research goals on a scale of 1-5. + +```{=html} + + + +``` -**Summary survey**: - -```{python} -import pandas as pd -import seaborn as sns -import matplotlib.pyplot as plt -import numpy as np - -# Load the data -url = "./files/ab_meeting_survey_2024-12.tsv" -data = pd.read_csv(url, sep='\t') -# Select the first 4 patterns -patterns = data.columns[:5] - -# Print a summary of the data -print("\n".join([ - "This survey was conducted during the AB meeting.", - "The participants rated the following patterns:", - f"{'\n '.join(data.columns[1:5])}.", - "", - "The following statistics were calculated:", - f"Number of participants: {len(data)}", - f"Average rating for each pattern:", - f"{'\n '.join([f'{goal.split(':')[0]}: \n Average rating {data[goal].mean():.2f}' for goal in data.columns[1:5]])}", - "", -])) - -# print the question title -print("\n", - "Please provide a rough estimate how many datasets with \n a new protocol your lab could provide (N=?)", - "\n" - ) -# print estimate density distribution for potential participants to be collected -sns.set(style="whitegrid") -plt.figure(figsize=(10, 6)) - -# retrieve n -n_subj = data["Please provide a rough estimate how many datasets with a new protocol your lab could provide (N=?):"].fillna("") - -# extract digits from pd series and sum if multiple digits are identified -def extract_digits(s): - digits = ''.join(filter(str.isdigit, str(s))) - if digits: - # Split the string by non-digit characters and take the last number - numbers = ''.join(c if c.isdigit() else ' ' for c in str(s)).split() - return int(numbers[-1]) if numbers else np.nan - return np.nan - -n_subj.apply(extract_digits) - -# plot the distribution -sns.histplot(n_subj.apply(extract_digits), bins=range(0, 100, 5), kde=True) -plt.xlabel("Estimated number of participants") -plt.xlim(0, 60) +Participants were also asked to estimate how many datasets their lab could provide with a new protocol: + +```{=html} + + ``` ---- +--- + +## Kick-off Meeting +*September 2024* -## Kick-off Meeting in September We had the first meeting of the **EEGManySteps** initiative on September 5th, 2024. The meeting was attended by 21 participants. The meeting was an opportunity to introduce the initiative, recap what happened since MoBI 2024, discuss the roles of the Steering Committee and Advisory Board, and plan the next steps. The meeting slides can be found [here](./files/slides_kickoff.pdf) and the minutes [here](https://docs.google.com/document/d/1JZ6axf8kW_PU4JE-0fuq0510ktJEFYTDPT0pab_cO0M/edit?usp=sharing). -**Next steps**: +**Next steps**: - Ask for participation via mailing lists (EEGLab, fieldtrip, MNE) - Open goal proposals @@ -85,47 +100,9 @@ We had the first meeting of the **EEGManySteps** initiative on September 5th, 20 - Position paper (2024/2025) - Apply for funding (early 2025) - ---- - -## Start of the Initiative -We invite you to collaborate on the **EEGManySteps** initiative, aimed at understanding how different setups in mobile electroencephalography (EEG) experiments influence the results. EEGManySteps is an international, inter-institute effort focused on collecting and analyzing EEG data across multiple laboratories to investigate these influences, starting with a specific focus on gait-related features. - -We are currently forming the decision-making structure of the initiative, which may change through further open discussions. - -### How to Participate - -Please let us know via email ([eegmanysteps@gmail.com](mailto:eegmanysteps@gmail.com)) if you would like to assume one of the following roles: - -1. **Steering Committee Member** -2. **Advisory Board Member** -3. **Data Set Contributor** -4. **Analyst** - -Each role is described below. Please note that the roles of Steering Committee Member and Advisory Board Member cannot be chosen simultaneously. The final decision on your commitment can follow after some period when the responsibilities are better defined with mutual agreement. - -### Tentative Role Definitions - -**Steering Committee Members** -Expected to attend monthly meetings and take on specific tasks within the project. -*Minimal requirement: Authorship in one or more peer-reviewed MoBI paper or extensive experience in similar open science projects. Minimum active period at least 1 year.* - -**Advisory Board Members:** -Provide background support and feedback during quarterly/biannual meetings to guide the project’s direction. -*Minimal requirement: First or last author in a peer-reviewed MoBI/Biomechanics paper or extensive experience in similar open science projects. Minimum active period at least 1 year.* - -**Data Set Contributors** -Provide access to EEG datasets recorded in mobile settings. Detailed requirements are still to be determined. -*Minimal requirement: Responsible for the acquisition, curation, or formatting of mobile EEG data.* - -**Analysts** -Participate in analyzing specific research questions related to mobile EEG data. -*Minimal requirement: Experience with the analysis of biomechanical or MoBI data.* - -### Upcoming Event - -We also invite you to join the virtual **Kick-off Meeting** in September, with the exact date and time to be determined through a poll. Please email us to access the poll and receive the meeting link. - --- +## Start of the Initiative +*August 2024* +The **EEGManySteps** initiative was launched as a community-driven effort to understand how different setups in mobile electroencephalography (EEG) experiments influence results. See the [Join](./join.qmd) page for how to participate. diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 16a6e9b..0000000 --- a/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -pandas -seaborn -matplotlib -numpy \ No newline at end of file From 2af2987590f1a6a842eda65fc30c9ca15a61d97a Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Wed, 18 Feb 2026 08:05:19 -0800 Subject: [PATCH 2/5] Fix broken Mermaid diagram: remove dual node/subgraph conflict Redesign the work package diagram to properly show all 7 WPs inside a subgraph, with AB and SC at the top. B7 was previously used as both a node and a subgraph ID, causing rendering issues. Closes #16 --- index.qmd | 60 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/index.qmd b/index.qmd index a6b78a0..55d60b7 100644 --- a/index.qmd +++ b/index.qmd @@ -39,45 +39,47 @@ The EEGManySteps project is lead by a [steering committee](./team.qmd#steering-c - WP7. Research questions (Oversee the development of research questions within the project and support potential collaborations) ```{mermaid} -graph LR - style A stroke-width:3px,corner-radius:5px - style S stroke-width:3px,corner-radius:5px - style B1 fill:#E8E8E8,stroke:#555,stroke-width:3px,corner-radius:5px - style B2 fill:#E8E8E8,stroke:#555,stroke-width:3px,corner-radius:5px - style B3 fill:#E8E8E8,stroke:#555,stroke-width:3px,corner-radius:5px - style B4 fill:#E8E8E8,stroke:#555,stroke-width:3px,corner-radius:5px - style B5 fill:#E8E8E8,stroke:#555,stroke-width:3px,corner-radius:5px - style B6 fill:#E8E8E8,stroke:#555,stroke-width:5px,corner-radius:5px - style B7 fill:#E8E8E8,stroke:#555,stroke-width:3px,corner-radius:5px - +graph TD A[Advisory Board] S[Steering Committee] - B1[WP1: Acquisition protocols] - B2[WP2: Data collection] - B3[WP3: Data curation] - B4[WP4: Analysis] - B5[WP5: Dissemination] - B6[WP6: Funding] - B7[WP7: Research questions] + A <--> S - subgraph B7[WP7: Research questions] + subgraph Work Packages direction LR + B1[WP1: Acquisition protocols] + B2[WP2: Data collection] + B3[WP3: Data curation] + B4[WP4: Analysis] + B5[WP5: Dissemination] + B6[WP6: Funding] + B7[WP7: Research questions] + B1 --> B3 B2 --> B3 B3 --> B4 + B4 --> B5 end - A <--> S - S <--> B1 - S <--> B2 - S <--> B4 - A <--> B5 - S <--> B5 - A <--> B6 - S <--> B6 - - + S --> B1 + S --> B2 + S --> B4 + S --> B5 + S --> B6 + S --> B7 + A --> B5 + A --> B6 + A --> B7 + + style A fill:#fff,stroke:#333,stroke-width:3px + style S fill:#fff,stroke:#333,stroke-width:3px + style B1 fill:#E8E8E8,stroke:#555,stroke-width:2px + style B2 fill:#E8E8E8,stroke:#555,stroke-width:2px + style B3 fill:#E8E8E8,stroke:#555,stroke-width:2px + style B4 fill:#E8E8E8,stroke:#555,stroke-width:2px + style B5 fill:#E8E8E8,stroke:#555,stroke-width:2px + style B6 fill:#E8E8E8,stroke:#555,stroke-width:2px + style B7 fill:#E8E8E8,stroke:#555,stroke-width:2px ``` From a2438ae0edd7bd2eab2debc74c06b6d897a07ce8 Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Wed, 18 Feb 2026 08:07:16 -0800 Subject: [PATCH 3/5] Restrict Quarto render to .qmd files only Add render: ["*.qmd"] to _quarto.yml so that CLAUDE.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, and README.md are not rendered as site pages. --- _quarto.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_quarto.yml b/_quarto.yml index 481b441..e0335e4 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1,5 +1,7 @@ project: type: website + render: + - "*.qmd" website: title: "EEGManySteps" From aa3edacf7c204eeff21ca95b254b1aaf4c5754b3 Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Wed, 18 Feb 2026 08:09:00 -0800 Subject: [PATCH 4/5] Track CLAUDE.md in git (remove from .gitignore) CLAUDE.md contains project-specific build rules and structure documentation that should be shared across contributors. --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9ab5747..9ccc733 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ news_files/ *.ipynb # Dev tools -CLAUDE.md .claude/ .serena/ @@ -18,3 +17,6 @@ plan.md ideas.md scratch_notes.md research.md + +/.quarto/ +**/*.quarto_ipynb From dd40c0ea444ccf67c3a679f4bc1fbf99dc2a9b0a Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Wed, 18 Feb 2026 08:10:33 -0800 Subject: [PATCH 5/5] Fix review findings: Chart.js labels, Mermaid arrows, .gitignore Use array syntax for Chart.js multi-line axis labels instead of \n (which renders literally). Restore bidirectional arrows (<-->) for SC/AB-to-WP connections in Mermaid diagram to preserve governance semantics. Remove CLAUDE.md from .gitignore so it can be tracked. --- index.qmd | 18 +++++++++--------- news.qmd | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/index.qmd b/index.qmd index 55d60b7..3510850 100644 --- a/index.qmd +++ b/index.qmd @@ -61,15 +61,15 @@ graph TD B4 --> B5 end - S --> B1 - S --> B2 - S --> B4 - S --> B5 - S --> B6 - S --> B7 - A --> B5 - A --> B6 - A --> B7 + S <--> B1 + S <--> B2 + S <--> B4 + S <--> B5 + S <--> B6 + S <--> B7 + A <--> B5 + A <--> B6 + A <--> B7 style A fill:#fff,stroke:#333,stroke-width:3px style S fill:#fff,stroke:#333,stroke-width:3px diff --git a/news.qmd b/news.qmd index 6355223..7235cb1 100644 --- a/news.qmd +++ b/news.qmd @@ -20,10 +20,10 @@ new Chart(document.getElementById('goalRatings'), { type: 'bar', data: { labels: [ - '1. Step-specific\ntime-frequency', - '2. Gait artifact\ncharacterization', - '3. Preprocessing\ninfluence', - '4. Secondary task\ncorrelates' + ['1. Step-specific', 'time-frequency'], + ['2. Gait artifact', 'characterization'], + ['3. Preprocessing', 'influence'], + ['4. Secondary task', 'correlates'] ], datasets: [{ label: 'Average rating (1-5)',