Json files for EEG, MEG, iEEG can't be "augmented" like those for BOLD?

Hey all,

Working on some “dummy” data for a side project and it creates this BIDS dataset (all the .nii, .edf and other types of data actually empty).

├── CHANGES
├── dataset_description.json
├── README
└── sub-001
    └── ses-001
        ├── beh
        │   ├── sub-001_ses-001_task-easyTargetPractice_run-001_beh.json
        │   └── sub-001_ses-001_task-easyTargetPractice_run-001_beh.tsv
        ├── eeg
        │   ├── sub-001_ses-001_task-targetPractice_run-001_eeg.edf
        │   └── sub-001_ses-001_task-targetPractice_run-001_eeg.json
        ├── func
        │   ├── sub-001_ses-001_task-rest_acq-newTYpe_ce-test_dir-yPos_rec-fastRecon_run-001_echo-1_bold.json
        │   ├── sub-001_ses-001_task-rest_acq-newTYpe_ce-test_dir-yPos_rec-fastRecon_run-001_echo-1_bold.nii.gz
        │   ├── sub-001_ses-001_task-testtask_run-001_bold.json
        │   ├── sub-001_ses-001_task-testtask_run-001_bold.nii.gz
        │   ├── sub-001_ses-001_task-testtask_run-001_events.json
        │   ├── sub-001_ses-001_task-testtask_run-001_events.tsv
        │   └── sub-001_ses-001_task-testtask_run-001_stim.tsv.gz
        ├── ieeg
        │   ├── sub-001_ses-001_task-implantedTargetPractice_run-001_ieeg.edf
        │   └── sub-001_ses-001_task-implantedTargetPractice_run-001_ieeg.json
        └── meg
            ├── sub-001_ses-001_task-magneticTargetPractice_run-001_meg.fif
            └── sub-001_ses-001_task-magneticTargetPractice_run-001_meg.json

When I try to run the command line bids-validator I get this

        1: [ERR] Empty files not allowed. (code: 99 - EMPTY_FILE)
                ./sub-001/ses-001/beh/sub-001_ses-001_task-easyTargetPractice_run-001_beh.tsv
                ./sub-001/ses-001/eeg/sub-001_ses-001_task-targetPractice_run-001_eeg.edf
                ./sub-001/ses-001/ieeg/sub-001_ses-001_task-implantedTargetPractice_run-001_ieeg.edf
                ./sub-001/ses-001/meg/sub-001_ses-001_task-magneticTargetPractice_run-001_meg.fif

Just to make my life easier on the validation side while playing around, I ask the validator to ignore the following in .bidsignore.

*_beh.tsv
*_eeg.edf
*_ieeg.edf
*_meg.fif
*_bold.nii.gz

Obviously as I now have json files with no data counterpart I now get this:

2: [ERR] A json sidecar file was found without a corresponding data file (code: 90 - SIDECAR_WITHOUT_DATAFILE)
                ./sub-001/ses-001/beh/sub-001_ses-001_task-easyTargetPractice_run-001_beh.json
                ./sub-001/ses-001/eeg/sub-001_ses-001_task-targetPractice_run-001_eeg.json
                ./sub-001/ses-001/func/sub-001_ses-001_task-rest_acq-newTYpe_ce-test_dir-yPos_rec-fastRecon_run-001_echo-1_bold.json
                ./sub-001/ses-001/func/sub-001_ses-001_task-testtask_run-001_bold.json
                ./sub-001/ses-001/ieeg/sub-001_ses-001_task-implantedTargetPractice_run-001_ieeg.json
                ./sub-001/ses-001/meg/sub-001_ses-001_task-magneticTargetPractice_run-001_meg.json

But more surprisingly I get this:

1: [ERR] Invalid JSON file. The file is not formatted according the schema. (code: 55 - JSON_SCHEMA_VALIDATION_ERROR)
                ./sub-001/ses-001/eeg/sub-001_ses-001_task-targetPractice_run-001_eeg.json
                        Evidence:  should NOT have additional properties
                ./sub-001/ses-001/ieeg/sub-001_ses-001_task-implantedTargetPractice_run-001_ieeg.json
                        Evidence:  should NOT have additional properties
                ./sub-001/ses-001/meg/sub-001_ses-001_task-magneticTargetPractice_run-001_meg.json
                        Evidence:  should NOT have additional properties

And this is what one of those json contains:

{
    "Instructions": "do this",
    "PowerLineFrequency": 50,
    "SamplingFrequency": 2400,
    "SoftwareFilters": "n/a",
    "TaskName": "implanted Target Practice",
    "iEEGReference": "Cz",
    "extraInfo": {
        "nestedExtraInfo": "something extra"
    }
}

So I have 2 questions:

  • why is it not allowed to add extra-info in those json? I don’t remember that this is mention in the specifications
  • why is this behavior not also seen for the bold json that also contains extra info?