Closed
Description
It seems that we are reaching to a point where the overhead of certain interfaces may be prohibitive:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/pipeline/plugins/multiproc.py", line 51, in run_node
result['result'] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 407, in run
self._run_interface()
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 517, in _run_interface
self._result = self._run_command(execute)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 650, in _run_command
result = self._interface.run()
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/base.py", line 1088, in run
runtime = self._run_interface(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/fmriprep/interfaces/itk.py", line 136, in _run_interface
for i, (in_file, in_xfm) in enumerate(zip(in_files, xfms_list))
File "/usr/local/miniconda/lib/python3.6/site-packages/fmriprep/interfaces/itk.py", line 136, in <listcomp>
for i, (in_file, in_xfm) in enumerate(zip(in_files, xfms_list))
File "/usr/local/miniconda/lib/python3.6/site-packages/fmriprep/interfaces/itk.py", line 262, in _applytfms
runtime = xfm.run().runtime
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/base.py", line 1072, in run
version=self.version)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/ants/base.py", line 128, in version
return Info().version
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/ants/base.py", line 45, in version
res = subprocess.check_output([cmd, '--version']).decode('utf-8')
File "/usr/local/miniconda/lib/python3.6/subprocess.py", line 336, in check_output
**kwargs).stdout
File "/usr/local/miniconda/lib/python3.6/subprocess.py", line 418, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['/usr/lib/ants/antsRegistration', '--version']' died with <Signals.SIGKILL: 9>.
When using antsApplyTransforms
and friends, nipype needs to check the version every time. That version check requires forking a new process. As a result, fmriprep is continuously forking processes.
Some of this overhead could be addressed (like this problem, we could catch ants version the first time it is run) but I fear these problems will be biting back.