Cortical Thickness Failing (using ANTS in xcpEngine)

Note: This is a duplicate post that’s open on github, but I was hoping someone here might be able to help/explain. Thanks!

Describe the bug
I have been trying to run my dataset through the xcpEngine structural pipeline, and it continually gets stuck on the Cortical thickness using DiReCT (KellyKapowski) step. It will not go past the 10th iteration (though it’s supposed to go up to 45), and the current energy always = 1 (in other datasets this number has been different).

Cohort file

id0,img
sub-ADS4107,/projects/adapt_lab/shared/ADS/data/BIDS_data/derivatives/fmriprep/sub-ADS4107/anat/sub-ADS4107_desc-preproc_T1w.nii.gz
sub-ADS4111,/projects/adapt_lab/shared/ADS/data/BIDS_data/derivatives/fmriprep/sub-ADS4111/anat/sub-ADS4111_desc-preproc_T1w.nii.gz

Design File

#!/usr/bin/env bash

###################################################################
#  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  ⊗  #
###################################################################


###################################################################
# This design file stores the values of all variables required to
# execute a complete task-free functional connectivity pipeline.
# You may execute the analysis specified in this design file by
# calling (in any bash terminal):
#
# xcpEngine -d <design> -c <cohort> -o <output> <options>
#
# Variables fall into five general categories:
# * ANALYSIS VARIABLES are used at all stages of this analysis.
# * PIPELINE specifies the modules that comprise the analysis.
# * GLOBAL VARIABLES are used at all stages of all analyses.
# * MODULE VARIABLES are used during one stage of the analysis.
#                  These are typically array variables with array
#                  indices equal to the index of the analysis
#                  stage during which they are used.
# * OUTPUT VARIABLES may be used at all stages of the analysis.
#                  These are sometimes array variables with array
#                  indices equal to the value of the primary
#                  subject identifier. They will appear only in
#                  localised design files.
###################################################################


###################################################################
# ANALYSIS VARIABLES
###################################################################

analysis=struc-ACCELERATOR
design=/projects/adapt_lab/shared/ADS/Scripts/rsfMRI/xcpEngine/anat-Minimal_201903162306.dsn
sequence=anatomical
standard=MNI%1x1x1

###################################################################
# PIPELINE
###################################################################

pipeline=struc,qcanat

###################################################################
# 1 STRUC
###################################################################

struc_denoise_anat[1]=1
struc_prior_weight[1]=0.25
struc_posterior_formulation[1]='Socrates[1]'
struc_keepBEImages[1]=0
struc_floating_point[1]=0
struc_random_seed[1]=0
struc_bspline[1]=0
struc_fit[1]=0.3
struc_quick[1]=0
struc_seg_priors[1]=0
struc_rerun[1]=0
struc_cleanup[1]=1
struc_process[1]=ACT

###################################################################
# 2 QCANAT
###################################################################

qcanat_gm[2]=Y
qcanat_gm_val[2]=2,4
qcanat_wm[2]=Y
qcanat_wm_val[2]=3
qcanat_csf[2]=Y
qcanat_csf_val[2]=1
qcanat_cort[2]=Y
qcanat_cort_val[2]=4
qcanat_rerun[2]=0
qcanat_cleanup[2]=1

Error message
Paste your error message between the backticks

Running DiReCT for 3-dimensional images.

  Iteration 1 (of 45).  Current energy = 1.  
  Iteration 2 (of 45).  Current energy = 1.  
  Iteration 3 (of 45).  Current energy = 1.  
  Iteration 4 (of 45).  Current energy = 1.  
  Iteration 5 (of 45).  Current energy = 1.  
  Iteration 6 (of 45).  Current energy = 1.  
  Iteration 7 (of 45).  Current energy = 1.  
  Iteration 8 (of 45).  Current energy = 1.  
  Iteration 9 (of 45).  Current energy = 1.  
  Iteration 10 (of 45).  Current energy = 1.  (convergence value = -3.18099e-06, threshold = 0)
   ImageToImageFilter (0x555555c09ad0)
     RTTI typeinfo:   itk::DiReCTImageFilter<itk::Image<unsigned int, 3u>, itk::Image<float, 3u> >
     Reference Count: 1
     Modified Time: 159635
     Debug: Off
     Object Name: 
     Observers: 
       IterationEvent(Command)
     Inputs: 
       Primary: (0x555555c141a0) *
       _1: (0x555555c1d1d0)
       _2: (0x555555c145c0)
     Indexed Inputs: 
       0: Primary (0x555555c141a0)
       1: _1 (0x555555c1d1d0)
       2: _2 (0x555555c145c0)
     Required Input Names: Primary
     NumberOfRequiredInputs: 3
     Outputs: 
       Primary: (0x555555c30770)
       _1: (0x555555c302a0)
     Indexed Outputs: 
       0: Primary (0x555555c30770)
       1: _1 (0x555555c302a0)
     NumberOfRequiredOutputs: 1
     Number Of Work Units: 112
     ReleaseDataFlag: Off
     ReleaseDataBeforeUpdateFlag: Off
     AbortGenerateData: Off
     Progress: 0
     Multithreader: 
       RTTI typeinfo:   itk::PoolMultiThreader
       Reference Count: 1
       Modified Time: 193
       Debug: Off
       Object Name: 
       Observers: 
         none
       Number of Work Units: 112
       Number of Threads: 28
       Global Maximum Number Of Threads: 128
       Global Default Number Of Threads: 28
       Global Default Threader Type: PoolMultiThreader
       SingleMethod: 0
       SingleData: 0
     DynamicMultiThreading: On
     CoordinateTolerance: 1e-06
     DirectionTolerance: 1e-06
     Gray matter label = 2
     White matter label = 3
     Maximum number of iterations = 45
     Thickness prior estimate = 10
     Smoothing variance = 1
     Smoothing velocity field variance = 1.5
     Number of integration points = 10
     Maximum number of invert displacement field iterations = 20
     Initial gradient step = 0.025
     Current gradient step = 0.025
     Convergence threshold = 0
     Convergence window size = 10
     Time smoothing variance = 1
DiReCT elapsed time: 11191.3

Runtime Information
I was using a singularity container on an HPC. I had allotted 100GB of memory to the task, and readouts state that the task used only 21GB.

Additional context
I’ve run this exact pipeline with other datasets and it’s not having this issue. It may be that our anatomical files are almost double in size than in other datasets. I tried using .nii instead of .nii.gz to reduce memory usage, but the issue persisted.

MANAGED BY INCF