@@ -1849,6 +1849,7 @@ def _list_outputs(self):
1849
1849
1850
1850
class JSONFileSinkInputSpec (DynamicTraitedSpec , BaseInterfaceInputSpec ):
1851
1851
out_file = File (desc = 'JSON sink file' )
1852
+ in_dict = traits .Dict (desc = 'input JSON dictionary' )
1852
1853
1853
1854
1854
1855
class JSONFileSinkOutputSpec (TraitedSpec ):
@@ -1873,11 +1874,18 @@ class JSONFileSink(IOBase):
1873
1874
>>> jsonsink.inputs.some_measurement = 11.4
1874
1875
>>> jsonsink.run() # doctest: +SKIP
1875
1876
1877
+ Using a dictionary as input:
1878
+
1879
+ >>> dictsink = JSONFileSink()
1880
+ >>> dictsink.inputs.in_dict = {'subject_id': 's1',
1881
+ ... 'some_measurement': 11.4}
1882
+ >>> dictsink.run() # doctest: +SKIP
1883
+
1876
1884
"""
1877
1885
input_spec = JSONFileSinkInputSpec
1878
1886
output_spec = JSONFileSinkOutputSpec
1879
1887
1880
- def __init__ (self , input_names , ** inputs ):
1888
+ def __init__ (self , input_names = [] , ** inputs ):
1881
1889
super (JSONFileSink , self ).__init__ (** inputs )
1882
1890
self ._input_names = filename_to_list (input_names )
1883
1891
add_traits (self .inputs , [name for name in self ._input_names ])
@@ -1891,14 +1899,20 @@ def _list_outputs(self):
1891
1899
out_file = self .inputs .out_file
1892
1900
1893
1901
out_dict = dict ()
1894
- for name in self ._input_names :
1895
- val = getattr (self .inputs , name )
1896
- val = val if isdefined (val ) else 'undefined'
1897
- out_dict [name ] = val
1902
+
1903
+ if isdefined (self .inputs .in_dict ):
1904
+ if isinstance (self .inputs .in_dict , dict ):
1905
+ out_dict = self .inputs .in_dict
1906
+ else :
1907
+ for name in self ._input_names :
1908
+ val = getattr (self .inputs , name )
1909
+ val = val if isdefined (val ) else 'undefined'
1910
+ out_dict [name ] = val
1898
1911
1899
1912
with open (out_file , 'w' ) as f :
1900
1913
json .dump (out_dict , f )
1901
1914
outputs = self .output_spec ().get ()
1902
1915
outputs ['out_file' ] = out_file
1903
1916
return outputs
1904
1917
1918
+
0 commit comments