Source code for ecaswps.processes.wps_index_tn

import os
from pywps import Process, LiteralInput, ComplexOutput
from pywps import Format
from pywps.app.Common import Metadata

from ecaswps import util

# ALLOWED_VALUES = {
#     'model':
#         'ACCESS1-0 ACCESS1-3 bcc-csm1-1 bcc-csm1-1-m BNU-ESM CanCM4 '
#         'CanESM2 CCSM4 CESM1-BGC CESM1-CAM5 CESM1-WACCM CMCC-CM CMCC-CMS '
#         'CNRM-CM5 CSIRO-Mk3-6-0 EC-EARTH FGOALS-g2 FIO-ESM GFDL-CM2p1 '
#         'GFDL-CM3 GFDL-ESM2G GFDL-ESM2M GISS-E2-H GISS-E2-H-CC GISS-E2-R '
#         'GISS-E2-R-CC HadCM3 HadGEM2-AO HadGEM2-CC HadGEM2-ES inmcm4 '
#         'IPSL-CM5A-LR IPSL-CM5A-MR IPSL-CM5B-LR MIROC4h MIROC5 MIROC-ESM '
#         'MIROC-ESM-CHEM MPI-ESM-LR MPI-ESM-MR MRI-CGCM3 NorESM1-M NorESM1-ME'.split(),
#     'experiment':
#         'rcp45 rcp60 rcp8'.split(),
# }


[docs]class TropicalNights(Process): def __init__(self): inputs = [ LiteralInput('dataset', 'Dataset', data_type='string', default='/usr/local/ophidia/ECAS/data/repository/E63_kp40_198001_199012_T2m_daymin_merged.nc'), # LiteralInput('model', 'Model', # default='HadGEM2-ES', data_type='string', # allowed_values=ALLOWED_VALUES['model']), # LiteralInput('experiment', 'Experiment', # default='rcp45', data_type='string', # allowed_values=ALLOWED_VALUES['experiment']), # LiteralInput('start_year', 'Start Year', # default='2010', data_type='integer'), # LiteralInput('end_year', 'End Year', # default='2020', data_type='integer'), ] outputs = [ ComplexOutput('output', 'Output plot', abstract='Map of Trophical Nights', as_reference=True, supported_formats=[Format('image/png')]) ] super(TropicalNights, self).__init__( self._handler, identifier='tropical_nights', version='1.0', title='Tropical Nights', abstract='Computes the Tropical Nights index: ' 'starting from the daily minimum temperature (1980-1990) TN, ' 'the Tropical Nights index is the number of days where TN > T ' '(T is a reference temperature, e.g. 20 degree celsius)', profile='', metadata=[ Metadata('ECASLab', 'https://ecaslab.dkrz.de/home.html'), Metadata('ECASLab Notebooks', 'https://github.com/ECAS-Lab/ecas-notebooks'), Metadata('Documentation', 'https://ecas-wps-demo.readthedocs.io/en/latest/processes.html#index_tn', role=util.WPS_ROLE_DOC), Metadata('Media', 'https://ecas-wps-demo.readthedocs.io/en/latest/_static/media/tropical_nights_thumbnail.png', role=util.WPS_ROLE_MEDIA), ], inputs=inputs, outputs=outputs, store_supported=True, status_supported=True ) def _handler(self, request, response): from ecaswps.toolbox import tropical_nights response.update_status('Calculting TN ...', 0) # input dataset if 'dataset' in request.inputs: dataset = request.inputs['dataset'][0].data else: dataset = '/usr/local/ophidia/ECAS/data/repository/E63_kp40_198001_199012_T2m_daymin_merged.nc' # output in workdir output_filename = os.path.join(self.workdir, 'tn_plot.png') # start TN tropical_nights( dataset=dataset, output=output_filename, workdir=self.workdir) # store result response.outputs['output'].file = output_filename # done response.update_status('TN done', 100) return response