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?