diff --git a/.gitignore b/.gitignore
index 4d00cfcd..ae2c4f88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@ docs/extensions/beps
# ignore for now files that are copied from the bids examples and spe
docs/examples/
docs/extensions/macros_doc.md
+docs/assets/img/logos/BIDS_logo_black.svg
# folders
*.DS_Store
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 4e258a21..62e2bcd2 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -47,6 +47,36 @@ repos:
- id: pretty-format-toml
args: [--autofix, --indent, '4', --no-sort, --trailing-commas]
+- repo: https://github.com/djlint/djLint
+ rev: v1.36.4
+ hooks:
+ - id: djlint
+ exclude: |
+ (?x)^(
+ docs/overrides/main.html|
+ docs/overrides/404.html
+ )$
+ - id: djlint-reformat
+ exclude: |
+ (?x)^(
+ docs/overrides/main.html|
+ docs/overrides/404.html
+ )$
+ - id: djlint-jinja
+ exclude: |
+ (?x)^(
+ docs/overrides/main.html|
+ docs/overrides/404.html|
+ templates/.*
+ )$
+ - id: djlint-reformat-jinja
+ exclude: |
+ (?x)^(
+ docs/overrides/main.html|
+ docs/overrides/404.html|
+ templates/.*
+ )$
+
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 25.11.0
hooks:
diff --git a/Makefile b/Makefile
index 723cde75..26e5dd13 100644
--- a/Makefile
+++ b/Makefile
@@ -15,6 +15,7 @@ update_from_spec:
rm -fr docs/specification
mkdir -p docs/specification/
cp specification/macros_doc.md docs/extensions/macros_doc.md
+ cp -f specification/BIDS_logo/BIDS_logo_black.svg docs/assets/img/logos/
update_contributors: .venv node_modules
@echo " ---------------------------------- "
diff --git a/docs/index.md b/docs/index.md
index daab50a7..0c890269 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,165 +1,4 @@
---
+template: home.html
title: BIDS
---
-
-Experiments in neuroscience result in complex data that can be arranged in many different ways.
-For a long time, there was no consensus how to organize and share experimental data.
-Even two researchers working in the same lab could opt to arrange their data in a different way.
-Lack of consensus (or a standard) leads to misunderstandings and time wasted on rearranging data
-or rewriting scripts expecting certain structure.
-With the Brain Imaging Data Structure (BIDS),
-we describe a simple and easy to adopt way of organizing neural and associated, such as behavioral, data.
-
-
-
-
-BIDS was heavily inspired by the format used internally by the OpenfMRI repository
-that is now known as [OpenNeuro][openneuro].
-While working on BIDS we consulted many neuroscientists to make sure it covers most common experiments,
-but at the same time is intuitive and easy to adopt.
-The specification is intentionally based on simple file formats and folder structures
-to reflect current lab practices and make it accessible to a wide range of scientists coming from different backgrounds.
-
-## BIDS is a community effort
-
-BIDS is developed by the community for the community
-and everybody can [become a part of the community](./extensions/index.md).
-
-The most important part of BIDS are the users:
-if more people use it, more data will be shared and the more powerful it will become.
-
-We want to make it easy to learn and more adopted.
-
-Since BIDS is platform independent
-and still an adapting, growing tool, the greater the community, the better it will be.
-
-## Specification vs. Ecosystem
-
-Since the inception of the BIDS specification that documents how to organize neural and associated data,
-a large ecosystem of tools and resources has evolved around BIDS.
-
-A few of the key elements of this ecosystem are
-the [BIDS specification](http://bids-specification.readthedocs.io/) with the nitty-gritty details,
-
-the [starter kit](./getting_started/index.md) with a simple explanation how to work with it,
-
-the [BIDS validator](https://github.com/bids-standard/bids-validator) to automatically check datasets for adherence to the specification,
-[BIDS Apps](https://doi.org/10.1371/journal.pcbi.1005209), a collection of portable pipelines that understand BIDS datasets,
-and [OpenNeuro][openneuro] as a database for BIDS formatted datasets.
-
-A non-exhaustive list of further tools can be found in the [tools](./tools/index.md) section.
-
-With the ongoing development of new tools and resources it is important to keep in mind
-that the [BIDS specification](http://bids-specification.readthedocs.io/) remains
-the standard according to which the entire ecosystem must adhere.
-
-## Philosophy
-
-Another part is that BIDS is striving to not reinventing other standards and metadata ontologies but reuse them:
-
-
-
-## Benefits
-
-
-
-- :material-account-group:{ .lg .middle } **For the public good**
-
- ---
-
- - Lowers scientific waste
- - Gives opportunity to less-funded researchers
- - Improves efficiency
- - Spurs innovation
-
-- :recycle:{ .lg .middle } **For yourself**
-
- ---
-
- - You are likely the future user of the data and data analysis pipelines you’ve developed
-
- - Enables and simplifies collaboration
-
- - Reviewers and funding agencies like to see reproducible results
-
- - Open-science based funding opportunities and awards available
- (for instance: OHBM Replication Award, Mozilla Open Science Fellowship,
- Google Summer of Code, and so on.)
-
-
-
-By using this standard you will benefit in the following ways:
-
-- It will be easy for another researcher to work on your data.
- To understand the organization of the files and their format you will only need to refer them to this document.
- This is especially important if you are running your own lab and anticipate more than one person working on the same data over time.
- By using BIDS you will save time trying to understand and reuse data acquired by a graduate student or postdoc that has already left the lab.
-
-- There is a growing number of [data analysis software packages](./tools/index.md) that can understand data organized according to BIDS.
-
-- Databases such as [OpenNeuro.org](http://openneuro.org), [LORIS](http://www.loris.ca), [COINS](https://coins.trendscenter.org), [XNAT](https://central.xnat.org/), [SciTran](https://scitran.github.io/), and others will accept and export datasets organized according to BIDS.
- If you ever plan to share your data publicly (nowadays some journals require this) you can speed up the curation process by using BIDS.
-
-- There are [validation tools](https://github.com/bids-standard/bids-validator) (also available [online](http://bids-standard.github.io/bids-validator/)) that can check your dataset integrity and let you easily spot missing values.
-
-## Further information
-
-- Good introductions to the BIDS standard can be found in the initial
- [paper published in Scientific Data](https://www.nature.com/articles/sdata201644),
- as well as in the follow up papers on specific modalities:
- [MEG](https://www.nature.com/articles/sdata2018110),
- [EEG](https://www.nature.com/articles/s41597-019-0104-8),
- [iEEG](https://www.nature.com/articles/s41597-019-0105-7),
- [genetics](https://doi.org/10.1093/gigascience/giaa104),
- [PET](https://doi.org/10.1038/s41597-022-01164-1),
- [microscopy](https://doi.org/10.3389/fnins.2022.871228),
- [qMRI](https://doi.org/10.1038/s41597-022-01571-4),
- [ASL](https://www.nature.com/articles/s41597-022-01615-9),
- [NIRS](https://www.nature.com/articles/s41597-024-04136-9),
- [motion](https://www.nature.com/articles/s41597-024-03559-8),
- and [MRS](https://www.nature.com/articles/s41597-025-05543-2).
-
-- Look through some of the community's [presentations on BIDS](https://osf.io/yn93h/).
-
-- Take a look at how the community [uses BIDS](https://medium.com/stanford-center-for-reproducible-neuroscience/bids-usage-survey-results-72637ff039c4).
-
-- We have constructed a [grant writing kit](./impact/index.md)
- to assist you in putting together BIDS-related grant proposals.
-
-- We submitted an application to [The Neuro Open Science in action prize 2020](https://www.mcgill.ca/neuro/open-science/neuro-open-science-action-prize-2020).
- Please find our [associated application](./assets/BIDS-materials/2020_TheNeuro_OpenScienceInAction_application.pdf).
-
-**Leave comments about the site below:**
-
----
-
-
diff --git a/docs/overrides/home.html b/docs/overrides/home.html
new file mode 100644
index 00000000..6734a2e2
--- /dev/null
+++ b/docs/overrides/home.html
@@ -0,0 +1,233 @@
+{% extends "main.html" %}
+
+{% block tabs %}
+ {{ super() }}
+
+
+
+
+
+

+
+
+
+
Data standardization that simply works.
+
+ With the Brain Imaging Data Structure (BIDS),
+ we describe a simple way of organizing brain imaging and associated data.
+
+
+
+
+
+
+
+
+
+
+
+
+
BIDS in a nutshell
+
+
+
+
+
+
+
+ {% include ".icons/material/file-tree.svg" %}
+
+
+
+
Standardized Organization
+
+ BIDS provides a consistent way to organize your neuroimaging data,
+ making it easy to understand and share across research groups and institutions.
+
+
+
+
+
+
+
+
+ {% include ".icons/material/account-group.svg" %}
+
+
+
+
Community Driven
+
+ Developed by the neuroscience community for the community.
+ BIDS continues to evolve based on real-world research needs and feedback.
+
+
+
+
+
+
+
+
+ {% include ".icons/material/tools.svg" %}
+
+
+
+
Rich Ecosystem
+
+ A growing collection of BIDS Apps, validators,
+ and analysis tools that work seamlessly with BIDS-formatted datasets.
+
+
+
+
+
+
+
+
+ {% include ".icons/material/open-source-initiative.svg" %}
+
+
+
+
Open Science
+
+ Promotes reproducible research and data sharing
+ through standardized formats that are platform-independent and openly documented.
+
+
+
+
+
+
+
+
+ {% include ".icons/material/check-decagram.svg" %}
+
+
+
+
Validation Tools
+
+ Built-in validation ensures your datasets comply with BIDS standards,
+ catching issues early and improving data quality.
+
+
+
+
+
+
+
+
+ {% include ".icons/material/brain.svg" %}
+
+
+
+
Multi-Modal Support
+
+ Supports a wide range of neuroimaging modalities
+ including fMRI, EEG, MEG, iEEG, PET, and behavioral data.
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock tabs %}
+
+{% block content %}
+{% endblock content %}
+
+{% block footer %}
+{% endblock footer %}
diff --git a/docs/standards/index.md b/docs/standards/index.md
index e114284c..36c5db27 100644
--- a/docs/standards/index.md
+++ b/docs/standards/index.md
@@ -1,7 +1,14 @@
# BIDS Standards
+Neuroimaging experiments result in complex data that can be arranged in many different ways.
+For a long time, there was no consensus how to organize and share
+data obtained in neuroimaging experiments.
+Even two researchers working in the same lab could opt to arrange their data in a different way.
+Lack of consensus (or a standard) leads to misunderstandings and time wasted on rearranging data
+or rewriting scripts expecting certain structure.
+
The current set of BIDS Standards provide outlines and guidance
-for file naming and organization, statistical modeling of neuroimaging data,
+for file and metaddata naming and organization, statistical modeling of neuroimaging data,
and applications created to be used with BIDS data.
These standards are intended to be updated and evolve as methods and data types change,
but current documentation on BIDS standards can be found in the sections below.
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
index 994124de..6135a69f 100644
--- a/docs/stylesheets/extra.css
+++ b/docs/stylesheets/extra.css
@@ -1,5 +1,9 @@
-/* https://colorbrewer2.org/#type=qualitative&scheme=Paired&n=12 */
:root {
+
+ /* colors used in several places in the getting started section to identify datatypes
+ obtained from https://colorbrewer2.org/#type=qualitative&scheme=Paired&n=12
+ */
+
--mri: #a6cee3;
--pet: #1f78b4;
--micr: #33a02c;
@@ -17,24 +21,266 @@
--suffix: #4daf4a;
--ext: #984ea3;
--underscore: #ff7f00;
+
+ --bids-brand: #1F7293;
+ --bids-accent: #6b9aaa;
+ --bids-stats-bg: #1f8193fb;
+ --white: #ffffff;
+
+ /* Material Design variable overrides (keep so top tabs/header use brand) */
+ --md-primary-fg-color: #1F7293;
+ --md-primary-fg-color--light: #1F7293;
+ --md-primary-fg-color--dark: #1F7293;
+ --md-accent-fg-color: #1F7293;
+ --md-accent-fg-color--transparent: rgba(212, 123, 138, 0.1);
+ --md-default-fg-color: #111;
+ --content-max: 1200px;
+
+
}
+/* Basic */
p { text-align: justify; }
-.iframe-container{
+/* iframe helper */
+.iframe-container {
position: relative;
width: 90%;
- margin-left: 5%;
+ margin: 0 5%;
padding-bottom: 56.25%;
height: 0;
}
-
-.iframe-container > iframe{
+.iframe-container > iframe {
position: absolute;
- top:0;
- left: 0;
+ inset: 0;
width: 100%;
height: 100%;
}
-.md-footer__inner.md-grid { display: none; }
+/* Hide material footer grid */
+.md-footer__inner.md-grid { display: none; }
+
+/* Hero section container */
+.mdx-container {
+ padding-top: 1rem;
+ background: transparent;
+ position: relative;
+ overflow: visible;
+ min-height: 150px;
+}
+
+.mdx-container:first-of-type {
+ background: linear-gradient(to bottom, var(--bids-brand), transparent 99%);
+ overflow: hidden; /* clip logo to container bounds */
+}
+
+/* ======= HERO - content + responsive logo ======= */
+.mdx-hero {
+ margin-top: 4rem;
+ color: var(--white);
+ position: relative;
+ z-index: 3;
+ display: flex;
+ align-items: center;
+ min-height: 150px;
+ padding-bottom: clamp(3rem, 6vw, 6rem); /* space to features */
+ overflow: hidden; /* keep logo clipped to hero */
+}
+
+.mdx-hero__logo-bg {
+ position: absolute;
+ top: 0;
+ height: 100%; /* always as tall as hero */
+ left: 50%;
+ transform: translateX(-50%);
+ z-index: 0; /* behind the hero content */
+ pointer-events: none;
+ width: min(100%, var(--content-max));
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 0;
+ padding: 0;
+}
+
+/* SVG/logo image: fill the wrapper while maintaining aspect ratio */
+.mdx-hero__logo-bg img {
+ width: 100%;
+ height: 100%;
+ opacity: 0.2; /* subtle background watermark */
+ object-fit: contain; /* keeps aspect ratio, fits within container */
+ object-position: center left;
+ pointer-events: none;
+ display: block;
+ filter: saturate(.95);
+}
+
+/* Small screens: keep the logo large relative to the content column but allow it to overflow a bit to the left
+ so it doesn't occlude the text while preserving the same width relationship with the features section. */
+@media (max-width: 44.9375em) {
+ .mdx-hero__logo-bg {
+ /* on small screens, content width is basically 100% - keep full width */
+ width: 100%;
+ left: 50%;
+ transform: translateX(-50%);
+ top: 0;
+ /* allow a little extra vertical breathing room */
+ height: 120%;
+ }
+ .mdx-hero__logo-bg img { opacity: 0.12; max-height: none; object-position: left center; }
+}
+
+/* Mid / tablet screens slight tweaks */
+@media (min-width: 60em) and (max-width: 76.24em) {
+ .mdx-hero__logo-bg {
+ /* match the same max content width, but allow it to exceed slightly to create the "off to the side" feel */
+ width: min(100%, var(--content-max));
+ right: auto;
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ .mdx-hero__logo-bg img { opacity: 0.14; }
+}
+
+/* Desktop: keep logo the same width as the content column but subtle and slightly shifted left/right by adjusting object-position */
+@media (min-width: 76.25em) {
+ .mdx-hero__logo-bg {
+ width: min(100%, var(--content-max));
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ .mdx-hero__logo-bg img { opacity: 0.10; max-height: none; object-position: center left; }
+}
+
+/* Hero content area */
+.mdx-hero__content {
+ position: relative;
+ z-index: 3;
+ max-width: 600px;
+ padding-left: 0;
+ margin-left: 0;
+}
+
+/* Hero text - stable sizes to avoid 'stretched' look */
+.mdx-hero h1 {
+ margin-bottom: 1rem;
+ font-weight: 700;
+ font-size: 2.5rem;
+ line-height: 1.2;
+ color: inherit;
+}
+.mdx-hero__content p {
+ margin-bottom: 2rem;
+ font-size: 1.125rem;
+ opacity: 0.95;
+ color: rgba(255,255,255,0.95);
+}
+
+/* Buttons */
+.mdx-hero__actions { display:flex; gap:1rem; flex-wrap:wrap; }
+.mdx-hero__actions .md-button { margin-bottom: 0.5rem; }
+.md-button--primary {
+ background-color: var(--bids-brand) !important;
+ border-color: var(--white) !important;
+ color: var(--white) !important;
+ font-weight: 500;
+}
+.md-button--primary:hover { background-color: var(--bids-accent) !important; transform: translateY(-1px); }
+
+/* Ensure header/tabs use brand */
+.md-header,
+.md-header__inner,
+.md-header-nav,
+.md-tabs{
+ background-color: var(--bids-brand) !important;
+ color: var(--white) !important;
+}
+.md-header a,
+.md-tabs a,
+.md-header-nav a {
+ color: var(--white) !important;
+}
+
+/* Features & cards (kept equal-height) */
+.mdx-features-section { margin-bottom: 2rem; }
+.mdx-features-headline { text-align: center; margin: 0 0 3rem; max-width: 800px; margin-left: auto; margin-right: auto; }
+.mdx-features-headline h2 { font-size: clamp(1.6rem, 3.5vw, 2.5rem); font-weight: 700; color: var(--md-default-fg-color); line-height:1.2; }
+
+.mdx-features {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
+ gap: 2rem;
+ align-items: stretch;
+}
+.mdx-feature { display:flex; }
+
+.mdx-feature__item {
+ box-sizing: border-box;
+ display:flex;
+ flex-direction:column;
+ justify-content: space-between;
+ align-items:center;
+ text-align:center;
+ padding: clamp(1rem, 2vw, 2rem);
+ background: var(--bids-brand);
+ color: var(--white);
+ border-radius: .5rem;
+ box-shadow: var(--md-shadow-z1);
+ transition: transform .2s, box-shadow .2s;
+ flex:1 1 auto;
+ min-height: 220px;
+ height: auto;
+ overflow: visible;
+}
+.mdx-feature__item:hover { transform: translateY(-0.25rem); box-shadow: var(--md-shadow-z2); }
+
+.mdx-feature__icon { width:3rem; height:3rem; margin-bottom:1rem; flex:0 0 auto; }
+.mdx-feature__icon svg { width:100%; height:100%; fill:var(--white); }
+
+.mdx-feature__content { display:flex; flex-direction:column; align-items:center; justify-content:center; width:100%; flex:1 1 auto; }
+.mdx-feature__content h2 { margin:0 0 .75rem; font-weight:700; font-size: clamp(1.05rem,2vw,1.25rem); line-height:1.15; color:var(--white); }
+.mdx-feature__content p {
+ margin:0;
+ color: rgba(255,255,255,0.92);
+ font-size: clamp(.9rem,1.5vw,1rem);
+ line-height:1.35;
+ word-break: break-word;
+ overflow-wrap:anywhere;
+ -webkit-hyphens:auto;
+ -ms-hyphens:auto;
+ hyphens:auto;
+}
+
+/* Stats */
+.mdx-stats { display:grid; grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); gap:2rem; margin:8rem 0 2rem; text-align:center; }
+.mdx-stats__item { background: var(--bids-stats-bg); color: var(--white); padding:2rem; border-radius:.5rem; display:flex; flex-direction:column; justify-content:center; align-items:center; min-height:150px; text-decoration:none; transition: all .3s ease; }
+.mdx-stats__item:hover { transform: translateY(-4px); box-shadow: 0 8px 16px rgba(0,0,0,.2); background: var(--bids-accent); }
+.mdx-stats__number { font-weight:700; font-size:2rem; line-height:1.2; color: var(--white) !important; }
+.mdx-stats__label { font-size:.875rem; color: rgba(255,255,255,.9); }
+
+/* Sponsors */
+.mdx-sponsors { background: var(--bids-brand); padding: .5rem 0 3rem; }
+.mdx-sponsors__content { text-align:center; max-width:1200px; margin:0 auto; padding:0 2rem; }
+.mdx-sponsors__content h2 { margin-bottom:2rem; font-weight:700; font-size:clamp(1.25rem,2.5vw,2rem); color:var(--white); }
+.mdx-sponsors__grid { display:flex; justify-content:center; align-items:center; gap:1.5rem; flex-wrap:wrap; }
+.mdx-sponsors__item { display:flex; align-items:center; justify-content:center; padding:1.5rem; background:var(--white); border-radius:.5rem; box-shadow:0 2px 8px rgba(0,0,0,.1); transition:all .3s ease; width:200px; height:120px; border:1px solid #eee; }
+.mdx-sponsors__item img { max-width:180px; max-height:80px; object-fit:contain; filter:grayscale(100%) opacity(.7); transition:filter .3s; }
+.mdx-sponsors__item:hover img { filter:none; opacity:1; }
+.mdx-sponsors__item:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,.15); }
+
+/* Responsive adjustments grouped */
+@media (max-width: 44.9375em) {
+ .mdx-hero h1 { font-size: 2rem; }
+ .mdx-hero__actions .md-button { width:100%; }
+ .mdx-features { grid-template-columns: 1fr; gap: 1.5rem; }
+ .mdx-features-headline h2 { font-size: 2rem; }
+ .mdx-stats { grid-template-columns: 1fr; gap: 1rem; margin: 4rem 0 1rem; }
+ .mdx-stats__item { min-height: 120px; }
+ .mdx-sponsors { padding: 3rem 0; }
+ .mdx-sponsors__grid { gap: 1.5rem; }
+ .mdx-sponsors__item { height: 100px; width: auto; }
+ .mdx-sponsors__item img { max-width: 140px; max-height:60px; }
+}
+
+/* Minimal theme overrides left as !important where required */
+.md-button--primary { background-color: var(--bids-brand) !important; border-color: var(--white) !important; color: var(--white) !important; }
diff --git a/mkdocs.yml b/mkdocs.yml
index cd8e7d6b..732e4cc7 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -217,15 +217,15 @@ theme:
icon: material/brightness-auto
name: Switch to light mode
- media: "(prefers-color-scheme: light)"
- primary: teal
- accent: green
+ primary: custom
+ accent: custom
scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
- media: "(prefers-color-scheme: dark)"
- primary: teal
- accent: green
+ primary: custom
+ accent: custom
scheme: slate
toggle:
icon: material/brightness-4
diff --git a/pyproject.toml b/pyproject.toml
index 1dbf978c..44766a96 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -45,3 +45,12 @@ combine_as_imports = true
line_length = 79
profile = "black"
skip_gitignore = true
+
+[tool.djlint]
+profile = "django"
+blank_line_after_tag = "load,extends,include,endblock,set"
+blank_line_before_tag = "load,extends,include,block,set"
+format_css = true
+ignore = "H030,H031,H021,H006"
+max_line_length = 79
+use_gitignore = true