Skip to content

Commit 3e4f79c

Browse files
committed
WIP
1 parent 6cf70f7 commit 3e4f79c

File tree

7 files changed

+190
-103
lines changed

7 files changed

+190
-103
lines changed

src/modality-specific-files/electromyography.md

Lines changed: 93 additions & 65 deletions
Large diffs are not rendered by default.

src/schema/objects/columns.yaml

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ component:
8989
- $ref: objects.enums.quat_y.value
9090
- $ref: objects.enums.quat_z.value
9191
- $ref: objects.enums.quat_w.value
92+
coordinate_system:
93+
name: coordinate_system
94+
display_name: Coordinate System
95+
description: |
96+
Name of the coordinate system defined in `coordsystem.json` in which the electrode's
97+
`x`, `y`, and (optionally) `z` coordinates are given.
98+
type: string
9299
detector__channels:
93100
name: detector
94101
display_name: Detector Name
@@ -252,6 +259,15 @@ index:
252259
description: |
253260
The label integer index.
254261
type: integer
262+
interelectrode_distance:
263+
name: interelectrode_distance
264+
display_name: Interelectrode Distance
265+
description: |
266+
Distance between adjacent electrodes (in a pair or grid) that are rigidly attached to
267+
the same sensor device, or between the `signal_electrode` and its `reference` when
268+
each is independently placed.
269+
type: number
270+
unit: mm
255271
low_cutoff:
256272
name: low_cutoff
257273
display_name: Low cutoff
@@ -372,12 +388,11 @@ participant_id:
372388
matching a participant entity found in the dataset.
373389
type: string
374390
pattern: ^sub-[0-9a-zA-Z]+$
375-
# TODO revisit whether example is sufficient
376391
placement__emg:
377392
name: placement
378-
display_name: Placement
393+
display_name: Placement Scheme
379394
description: |
380-
Placement of the electrode(s) on the body (for example, "palmar side of lower arm").
395+
Placement of the sensor(s) on the body (for example, "palmar side of lower arm").
381396
It can refer to an external vocabulary for describing body parts.
382397
type: string
383398
placement__motion:
@@ -403,20 +418,20 @@ reference__eeg:
403418
This column is not needed when it is common to all channels.
404419
In that case the reference electrode(s) can be specified in `*_eeg.json` as `EEGReference`).
405420
type: string
406-
# reference column for channels.tsv files for iEEG data
407-
reference__ieeg:
421+
# reference column for channels.tsv files for EMG data
422+
reference__emg:
408423
name: reference
409424
display_name: Electrode reference
410425
description: |
411-
Specification of the reference (for example, `mastoid`, `ElectrodeName01`, `intracranial`, `CAR`, `other`, `n/a`).
412-
If the channel is not an electrode channel (for example, a microphone channel) use `n/a`.
426+
Specification of the reference (for example, `ulnar styloid process`, `ElectrodeName01`, `n/a`).
413427
type: string
414-
# reference column for channels.tsv files for EMG data
415-
reference__emg:
428+
# reference column for channels.tsv files for iEEG data
429+
reference__ieeg:
416430
name: reference
417431
display_name: Electrode reference
418432
description: |
419-
Specification of the reference (for example, `ulnar styloid process`, `ElectrodeName01`, `n/a`).
433+
Specification of the reference (for example, `mastoid`, `ElectrodeName01`, `intracranial`, `CAR`, `other`, `n/a`).
434+
If the channel is not an electrode channel (for example, a microphone channel) use `n/a`.
420435
type: string
421436
reference_frame:
422437
name: reference_frame

src/schema/objects/enums.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ _EEGCoordSys:
77
- $ref: objects.enums.EEGLAB.value
88
- $ref: objects.enums.EEGLAB-HJ.value
99
- $ref: objects.enums.Other.value
10-
# TODO: I think "Other" is all we want at this point, since SENIAM isn't a coordsystem
11-
# and anything else will need to specify origin and axis directions relative to
12-
# skeletal landmarks in `EMGCoordinateSystemDescription`. But we should probably
13-
# still define this (single-element) enum now, so it's easier to add predefined
14-
# coordinate systems later (since we know folks are working on publishing them).
1510
_EMGCoordSys:
1611
type: string
1712
enum:

src/schema/objects/metadata.yaml

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -909,6 +909,18 @@ EEGReference:
909909
this field should have a general description and the channel specific
910910
reference should be defined in the `channels.tsv` file.
911911
type: string
912+
ElectrodeMaterial:
913+
name: ElectrodeMaterial
914+
display_name: Electrode Material
915+
description: |
916+
Material of the electrode (for example, `Tin`, `Ag/AgCl`, `Gold`).
917+
type: string
918+
ElectrodeType:
919+
name: ElectrodeType
920+
display_name: Electrode type
921+
description: |
922+
Type of the electrode (for example, cup, ring, clip-on, wire, needle).
923+
type: string
912924
EMGChannelCount:
913925
name: EMGChannelCount
914926
display_name: EMG Channel Count
@@ -958,27 +970,38 @@ EMGGround:
958970
type: string
959971
EMGPlacementScheme:
960972
name: EMGPlacementScheme
961-
display_name: EMG Placement Procedure
973+
display_name: EMG Placement Scheme
962974
description: |
963975
The name of a standardized electrode placement procedure (for example, `"SENIAM 8"`)
964976
or a description of the procedure used.
965-
Descriptions SHOULD reflect the process used by the researcher(s) when placing electrodes,
966-
and SHOULD NOT simply give the name of the targeted muscle (use `TargetMuscle` for that).
967-
For example, EMG electrode sites may be chosen by visual reference to target muscles,
968-
by palpation of the skin to locate target muscles, by functional localization
977+
Descriptions SHOULD NOT simply give the name of the targeted muscle (use the
978+
`target_muscle` column in `channels.tsv` for that), but rather SHOULD reflect the
979+
process used by the researcher(s) when placing electrodes.
980+
For example, EMG electrode sites may be chosen by *visual reference* to target muscles,
981+
by *palpation* of the skin to locate target muscles, by *functional localization*
969982
(temporary electrode placement at several sites during prescribed behavior,
970-
until a site yielding strong EMG signal is found), or by measured distances
983+
until a site yielding strong EMG signal is found), or by *measured distances*
971984
(either absolute or proportional) relative to skeletal landmarks.
985+
In datasets involving multiple EMG recording units placed at different sites in which
986+
different placement procedures were used for different sites, the procedures for each
987+
site SHOULD be described in the `placement_scheme` column of `channels.tsv` instead,
988+
and the value of `EMGPlacementScheme` SHOULD be a non-empty string such as
989+
"channel-specific" or "see channels.tsv" or similar.
972990
type: string
973991
EMGReference:
974992
name: EMGReference
975993
display_name: EMG Reference
976994
description: |
977-
Description of the reference scheme used and (when applicable) of location of the
978-
reference electrode in the raw recordings (for example, `"left ulnar styloid process"`).
979-
For bipolar channels, specify `EMGReference` as "bipolar".
980-
If different channels have different references, this field should contain a general
981-
description and the channel specific reference should be defined in the `channels.tsv` file.
995+
Description of the reference electrode location when the same reference was used for
996+
all channels (often called a "monopolar" recording).
997+
If different channels have different reference electrodes, this field should contain
998+
a non-empty string such as "channel-specific" and each channel-specific reference
999+
should be described in the `reference` column of `channels.tsv`.
1000+
For bipolar recording devices (where a single sensor unit contains two rigidly
1001+
separated contacts, and the paired contacts are not listed independently in
1002+
`electrodes.tsv`), the value of `reference` (in `channels.tsv`, for single channels)
1003+
or `EMGReference` (in `emg.json`, when all channels were bipolar) should be "bipolar".
1004+
9821005
type: string
9831006
EOGChannelCount:
9841007
name: EOGChannelCount
@@ -1770,6 +1793,13 @@ IntendedFor__ds_relative:
17701793
format: bids_uri
17711794
- type: string
17721795
format: dataset_relative
1796+
InterelectrodeDistance:
1797+
name: InterelectrodeDistance
1798+
display_name: Interelectrode Distance
1799+
description: |
1800+
Distance between pairs or grids of electrodes rigidly attached to the same sensor device.
1801+
type: number
1802+
unit: mm
17731803
InversionTime:
17741804
name: InversionTime
17751805
display_name: Inversion Time
@@ -3357,6 +3387,13 @@ SinglesRate:
33573387
type: array
33583388
items:
33593389
type: number
3390+
SkinPreparation:
3391+
name: SkinPreparation
3392+
display_name: Skin Preparation
3393+
description: |
3394+
How skin was prepared prior to sensor device placement, for example, `"alcohol wipe"`
3395+
or `"abrasive gel"`.
3396+
type: string
33603397
SkullStripped:
33613398
name: SkullStripped
33623399
display_name: Skull Stripped

src/schema/objects/suffixes.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,11 @@ electrodes:
612612
display_name: Electrodes
613613
description: |
614614
File that gives the location of (i)EEG electrodes.
615+
emg:
616+
value: emg
617+
display_name: Electromyography
618+
description: |
619+
Electromyography recording data.
615620
epi:
616621
value: epi
617622
display_name: EPI

src/schema/rules/sidecars/emg.yaml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,22 @@ EMGRecommended:
7373
EMGGround: recommended
7474
EpochLength: recommended
7575
HardwareFilters: recommended
76+
InterelectrodeDistance: recommended
7677
RecordingDuration: recommended
7778
RecordingType: recommended
7879
SubjectArtefactDescription: recommended
79-
TargetMuscle: recommended
8080
TriggerChannelCount: recommended
8181

8282
# Specific EMG fields MAY be present
83-
# TODO: InterElectrodeDistance: in channels.tsv probably, only for bipolar channels
84-
# ElectrodeGroup: not sure this is still needed given our use of `acq`
85-
# ElectrodeOrientation: incorporate into EMGPlacementScheme?
86-
# SkinPreparation: abrasive gel, alcohol wipe
83+
# TODO: do we want/need any of these?
84+
# ECGChannelCount: optional
85+
# EOGChannelCount: optional
86+
# MISCChannelCount: optional
87+
# ElectricalStimulation: optional
88+
# ElectricalStimulationParameters: optional
8789
EMGOptional:
8890
selectors:
8991
- datatype == "emg"
9092
- suffix == "emg"
9193
fields:
92-
ECGChannelCount: optional
93-
EOGChannelCount: optional
94-
MISCChannelCount: optional
95-
ElectricalStimulation: optional
96-
ElectricalStimulationParameters: optional
94+
SkinPreparation: optional

src/schema/rules/tabular_data/emg.yaml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,18 @@ EMGChannels:
1414
units: required
1515
description: optional
1616
sampling_frequency: optional
17+
signal_electrode: optional
1718
reference__emg: optional
19+
group__channel: optional
20+
target_muscle: optional
21+
placement: optional
22+
interelectrode_distance: recommended
1823
low_cutoff: optional
1924
high_cutoff: optional
2025
notch: optional
2126
status: optional
2227
status_description: optional
23-
index_columns: [name__channels]
28+
index_columns: [name__channels, group__channels]
2429
additional_columns: allowed_if_defined
2530

2631
EMGElectrodes:
@@ -33,13 +38,17 @@ EMGElectrodes:
3338
- x
3439
- y
3540
- z
41+
- coordinate_system
3642
columns:
3743
name__electrodes: required
3844
x: required
3945
y: required
4046
z: optional
47+
coordinate_system: recommended
4148
type__electrodes: recommended
4249
material: recommended
4350
impedance: recommended
44-
index_columns: [name__electrodes]
51+
group__channel: optional
52+
placement: optional
53+
index_columns: [name__electrodes, group__channel]
4554
additional_columns: allowed_if_defined

0 commit comments

Comments
 (0)