Physiological data (no neural recording)¶
This guide explains how to prepare physiological data without any neural recordings using the BIDS specification. It combines the rules from behavioral experiments and physiological recordings.
1. Behavioral (event) files¶
Even without neural recordings, you can still describe behavioral aspects. BIDS defines two file types depending on whether you have timestamps:
*_events.tsv — use when you have onset and duration information
- Must be tab-separated
- First line contains column headers
- Each row = one event
- Required columns:
onset— time in seconds from the start of the recordingduration— length in seconds; usen/aif unknown
*_beh.tsv — use when you have behavioral logs without onset/duration
- Same TSV format, but no required columns
- Suitable for response logs, questionnaire data, or other non-timestamped records
Optional columns for both types: trial_type, response_time, stim_file, HED.
Example sub-01_task-nback_events.tsv:
| onset | duration | trial_type | response_time |
|---|---|---|---|
| 0.5 | 1.5 | instruction | n/a |
| 2.3 | 1.0 | target | 0.53 |
| 4.8 | 1.0 | lure | 0.70 |
*_events.json / *_beh.json
The JSON sidecar must contain a description for every column in the TSV. Use at least Description. You can also add Units, Levels (for categorical values), or TermURL.
Example sub-01_task-nback_events.json:
{
"onset": {
"Description": "Onset of the event, in seconds relative to recording start",
"Units": "seconds"
},
"duration": {
"Description": "Duration of the event",
"Units": "seconds"
},
"trial_type": {
"Description": "Type of trial",
"Levels": {
"instruction": "Instruction screen",
"target": "Target stimulus",
"lure": "Lure stimulus"
}
},
"response_time": {
"Description": "Response time to the stimulus",
"Units": "seconds"
}
}
2. Physiological Recordings (_physio)¶
Continuous signals (e.g. cardiac, respiration, eye-tracking) are stored as _physio.
A. TSV file¶
- Named
*_physio.tsv.gz - No header line
- Rows = samples, columns = channels
B. JSON sidecar¶
- Named
*_physio.json - Required fields:
SamplingFrequency: HzStartTime: seconds relative to acquisition startColumns: array naming each channel
- Recommended fields:
Manufacturer,DeviceSerialNumber,SoftwareVersions- Per-channel metadata:
Description,Units
Example:
{
"SamplingFrequency": 100.0,
"StartTime": -22.345,
"Columns": ["cardiac", "respiratory", "trigger"],
"Manufacturer": "Your Device Maker",
"cardiac": {"Description": "pulse signal", "Units": "mV"},
"respiratory": {"Description": "breathing belt", "Units": "mV"},
"trigger": {"Description": "stimulus trigger channel"}
}
3. Stimulus-related continuous data (_stim)¶
If you continuously record stimulus parameters (e.g. video brightness), store them as:
_stim.tsv.gz— numeric data, no header_stim.json— metadata withSamplingFrequency,StartTime,Columns
4. Handle multiple sampling frequencies or recording devices¶
Note
This applies when channels were acquired at different sampling rates or with different devices.
Split them into separate files and distinguish with [_recording-<label>] in the filename:
sub-01_task-rest_recording-cardiac_physio.tsv.gz
sub-01_task-rest_recording-respiratory_physio.tsv.gz
5. Directory structure¶
Your dataset should follow the BIDS layout. Note that a session directory is mandatory in the ANC, even for single-session studies.
sub-<label>/
└── ses-<label>/
└── beh/
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>]_beh.json
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>]_beh.tsv
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>]_events.json
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>]_events.tsv
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_physio.json
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_physio.tsv.gz
├── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_stim.json
└── sub-<label>_ses-<label>_task-<label>[_acq-<label>][_run-<index>][_recording-<label>]_stim.tsv.gz