crash-20200225-181951-ntraut-SpikesMask.a042-6caf6185-e1b1-4561-8748-7bce875a75d9.txt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. Node: workflow_enumerator.funcMRIQC.ReportsWorkflow.SpikesMask
  2. Working directory: /pasteur/projets/policy01/cinq/rto/data/abide2all/src/work/workflow_enumerator/funcMRIQC/ReportsWorkflow/_in_file_..pasteur..projets..policy01..cinq..rto..data..abide2all..data..RawData..ABIDEII-OHSU_1..sub-28940..ses-1..func..sub-28940_ses-1_task-rest_run-1_bold.nii.gz/SpikesMask
  3. Node inputs:
  4. function_str = def spikes_mask(in_file, in_mask=None, out_file=None):
  5. """
  6. Utility function to calculate a mask in which check
  7. for :abbr:`EM (electromagnetic)` spikes.
  8. """
  9. import os.path as op
  10. import nibabel as nb
  11. import numpy as np
  12. from nilearn.image import mean_img
  13. from nilearn.plotting import plot_roi
  14. from scipy import ndimage as nd
  15. if out_file is None:
  16. fname, ext = op.splitext(op.basename(in_file))
  17. if ext == '.gz':
  18. fname, ext2 = op.splitext(fname)
  19. ext = ext2 + ext
  20. out_file = op.abspath('{}_spmask{}'.format(fname, ext))
  21. out_plot = op.abspath('{}_spmask.pdf'.format(fname))
  22. in_4d_nii = nb.load(in_file)
  23. orientation = nb.aff2axcodes(in_4d_nii.affine)
  24. if in_mask:
  25. mask_data = nb.load(in_mask).get_data()
  26. a = np.where(mask_data != 0)
  27. bbox = np.max(a[0]) - np.min(a[0]), np.max(a[1]) - \
  28. np.min(a[1]), np.max(a[2]) - np.min(a[2])
  29. longest_axis = np.argmax(bbox)
  30. # Input here is a binarized and intersected mask data from previous section
  31. dil_mask = nd.binary_dilation(
  32. mask_data, iterations=int(mask_data.shape[longest_axis] / 9))
  33. rep = list(mask_data.shape)
  34. rep[longest_axis] = -1
  35. new_mask_2d = dil_mask.max(axis=longest_axis).reshape(rep)
  36. rep = [1, 1, 1]
  37. rep[longest_axis] = mask_data.shape[longest_axis]
  38. new_mask_3d = np.logical_not(np.tile(new_mask_2d, rep))
  39. else:
  40. new_mask_3d = np.zeros(in_4d_nii.shape[:3]) == 1
  41. if orientation[0] in ['L', 'R']:
  42. new_mask_3d[0:2, :, :] = True
  43. new_mask_3d[-3:-1, :, :] = True
  44. else:
  45. new_mask_3d[:, 0:2, :] = True
  46. new_mask_3d[:, -3:-1, :] = True
  47. mask_nii = nb.Nifti1Image(new_mask_3d.astype(np.uint8), in_4d_nii.affine,
  48. in_4d_nii.header)
  49. mask_nii.to_filename(out_file)
  50. plot_roi(mask_nii, mean_img(in_4d_nii), output_file=out_plot)
  51. return out_file, out_plot
  52. in_file = <undefined>
  53. in_mask = <undefined>
  54. Traceback (most recent call last):
  55. File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/plugins/linear.py", line 48, in run
  56. node.run(updatehash=updatehash)
  57. File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 472, in run
  58. result = self._run_interface(execute=True)
  59. File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 563, in _run_interface
  60. return self._run_command(execute)
  61. File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_command
  62. result = self._interface.run(cwd=outdir)
  63. File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py", line 375, in run
  64. runtime = self._run_interface(runtime)
  65. File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/utility/wrappers.py", line 144, in _run_interface
  66. out = function_handle(**args)
  67. TypeError: spikes_mask() missing 1 required positional argument: 'in_file'