BIDS validator 1.14.6 not working on OASIS-3

Summary of what happened:

I am trying to run fmriprep on oasis-3, and after some reorganization and renaming of a test subject’s directory, i think my test subject folder should be bids conforming. but i tried running fmriprep multiple times on it and i keep getting TypeError. Does this error appear because i didn’t fully organize my test subject into BIDS format? or is it some internal error in version 1.14.6 of the bidsvalidator. the oasis 3 is bidsversion 1.0.1, but i think the validator should be backward compatible.

Version:

BIDS validator @1.14.6, fmriprep-23.2.3.simg

Environment (Docker, Singularity / Apptainer, custom installation):

Singularity image on compute cluster

Data formatted according to a validatable standard? Please provide the output of the validator:

bids-validator@1.14.6
e[31mUnhandled rejection (e[39m
e[31m  reason: TypeError: Cannot read properties of undefined (reading 'split')e[39m
e[31m    at Minimatch.match (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13415:13)e[39m
e[31m    at minimatch2 (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13028:47)e[39m
e[31m    at Object.ignoredFile (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13537:46)e[39m
e[31m    at Function.format (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13754:44)e[39m
e[31m    at Function.exceptionHandler (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13855:30)e[39m
e[31m    at /opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:130871:42e[39m
e[31m).e[39m
e[31me[39m

Relevant log outputs (up to 20 lines):

You are using fMRIPrep-23.2.3, and a newer version of fMRIPrep is available: 25.1.3.
Please check out our documentation about how and when to upgrade:
https://fmriprep.readthedocs.io/en/latest/faq.html#upgrading
(node:58032) Warning: Closing directory handle on garbage collection
(Use `node --trace-warnings ...` to show where the warning was created)
Traceback (most recent call last):
  File "/opt/conda/envs/fmriprep/bin/fmriprep", line 8, in <module>
    sys.exit(main())
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/fmriprep/cli/run.py", line 40, in main
    parse_args()
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/fmriprep/cli/parser.py", line 828, in parse_args
    validate_input_dir(config.environment.exec_env, opts.bids_dir, opts.participant_label)
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/fmriprep/utils/bids.py", line 237, in validate_input_dir
    subprocess.check_call(['bids-validator', str(bids_dir), '-c', temp.name])
  File "/opt/conda/envs/fmriprep/lib/python3.10/subprocess.py", line 369, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['bids-validator', '/data', '-c', '/scratch/slurm-6093522/tmp1islvvnq.json']' returned non-zero exit status 3.
'TRES'

Screenshots / relevant information:

I rename some of the files and added acq to separate singleband and multiband runs. I think this is in BIDS format right? but why do i keep getting TypeError warning.

username@login1:sub-OAS30001$ tree -L 3
.
├── ses-d0129
│   ├── anat
│   │   ├── sub-OAS30001_ses-d0129_run-01_T1w.json
│   │   ├── sub-OAS30001_ses-d0129_run-01_T1w.nii.gz
│   │   ├── sub-OAS30001_ses-d0129_run-02_T1w.json
│   │   └── sub-OAS30001_ses-d0129_run-02_T1w.nii.gz
│   └── func
│       ├── sub-OAS30001_ses-d0129_task-rest_run-01_bold.json
│       ├── sub-OAS30001_ses-d0129_task-rest_run-01_bold.nii.gz
│       ├── sub-OAS30001_ses-d0129_task-rest_run-02_bold.json
│       ├── sub-OAS30001_ses-d0129_task-rest_run-02_bold.nii.gz
│       ├── sub-OAS30001_ses-d0129_task-rest_run-03_bold.json
│       └── sub-OAS30001_ses-d0129_task-rest_run-03_bold.nii.gz
├── ses-d0757
│   ├── anat
│   │   ├── sub-OAS30001_ses-d0757_run-01_T1w.json
│   │   ├── sub-OAS30001_ses-d0757_run-01_T1w.nii.gz
│   │   ├── sub-OAS30001_ses-d0757_run-02_T1w.json
│   │   └── sub-OAS30001_ses-d0757_run-02_T1w.nii.gz
│   └── func
│       ├── sub-OAS30001_ses-d0757_task-rest_run-01_bold.json
│       ├── sub-OAS30001_ses-d0757_task-rest_run-01_bold.nii.gz
│       ├── sub-OAS30001_ses-d0757_task-rest_run-02_bold.json
│       └── sub-OAS30001_ses-d0757_task-rest_run-02_bold.nii.gz
├── ses-d2430
│   └── anat
│       ├── sub-OAS30001_ses-d2430_FLAIR.json
│       ├── sub-OAS30001_ses-d2430_FLAIR.nii.gz
│       ├── sub-OAS30001_ses-d2430_T1w.json
│       └── sub-OAS30001_ses-d2430_T1w.nii.gz
├── ses-d3132
│   ├── anat
│   │   ├── sub-OAS30001_ses-d3132_T1w.json
│   │   └── sub-OAS30001_ses-d3132_T1w.nii.gz
│   └── func
│       ├── sub-OAS30001_ses-d3132_task-rest_run-01_bold.json
│       ├── sub-OAS30001_ses-d3132_task-rest_run-01_bold.nii.gz
│       ├── sub-OAS30001_ses-d3132_task-rest_run-02_bold.json
│       └── sub-OAS30001_ses-d3132_task-rest_run-02_bold.nii.gz
├── ses-d3746
│   ├── anat
│   │   ├── sub-OAS30001_ses-d3746_FLAIR.json
│   │   ├── sub-OAS30001_ses-d3746_FLAIR.nii.gz
│   │   ├── sub-OAS30001_ses-d3746_T1w.json
│   │   └── sub-OAS30001_ses-d3746_T1w.nii.gz
│   └── func
│       ├── sub-OAS30001_ses-d3746_task-rest_run-01_bold.json
│       ├── sub-OAS30001_ses-d3746_task-rest_run-01_bold.nii.gz
│       ├── sub-OAS30001_ses-d3746_task-rest_run-02_bold.json
│       └── sub-OAS30001_ses-d3746_task-rest_run-02_bold.nii.gz
└── ses-d4467
    ├── anat
    │   ├── sub-OAS30001_ses-d4467_FLAIR.json
    │   ├── sub-OAS30001_ses-d4467_FLAIR.nii.gz
    │   ├── sub-OAS30001_ses-d4467_T1w.json
    │   └── sub-OAS30001_ses-d4467_T1w.nii.gz
    └── func
        ├── sub-OAS30001_ses-d4467_task-rest_acq-multiband_run-01_bold.json
        ├── sub-OAS30001_ses-d4467_task-rest_acq-multiband_run-01_bold.nii.gz
        ├── sub-OAS30001_ses-d4467_task-rest_acq-multiband_run-02_bold.json
        ├── sub-OAS30001_ses-d4467_task-rest_acq-multiband_run-02_bold.nii.gz
        ├── sub-OAS30001_ses-d4467_task-rest_acq-multiband_run-03_bold.json
        ├── sub-OAS30001_ses-d4467_task-rest_acq-multiband_run-03_bold.nii.gz
        ├── sub-OAS30001_ses-d4467_task-rest_acq-singleband_run-01_bold.json
        ├── sub-OAS30001_ses-d4467_task-rest_acq-singleband_run-01_bold.nii.gz
        ├── sub-OAS30001_ses-d4467_task-rest_acq-singleband_run-02_bold.json
        └── sub-OAS30001_ses-d4467_task-rest_acq-singleband_run-02_bold.nii.gz

17 directories, 50 files
username@login1:sub-OAS30001$ 

Hi @selma0817,

Can you try with most recent BIDS validator (2.0.7 at this time)?

Best,
Steven

Hi @Steven, the online bids validator works but the one built-in in fmriprep container don’t. should i try to download a newer singularity image for fmriprep and test it? but i notice even for fmriprep 25.1.4, the bids validator is still a older version: bids-validator@1.14.10

with the latest stable fmriprep 25.1.4, the bids validator still give me the same error:

bids-validator@1.14.10
e[31mUnhandled rejection (e[39m
e[31m  reason: TypeError: Cannot read properties of undefined (reading 'split')e[39m
e[31m    at Minimatch.match (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13245:13)e[39m
e[31m    at minimatch2 (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:12869:47)e[39m
e[31m    at Object.ignoredFile (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13360:46)e[39m
e[31m    at Function.format (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13577:44)e[39m
e[31m    at Function.exceptionHandler (/opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:13678:30)e[39m
e[31m    at /opt/conda/envs/fmriprep/lib/node_modules/bids-validator/dist/commonjs/cli.js:141875:42e[39m
e[31m).e[39m
e[31me[39m

but i can pass the online validator:

in such case should i skip bids validation? I tried to avoid doing this as much as possible though in case some data are indeed organized incorrectly.

Hi @selma0817,

If it passes online bids validation, I would say you’re safe to skip in fmriprep.

Best,
Steven

1 Like