@@ -147,31 +147,47 @@ class LookupMetaInputSpec(TraitedSpec):
147
147
in_file = File (mandatory = True ,
148
148
exists = True ,
149
149
desc = 'The input Nifti file' )
150
- meta_keys = traits .List (mandatory = True ,
151
- desc = 'List of meta data keys to lookup' )
150
+ meta_keys = traits .Either (traits .List (),
151
+ traits .Dict (),
152
+ mandatory = True ,
153
+ desc = ("List of meta data keys to lookup, or a "
154
+ "dict where keys specify the meta data keys to "
155
+ "lookup and the values specify the output names" )
156
+ )
152
157
153
158
class LookupMeta (BaseInterface ):
154
159
'''Lookup meta data values from a Nifti with embeded meta data.'''
155
160
input_spec = LookupMetaInputSpec
156
161
output_spec = DynamicTraitedSpec
157
162
163
+ def _make_name_map (self ):
164
+ if isinstance (self .inputs .meta_keys , list ):
165
+ self ._meta_keys = {}
166
+ for key in self .inputs .meta_keys :
167
+ self ._meta_keys [key ] = key
168
+ else :
169
+ self ._meta_keys = self .inputs .meta_keys
170
+
158
171
def _outputs (self ):
172
+ self ._make_name_map ()
159
173
outputs = super (LookupMeta , self )._outputs ()
160
174
undefined_traits = {}
161
- for meta_key in self .inputs . meta_keys :
162
- outputs .add_trait (meta_key , traits .Any )
163
- undefined_traits [meta_key ] = Undefined
175
+ for out_name in self ._meta_keys . values () :
176
+ outputs .add_trait (out_name , traits .Any )
177
+ undefined_traits [out_name ] = Undefined
164
178
outputs .trait_set (trait_change_notify = False , ** undefined_traits )
165
179
#Not sure why this is needed
166
- for meta_key in self .inputs . meta_keys :
167
- _ = getattr (outputs , meta_key )
180
+ for out_name in self ._meta_keys . values () :
181
+ _ = getattr (outputs , out_name )
168
182
return outputs
169
183
170
184
def _run_interface (self , runtime ):
185
+ #If the 'meta_keys' input is a list, covert it to a dict
186
+ self ._make_name_map ()
171
187
nw = NiftiWrapper .from_filename (self .inputs .in_file )
172
188
self .result = {}
173
- for meta_key in self .inputs . meta_keys :
174
- self .result [meta_key ] = nw .meta_ext .get_values (meta_key )
189
+ for meta_key , out_name in self ._meta_keys . iteritems () :
190
+ self .result [out_name ] = nw .meta_ext .get_values (meta_key )
175
191
176
192
return runtime
177
193
0 commit comments