# BIDS Schema Enumeratorator
## ~~Option 1: Dense dereferenced objects (via Taylor)~~
<details><summary>columns.yaml + values.yaml</summary>
```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
- ...
```
```yaml
AUDIO:
name: AUDIO
display_name: AUDIO
description: |
Audio signal.
```
</details>
<details><summary>Derefs to:</summary>
```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:
- name: AUDIO
display_name: AUDIO
description: |
Audio signal.
- name: EEG
display_name: EEG
description: |
Electroencephalogram channel.
- ...
```
</details>
## ~~Option 2: Dereferenced values~~
<details><summary>columns.yaml + values.yaml</summary>
```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
- ...
```
```yaml
AUDIO:
value: AUDIO
display_name: AUDIO
description: |
Audio signal.
```
</details>
<details><summary>Derefs to:</summary>
```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:
- AUDIO
- EEG
- ...
```
</details>
## Option 3: Backreferences + dereferenced values
<details open><summary>columns.yaml + values.yaml</summary>
```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
- ...
```
```yaml
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]
```
</details>
<details open><summary>Derefs to:</summary>
```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:
- AUDIO
- EEG
- ...
```
</details>
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.