Skip to content

[ENH] BEP044 - Stim-BIDS #2022

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 52 commits into
base: master
Choose a base branch
from

Conversation

neuromechanist
Copy link
Member

@neuromechanist neuromechanist commented Dec 22, 2024

This PR addresses #153 by introducing specifications for handling and standardizing stimulus files and their annotations within the BIDS specifications. The changes focus on improving the organization, referencing, and metadata of stimulus files to enhance consistency, reusability, and efficiency.

Note

The issue: #153
Google Doc
Example PR: bids-standard/bids-examples#433

Known issues:

  • The validator fails because extensions in /src/schema/rules/files/raw require datatype. Stimuli might be a special data type that can only be present at the root of the dataset. So, the datatype field is missing for now.
  • There are some style errors by the remark validators

cc: @bids-standard/bep044 and @monique2208

Implement the standardization of stimulus files and their annotations within the BIDS specifications.

* **Add new file `src/modality-specific-files/stimuli.md`**
  - Describe the specifications for the stimuli directory.
  - Include guidelines for storing stimulus files and their annotations.
  - Define what goes into `stimuli.tsv/json`, `annotations.tsv/json`, and `stim-<label>.json`.
  - Use the same style as other modality-specific docs to design the tables, variables, and examples.

* **Modify `src/modality-specific-files/task-events.md`**
  - Add a section detailing the standardization of stimulus files and their annotations within the BIDS specifications.
  - Include examples of how to use the `stim_file` and `stim_id` columns in `events.tsv` files.
  - Provide guidelines for storing stimulus files in the `/stimuli` directory.
  - Expand the definition of the `stim_file` column to include `stim_id`.

* **Modify `src/schema/objects/columns.yaml`**
  - Update the definition of the `stim_file` column to ensure consistency in stimulus file references.
  - Add the `stim_id` column definition for `events.tsv` files.

* **Modify `src/schema/rules/checks/events.yaml`**
  - Add a check for missing stimulus files declared in `events.tsv`.
  - Add a check for missing `stim_id` references in `events.tsv`.

* **Modify `src/schema/rules/sidecars/events.yaml`**
  - Specify the `StimulusPresentation` metadata field for `events.tsv` files.
  - Include the `stim_id` column in the metadata field specifications.

* **Modify `src/schema/objects/entities.yaml`**
  - Add entities described in the document with proper requirement levels and descriptions.

* **Modify `src/schema/objects/suffixes.yaml`**
  - Add suffixes for `{audio, image, video, audiovideo}`.
  - Include the file extensions and descriptions for each suffix.

* **Add new file `src/schema/rules/sidecars/stimulus.yaml`**
  - Define sidecar tables for `stimuli.tsv/json`, `annotations.tsv/json`, and `stim-<label>.json`.
  - Use the same style as other modality-specific docs to design the tables.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/neuromechanist/bids-specification?shareId=XXXX-XXXX-XXXX-XXXX).

The `stimuli.json` file provides detailed descriptions of the columns in the `stimuli.tsv` file. There can be extra entries in the `stimuli.json` in addition to the columns in the `stimuli.tsv` to provide more details about the stimulus.
In cases where the stimulus is not shared, the `stimuli.tsv` file can be used to provide metadata about the stimuli, including the license, copyright, URL, and description. This is simialr to the use of `stim-<label>_<suffix>.json` files for individual stimuli files. In the case of conflict between the metadata in the `stimuli.tsv` and `stim-<label>_<suffix>.json` files, the metadata in the `stim-<label>_<suffix>.json` file takes precedence.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, here _. It should be consistent. The _ appears in several places as does without the underbar. I'm not going to mark them further --- just need to be consistent.

@Remi-Gau
Copy link
Collaborator

Remi-Gau commented Jan 9, 2025

will do a bit of clean up to get less red in CI and maybe see if we can get the HTML version of the BEP to render

@Remi-Gau
Copy link
Collaborator

Remi-Gau commented Jan 9, 2025

HTML: stimuli page
https://bids-specification--2022.org.readthedocs.build/en/2022/modality-specific-files/stimuli.html

Copy link
Collaborator

@yarikoptic yarikoptic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

initial quick pass with little recommendations etc


The `stim_id` in the events file links to corresponding files:

```Text
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs MACROS___make_filetree_example until someone smart implements parsing... ref: #2014 (comment)

@neuromechanist
Copy link
Member Author

Obserinvg #750 and the _stim.<extension> suffix, and a discussion pursued last month in #1771, we should clarify when to use the stimuli directory and when to use subject-based _stim.<extension> files.
IMO, the difference is clear, stimulus files in the stim directory are used for >1 subject while the subject-based _stim.<extension> is exclusively for the the subject/session where the file is located.

@VisLab
Copy link
Member

VisLab commented Mar 31, 2025

I think this extension will be a very valuable addition to BIDS. I have read through the HTML rendered version and have the following typo corrections:

  1. In the Stimuli Description section the stimuli.tsv table has a lot of nan elements.
  2. In the example for stimuli.tsv below this table, the present column isn't explained (or aligned). Maybe it is one of the nan values in 1.?
  3. In the Annotation Description section, the annotations.tsv table also has nan entries.
  4. In the Referencing Stimulus Identifiers section the ./stimuli directory should be in code font.

@neuromechanist
Copy link
Member Author

I think this extension will be a very valuable addition to BIDS. I have read through the HTML rendered version and have the following typo corrections:

Thanks very much @VisLab. The nans were due to the columns not being defined in columns.yaml They should be ok now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants