Skip to content

feat: BIDS citations feed + dashboard citations-by-year chart#333

Merged
neuromechanist merged 4 commits into
developfrom
feature/citation-labels-and-bids-feeds
Jun 10, 2026
Merged

feat: BIDS citations feed + dashboard citations-by-year chart#333
neuromechanist merged 4 commits into
developfrom
feature/citation-labels-and-bids-feeds

Conversation

@neuromechanist

Copy link
Copy Markdown
Member

Summary

Enables the public citations feed for BIDS and adds a stacked "publication citations per year" chart to the status dashboard (mirroring the well-known BIDS citations figure), with human-readable per-paper labels.

Backend

  • CitationConfig.paper_labels (optional DOI -> label map, DOI keys normalized like dois).
  • GET /{community_id}/citations now returns a labels map alongside by_paper/canonical_dois.

Config

  • bids: public_feeds.citations: true (FAQ stays off — BIDS has no FAQ pipeline) + labels for all 14 canonical BIDS papers (BIDS, EEG/iEEG/MEG/PET/Genetics/Microscopy/qMRI/ASL/NIRS/Motion/MRS-BIDS, BIDS Apps).
  • eeglab: added the Lab Streaming Layer paper (Kothe et al. 2025, 10.1162/IMAG.a.136) and short labels for all canonical DOIs.

Dashboard

  • New "Publication Citations" card in the community view: a stacked-by-canonical-paper bar chart of citations per year, built from /{community_id}/citations. Uses configured labels for the legend, an HSL fallback palette when a community tracks more papers than the fixed palette (BIDS has 14), and is shown only when the feed is enabled and has data. Non-critical fetch (a 404 when the feed is off is handled gracefully).

Deploy follow-up

After merge + dev redeploy, run the BIDS citation backfill (sync papers --community bids --citations) to populate cites_doi for the 3,105 BIDS papers, then the chart fills in.

Test plan

  • Config: paper_labels defaults empty, DOI keys normalized (incl. URL-prefixed).
  • Endpoint: labels returned from config; empty when no citations config.
  • Dashboard: references /citations, has renderCitationsChart using citations.labels.
  • Inline dashboard JS syntax-checked with bun. Full suite: 543 passed, 1 skipped.

Add an optional paper_labels (DOI -> label) field to CitationConfig with
DOI-key normalization matching dois, and return a labels map from
GET /{community_id}/citations so consumers can show human-readable series
names instead of bare DOIs.
- bids: turn on public_feeds.citations (FAQ stays off; no FAQ pipeline) and
  add labels for all 14 canonical BIDS papers.
- eeglab: add the Lab Streaming Layer paper (Kothe 2025, 10.1162/IMAG.a.136)
  and short labels for all canonical DOIs.
Add a Publication Citations card to the community view that renders a
stacked-by-canonical-paper bar chart from GET /{community_id}/citations,
using configured labels for the legend and an HSL fallback palette for
communities with many tracked papers (e.g. BIDS). Shown only when the
community exposes the feed and has citation data.
@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Dashboard Preview

Name Link
Preview URL https://feature-citation-labels-and-.osa-dash.pages.dev
Branch feature/citation-labels-and-bids-feeds
Commit 10a5f31

This preview will be updated automatically when you push new commits.

- validate_paper_labels now rejects malformed DOI keys (same format check
  as dois) so a typo fails at config load instead of silently dropping a
  label; explicit last-wins dedup documented.
- dashboard: null citationsChartInstance after destroy; sort years numerically.
- tests: invalid-key raises, doi.org-prefix normalization, dedup last-wins,
  and the LSL mixed-case DOI label round-trip.
@neuromechanist neuromechanist merged commit 73a1882 into develop Jun 10, 2026
8 checks passed
@neuromechanist neuromechanist deleted the feature/citation-labels-and-bids-feeds branch June 10, 2026 00:24
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.

1 participant