Skip to content

Commit 1462473

Browse files
committed
Merge branch 'master' into enh/rapidart
* master: Removed unnecessary usedefault. fixed typo in a file name fix: github authentication Going back to distinguishing affine transformations by names. Improved docs. fixed typo in randomize parameters Removed unnecessary copyfiles and added output_image option. BF: Pass plugin_args to child nodes of MapNode ENH: Don't require ordereddict for python < 2.7 BF: Fix for plugins when using python2.7 Fixed parenthesis. Fix fslreorient2std output collection Allow FNIRT to take standard names as reference. BF: Check plugin_args is not None before accessing it like a dict.
2 parents d78d7fc + 84a40e1 commit 1462473

File tree

8 files changed

+41
-28
lines changed

8 files changed

+41
-28
lines changed

nipype/interfaces/ants/resampling.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,14 @@ def _list_outputs(self):
103103
class WarpImageMultiTransformInputSpec(ANTSCommandInputSpec):
104104
dimension = traits.Enum(3, 2, argstr='%d', usedefault=True,
105105
desc='image dimension (2 or 3)', position=1)
106-
input_image = File(argstr='%s', mandatory=True, copyfile=True,
106+
input_image = File(argstr='%s', mandatory=True,
107107
desc=('image to apply transformation to (generally a '
108-
'coregistered functional)') )
109-
out_postfix = traits.Str('_wimt', argstr='%s', usedefault=True,
110-
desc=('Postfix that is prepended to all output '
111-
'files (default = _wimt)'))
108+
'coregistered functional)'), position=2)
109+
output_image = File(genfile=True, hash_files=False, argstr='%s',
110+
desc=('name of the output warped image'), position = 3, xor=['out_postfix'])
111+
out_postfix = File("_wimt", usedefault=True, hash_files=False,
112+
desc=('Postfix that is prepended to all output '
113+
'files (default = _wimt)'), xor=['output_image'])
112114
reference_image = File(argstr='-R %s', xor=['tightest_box'],
113115
desc='reference image space that you wish to warp INTO')
114116
tightest_box = traits.Bool(argstr='--tightest-bounding-box',
@@ -123,13 +125,16 @@ class WarpImageMultiTransformInputSpec(ANTSCommandInputSpec):
123125
desc='Use nearest neighbor interpolation')
124126
use_bspline = traits.Bool(argstr='--use-Bspline',
125127
desc='Use 3rd order B-Spline interpolation')
126-
transformation_series = InputMultiPath(File(exists=True, copyfile=False), argstr='%s',
128+
transformation_series = InputMultiPath(File(exists=True), argstr='%s',
127129
desc='transformation file(s) to be applied',
128-
mandatory=True, copyfile=False)
130+
mandatory=True)
129131
invert_affine = traits.List(traits.Int,
130-
desc=('List of Affine transformations to invert. '
132+
desc=('List of Affine transformations to invert.'
131133
'E.g.: [1,4,5] inverts the 1st, 4th, and 5th Affines '
132-
'found in transformation_series'))
134+
'found in transformation_series. Note that indexing '
135+
'starts with 1 and does not include warp fields. Affine '
136+
'transformations are distinguished '
137+
'from warp fields by the word "affine" included in their filenames.'))
133138

134139
class WarpImageMultiTransformOutputSpec(TraitedSpec):
135140
output_image = File(exists=True, desc='Warped image')
@@ -161,16 +166,19 @@ class WarpImageMultiTransform(ANTSCommand):
161166
_cmd = 'WarpImageMultiTransform'
162167
input_spec = WarpImageMultiTransformInputSpec
163168
output_spec = WarpImageMultiTransformOutputSpec
169+
170+
def _gen_filename(self, name):
171+
if name == 'output_image':
172+
_, name, ext = split_filename(os.path.abspath(self.inputs.input_image))
173+
return ''.join((name, self.inputs.out_postfix, ext))
174+
return None
164175

165176
def _format_arg(self, opt, spec, val):
166-
if opt == 'out_postfix':
167-
_, name, ext = split_filename(os.path.abspath(self.inputs.input_image))
168-
return name + val + ext
169177
if opt == 'transformation_series':
170178
series = []
171179
affine_counter = 0
172180
for transformation in val:
173-
if 'Affine' in transformation and \
181+
if "affine" in transformation.lower() and \
174182
isdefined(self.inputs.invert_affine):
175183
affine_counter += 1
176184
if affine_counter in self.inputs.invert_affine:
@@ -181,11 +189,10 @@ def _format_arg(self, opt, spec, val):
181189

182190
def _list_outputs(self):
183191
outputs = self._outputs().get()
184-
_, name, ext = split_filename(os.path.abspath(self.inputs.input_image))
185-
outputs['output_image'] = os.path.join(os.getcwd(),
186-
''.join((name,
187-
self.inputs.out_postfix,
188-
ext)))
192+
if isdefined(self.inputs.output_image):
193+
outputs['output_image'] = os.path.abspath(self.inputs.output_image)
194+
else:
195+
outputs['output_image'] = os.path.abspath(self._gen_filename('output_image'))
189196
return outputs
190197

191198

nipype/interfaces/fsl/model.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,15 +1403,15 @@ def _format_arg(self, name, spec, value):
14031403
class RandomiseInputSpec(FSLCommandInputSpec):
14041404
in_file = File(exists=True, desc='4D input file', argstr='-i %s', position=0, mandatory=True)
14051405
base_name = traits.Str('tbss_', desc='the rootname that all generated files will have',
1406-
argstr='-o %s', position=1, usedefault=True)
1407-
design_mat = File(exists=True, desc='design matrix file', argstr='-d %s', position=2, mandatory=True)
1408-
tcon = File(exists=True, desc='t contrasts file', argstr='-t %s', position=3, mandatory=True)
1406+
argstr='-o "%s"', position=1, usedefault=True)
1407+
design_mat = File(exists=True, desc='design matrix file', argstr='-d %s', position=2)
1408+
tcon = File(exists=True, desc='t contrasts file', argstr='-t %s', position=3)
14091409
fcon = File(exists=True, desc='f contrasts file', argstr='-f %s')
14101410
mask = File(exists=True, desc='mask image', argstr='-m %s')
14111411
x_block_labels = File(exists=True, desc='exchangeability block labels file', argstr='-e %s')
14121412
demean = traits.Bool(desc='demean data temporally before model fitting', argstr='-D')
14131413
one_sample_group_mean = traits.Bool(desc='perform 1-sample group-mean test instead of generic permutation test',
1414-
argstr='-l')
1414+
argstr='-1')
14151415
show_total_perms = traits.Bool(desc='print out how many unique permutations would be generated and exit',
14161416
argstr='-q')
14171417
show_info_parallel_mode = traits.Bool(desc='print out information required for parallel mode and exit',

nipype/interfaces/fsl/preprocess.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ class FNIRTInputSpec(FSLCommandInputSpec):
690690
'to intensity mapping', hash_files=False)
691691
log_file = File(argstr='--logout=%s',
692692
desc='Name of log-file', genfile=True, hash_files=False)
693-
config_file = File(exists=True, argstr='--config=%s',
693+
config_file = traits.Either(traits.Enum("T1_2_MNI152_2mm", "FA_2_FMRIB58_1mm"), File(exists=True), argstr='--config=%s',
694694
desc='Name of config file specifying command line arguments')
695695
refmask_file = File(exists=True, argstr='--refmask=%s',
696696
desc='name of file with mask in reference space')

nipype/interfaces/fsl/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,3 +1187,4 @@ def _list_outputs(self):
11871187
outputs['out_file'] = self._gen_filename('out_file')
11881188
else:
11891189
outputs['out_file'] = os.path.abspath(self.inputs.out_file)
1190+
return outputs

nipype/pipeline/engine.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,6 +1596,7 @@ def _make_nodes(self, cwd=None):
15961596
node = Node(deepcopy(self._interface), name=nodename)
15971597
node.overwrite = self.overwrite
15981598
node.run_without_submitting = self.run_without_submitting
1599+
node.plugin_args = self.plugin_args
15991600
node._interface.inputs.set(**deepcopy(self._interface.inputs.get()))
16001601
for field in self.iterfield:
16011602
fieldvals = filename_to_list(getattr(self.inputs, field))

nipype/pipeline/plugins/base.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,21 +108,20 @@ def create_pyscript(node, updatehash=False, store_exception=True):
108108
# create python script to load and trap exception
109109
cmdstr = """import os
110110
import sys
111+
from nipype import config, logging
112+
from nipype.utils.filemanip import loadpkl, savepkl
111113
from socket import gethostname
112114
from traceback import format_exception
113115
info = None
114116
pklfile = '%s'
115117
batchdir = '%s'
116118
try:
117-
from nipype import config, logging
118-
import sys
119119
if not sys.version_info < (2, 7):
120-
from ordereddict import OrderedDict
120+
from collections import OrderedDict
121121
config_dict=%s
122122
config.update_config(config_dict)
123123
config.update_matplotlib()
124124
logging.update_logging(config)
125-
from nipype.utils.filemanip import loadpkl, savepkl
126125
traceback=None
127126
cwd = os.getcwd()
128127
info = loadpkl(pklfile)

nipype/pipeline/plugins/dagman.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def __init__(self, **kwargs):
3535
self._template = "universe = vanilla\nnotification = Never"
3636
self._submit_specs = ""
3737
self._dagman_args = ""
38-
if 'plugin_args' in kwargs:
38+
if 'plugin_args' in kwargs and not kwargs['plugin_args'] is None:
3939
plugin_args = kwargs['plugin_args']
4040
if 'template' in plugin_args:
4141
self._template = plugin_args['template']

tools/github.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ def create_hash_map():
4242
"""
4343

4444
hashmap = {}
45+
from base64 import encodestring as base64
46+
import pwd
47+
login_name = pwd.getpwuid(os.geteuid())[0]
4548
conn = httplib.HTTPSConnection("api.github.com")
49+
conn.request("GET", "/repos/nipy/nipype",
50+
headers={'Authorization': 'Basic %s' % base64(login_name)})
4651
try:
4752
conn.request("GET", "/repos/nipy/nipype/git/trees/master?recursive=1")
4853
except:

0 commit comments

Comments
 (0)