bids-apps / PyMVPA

runs MVPA and RSA analysis BIDS bold derivative data
7 stars 3 forks source link

[BUG] PyMVPA BIDS-App in Singularity Container #18

Open shawnrhoads opened 9 months ago

shawnrhoads commented 9 months ago

What version of the bids app were you using?

v4.0.3

Describe your problem in detail.

Hello!

I am testing out the new PyMVPA BIDS-App on one of my datasets (I am excited about the promise of this new tool)! However, I am unable get past the participant_prep stage. I was directed to submit an issue here.

I created a singularity image using this command:

sudo singularity pull pymvpa-4.0.3.simg docker://bids/pymvpa:v4.0.3

Then, I tried running participant_prep for one subject using the following command:

singularity run \
--bind /SR/subjects:/bids_dataset \
--cleanenv \
pymvpa-4.0.3.simg \
/bids_dataset \
/bids_dataset/derivatives/pymvpa \
participant_prep \
--participant_id 501 \
--task faces \
--skip_bids_validator

This creates /SR/subjects/derivatives/pymvpa and /SR/subjects/derivatives/pymvpa/masks, but the data for that subject is not prepped (no output folder named "sub-501").

I get the following warnings (this is everything that is written to the terminal):

/usr/lib/python2.7/dist-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
/usr/lib/python2.7/dist-packages/sklearn/grid_search.py:42: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. This module will be removed in 0.20.
  DeprecationWarning)
/usr/lib/python2.7/dist-packages/sklearn/learning_curve.py:22: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the functions are moved. This module will be removed in 0.20
  DeprecationWarning)
/usr/lib/python2.7/dist-packages/statsmodels/compat/pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.
  from pandas.core import datetools
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

I suspect it is somehow not looping through sub_IDs at lines 168-186 in run.py. Could it also be related at all to the LC_ALL locale warning?

I can confirm that my directory is BIDS compliant. I added the --skip_bids_validator flag because it appears that bids-validator is not installed in the container? This is the additional warning I get when I run the command above without skipping validation.

/tmp/tmpNy73ic: line 1: bids-validator: command not found

What command did you run?

singularity run \
--bind /SR/subjects:/bids_dataset \
--cleanenv \
pymvpa-4.0.3.simg \
/bids_dataset \
/bids_dataset/derivatives/pymvpa \
participant_prep \
--participant_id 501 \
--task faces \
--skip_bids_validator

(Update) Also tried this command:

singularity run \
--bind /SR/subjects:/bids_dataset \
--cleanenv \
pymvpa-4.0.3.simg \
/bids_dataset/derivatives/fmriprep \
/bids_dataset/derivatives/pymvpa \
participant_prep \
--participant_id 501 \
--task faces \
--skip_bids_validator

Describe what you expected.

I expected the command to create a new directory at /bids_dataset/derivatives/pymvpa/sub-501 with runs concatenated.

m9080212 commented 7 months ago

Hi shawnrhoads, I've run into the same problem as yours. Have you found a way to work around it?

shawnrhoads commented 7 months ago

Hi shawnrhoads, I've run into the same problem as yours. Have you found a way to work around it?

Yes, I believe it is because the app is no longer compatible with the older BIDS format where fmriprep outputs to BIDSroot/derivatives/fmriprep. Instead, the fmriprep output should be located in BIDSroot/derivatives. See here for explanation.

However, I chose not to restructure my data since many of my scripts rely on the older BIDS structure (maybe I will try on a different dataset in the future). It would be helpful if you can confirm that this resolves your issue though for future!