Skip to content

Difficult time to deal with crash files from different nipype versions #2625

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

Closed
anibalsolon opened this issue Jun 28, 2018 · 2 comments
Closed
Milestone

Comments

@anibalsolon
Copy link
Contributor

Summary

When using CLI utility to open a crash file, if it was generated in a different nipype version, it may show strange/unrelated errors.

Actual behavior

Exceptions from different reasons are shown when a crash file is opened with a different nipype version than the one that generated the crash.

Expected behavior

Better deal with this version difference, at least showing that there is a problem to the user.

How to replicate the behavior

Try to open a crash file from a different nipype version, especially when the classes within the crash were changed.

Script/Workflow details

N/A

Platform details:

Please paste the output of: python -c "import nipype; print(nipype.get_info()); print(nipype.__version__)"

{
	'pkg_path': '/home/anibalsolon/Documents/nipype/anibalsolon/nipype',
	'commit_source': 'repository',
	'commit_hash': 'b5d79b4',
	'nipype_version': '1.1.0-dev+gb5d79b4',
	'sys_version': '3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19) \n[GCC 7.2.0]',
	'sys_executable': '/opt/anaconda3/bin/python',
	'sys_platform': 'linux',
	'numpy_version': '1.14.0',
	'scipy_version': '1.0.0',
	'networkx_version': '2.1',
	'nibabel_version': '2.2.1',
	'traits_version': '4.6.0'
}
1.1.0-dev+gb5d79b4```

### Execution environment

Choose one
- My python environment outside container
@mgxd
Copy link
Member

mgxd commented Jun 28, 2018

@anibalsolon could you show an example traceback of opening a crashfile generated by a different nipype version?

@anibalsolon
Copy link
Contributor Author

Hi @mgxd , sure!

This is an error generated on Nipype@0.13.1:

Traceback (most recent call last):
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/bin/nipypecli", line 11, in <module>
    sys.exit(cli())
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/nipype/scripts/cli.py", line 76, in crash
    display_crash_file(crashfile, rerun, debug, dir)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/nipype/scripts/crash_files.py", line 51, in display_crash_file
    crash_data = loadcrash(crashfile)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/nipype/utils/filemanip.py", line 556, in loadcrash
    return loadpkl(infile)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/nipype/utils/filemanip.py", line 578, in loadpkl
    unpkl = pickle.load(pkl_file)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/pickle.py", line 1384, in load
    return Unpickler(file).load()
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/pickle.py", line 864, in load
    dispatch[key](self)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/pickle.py", line 1223, in load_build
    setstate(state)
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/traits/has_traits.py", line 1441, in __setstate__
    self.trait_set( trait_change_notify = trait_change_notify, **state )
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/traits/has_traits.py", line 1544, in trait_set
    setattr( self, name, value )
  File "/opt/anaconda3/envs/C-PAC+1.2.0_dev/lib/python2.7/site-packages/nipype/interfaces/traits_extension.py", line 92, in validate
    self.info_text, value))
traits.trait_errors.TraitError: The trait 'in_file' of a SkullStripInputSpec instance is an existing file name, but the path  '/Users/anibalsolon/run/cpac/v120/v120_test2/w/resting_preproc_0050642_ses-1/anat_preproc_0/anat_skullstrip/sub-0050642_T1w_resample.nii.gz' does not exist.

and this is what happens when I try to open it with the CLI utility using Nipype@1.0.4:

/opt/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: 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
Traceback (most recent call last):
  File "/opt/anaconda3/bin/nipypecli", line 11, in <module>
    sys.exit(cli())
  File "/opt/anaconda3/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/opt/anaconda3/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/opt/anaconda3/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/opt/anaconda3/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/nipype/scripts/cli.py", line 94, in crash
    display_crash_file(crashfile, rerun, debug, dir)
  File "/opt/anaconda3/lib/python3.6/site-packages/nipype/scripts/crash_files.py", line 51, in display_crash_file
    crash_data = loadcrash(crashfile)
  File "/opt/anaconda3/lib/python3.6/site-packages/nipype/utils/filemanip.py", line 631, in loadcrash
    return loadpkl(infile)
  File "/opt/anaconda3/lib/python3.6/site-packages/nipype/utils/filemanip.py", line 646, in loadpkl
    unpkl = pickle.load(pkl_file)
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/has_traits.py", line 1440, in __setstate__
    self.trait_set( trait_change_notify = trait_change_notify, **state )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/has_traits.py", line 1543, in trait_set
    setattr( self, name, value )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_types.py", line 2625, in validate
    return TraitDictObject( self, object, name, value )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py", line 3063, in __init__
    dict.update( self, self._validate_dic( value ) )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py", line 3263, in _validate_dic
    raise excp
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py", line 3260, in _validate_dic
    value = value_validate( object, name, value )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py", line 1983, in validate
    return self.slow_validate( object, name, value )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py", line 1991, in slow_validate
    self.error( object, name, value )
  File "/opt/anaconda3/lib/python3.6/site-packages/traits/trait_handlers.py", line 172, in error
    value )
traits.trait_errors.TraitError: Each value of the 'environ' trait of a SkullStripInputSpec instance must be a bytes or None or a value of class 'str', but a value of 1' <class 'future.types.newstr.newstr'> was specified.

@mgxd mgxd closed this as completed in #2626 Jul 2, 2018
@effigies effigies added this to the 1.1.0 milestone Aug 30, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants