Skip to content

Commit 203feab

Browse files
committed
enh: updated ants cortical thickness interface
1 parent 212f461 commit 203feab

File tree

2 files changed

+30
-37
lines changed

2 files changed

+30
-37
lines changed

nipype/interfaces/ants/segmentation.py

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -447,16 +447,17 @@ class antsCorticalThicknessoutputSpec(TraitedSpec):
447447
BrainExtractionMask = File(exists=True, desc='brain extraction mask')
448448
BrainSegmentation = File(exists=True, desc='brain segmentaion image')
449449
BrainSegmentationN4 = File(exists=True, desc='N4 corrected image')
450-
BrainSegmentationPosteriorsCSF = File(exists=True, desc='CSF posterior probability image')
451-
BrainSegmentationPosteriorsGM = File(exists=True, desc='GM posterior probability image')
452-
BrainSegmentationPosteriorsWM = File(exists=True, desc='WM posterior probability image')
453-
BrainSegmentationPosteriorsDGM = File(exists=True, desc='DGM posterior probability image')
450+
BrainSegmentationPosteriors = OutputMultiPath(File(exists=True),
451+
desc='Posterior probability images')
454452
CorticalThickness = File(exists=True, desc='cortical thickness file')
455453
TemplateToSubject1GenericAffine = File(exists=True, desc='Template to subject affine')
456454
TemplateToSubject0Warp = File(exists=True, desc='Template to subject warp')
457455
SubjectToTemplate1Warp = File(exists=True, desc='Template to subject inverse warp')
458456
SubjectToTemplate0GenericAffine = File(exists=True, desc='Template to subject inverse affine')
459-
TemplateToSubjectLogJacobian = File(exists=True, desc='Template to subject log jacobian')
457+
SubjectToTemplateLogJacobian = File(exists=True, desc='Template to subject log jacobian')
458+
CorticalThicknessNormedToTemplate = File(exists=True,
459+
desc='Normalized cortical thickness')
460+
BrainVolumes = File(exists=True, desc='Brain volumes as text')
460461

461462

462463
class antsCorticalThickness(ANTSCommand):
@@ -496,25 +497,20 @@ def _format_arg(self, opt, spec, val):
496497
retval = '-t %s' % val
497498
return retval
498499
if opt == 'segmentation_priors':
499-
priors_directory, _, ext = split_filename(self.inputs.segmentation_priors[0])
500-
if priors_directory is not '':
501-
retval = "-p %s/BrainSegmentationPrior%%02d" % priors_directory
502-
else:
503-
retval = "-p BrainSegmentationPrior%02d"
504-
retval += ext
500+
_, _, ext = split_filename(self.inputs.segmentation_priors[0])
501+
retval = "-p nipype_priors/BrainSegmentationPrior%02d" + ext
505502
return retval
506503
return super(ANTSCommand, self)._format_arg(opt, spec, val)
507504

508505
def _run_interface(self, runtime, correct_return_codes=[0]):
509-
priors_directory = os.path.join(os.getcwd(), "priors")
506+
priors_directory = os.path.join(os.getcwd(), "nipype_priors")
510507
if not os.path.exists(priors_directory):
511508
os.makedirs(priors_directory)
512509
_, _, ext = split_filename(self.inputs.segmentation_priors[0])
513510
for i, f in enumerate(self.inputs.segmentation_priors):
514511
target = os.path.join(priors_directory, 'BrainSegmentationPrior%02d' % (i + 1) + ext)
515512
if not (os.path.exists(target) and os.path.realpath(target) == os.path.abspath(f)):
516-
copyfile(os.path.abspath(f), os.path.join(priors_directory,
517-
'BrainSegmentationPrior%02d' % (i + 1) + ext))
513+
copyfile(os.path.abspath(f), target)
518514
runtime = super(antsCorticalThickness, self)._run_interface(runtime)
519515
return runtime
520516

@@ -532,22 +528,13 @@ def _list_outputs(self):
532528
self.inputs.out_prefix +
533529
'BrainSegmentation0N4.' +
534530
self.inputs.image_suffix)
535-
outputs['BrainSegmentationPosteriorsCSF'] = os.path.join(os.getcwd(),
536-
self.inputs.out_prefix +
537-
'BrainSegmentationPosteriors01.' +
538-
self.inputs.image_suffix)
539-
outputs['BrainSegmentationPosteriorsGM'] = os.path.join(os.getcwd(),
540-
self.inputs.out_prefix +
541-
'BrainSegmentationPosteriors02.' +
542-
self.inputs.image_suffix)
543-
outputs['BrainSegmentationPosteriorsWM'] = os.path.join(os.getcwd(),
544-
self.inputs.out_prefix +
545-
'BrainSegmentationPosteriors03.' +
546-
self.inputs.image_suffix)
547-
outputs['BrainSegmentationPosteriorsDGM'] = os.path.join(os.getcwd(),
548-
self.inputs.out_prefix +
549-
'BrainSegmentationPosteriors04.' +
550-
self.inputs.image_suffix)
531+
posteriors = []
532+
for i in range(len(self.inputs.segmentation_priors)):
533+
posteriors.append(os.path.join(os.getcwd(),
534+
self.inputs.out_prefix +
535+
'BrainSegmentationPosteriors%02d.' % (i + 1) +
536+
self.inputs.image_suffix))
537+
outputs['BrainSegmentationPosteriors'] = posteriors
551538
outputs['CorticalThickness'] = os.path.join(os.getcwd(),
552539
self.inputs.out_prefix +
553540
'CorticalThickness.' +
@@ -565,8 +552,15 @@ def _list_outputs(self):
565552
outputs['SubjectToTemplate0GenericAffine'] = os.path.join(os.getcwd(),
566553
self.inputs.out_prefix +
567554
'SubjectToTemplate0GenericAffine.mat')
568-
outputs['TemplateToSubjectLogJacobian'] = os.path.join(os.getcwd(),
555+
outputs['SubjectToTemplateLogJacobian'] = os.path.join(os.getcwd(),
569556
self.inputs.out_prefix +
570-
'subjectToTemplateLogJacobian.' +
557+
'SubjectToTemplateLogJacobian.' +
571558
self.inputs.image_suffix)
559+
outputs['CorticalThicknessNormedToTemplate'] = os.path.join(os.getcwd(),
560+
self.inputs.out_prefix +
561+
'CorticalThickness.' +
562+
self.inputs.image_suffix)
563+
outputs['BrainVolumes'] = os.path.join(os.getcwd(),
564+
self.inputs.out_prefix +
565+
'brainvols.csv')
572566
return outputs

nipype/interfaces/ants/tests/test_auto_antsCorticalThickness.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,16 +78,15 @@ def test_antsCorticalThickness_outputs():
7878
output_map = dict(BrainExtractionMask=dict(),
7979
BrainSegmentation=dict(),
8080
BrainSegmentationN4=dict(),
81-
BrainSegmentationPosteriorsCSF=dict(),
82-
BrainSegmentationPosteriorsDGM=dict(),
83-
BrainSegmentationPosteriorsGM=dict(),
84-
BrainSegmentationPosteriorsWM=dict(),
81+
BrainSegmentationPosteriors=dict(),
82+
BrainVolumes=dict(),
8583
CorticalThickness=dict(),
84+
CorticalThicknessNormedToTemplate=dict(),
8685
SubjectToTemplate0GenericAffine=dict(),
8786
SubjectToTemplate1Warp=dict(),
87+
SubjectToTemplateLogJacobian=dict(),
8888
TemplateToSubject0Warp=dict(),
8989
TemplateToSubject1GenericAffine=dict(),
90-
TemplateToSubjectLogJacobian=dict(),
9190
)
9291
outputs = antsCorticalThickness.output_spec()
9392

0 commit comments

Comments
 (0)