diff --git a/.mailmap b/.mailmap index 6a13f46ee1..141a6455af 100644 --- a/.mailmap +++ b/.mailmap @@ -93,7 +93,7 @@ Josh Warner JDWarner Josh Warner (Mac) Kai Schlamp medihack Jessica Forbes jessicaforbes Katie Bottenhorn 62442katieb -Kesshi Jordan Kesshi Jordan +Kesshi Jordan Kesshi Jordan Kesshi Jordan Kesshi Jordan Kesshi Jordan Kesshi Jordan Kesshi Jordan Kesshi Jordan diff --git a/README.rst b/README.rst index b0d0e7a0be..24ec6eee26 100644 --- a/README.rst +++ b/README.rst @@ -91,7 +91,7 @@ To participate in the Nipype development related discussions please use the foll Please add *[nipype]* to the subject line when posting on the mailing list. -You can even hangout with the Nipype developers in their +You can even hangout with the Nipype developers in their `Gitter `_ channel or in the BrainHack `Slack `_ channel. (Click `here `_ to join the Slack workspace.) diff --git a/doc/devel/interface_specs.rst b/doc/devel/interface_specs.rst index 56e1be9ed4..26623266c6 100644 --- a/doc/devel/interface_specs.rst +++ b/doc/devel/interface_specs.rst @@ -12,8 +12,8 @@ In case of trouble, we encourage you to post on `NeuroStars `_ channel or in the +Alternatively, you're welcome to chat with us in the Nipype +`Gitter `_ channel or in the BrainHack `Slack `_ channel. (Click `here `_ to join the Slack workspace.) diff --git a/nipype/interfaces/dcm2nii.py b/nipype/interfaces/dcm2nii.py index 65771873a5..31885adaba 100644 --- a/nipype/interfaces/dcm2nii.py +++ b/nipype/interfaces/dcm2nii.py @@ -374,7 +374,7 @@ class Dcm2niix(CommandLine): converts any files in the directory containing the files in the list. We also do not support nested filenames with this option. **Thus all files must have a common root directory.** - + >>> converter = Dcm2niix() >>> converter.inputs.source_names = ['functional_1.dcm', 'functional_2.dcm'] >>> converter.inputs.compression = 5 diff --git a/nipype/interfaces/mrtrix3/tests/test_auto_Tractography.py b/nipype/interfaces/mrtrix3/tests/test_auto_Tractography.py index dff5c783ee..c79fce8867 100644 --- a/nipype/interfaces/mrtrix3/tests/test_auto_Tractography.py +++ b/nipype/interfaces/mrtrix3/tests/test_auto_Tractography.py @@ -40,7 +40,10 @@ def test_Tractography_inputs(): argstr='-samples %d', usedefault=True, ), - n_tracks=dict(argstr='-number %d', ), + n_tracks=dict( + argstr='-number %d', + max_ver='0.4', + ), n_trials=dict(argstr='-trials %d', ), noprecompt=dict(argstr='-noprecomputed', ), nthreads=dict( @@ -77,6 +80,10 @@ def test_Tractography_inputs(): xor=['seed_image', 'seed_grid_voxel'], ), seed_sphere=dict(argstr='-seed_sphere %f,%f,%f,%f', ), + select=dict( + argstr='-select %d', + min_ver='3', + ), sph_trait=dict(argstr='%f,%f,%f,%f', ), step_size=dict(argstr='-step %f', ), stop=dict(argstr='-stop', ), diff --git a/nipype/interfaces/mrtrix3/tracking.py b/nipype/interfaces/mrtrix3/tracking.py index e8bf15a33f..ea71752763 100644 --- a/nipype/interfaces/mrtrix3/tracking.py +++ b/nipype/interfaces/mrtrix3/tracking.py @@ -76,6 +76,13 @@ class TractographyInputSpec(MRTrix3BaseInputSpec): 'is 90deg x stepsize / voxelsize)')) n_tracks = traits.Int( argstr='-number %d', + max_ver='0.4', + desc=('set the desired number of tracks. The program will continue' + ' to generate tracks until this number of tracks have been ' + 'selected and written to the output file')) + select = traits.Int( + argstr='-select %d', + min_ver='3', desc=('set the desired number of tracks. The program will continue' ' to generate tracks until this number of tracks have been ' 'selected and written to the output file')) diff --git a/nipype/interfaces/spm/__init__.py b/nipype/interfaces/spm/__init__.py index 09a680f692..b97c828450 100644 --- a/nipype/interfaces/spm/__init__.py +++ b/nipype/interfaces/spm/__init__.py @@ -5,9 +5,9 @@ from .base import (Info, SPMCommand, logger, no_spm, scans_for_fname, scans_for_fnames) -from .preprocess import (FieldMap, SliceTiming, Realign, RealignUnwarp, +from .preprocess import (FieldMap, SliceTiming, Realign, RealignUnwarp, Coregister, Normalize, Normalize12, Segment, - Smooth, NewSegment, DARTEL, DARTELNorm2MNI, + Smooth, NewSegment, DARTEL, DARTELNorm2MNI, CreateWarped, VBMSegment) from .model import (Level1Design, EstimateModel, EstimateContrast, Threshold, OneSampleTTestDesign, TwoSampleTTestDesign, diff --git a/nipype/interfaces/spm/preprocess.py b/nipype/interfaces/spm/preprocess.py index 2188824022..08bc62fe7a 100644 --- a/nipype/interfaces/spm/preprocess.py +++ b/nipype/interfaces/spm/preprocess.py @@ -443,7 +443,7 @@ class RealignUnwarpInputSpec(SPMCommandInputSpec): traits.Either(ImageFileSPM(exists=True), traits.List(ImageFileSPM(exists=True))), field='data.scans', - mandatory=True, + mandatory=True, copyfile=True, desc='list of filenames to realign and unwarp') phase_map = File( @@ -452,52 +452,52 @@ class RealignUnwarpInputSpec(SPMCommandInputSpec): 'behaviour, the same map will be used for all sessions', copyfile=False) quality = traits.Range( - low=0.0, - high=1.0, + low=0.0, + high=1.0, field='eoptions.quality', desc='0.1 = fast, 1.0 = precise') fwhm = traits.Range( - low=0.0, + low=0.0, field='eoptions.fwhm', desc='gaussian smoothing kernel width') separation = traits.Range( - low=0.0, + low=0.0, field='eoptions.sep', desc='sampling separation in mm') register_to_mean = traits.Bool( field='eoptions.rtm', desc='Indicate whether realignment is done to the mean image') weight_img = File( - exists=True, + exists=True, field='eoptions.weight', desc='filename of weighting image') interp = traits.Range( - low=0, - high=7, + low=0, + high=7, field='eoptions.einterp', desc='degree of b-spline used for interpolation') wrap = traits.List( - traits.Int(), - minlen=3, + traits.Int(), + minlen=3, maxlen=3, field='eoptions.ewrap', desc='Check if interpolation should wrap in [x,y,z]') est_basis_func = traits.List( - traits.Int(), - minlen=2, + traits.Int(), + minlen=2, maxlen=2, field='uweoptions.basfcn', desc='Number of basis functions to use for each dimension') est_reg_order = traits.Range( - low=0, - high=3, + low=0, + high=3, field='uweoptions.regorder', desc=('This parameter determines how to balance the compromise between likelihood ' 'maximization and smoothness maximization of the estimated field.')) est_reg_factor = traits.ListInt( - [100000], + [100000], field='uweoptions.lambda', - minlen=1, + minlen=1, maxlen=1, usedefault=True, desc='Regularisation factor. Default: 100000 (medium).') @@ -506,51 +506,51 @@ class RealignUnwarpInputSpec(SPMCommandInputSpec): desc=('Jacobian deformations. In theory a good idea to include them, ' ' in practice a bad idea. Default: No.')) est_first_order_effects = traits.List( - traits.Int(), - minlen=1, + traits.Int(), + minlen=1, maxlen=6, field='uweoptions.fot', desc='First order effects should only depend on pitch and roll, i.e. [4 5]') est_second_order_effects = traits.List( - traits.Int(), - minlen=1, + traits.Int(), + minlen=1, maxlen=6, field='uweoptions.sot', desc='List of second order terms to model second derivatives of.') est_unwarp_fwhm = traits.Range( - low=0.0, + low=0.0, field='uweoptions.uwfwhm', desc='gaussian smoothing kernel width for unwarp') est_re_est_mov_par = traits.Bool( field='uweoptions.rem', desc='Re-estimate movement parameters at each unwarping iteration.') est_num_of_iterations = traits.ListInt( - [5], + [5], field='uweoptions.noi', - minlen=1, - maxlen=1, + minlen=1, + maxlen=1, usedefault=True, desc='Number of iterations.') est_taylor_expansion_point = traits.String( - 'Average', + 'Average', field='uweoptions.expround', usedefault=True, desc='Point in position space to perform Taylor-expansion around.') reslice_which = traits.ListInt( - [2, 1], + [2, 1], field='uwroptions.uwwhich', - minlen=2, - maxlen=2, + minlen=2, + maxlen=2, usedefault=True, desc='determines which images to reslice') reslice_interp = traits.Range( - low=0, - high=7, + low=0, + high=7, field='uwroptions.rinterp', desc='degree of b-spline used for interpolation') reslice_wrap = traits.List( - traits.Int(), - minlen=3, + traits.Int(), + minlen=3, maxlen=3, field='uwroptions.wrap', desc='Check if interpolation should wrap in [x,y,z]') @@ -558,8 +558,8 @@ class RealignUnwarpInputSpec(SPMCommandInputSpec): field='uwroptions.mask', desc='True/False mask output image') out_prefix = traits.String( - 'u', - field='uwroptions.prefix', + 'u', + field='uwroptions.prefix', usedefault=True, desc='realigned and unwarped output prefix') @@ -585,7 +585,7 @@ class RealignUnwarpOutputSpec(TraitedSpec): class RealignUnwarp(SPMCommand): """Use spm_uw_estimate for estimating within subject registration and unwarping - of time series. Function accepts only one single field map. If in_files is a + of time series. Function accepts only one single field map. If in_files is a list of files they will be treated as separate sessions but associated to the same fieldmap. @@ -617,7 +617,7 @@ def _format_arg(self, opt, spec, val): keep4d=False, separate_sessions=True) return super(RealignUnwarp, self)._format_arg(opt, spec, val) - + def _parse_inputs(self, skip=()): @@ -630,7 +630,7 @@ def _parse_inputs(self, skip=()): if isdefined(self.inputs.in_files): if isinstance(self.inputs.in_files, list): - data = [dict(scans = sess, pmscan = pmscan) + data = [dict(scans = sess, pmscan = pmscan) for sess in spmdict['data']['scans']] else: data = [dict(scans = spmdict['data']['scans'], pmscan = pmscan)] diff --git a/nipype/pipeline/engine/tests/test_engine.py b/nipype/pipeline/engine/tests/test_engine.py index 56d05a1d56..189a918833 100644 --- a/nipype/pipeline/engine/tests/test_engine.py +++ b/nipype/pipeline/engine/tests/test_engine.py @@ -441,7 +441,7 @@ def test_write_graph_runs(tmpdir): assert os.path.exists('graph.dot') or os.path.exists( 'graph_detailed.dot') - + try: os.remove('graph.dot') except OSError: diff --git a/nipype/pipeline/plugins/legacymultiproc.py b/nipype/pipeline/plugins/legacymultiproc.py index bfc1773a92..9e96144a4a 100644 --- a/nipype/pipeline/plugins/legacymultiproc.py +++ b/nipype/pipeline/plugins/legacymultiproc.py @@ -81,7 +81,7 @@ class NonDaemonMixin(object): @property def daemon(self): return False - + @daemon.setter def daemon(self, val): pass