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

Component selection breaks when no BOLD components are found #297

Closed
tsalo opened this issue May 25, 2019 · 0 comments · Fixed by #298
Closed

Component selection breaks when no BOLD components are found #297

tsalo opened this issue May 25, 2019 · 0 comments · Fixed by #298
Labels
bug issues describing a bug or error found in the project

Comments

@tsalo
Copy link
Member

tsalo commented May 25, 2019

Summary

A recent NeuroStars post uncovered a bug in the component selection decision tree in which it attempts to find an elbow on an empty array (ncls). I think that this probably occurs when no potential BOLD components based on the absolute measures in Step 1, which leads to no non-outlier varex components (ncls). Then the decision tree tries to find an elbow on what ends up being an empty array here, raising an exception.

I think that we should include the linked snippet in Step 1 as well as where it's currently implemented.

Additional Detail

Here is the output and error originally posted:

/u/local/apps/python/3.6.1/lib/python3.6/site-packages/h5py/init.py:34: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type.
from ._conv import register_converters as _register_converters
/u/home/d/darag/.local/lib/python3.6/site-packages/sklearn/externals/joblib/init.py:15: DeprecationWarning: sklearn.externals.joblib is deprecated in 0.21 and will be removed in 0.23. Please import this functionality directly from joblib, which can be installed with: pip install joblib. If this warning is raised when loading pickled models, you may need to re-serialize those models with scikit-learn 0.21+.
warnings.warn(msg, category=DeprecationWarning)
INFO:tedana.workflows.tedana:Using output directory: /u/scratch/d/darag/multiecho/11055_2/TED.mcf_ts_brain
INFO:tedana.workflows.tedana:Loading input data: [‘te1_mcf_ts_brain.nii’, ‘te2_mcf_ts_brain.nii’, ‘te3_mcf_ts_brain.nii’]
INFO:tedana.workflows.tedana:Computing EPI mask from first echo
WARNING:tedana.utils:279 voxels in user-defined mask do not have good signal. Removing voxels from mask.
INFO:tedana.workflows.tedana:Computing T2* map
INFO:tedana.combine:Optimally combining data with voxel-wise T2 estimates
INFO:tedana.decomposition.eigendecomp:Computing PCA of optimally combined multi-echo data
INFO:tedana.decomposition.eigendecomp:Making initial component selection guess from PCA results
INFO:tedana.combine:Optimally combining data with voxel-wise T2 estimates
INFO:tedana.model.fit:Fitting TE- and S0-dependent models to components
INFO:tedana.decomposition.eigendecomp:Saving PCA results to: /u/scratch/d/darag/multiecho/11055_2/TED.mcf_ts_brain/pcastate.pkl
INFO:tedana.decomposition.eigendecomp:Selected 283 components with MLE dimensionality detection
WARNING:tedana.decomposition.eigendecomp:ICA attempt 1 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 43
WARNING:tedana.decomposition.eigendecomp:ICA attempt 2 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 44
WARNING:tedana.decomposition.eigendecomp:ICA attempt 3 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 45
WARNING:tedana.decomposition.eigendecomp:ICA attempt 4 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 46
WARNING:tedana.decomposition.eigendecomp:ICA attempt 5 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 47
WARNING:tedana.decomposition.eigendecomp:ICA attempt 6 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 48
WARNING:tedana.decomposition.eigendecomp:ICA attempt 7 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 49
WARNING:tedana.decomposition.eigendecomp:ICA attempt 8 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 50
WARNING:tedana.decomposition.eigendecomp:ICA attempt 9 failed to converge after 500 iterations
WARNING:tedana.decomposition.eigendecomp:Random seed updated to 51
WARNING:tedana.decomposition.eigendecomp:ICA attempt 10 failed to converge after 500 iterations
INFO:tedana.workflows.tedana:Making second component selection guess from ICA results
INFO:tedana.combine:Optimally combining data with voxel-wise T2 estimates
INFO:tedana.model.fit:Fitting TE- and S0-dependent models to components
INFO:tedana.model.fit:Performing spatial clustering of components
Traceback (most recent call last):
File “/u/home/d/darag/.local/bin/tedana”, line 11, in 
sys.exit(_main())
File “/u/home/d/darag/.local/lib/python3.6/site-packages/tedana/workflows/tedana.py”, line 453, in _main
tedana_workflow(**vars(options))
File “/u/home/d/darag/.local/lib/python3.6/site-packages/tedana/workflows/tedana.py”, line 379, in tedana_workflow
n_echos)
File “/u/home/d/darag/.local/lib/python3.6/site-packages/tedana/selection/select_comps.py”, line 250, in selcomps
rho_elbow = np.mean((getelbow(comptable.loc[ncls, ‘rho’], return_val=True),
File “/u/home/d/darag/.local/lib/python3.6/site-packages/tedana/selection/_utils.py”, line 71, in getelbow
p = coords - coords[:, 0].reshape(2, 1)
IndexError: index 0 is out of bounds for axis 1 with size 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug issues describing a bug or error found in the project
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant