Skip to content

Commit b05da12

Browse files
committed
fix: resolved changes conflict
2 parents ee22a16 + e00c482 commit b05da12

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2351
-62
lines changed

CHANGES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ Next release
22
============
33

44
* API: Change how hash values are computed (https://github.com/nipy/nipype/pull/1174)
5+
* ENH: New interfaces for MRTrix3 (https://github.com/nipy/nipype/pull/1126)
56
* ENH: New option in afni.3dRefit - zdel, ydel, zdel etc. (https://github.com/nipy/nipype/pull/1079)
67
* FIX: ants.Registration composite transform outputs are no longer returned as lists (https://github.com/nipy/nipype/pull/1183)
78
* BUG: ANTs Registration interface failed with multi-modal inputs

doc/_templates/sidebar_versions.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ <h3>{{ _('Versions') }}</h3>
1717
<td align="left">Release</td><td align="right">Devel</td>
1818
</tr>
1919
<tr>
20-
<td align="left">0.10.0</td><td align="right">{{ version }}</td>
20+
<td align="left">0.11.0-rc1</td><td align="right">{{ version }}</td>
2121
</tr>
2222
<tr>
2323
<td align="left"><a href="{{pathto('users/install')}}">Download</a></td>

doc/documentation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Documentation
99
:Release: |version|
1010
:Date: |today|
1111

12-
Previous versions: `0.9.2 <http://nipy.org/nipype/0.9.2>`_ `0.8 <http://nipy.org/nipype/0.8>`_
12+
Previous versions: `0.10.0 <http://nipy.org/nipype/0.10.0>`_ `0.9.2 <http://nipy.org/nipype/0.9.2>`_
1313

1414
.. container:: doc2
1515

nipype/info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
_version_major = 0
1111
_version_minor = 11
1212
_version_micro = 0
13-
_version_extra = 'dev'
13+
_version_extra = 'rc1'
1414

1515
def get_nipype_gitversion():
1616
"""Nipype version as reported by the last commit in git

nipype/interfaces/ants/base.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,8 @@ def set_default_num_threads(cls, num_threads):
8383
<instance>.inputs.num_threads
8484
"""
8585
cls._num_threads = num_threads
86+
87+
def _format_xarray(self, val):
88+
""" Convienence method for converting [1,2,3] -> 1x2x3 """
89+
val = 'x'.join([str(x) for x in val])
90+
return val

nipype/interfaces/ants/registration.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -284,13 +284,11 @@ class RegistrationInputSpec(ANTSCommandInputSpec):
284284
interpolation = traits.Enum(
285285
'Linear', 'NearestNeighbor', 'CosineWindowedSinc', 'WelchWindowedSinc',
286286
'HammingWindowedSinc', 'LanczosWindowedSinc', 'BSpline',
287-
# 'MultiLabel',
288-
# 'Gaussian',
289-
# 'BSpline',
290-
argstr='%s', usedefault=True)
291287
# MultiLabel[<sigma=imageSpacing>,<alpha=4.0>]
292288
# Gaussian[<sigma=imageSpacing>,<alpha=1.0>]
293289
# BSpline[<order=3>]
290+
argstr='%s', usedefault=True)
291+
294292
write_composite_transform = traits.Bool(
295293
argstr='--write-composite-transform %d',
296294
default=False, usedefault=True, desc='')
@@ -616,7 +614,7 @@ def _get_outputfilenames(self, inverse=False):
616614
output_filename = None
617615
if not inverse:
618616
if isdefined(self.inputs.output_warped_image) and \
619-
self.inputs.output_warped_image:
617+
self.inputs.output_warped_image:
620618
output_filename = self.inputs.output_warped_image
621619
if isinstance(output_filename, bool):
622620
output_filename = '%s_Warped.nii.gz' % self.inputs.output_transform_prefix
@@ -625,7 +623,7 @@ def _get_outputfilenames(self, inverse=False):
625623
return output_filename
626624
inv_output_filename = None
627625
if isdefined(self.inputs.output_inverse_warped_image) and \
628-
self.inputs.output_inverse_warped_image:
626+
self.inputs.output_inverse_warped_image:
629627
inv_output_filename = self.inputs.output_inverse_warped_image
630628
if isinstance(inv_output_filename, bool):
631629
inv_output_filename = '%s_InverseWarped.nii.gz' % self.inputs.output_transform_prefix

nipype/interfaces/ants/segmentation.py

Lines changed: 53 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,13 @@ class AtroposInputSpec(ANTSCommandInputSpec):
3737
mrf_smoothing_factor = traits.Float(argstr="%s")
3838
mrf_radius = traits.List(traits.Int(), requires=['mrf_smoothing_factor'])
3939
icm_use_synchronous_update = traits.Bool(argstr="%s")
40-
maximum_number_of_icm_terations = traits.Int(requires=['icm_use_synchronous_update'])
40+
maximum_number_of_icm_terations = traits.Int(
41+
requires=['icm_use_synchronous_update'])
4142
n_iterations = traits.Int(argstr="%s")
4243
convergence_threshold = traits.Float(requires=['n_iterations'])
4344
posterior_formulation = traits.Str(argstr="%s")
44-
use_mixture_model_proportions = traits.Bool(requires=['posterior_formulation'])
45+
use_mixture_model_proportions = traits.Bool(
46+
requires=['posterior_formulation'])
4547
out_classified_image_name = File(argstr="%s", genfile=True,
4648
hash_files=False)
4749
save_posteriors = traits.Bool()
@@ -93,17 +95,21 @@ class Atropos(ANTSCommand):
9395

9496
def _format_arg(self, opt, spec, val):
9597
if opt == 'initialization':
96-
retval = "--initialization %s[%d" % (val, self.inputs.number_of_tissue_classes)
98+
retval = "--initialization %s[%d" % (val,
99+
self.inputs.number_of_tissue_classes)
97100
if val == "PriorProbabilityImages":
98-
_, _, ext = split_filename(self.inputs.prior_probability_images[0])
99-
retval += ",priors/priorProbImages%02d" + ext + ",%g" % self.inputs.prior_weighting
101+
_, _, ext = split_filename(
102+
self.inputs.prior_probability_images[0])
103+
retval += ",priors/priorProbImages%02d" + \
104+
ext + ",%g" % self.inputs.prior_weighting
100105
if isdefined(self.inputs.prior_probability_threshold):
101106
retval += ",%g" % self.inputs.prior_probability_threshold
102107
return retval + "]"
103108
if opt == 'mrf_smoothing_factor':
104109
retval = "--mrf [%g" % val
105110
if isdefined(self.inputs.mrf_radius):
106-
retval += ",%s" % 'x'.join([str(s) for s in self.inputs.mrf_radius])
111+
retval += ",%s" % 'x'.join([str(s)
112+
for s in self.inputs.mrf_radius])
107113
return retval + "]"
108114
if opt == "icm_use_synchronous_update":
109115
retval = "--icm [%d" % val
@@ -153,11 +159,13 @@ def _gen_filename(self, name):
153159

154160
def _list_outputs(self):
155161
outputs = self._outputs().get()
156-
outputs['classified_image'] = os.path.abspath(self._gen_filename('out_classified_image_name'))
162+
outputs['classified_image'] = os.path.abspath(
163+
self._gen_filename('out_classified_image_name'))
157164
if isdefined(self.inputs.save_posteriors) and self.inputs.save_posteriors:
158165
outputs['posteriors'] = []
159166
for i in range(self.inputs.number_of_tissue_classes):
160-
outputs['posteriors'].append(os.path.abspath(self.inputs.output_posteriors_name_template % (i + 1)))
167+
outputs['posteriors'].append(os.path.abspath(
168+
self.inputs.output_posteriors_name_template % (i + 1)))
161169
return outputs
162170

163171

@@ -268,7 +276,7 @@ class N4BiasFieldCorrection(ANTSCommand):
268276
Examples
269277
--------
270278
271-
>>> import copy
279+
>>> import copy
272280
>>> from nipype.interfaces.ants import N4BiasFieldCorrection
273281
>>> n4 = N4BiasFieldCorrection()
274282
>>> n4.inputs.dimension = 3
@@ -282,7 +290,7 @@ class N4BiasFieldCorrection(ANTSCommand):
282290
--convergence [ 50x50x30x20 ] --output structural_corrected.nii \
283291
--shrink-factor 3'
284292
285-
>>> n4_2 = copy.deepcopy(n4)
293+
>>> n4_2 = copy.deepcopy(n4)
286294
>>> n4_2.inputs.convergence_threshold = 1e-6
287295
>>> n4_2.cmdline
288296
'N4BiasFieldCorrection --bspline-fitting [ 300 ] \
@@ -328,7 +336,7 @@ def _gen_filename(self, name):
328336

329337
def _format_arg(self, name, trait_spec, value):
330338
if ((name == 'output_image') and
331-
(self.inputs.save_bias or isdefined(self.inputs.bias_image))):
339+
(self.inputs.save_bias or isdefined(self.inputs.bias_image))):
332340
bias_image = self._gen_filename('bias_image')
333341
output = self._gen_filename('output_image')
334342
newval = '[ %s, %s ]' % (output, bias_image)
@@ -360,10 +368,12 @@ def _parse_inputs(self, skip=None):
360368

361369
def _list_outputs(self):
362370
outputs = self._outputs().get()
363-
outputs['output_image'] = os.path.abspath(self._gen_filename('output_image'))
371+
outputs['output_image'] = os.path.abspath(
372+
self._gen_filename('output_image'))
364373

365374
if self.inputs.save_bias or isdefined(self.inputs.bias_image):
366-
outputs['bias_image'] = os.path.abspath(self._gen_filename('bias_image'))
375+
outputs['bias_image'] = os.path.abspath(
376+
self._gen_filename('bias_image'))
367377
return outputs
368378

369379

@@ -386,7 +396,8 @@ class antsCorticalThicknessInputSpec(ANTSCommandInputSpec):
386396
mandatory=True)
387397
brain_probability_mask = File(exists=True, argstr='-m %s',
388398
desc='brain probability mask in template space', copyfile=False, mandatory=True)
389-
segmentation_priors = InputMultiPath(File(exists=True), argstr='-p %s', mandatory=True)
399+
segmentation_priors = InputMultiPath(
400+
File(exists=True), argstr='-p %s', mandatory=True)
390401
out_prefix = traits.Str('antsCT_', argstr='-o %s', usedefault=True,
391402
desc=('Prefix that is prepended to all output'
392403
' files (default = antsCT_)'))
@@ -458,11 +469,15 @@ class antsCorticalThicknessoutputSpec(TraitedSpec):
458469
BrainSegmentationPosteriors = OutputMultiPath(File(exists=True),
459470
desc='Posterior probability images')
460471
CorticalThickness = File(exists=True, desc='cortical thickness file')
461-
TemplateToSubject1GenericAffine = File(exists=True, desc='Template to subject affine')
472+
TemplateToSubject1GenericAffine = File(
473+
exists=True, desc='Template to subject affine')
462474
TemplateToSubject0Warp = File(exists=True, desc='Template to subject warp')
463-
SubjectToTemplate1Warp = File(exists=True, desc='Template to subject inverse warp')
464-
SubjectToTemplate0GenericAffine = File(exists=True, desc='Template to subject inverse affine')
465-
SubjectToTemplateLogJacobian = File(exists=True, desc='Template to subject log jacobian')
475+
SubjectToTemplate1Warp = File(
476+
exists=True, desc='Template to subject inverse warp')
477+
SubjectToTemplate0GenericAffine = File(
478+
exists=True, desc='Template to subject inverse affine')
479+
SubjectToTemplateLogJacobian = File(
480+
exists=True, desc='Template to subject log jacobian')
466481
CorticalThicknessNormedToTemplate = File(exists=True,
467482
desc='Normalized cortical thickness')
468483
BrainVolumes = File(exists=True, desc='Brain volumes as text')
@@ -516,7 +531,8 @@ def _run_interface(self, runtime, correct_return_codes=[0]):
516531
os.makedirs(priors_directory)
517532
_, _, ext = split_filename(self.inputs.segmentation_priors[0])
518533
for i, f in enumerate(self.inputs.segmentation_priors):
519-
target = os.path.join(priors_directory, 'BrainSegmentationPrior%02d' % (i + 1) + ext)
534+
target = os.path.join(
535+
priors_directory, 'BrainSegmentationPrior%02d' % (i + 1) + ext)
520536
if not (os.path.exists(target) and os.path.realpath(target) == os.path.abspath(f)):
521537
copyfile(os.path.abspath(f), target)
522538
runtime = super(antsCorticalThickness, self)._run_interface(runtime)
@@ -566,9 +582,9 @@ def _list_outputs(self):
566582
'SubjectToTemplateLogJacobian.' +
567583
self.inputs.image_suffix)
568584
outputs['CorticalThicknessNormedToTemplate'] = os.path.join(os.getcwd(),
569-
self.inputs.out_prefix +
570-
'CorticalThickness.' +
571-
self.inputs.image_suffix)
585+
self.inputs.out_prefix +
586+
'CorticalThickness.' +
587+
self.inputs.image_suffix)
572588
outputs['BrainVolumes'] = os.path.join(os.getcwd(),
573589
self.inputs.out_prefix +
574590
'brainvols.csv')
@@ -619,7 +635,8 @@ class JointFusionInputSpec(ANTSCommandInputSpec):
619635

620636

621637
class JointFusionOutputSpec(TraitedSpec):
622-
output_label_image = File(exists=True, desc='Output fusion label map image')
638+
output_label_image = File(exists=True)
639+
# TODO: optional outputs - output_posteriors, output_voting_weights
623640

624641

625642
class JointFusion(ANTSCommand):
@@ -640,16 +657,14 @@ class JointFusion(ANTSCommand):
640657
... 'segmentation1.nii.gz',
641658
... 'segmentation1.nii.gz']
642659
>>> at.inputs.target_image = 'T1.nii'
643-
>>> at.inputs.patch_radius = [3,2,1]
644-
>>> at.inputs.search_radius = [1,2,3]
645660
>>> at.cmdline
646-
'jointfusion 3 1 -m Joint[0.1,2] -rp 3x2x1 -rs 1x2x3 -tg T1.nii -g im1.nii -g im2.nii -g im3.nii -l segmentation0.nii.gz -l segmentation1.nii.gz -l segmentation1.nii.gz fusion_labelimage_output.nii'
647-
648-
Alternately, you can specify the voting method and parameters more 'Pythonically':
661+
'jointfusion 3 1 -m Joint[0.1,2] -tg T1.nii -g im1.nii -g im2.nii -g im3.nii -l segmentation0.nii.gz -l segmentation1.nii.gz -l segmentation1.nii.gz fusion_labelimage_output.nii'
649662
650663
>>> at.inputs.method = 'Joint'
651664
>>> at.inputs.alpha = 0.5
652665
>>> at.inputs.beta = 1
666+
>>> at.inputs.patch_radius = [3,2,1]
667+
>>> at.inputs.search_radius = [1,2,3]
653668
>>> at.cmdline
654669
'jointfusion 3 1 -m Joint[0.5,1] -rp 3x2x1 -rs 1x2x3 -tg T1.nii -g im1.nii -g im2.nii -g im3.nii -l segmentation0.nii.gz -l segmentation1.nii.gz -l segmentation1.nii.gz fusion_labelimage_output.nii'
655670
"""
@@ -662,13 +677,21 @@ def _format_arg(self, opt, spec, val):
662677
if '[' in val:
663678
retval = '-m {0}'.format(val)
664679
else:
665-
retval = '-m {0}[{1},{2}]'.format(self.inputs.method, self.inputs.alpha, self.inputs.beta)
680+
retval = '-m {0}[{1},{2}]'.format(
681+
self.inputs.method, self.inputs.alpha, self.inputs.beta)
666682
elif opt == 'patch_radius':
667683
retval = '-rp {0}'.format(self._format_xarray(val))
668684
elif opt == 'search_radius':
669685
retval = '-rs {0}'.format(self._format_xarray(val))
670686
else:
671687
if opt == 'warped_intensity_images':
672-
assert len(val) == len(self.inputs.warped_label_images), "Number of intensity images and label maps must be the same"
688+
assert len(val) == self.inputs.modalities * len(self.inputs.warped_label_images), "Number of intensity images and label maps must be the same {0}!={1}".format(
689+
len(val), len(self.inputs.warped_label_images))
673690
return super(ANTSCommand, self)._format_arg(opt, spec, val)
674691
return retval
692+
693+
def _list_outputs(self):
694+
outputs = self._outputs().get()
695+
outputs['output_label_image'] = os.path.abspath(
696+
self.inputs.output_label_image)
697+
return outputs

nipype/interfaces/freesurfer/tests/test_auto_MRIConvert.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,4 @@ def test_MRIConvert_outputs():
196196
for key, metadata in output_map.items():
197197
for metakey, value in metadata.items():
198198
yield assert_equal, getattr(outputs.traits()[key], metakey), value
199+

nipype/interfaces/fsl/epi.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -654,26 +654,28 @@ def _list_outputs(self):
654654
outputs = self.output_spec().get()
655655
outputs['out_file'] = os.path.join(os.getcwd(),
656656
self.inputs.out_base + '.nii.gz')
657-
outputs['out_1vol'] = os.path.join(os.getcwd(),
657+
if not (isdefined(self.inputs.no_fmapreg) and self.inputs.no_fmapreg) and isdefined(self.inputs.fmap):
658+
outputs['out_1vol'] = os.path.join(os.getcwd(),
658659
self.inputs.out_base + '_1vol.nii.gz')
659-
outputs['fmap2str_mat'] = os.path.join(os.getcwd(),
660-
self.inputs.out_base + '_fieldmap2str.mat')
661-
outputs['fmap2epi_mat'] = os.path.join(os.getcwd(),
662-
self.inputs.out_base + '_fieldmaprads2epi.mat')
663-
outputs['fmap_epi'] = os.path.join(os.getcwd(),
664-
self.inputs.out_base + '_fieldmaprads2epi.nii.gz')
665-
outputs['fmap_str'] = os.path.join(os.getcwd(),
666-
self.inputs.out_base + '_fieldmaprads2str.nii.gz')
667-
outputs['fmapmag_str'] = os.path.join(os.getcwd(),
668-
self.inputs.out_base + '_fieldmap2str.nii.gz')
669-
outputs['epi2str_inv'] = os.path.join(os.getcwd(),
660+
outputs['fmap2str_mat'] = os.path.join(os.getcwd(),
661+
self.inputs.out_base + '_fieldmap2str.mat')
662+
outputs['fmap2epi_mat'] = os.path.join(os.getcwd(),
663+
self.inputs.out_base + '_fieldmaprads2epi.mat')
664+
outputs['fmap_epi'] = os.path.join(os.getcwd(),
665+
self.inputs.out_base + '_fieldmaprads2epi.nii.gz')
666+
outputs['fmap_str'] = os.path.join(os.getcwd(),
667+
self.inputs.out_base + '_fieldmaprads2str.ni `i.gz')
668+
outputs['fmapmag_str'] = os.path.join(os.getcwd(),
669+
self.inputs.out_base + '_fieldmap2str.nii.gz')
670+
outputs['shiftmap'] = os.path.join(os.getcwd(),
671+
self.inputs.out_base + '_fieldmaprads2epi_shift.nii.gz')
672+
outputs['fullwarp'] = os.path.join(os.getcwd(),
673+
self.inputs.out_base + '_warp.nii.gz')
674+
outputs['epi2str_inv'] = os.path.join(os.getcwd(),
670675
self.inputs.out_base + '_inv.mat')
676+
671677
outputs['epi2str_mat'] = os.path.join(os.getcwd(),
672678
self.inputs.out_base + '.mat')
673-
outputs['shiftmap'] = os.path.join(os.getcwd(),
674-
self.inputs.out_base + '_fieldmaprads2epi_shift.nii.gz')
675-
outputs['fullwarp'] = os.path.join(os.getcwd(),
676-
self.inputs.out_base + '_warp.nii.gz')
677679
outputs['wmedge'] = os.path.join(os.getcwd(),
678680
self.inputs.out_base + '_fast_wmedge.nii.gz')
679681
outputs['wmseg'] = os.path.join(os.getcwd(),

nipype/interfaces/mrtrix3/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
2+
# vi: set ft=python sts=4 ts=4 sw=4 et:
3+
# -*- coding: utf-8 -*-
4+
5+
from utils import (Mesh2PVE, Generate5tt, BrainMask, TensorMetrics,
6+
ComputeTDI, TCK2VTK)
7+
from preprocess import ResponseSD, ACTPrepareFSL, ReplaceFSwithFIRST
8+
from tracking import Tractography
9+
from reconst import FitTensor, EstimateFOD
10+
from connectivity import LabelConfig, BuildConnectome

0 commit comments

Comments
 (0)