Try   HackMD

BIDS Schema Enumeratorator

Option 1: Dense dereferenced objects (via Taylor)

columns.yaml + values.yaml
type__eeg_channels:
  name: type
  display_name: Channel type
  description: |
    Type of channel; MUST use the channel types listed below.
    Note that the type MUST be in upper-case.
  type: string
  enum:
    - $ref: objects.values.AUDIO
    - $ref: objects.values.EEG
    - ...
AUDIO:
  name: AUDIO
  display_name: AUDIO
  description: |
    Audio signal.
Derefs to:
type__eeg_channels:
  name: type
  display_name: Channel type
  description: |
    Type of channel; MUST use the channel types listed below.
    Note that the type MUST be in upper-case.
  type: string
  enum:
    - name: AUDIO
      display_name: AUDIO
      description: |
        Audio signal.
    - name: EEG
      display_name: EEG
      description: |
        Electroencephalogram channel.
    - ...

Option 2: Dereferenced values

columns.yaml + values.yaml
type__eeg_channels:
  name: type
  display_name: Channel type
  description: |
    Type of channel; MUST use the channel types listed below.
    Note that the type MUST be in upper-case.
  type: string
  enum:
    - $ref: objects.values.AUDIO.value
    - $ref: objects.values.EEG.value
    - ...
AUDIO:
  value: AUDIO
  display_name: AUDIO
  description: |
    Audio signal.
Derefs to:
type__eeg_channels:
  name: type
  display_name: Channel type
  description: |
    Type of channel; MUST use the channel types listed below.
    Note that the type MUST be in upper-case.
  type: string
  enum:
    - AUDIO
    - EEG
    - ...

Option 3: Backreferences + dereferenced values

columns.yaml + values.yaml
type__eeg_channels:
  name: type
  display_name: Channel type
  description: |
    Type of channel; MUST use the channel types listed below.
    Note that the type MUST be in upper-case.
  type: string
  enum:
    - $ref: objects.values.AUDIO.value
    - $ref: objects.values.EEG.value
    - ...
AUDIO:
  value: AUDIO
  display_name: AUDIO
  tag: [common]
  description: |
    Audio signal.
PPG:
  value: PPG
  display_name: PPG
  tag: [eeg]
  description: |
    Photoplethysmography.
    
ECG:
  tag: [eeg, ieeg]
Derefs to:
type__eeg_channels:
  name: type
  display_name: Channel type
  description: |
    Type of channel; MUST use the channel types listed below.
    Note that the type MUST be in upper-case.
  type: string
  enum:
    - AUDIO
    - EEG
    - ...

Strategy: Use current MEG to generate meg tags, EEG to generate eeg, etc. Some can be made common short-term, but the rest can be shifted from multi-tag to "common" later.