Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    def get_outputs(self, result, response):
        # result plot
        response.update_status("collecting output ...", 80)
        response.outputs['plot'].output_format = Format('application/png')
        response.outputs['plot'].file = runner.get_output(
            result['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(
            result['plot_dir'],
            path_filter=os.path.join('diagnostic1', 'script1'),
            name_filter="CMIP5*",
            output_format="nc")
Ejemplo n.º 3
0
    def get_outputs(self, result, response):
        # result plot
        response.update_status("collecting output ...", 80)
        response.outputs['data'].output_format = Format('application/png')
        response.outputs['data'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('diagnostic1', 'script1'),
            name_filter="CMIP5*",
            output_format="nc")

        response.outputs['xlsx_data'].output_format = Format(
            'application/vnd.ms-excel')
        response.outputs['xlsx_data'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('diagnostic1', 'script1'),
            name_filter="CMIP5*",
            output_format="xlsx")
Ejemplo n.º 4
0
    def get_outputs(self, result, response):
        for plot in self.plotlist:
            key = '{}_plot'.format(plot.lower())
            response.outputs[key].output_format = Format('application/png')
            response.outputs[key].file = runner.get_output(
                result['plot_dir'],
                path_filter=os.path.join('dry_days', 'consecutive_dry_days'),
                name_filter="*{}".format(plot),
                output_format="png")

        response.outputs['data_drymax'].output_format = FORMATS.NETCDF
        response.outputs['data_drymax'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('dry_days', 'consecutive_dry_days'),
            name_filter="*drymax",
            output_format="nc")

        response.outputs['data_dryfreq'].output_format = FORMATS.NETCDF
        response.outputs['data_dryfreq'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('dry_days', 'consecutive_dry_days'),
            name_filter="*dryfreq",
            output_format="nc")
Ejemplo n.º 5
0
    def get_outputs(self, result, response):
        # result plot
        response.update_status("collecting output ...", 80)
        response.outputs['plot'].output_format = Format('application/eps')
        response.outputs['plot'].file = runner.get_output(
            result['plot_dir'],
            path_filter=os.path.join('EnsClus', 'main'),
            name_filter="anomalies*",
            output_format="png")

        response.outputs['ens_extreme'].output_format = FORMATS.NETCDF
        response.outputs['ens_extreme'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('EnsClus', 'main'),
            name_filter="ens_extreme*",
            output_format="nc")

        response.outputs['ens_climatologies'].output_format = FORMATS.NETCDF
        response.outputs['ens_climatologies'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('EnsClus', 'main'),
            name_filter="ens_anomalies*",
            output_format="nc")

        response.outputs['ens_anomalies'].output_format = FORMATS.NETCDF
        response.outputs['ens_anomalies'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('EnsClus', 'main'),
            name_filter="ens_anomalies*",
            output_format="nc")

        response.outputs['statistics'].output_format = FORMATS.TEXT
        response.outputs['statistics'].file = runner.get_output(
            result['work_dir'],
            path_filter=os.path.join('EnsClus', 'main'),
            name_filter="statistics*",
            output_format="txt")
Ejemplo n.º 6
0
    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