When I use the --syn-sdc on one of my datasets, I get the following error for all the run of one out of 9 subjects (the rest finishes without errors):
Node: fmriprep_wf.single_subject_02_wf.func_preproc_task_binocularrivalry_run_01_wf.nonlinear_sdc_wf.syn_i
Working directory: /scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/syn_i
Node inputs:
args = <undefined>
collapse_output_transforms = True
convergence_threshold = [1e-08, 1e-08]
convergence_window_size = [20, 10]
dimension = 3
environ = {'NSLOTS': '1'}
fixed_image = ['/scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/t1_2_ref/highres001_BrainExtractionBrain_inv_trans.nii.gz']
fixed_image_mask = <undefined>
fixed_image_masks = ['NULL', '/scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/threshold_atlas/fmap_atlas_trans_maths.nii.gz']
float = True
ignore_exception = False
initial_moving_transform = <undefined>
initial_moving_transform_com = <undefined>
initialize_transforms_per_stage = False
interpolation = Linear
interpolation_parameters = <undefined>
invert_initial_moving_transform = <undefined>
metric = ['Mattes', 'CC']
metric_item_trait = <undefined>
metric_stage_trait = <undefined>
metric_weight = [1.0, 1.0]
metric_weight_item_trait = <undefined>
metric_weight_stage_trait = <undefined>
moving_image = ['/scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/bold_hmc_wf/enhance_and_skullstrip_bold_wf/apply_mask/uni_masked.nii.gz']
moving_image_mask = <undefined>
moving_image_masks = <undefined>
num_threads = 1
number_of_iterations = [[100, 50], [20, 10]]
output_inverse_warped_image = <undefined>
output_transform_prefix = ants_susceptibility
output_warped_image = True
radius_bins_item_trait = <undefined>
radius_bins_stage_trait = <undefined>
radius_or_number_of_bins = [56, 5]
restore_state = <undefined>
restrict_deformation = [[1, 0, 0], [1, 0, 0]]
sampling_percentage = <undefined>
sampling_percentage_item_trait = <undefined>
sampling_percentage_stage_trait = <undefined>
sampling_strategy = <undefined>
sampling_strategy_item_trait = <undefined>
sampling_strategy_stage_trait = <undefined>
save_state = <undefined>
shrink_factors = [[2, 1], [1, 1]]
sigma_units = ['vox', 'vox']
smoothing_sigmas = [[1.0, 0.0], [1.0, 0.0]]
terminal_output = stream
transform_parameters = [(0.8, 2.0, 2.0), (0.8, 2.0, 2.0)]
transforms = ['SyN', 'SyN']
use_estimate_learning_rate_once = [True, True]
use_histogram_matching = [True, True]
verbose = <undefined>
winsorize_lower_quantile = 0.001
winsorize_upper_quantile = 1.0
write_composite_transform = False
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/pipeline/plugins/multiproc.py", line 52, 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 372, in run
self._run_interface()
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 482, 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 613, in _run_command
result = self._interface.run()
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/base.py", line 1083, in run
runtime = self._run_wrapper(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/base.py", line 1757, in _run_wrapper
runtime = self._run_interface(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/base.py", line 1791, in _run_interface
self.raise_exception(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/nipype/interfaces/base.py", line 1715, in raise_exception
**runtime.dictcopy()))
RuntimeError: Command:
antsRegistration --collapse-output-transforms 1 --dimensionality 3 --float 1 --initialize-transforms-per-stage 0 --interpolation Linear --output [ ants_susceptibility, ants_susceptibility_Warped.nii.gz ] --transform SyN[ 0.8, 2.0, 2.0 ] --metric Mattes[ /scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/t1_2_ref/highres001_BrainExtractionBrain_inv_trans.nii.gz, /scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/bold_hmc_wf/enhance_and_skullstrip_bold_wf/apply_mask/uni_masked.nii.gz, 1, 56 ] --convergence [ 100x50, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --restrict-deformation 1x0x0 --masks [ NULL, NULL ] --transform SyN[ 0.8, 2.0, 2.0 ] --metric CC[ /scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/t1_2_ref/highres001_BrainExtractionBrain_inv_trans.nii.gz, /scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/bold_hmc_wf/enhance_and_skullstrip_bold_wf/apply_mask/uni_masked.nii.gz, 1, 5 ] --convergence [ 20x10, 1e-08, 10 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 1x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --restrict-deformation 1x0x0 --masks [ /scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/threshold_atlas/fmap_atlas_trans_maths.nii.gz, NULL ] --winsorize-image-intensities [ 0.001, 1.0 ] --write-composite-transform 0
Standard output:
Standard error:
file NULL does not exist .
file NULL does not exist .
file NULL does not exist .
/tmp/ANTs/build/ITKv4/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_svd.hxx: suspicious return value (2) from SVDC
/tmp/ANTs/build/ITKv4/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_svd.hxx: M is 2x2
M = [ ...
-nan -nan
-nan -nan ]
Return code: 1
Interface Registration failed to run.
You're running in Singularity? I wonder if there's a conflicting version of ANTs in your environment. Singularity does a kind of minimal masking of the environment, so it's possible that the native installation of ANTs is being run instead of the version in the container.
I'm running under Singularity, but I have no ANTS binaries in my PATH. I sent you an email with the data, so you can maybe have a look if you have time.
@effigies is that 'NULL' in
fixed_image_masks = ['NULL', '/scratch/wf/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/threshold_atlas/fmap_atlas_trans_maths.nii.gz']
acceptable?
Weird I never got the email from you @Gilles86
@oesteban That's expected (and actually hard-coded), but pre-2.2.0 it would have caused issues. That's why I at first thought that the wrong version of ANTs might be being called.
I was able to reproduce this issue with the provided data.
This seems to be another partial FoV issue. The ref_2_t1 node is producing the identity affine:
Transform file: /data/scratch/hollander/fmriprep_wf/single_subject_02_wf/func_preproc_task_binocularrivalry_run_01_wf/nonlinear_sdc_wf/ref_2_t1/transform0GenericAffine.mat
AffineTransform (0x2d83e00)
RTTI typeinfo: itk::AffineTransform<double, 3u>
Reference Count: 3
Modified Time: 660
Debug: Off
Object Name:
Observers:
none
Matrix:
1 0 0
0 1 0
0 0 1
Offset: [0, 0, 0]
Center: [0, 0, 0]
Translation: [0, 0, 0]
Inverse:
1 0 0
0 1 0
0 0 1
Singular: 0
I suspect the initial transform is failing to overlap.