Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fmridenoise.interfaces.bids.MissingFile: Key 'PipelineDescription.Name' is required in {dataset_desc_path} file #74

Closed
costantinoai opened this issue Dec 19, 2020 · 3 comments · Fixed by #76
Assignees
Labels
bug Something isn't working required for release Needed to resolve before incoming fmridenoise release urgent URGENT!!!

Comments

@costantinoai
Copy link

When I try to run fmridenoise I get the error below. I tried both using WSL and by building a docker image on windows with the dev code. The images have been preprocessed with fMRIprep, and the dataset_description.json in the fMRIprep folder has a non-empty field called 'Name'.

PS C:\Users\45027900\Downloads\fmridenoise-dev\fmridenoise-dev> docker run --rm -it -v D:\Andrea\fov\BIDS:/data fmridenoise compare /data --MultiProc
201218-13:39:09,989 nipype.workflow INFO:
[Node] Setting-up "BidsValidate" in "/tmp/tmpdqtll7w9/BidsValidate".
201218-13:39:09,993 nipype.workflow INFO:
[Node] Running "BidsValidate" ("fmridenoise.interfaces.bids.BIDSValidate")
201218-13:39:10,19 nipype.workflow WARNING:
Storing result file without outputs
201218-13:39:10,19 nipype.workflow WARNING:
[Node] Error on "BidsValidate" (/tmp/tmpdqtll7w9/BidsValidate)
Traceback (most recent call last):
File "/fmridenoise-src/fmridenoise/interfaces/bids.py", line 234, in validate_derivatives
scope.append(dataset_desc['PipelineDescription']['Name'])
KeyError: 'PipelineDescription'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/fmridenoise-src/fmridenoise/main.py", line 236, in
main()
File "/fmridenoise-src/fmridenoise/main.py", line 228, in main
compare(args)
File "/fmridenoise-src/fmridenoise/main.py", line 177, in compare
workflow = init_fmridenoise_wf(input_dir,
File "/fmridenoise-src/fmridenoise/workflows/base.py", line 455, in init_fmridenoise_wf
result = bids_validate.run()
File "/usr/local/lib/python3.8/dist-packages/nipype-1.6.0-py3.8.egg/nipype/pipeline/engine/nodes.py", line 516, in run
result = self._run_interface(execute=True)
File "/usr/local/lib/python3.8/dist-packages/nipype-1.6.0-py3.8.egg/nipype/pipeline/engine/nodes.py", line 635, in _run_interface
return self._run_command(execute)
File "/usr/local/lib/python3.8/dist-packages/nipype-1.6.0-py3.8.egg/nipype/pipeline/engine/nodes.py", line 741, in _run_command
result = self._interface.run(cwd=outdir)
File "/usr/local/lib/python3.8/dist-packages/nipype-1.6.0-py3.8.egg/nipype/interfaces/base/core.py", line 434, in run
runtime = self._run_interface(runtime)
File "/fmridenoise-src/fmridenoise/interfaces/bids.py", line 365, in _run_interface
derivatives, scope = BIDSValidate.validate_derivatives(
File "/fmridenoise-src/fmridenoise/interfaces/bids.py", line 239, in validate_derivatives
raise MissingFile(f"Key 'PipelineDescription.Name' is " +
fmridenoise.interfaces.bids.MissingFile: Key 'PipelineDescription.Name' is required in {dataset_desc_path} file

any advice on this?

@costantinoai
Copy link
Author

costantinoai commented Dec 19, 2020

For future reference: I solved the problem by formatting the fmriprep dataset_description.json to conform to earlier BIDS versions.

As suggested here for a similar issue, I changed

"GeneratedBy": [
{
"Name": "fMRIPrep",
"Version": "20.2.0rc0",
"CodeURL": "https://github.com/poldracklab/fmriprep/archive/20.2.0r
c0.tar.gz"
}
],

into

"PipelineDescription": {
"Name": "fMRIPrep"
},

and this solved the issue.

@SiegfriedWagner SiegfriedWagner self-assigned this Dec 19, 2020
@SiegfriedWagner SiegfriedWagner added bug Something isn't working required for release Needed to resolve before incoming fmridenoise release urgent URGENT!!! labels Dec 19, 2020
@SiegfriedWagner
Copy link
Collaborator

Made changes that should assure compatibility with BIDSVersion > 1.3 and with older versions.

@SiegfriedWagner
Copy link
Collaborator

/home/siegfriedwagner/virtual_enviroments/fmridenoise/bin/python -m fmridenoise compare /home/siegfriedwagner/Downloads/fmriprep_dummy/dummy -d fmriprep
201219-16:29:17,747 nipype.workflow INFO:
	 [Node] Setting-up "BidsValidate" in "/tmp/tmprm8sxop8/BidsValidate".
201219-16:29:17,749 nipype.workflow INFO:
	 [Node] Running "BidsValidate" ("fmridenoise.interfaces.bids.BIDSValidate")
201219-16:29:19,805 nipype.workflow WARNING:
	 Storing result file without outputs
201219-16:29:19,805 nipype.workflow WARNING:
	 [Node] Error on "BidsValidate" (/tmp/tmprm8sxop8/BidsValidate)
Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/siegfriedwagner/git/fmridenoise/fmridenoise/__main__.py", line 236, in <module>
    main()
  File "/home/siegfriedwagner/git/fmridenoise/fmridenoise/__main__.py", line 228, in main
    compare(args)
  File "/home/siegfriedwagner/git/fmridenoise/fmridenoise/__main__.py", line 177, in compare
    workflow = init_fmridenoise_wf(input_dir,
  File "/home/siegfriedwagner/git/fmridenoise/fmridenoise/workflows/base.py", line 455, in init_fmridenoise_wf
    result = bids_validate.run()
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 516, in run
    result = self._run_interface(execute=True)
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 635, in _run_interface
    return self._run_command(execute)
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 741, in _run_command
    result = self._interface.run(cwd=outdir)
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/nipype/interfaces/base/core.py", line 434, in run
    runtime = self._run_interface(runtime)
  File "/home/siegfriedwagner/git/fmridenoise/fmridenoise/interfaces/bids.py", line 387, in _run_interface
    layout = BIDSLayout(
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/bids/layout/layout.py", line 161, in __init__
    self.add_derivatives(
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/bids/layout/layout.py", line 469, in add_derivatives
    deriv_paths = validate_derivative_paths(paths, self, **kwargs)
  File "/home/siegfriedwagner/virtual_enviroments/fmridenoise/lib/python3.8/site-packages/bids/layout/validation.py", line 138, in validate_derivative_paths
    raise BIDSDerivativesValidationError(
bids.exceptions.BIDSDerivativesValidationError: Every valid BIDS-derivatives dataset must have a PipelineDescription.Name field set inside 'dataset_description.json'. 
Example: {'PipelineDescription': {'Name': 'Example pipeline'}}

Process finished with exit code 1

This problem is still present, but now not in our project but in a roots of pybids.
bids-standard/pybids#640

For now I will recommend not using datasets in BIDS 1.4 standard because there are no tools to interact with it

Until this problem is resolved in pybids it will be hard to support latest BIDS standard

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working required for release Needed to resolve before incoming fmridenoise release urgent URGENT!!!
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants