def _handler(self, request, response): response.update_status("starting ...", 0) # build esgf search constraints constraints = dict( model=request.inputs['model'][0].data, experiment=request.inputs['experiment'][0].data, time_frequency='mon', cmor_table='Amon', ensemble=request.inputs['ensemble'][0].data, ) # generate recipe response.update_status("generate recipe ...", 10) recipe_file, config_file = runner.generate_recipe( workdir=self.workdir, diag='py_demo', constraints=constraints, start_year=request.inputs['start_year'][0].data, end_year=request.inputs['end_year'][0].data, output_format='png', ) # run diag response.update_status("running diag ...", 20) logfile, plot_dir, work_dir = runner.run(recipe_file, config_file) # recipe output response.outputs['recipe'].output_format = FORMATS.TEXT response.outputs['recipe'].file = recipe_file # log output response.outputs['log'].output_format = FORMATS.TEXT response.outputs['log'].file = logfile # result plot response.update_status("collect output plot ...", 90) response.outputs['output'].output_format = Format('application/png') response.outputs['output'].file = runner.get_output( plot_dir, path_filter=os.path.join('diagnostic1', 'script1'), name_filter="CMIP5*", output_format="png") response.outputs['data'].output_format = FORMATS.NETCDF response.outputs['data'].file = runner.get_output( work_dir, path_filter=os.path.join('diagnostic1', 'script1'), name_filter="CMIP5*", output_format="nc") response.update_status("done.", 100) return response
def _handler(self, request, response): response.update_status("starting ...", 0) # build esgf search constraints constraints = dict( model=request.inputs['model'][0].data, experiment=request.inputs['experiment'][0].data, time_frequency='mon', cmor_table='Amon', ensemble=request.inputs['ensemble'][0].data, ) # generate namelist response.update_status("generate namelist ...", 10) recipe_file, config_file = runner.generate_recipe( diag='perfmetrics', constraints=constraints, start_year=request.inputs['start_year'][0].data, end_year=request.inputs['end_year'][0].data, output_format='pdf', workdir=self.workdir, ) # run diag response.update_status("running diag ...", 20) logfile, output_dir = runner.run(recipe_file, config_file) # namelist output response.outputs['namelist'].output_format = FORMATS.TEXT response.outputs['namelist'].file = recipe_file # log output response.outputs['log'].output_format = FORMATS.TEXT response.outputs['log'].file = logfile # result plot response.update_status("collect output plot ...", 90) response.outputs['output'].output_format = Format('application/pdf') response.outputs['output'].file = runner.get_output( output_dir, path_filter=os.path.join('ta850', 'cycle'), name_filter="ta_cycle_monthlyclim__Glob", output_format="pdf") response.update_status("done.", 100) return response
def _handler(self, request, response): response.update_status("starting ...", 0) workdir = self.workdir # build esgf search constraints constraints = dict( model=request.inputs['model'][0].data, experiment=request.inputs['experiment'][0].data, time_frequency='day', cmor_table='day', ensemble=request.inputs['ensemble'][0].data, ) #build options options = dict( frlim=request.inputs['frlim'][0].data, plim=request.inputs['plim'][0].data, ) # generate recipe response.update_status("generate recipe ...", 10) recipe_file, config_file = runner.generate_recipe( workdir=workdir, diag='consecdrydays', constraints=constraints, start_year=request.inputs['start_year'][0].data, end_year=request.inputs['end_year'][0].data, options=options, output_format='png', ) # recipe output response.outputs['recipe'].output_format = FORMATS.TEXT response.outputs['recipe'].file = recipe_file # run diag response.update_status("running diagnostic ...", 20) result = runner.run(recipe_file, config_file) response.outputs['success'].data = result['success'] # log output response.outputs['log'].output_format = FORMATS.TEXT response.outputs['log'].file = result['logfile'] # debug log output response.outputs['debug_log'].output_format = FORMATS.TEXT response.outputs['debug_log'].file = result['debug_logfile'] if result['success']: try: self.get_outputs(result, response) except Exception as e: response.update_status("exception occured: " + str(e), 85) else: LOGGER.exception('esmvaltool failed!') response.update_status("exception occured: " + result['exception'], 85) response.update_status("creating archive of diagnostic result ...", 90) response.outputs['archive'].output_format = Format('application/zip') response.outputs['archive'].file = runner.compress_output( os.path.join(self.workdir, 'output'), 'diagnostic_result.zip') response.update_status("done.", 100) return response
def _handler(self, request, response): response.update_status("starting ...", 0) workdir = self.workdir # build esgf search constraints constraints = dict( # model=request.inputs['model'][0].data, # currently not used in recipy experiment='historical', # request.inputs['experiment'][0].data, mip='Amon', ensemble='r1i1p1' # request.inputs['ensemble'][0].data, ) options = dict( season=request.inputs['season'][0].data, area=request.inputs['area'][0].data, extreme=request.inputs['extreme'][0].data, numclus=request.inputs['numclus'][0].data, perc=request.inputs['perc'][0].data, ) # generate recipe response.update_status("generate recipe ...", 10) recipe_file, config_file = runner.generate_recipe( workdir=workdir, diag='ensclus', constraints=constraints, start_year=request.inputs['start_year'][0].data, end_year=request.inputs['end_year'][0].data, output_format='png', options=options, ) # recipe output response.outputs['recipe'].output_format = FORMATS.TEXT response.outputs['recipe'].file = recipe_file # run diag response.update_status("running diagnostic ...", 20) result = runner.run(recipe_file, config_file) # log output response.outputs['log'].output_format = FORMATS.TEXT response.outputs['log'].file = result['logfile'] # debug log output response.outputs['debug_log'].output_format = FORMATS.TEXT response.outputs['debug_log'].file = result['debug_logfile'] response.outputs['success'].data = result['success'] if result['success']: try: self.get_outputs(result, response) except Exception as e: response.update_status("exception occured: " + str(e), 85) else: LOGGER.exception('esmvaltool failed!') response.update_status("exception occured: " + result['exception'], 85) response.update_status("creating archive of diagnostic result ...", 90) response.outputs['archive'].output_format = Format('application/zip') response.outputs['archive'].file = runner.compress_output( os.path.join(workdir, 'output'), 'diagnostic_result.zip') response.update_status("done.", 100) return response