mne-hcp icon indicating copy to clipboard operation
mne-hcp copied to clipboard

Weird bug with n_jobs

Open jona-sassenhagen opened this issue 8 years ago • 1 comments

Creating forward models fails when n_jobs is negative. (Works when it's positive.) Will see if I can find anything.

Employing the head->MRI coordinate transform with the BEM model.
BEM model dict is now set up

Source spaces are in head coordinates.
Checking that the sources are inside the bounding surface (will take a few...)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/numpy/lib/shape_base.py in array_split(ary, indices_or_sections, axis)
    403         # handle scalar case.
--> 404         Nsections = len(indices_or_sections) + 1
    405         div_points = [0] + list(indices_or_sections) + [Ntotal]

TypeError: object of type 'int' has no len()

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-13-662c1c585ef7> in <module>()
      4     recordings_path=recordings_path,
      5     info_from=(('data_type', "task_story_math"), ('run_index', 0)),
----> 6     n_jobs=-8
      7 )
      8 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/hcp-0.1.dev0-py3.5.egg/hcp/workflows/inverse.py in make_mne_forward(anatomy_path, subject, recordings_path, info_from, fwd_params, src_params, hcp_path, n_jobs)
     92     fwd = mne.make_forward_solution(
     93         info, trans=head_mri_t, bem=bem_sol, src=src_subject,
---> 94         n_jobs=n_jobs)
     95 
     96     return dict(fwd=fwd, src_subject=src_subject,

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in make_forward_solution(info, trans, src, bem, fname, meg, eeg, mindist, ignore_ref, overwrite, n_jobs, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, *args, **kwargs)
    607         with use_log_level(verbose_level):
    608             return function(*args, **kwargs)
--> 609     return function(*args, **kwargs)
    610 
    611 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in make_forward_solution(info, trans, src, bem, fname, meg, eeg, mindist, ignore_ref, overwrite, n_jobs, verbose)
    582         update_kwargs, bem = _prepare_for_forward(
    583             src, mri_head_t, info, bem, mindist, n_jobs, bem_extra, trans,
--> 584             info_extra, meg, eeg, ignore_ref, fname, overwrite)
    585     del (src, mri_head_t, trans, info_extra, bem_extra, mindist,
    586          meg, eeg, ignore_ref)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in _prepare_for_forward(src, mri_head_t, info, bem, mindist, n_jobs, bem_extra, trans, info_extra, meg, eeg, ignore_ref, fname, overwrite, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, *args, **kwargs)
    607         with use_log_level(verbose_level):
    608             return function(*args, **kwargs)
--> 609     return function(*args, **kwargs)
    610 
    611 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in _prepare_for_forward(src, mri_head_t, info, bem, mindist, n_jobs, bem_extra, trans, info_extra, meg, eeg, ignore_ref, fname, overwrite, verbose)
    468     if not bem['is_sphere']:
    469         inner_skull = _bem_find_surface(bem, 'inner_skull')
--> 470         _filter_source_spaces(inner_skull, mindist, mri_head_t, src, n_jobs)
    471         logger.info('')
    472 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _filter_source_spaces(surf, limit, mri_head_t, src, n_jobs, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, *args, **kwargs)
    607         with use_log_level(verbose_level):
    608             return function(*args, **kwargs)
--> 609     return function(*args, **kwargs)
    610 
    611 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _filter_source_spaces(surf, limit, mri_head_t, src, n_jobs, verbose)
   2013 
   2014         # Check that the source is inside surface (often the inner skull)
-> 2015         outside = _points_outside_surface(r1s, surf, n_jobs)
   2016         omit_outside = np.sum(outside)
   2017 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _points_outside_surface(rr, surf, n_jobs, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, *args, **kwargs)
    607         with use_log_level(verbose_level):
    608             return function(*args, **kwargs)
--> 609     return function(*args, **kwargs)
    610 
    611 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _points_outside_surface(rr, surf, n_jobs, verbose)
   2070     parallel, p_fun, _ = parallel_func(_get_solids, n_jobs)
   2071     tot_angles = parallel(p_fun(surf['rr'][tris], rr)
-> 2072                           for tris in np.array_split(surf['tris'], n_jobs))
   2073     return np.abs(np.sum(tot_angles, axis=0) / (2 * np.pi) - 1.0) > 1e-5
   2074 

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/numpy/lib/shape_base.py in array_split(ary, indices_or_sections, axis)
    408         Nsections = int(indices_or_sections)
    409         if Nsections <= 0:
--> 410             raise ValueError('number sections must be larger than 0.')
    411         Neach_section, extras = divmod(Ntotal, Nsections)
    412         section_sizes = ([0] +

ValueError: number sections must be larger than 0.

jona-sassenhagen avatar Apr 25 '16 22:04 jona-sassenhagen

Maybe an MNE issue? Can you try with MNE sampling data? I think there was something ... long time ago. I never use negative numbers in joblib for some classical conditioning reason...

On Tue, Apr 26, 2016 at 12:13 AM jona-sassenhagen [email protected] wrote:

Creating forward models fails when n_jobs is negative. (Works when it's positive.) Will see if I can find anything.

Employing the head->MRI coordinate transform with the BEM model. BEM model dict is now set up

Source spaces are in head coordinates.

Checking that the sources are inside the bounding surface (will take a few...)

TypeError Traceback (most recent call last) /home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/numpy/lib/shape_base.py in array_split(ary, indices_or_sections, axis) 403 # handle scalar case. --> 404 Nsections = len(indices_or_sections) + 1 405 div_points = [0] + list(indices_or_sections) + [Ntotal]

TypeError: object of type 'int' has no len()

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last) in () 4 recordings_path=recordings_path, 5 info_from=(('data_type', "task_story_math"), ('run_index', 0)), ----> 6 n_jobs=-8 7 ) 8

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/hcp-0.1.dev0-py3.5.egg/hcp/workflows/inverse.py in make_mne_forward(anatomy_path, subject, recordings_path, info_from, fwd_params, src_params, hcp_path, n_jobs) 92 fwd = mne.make_forward_solution( 93 info, trans=head_mri_t, bem=bem_sol, src=src_subject, ---> 94 n_jobs=n_jobs) 95 96 return dict(fwd=fwd, src_subject=src_subject,

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in make_forward_solution(info, trans, src, bem, fname, meg, eeg, mindist, ignore_ref, overwrite, n_jobs, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, _args, *_kwargs) 607 with use_log_level(verbose_level): 608 return function(_args, *_kwargs) --> 609 return function(_args, *_kwargs) 610 611

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in make_forward_solution(info, trans, src, bem, fname, meg, eeg, mindist, ignore_ref, overwrite, n_jobs, verbose) 582 update_kwargs, bem = _prepare_for_forward( 583 src, mri_head_t, info, bem, mindist, n_jobs, bem_extra, trans, --> 584 info_extra, meg, eeg, ignore_ref, fname, overwrite) 585 del (src, mri_head_t, trans, info_extra, bem_extra, mindist, 586 meg, eeg, ignore_ref)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in _prepare_for_forward(src, mri_head_t, info, bem, mindist, n_jobs, bem_extra, trans, info_extra, meg, eeg, ignore_ref, fname, overwrite, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, _args, *_kwargs) 607 with use_log_level(verbose_level): 608 return function(_args, *_kwargs) --> 609 return function(_args, *_kwargs) 610 611

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/forward/_make_forward.py in _prepare_for_forward(src, mri_head_t, info, bem, mindist, n_jobs, bem_extra, trans, info_extra, meg, eeg, ignore_ref, fname, overwrite, verbose) 468 if not bem['is_sphere']: 469 inner_skull = _bem_find_surface(bem, 'inner_skull') --> 470 _filter_source_spaces(inner_skull, mindist, mri_head_t, src, n_jobs) 471 logger.info('') 472

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _filter_source_spaces(surf, limit, mri_head_t, src, n_jobs, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, _args, *_kwargs) 607 with use_log_level(verbose_level): 608 return function(_args, *_kwargs) --> 609 return function(_args, *_kwargs) 610 611

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _filter_source_spaces(surf, limit, mri_head_t, src, n_jobs, verbose) 2013 2014 # Check that the source is inside surface (often the inner skull) -> 2015 outside = _points_outside_surface(r1s, surf, n_jobs) 2016 omit_outside = np.sum(outside) 2017

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _points_outside_surface(rr, surf, n_jobs, verbose)

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/utils.py in verbose(function, _args, *_kwargs) 607 with use_log_level(verbose_level): 608 return function(_args, *_kwargs) --> 609 return function(_args, *_kwargs) 610 611

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/mne-0.12.dev0-py3.5.egg/mne/source_space.py in _points_outside_surface(rr, surf, n_jobs, verbose) 2070 parallel, p_fun, _ = parallel_func(_get_solids, n_jobs) 2071 tot_angles = parallel(p_fun(surf['rr'][tris], rr) -> 2072 for tris in np.array_split(surf['tris'], n_jobs)) 2073 return np.abs(np.sum(tot_angles, axis=0) / (2 * np.pi) - 1.0) > 1e-5 2074

/home/FB/fb05/sassenha/anaconda3/lib/python3.5/site-packages/numpy/lib/shape_base.py in array_split(ary, indices_or_sections, axis) 408 Nsections = int(indices_or_sections) 409 if Nsections <= 0: --> 410 raise ValueError('number sections must be larger than 0.') 411 Neach_section, extras = divmod(Ntotal, Nsections) 412 section_sizes = ([0] +

ValueError: number sections must be larger than 0.

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/mne-tools/mne-hcp/issues/6

dengemann avatar Apr 25 '16 22:04 dengemann