version='1.0', action=load_action) # Save module def save_action(input=None, ext=None): for f in input: _save_one(f, ext) # not bundles return {} def _save_one(input, ext): default_filename = "default.cg1" # modules like autogrid return MetaArrays that don't have filenames outname = initname = input.extrainfo["path"] + "/" + input.extrainfo.get("filename", default_filename) if ext is not None: outname = ".".join([os.path.splitext(outname)[0], ext]) print "saving", initname, 'as', outname input.write(outname) save = save_module(id='ospec.save', datatype=OSPEC_DATA, version='1.0', action=save_action) # Autogrid module def autogrid_action(input=None): print "gridding" result = [_autogrid(bundle) for bundle in input] return dict(output=result) def _autogrid(input, extra_grid_point=True, min_step=1e-10): return Autogrid().apply(input, extra_grid_point=extra_grid_point, min_step=min_step) autogrid = autogrid_module(id='ospec.grid', datatype=OSPEC_DATA, version='1.0', action=autogrid_action) # Join module def join_action(input=None):
#TODO - make a real save... this is a dummy outname = input['name'] if ext is not None: outname = ".".join([os.path.splitext(outname)[0], ext]) print "saving", input['name'], 'as', outname save_data(input, name=outname) fields = {'ext': { "type":"string", "label": "Save extension", "name": "ext", "value": "" } } save = save_module(id='tas.save', datatype=TAS_DATA, version='1.0', action=save_action, fields=fields) save.xtype = 'SaveContainer' def join_action(input, xaxis='', yaxis='', num_bins=0, xstep=None, ystep=None, **kwargs): # This is confusing because load returns a bundle and join, which can # link to multiple loads, has a list of bundles. So flatten this list. # The confusion between bundles and items will bother us continuously, # and it is probably best if every filter just operates on and returns # bundles, which I do in this example. print "JOINING" try: xaxis = kwargs['fields']['xaxis']['value'] yaxis = kwargs['fields']['yaxis']['value'] num_bins = kwargs['fields']['num_bins']['value']
outname = ".".join([os.path.splitext(outname)[0], ext]) print "saving", input['name'], 'as', outname save_data(input, name=outname) fields = { 'ext': { "type": "string", "label": "Save extension", "name": "ext", "value": "" } } save = save_module(id='tas.save', datatype=TAS_DATA, version='1.0', action=save_action, fields=fields) save.xtype = 'SaveContainer' def join_action(input, xaxis='', yaxis='', num_bins=0, xstep=None, ystep=None, **kwargs): # This is confusing because load returns a bundle and join, which can # link to multiple loads, has a list of bundles. So flatten this list. # The confusion between bundles and items will bother us continuously,