Navigation Menu

Skip to content

Commit

Permalink
Added keep_ext option
Browse files Browse the repository at this point in the history
  • Loading branch information
mwaskom committed Mar 28, 2011
1 parent f8690c4 commit 43ea5d2
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion nipype/interfaces/tests/test_utility.py
Expand Up @@ -21,7 +21,7 @@ def test_rename():
yield assert_true, os.path.exists(outfile)

# Now a string-formatting version
rn = utility.Rename(in_file="file.txt", format_string="%(field1)s_file%(field2)d.txt")
rn = utility.Rename(in_file="file.txt", format_string="%(field1)s_file%(field2)d",keep_ext=True)
# Test .input field creation
yield assert_true, hasattr(rn.inputs, "field1")
yield assert_true, hasattr(rn.inputs, "field2")
Expand Down
12 changes: 9 additions & 3 deletions nipype/interfaces/utility.py 100755 → 100644
Expand Up @@ -4,7 +4,7 @@
import re
import numpy as np

from nipype.utils.filemanip import (filename_to_list, list_to_filename, copyfile)
from nipype.utils.filemanip import (filename_to_list, copyfile, split_filename)
from nipype.interfaces.base import (traits, TraitedSpec, DynamicTraitedSpec, File,
Undefined, isdefined, OutputMultiPath,
InputMultiPath)
Expand Down Expand Up @@ -111,6 +111,7 @@ def _list_outputs(self):
class RenameInputSpec(DynamicTraitedSpec):

in_file = File(exists=True, mandatory=True, desc="file to rename")
keep_ext = traits.Bool(desc="Keep in_file extension, replace non-extension component of name")
format_string = traits.String(mandatory=True,
desc="Python formatting string for output template")
parse_string = traits.String(desc="Python regexp parse string to define replacement inputs")
Expand Down Expand Up @@ -141,8 +142,9 @@ class Rename(IOBase):
>>> print res.outputs.out_file # doctest: +SKIP
'Faces-Scenes.nii.gz" # doctest: +SKIP
>>> rename2 = Rename(format_string="%(subject_id)s_func_run%(run)02d.nii")
>>> rename2 = Rename(format_string="%(subject_id)s_func_run%(run)02d")
>>> rename2.inputs.in_file "func.nii"
>>> rename2.inputs.keep_ext = True
>>> rename2.inputs.subject_id = "subj_201"
>>> rename2.inputs.run = 2
>>> res = rename2.run() # doctest: +SKIP
Expand Down Expand Up @@ -179,7 +181,11 @@ def _rename(self):
fmt_dict.update(m.groupdict())
for field in self.fmt_fields:
fmt_dict[field] = getattr(self.inputs, field)
return self.inputs.format_string%fmt_dict
if self.inputs.keep_ext:
fmt_string = "".join([self.inputs.format_string, split_filename(self.inputs.in_file)[2]])
else:
fmt_string = self.inputs.format_string
return fmt_string%fmt_dict

def _run_interface(self, runtime):
runtime.returncode = 0
Expand Down

0 comments on commit 43ea5d2

Please sign in to comment.