Fmriprep-docker debugging

I am trying to understand the best way to understand and potentially debug output from fmriprep-docker. I am saving the working directory in fmriprep-docker to a directory on my local machine. I can then go to workflow and look at the contents of the plkz file. The first time I did this I looked at a successfully run basic fmri preprocessing by fmri-docker. It was reported that fmriprep module was not found. At first this confused me until I realized it was reporting that my local environment did not have fmriprep installed. I installed fmriprep locally and then the error went away.

Should be looking at the contents of the working directory output from fmriprep using the nipype contained in the fmriprep-docker container? And if so how do I do this?

Thanks for all your help,

Bob

nipypecli show result_bidssrc.pklz
170724-11:54:05,7 workflow DEBUG:
networkx 1.4 dev or higher detected
170724-11:54:05,81 filemanip DEBUG:
Loading pkl: /Users/bkraft/tic/data/ds003/work2/fmriprep_wf/single_subject_01_wf/bidssrc/result_bidssrc.pklz
170724-11:54:05,350 workflow DEBUG:
networkx 1.4 dev or higher detected
Traceback (most recent call last):
File “/Applications/anaconda3/bin/nipypecli”, line 11, in
sys.exit(cli())
File “/Applications/anaconda3/lib/python3.5/site-packages/click/core.py”, line 722, in call
return self.main(*args, **kwargs)
File “/Applications/anaconda3/lib/python3.5/site-packages/click/core.py”, line 697, in main
rv = self.invoke(ctx)
File “/Applications/anaconda3/lib/python3.5/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/Applications/anaconda3/lib/python3.5/site-packages/click/core.py”, line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/Applications/anaconda3/lib/python3.5/site-packages/click/core.py”, line 535, in invoke
return callback(*args, **kwargs)
File “/Applications/anaconda3/lib/python3.5/site-packages/nipype/scripts/cli.py”, line 90, in show
pkl_data = loadpkl(pklz_file)
File “/Applications/anaconda3/lib/python3.5/site-packages/nipype/utils/filemanip.py”, line 581, in loadpkl
unpkl = pickle.load(pkl_file)
ImportError: No module named 'fmriprep’

Hi Bob,

It looks like you’re trying to examine the results of a node, which are also in _report/report.rst in each node directory.

As you’ve discovered, nipype pickle files aren’t very portable, which makes them pretty tricky to open outside of the Docker image that built it. If needed, we can get into the Docker container, but hopefully that won’t be necessary.

Chris

It is also worth noting that all the errors should be listed in the HTML reports (stored in the output directory) even if the workflow did not finish successfully.

Thank you both for your comments.

I am starting to have a better understanding of where the error messages are reported. I now see that the HTML reports are reporting the same information in the log files. Your comments and insights have been very helpful.

I am hoping that you won’t get tired of my very basic questions. For the next two weeks I am going to focus on using fmriprep-docker to process our data. Thanks for all your help.

2 Likes

Keep them coming! Understanding the pain points in getting started will help us write a better program with better documentation.

1 Like