Skip to content

Commit

Permalink
added cdo ensembles process
Browse files Browse the repository at this point in the history
  • Loading branch information
cehbrecht committed Aug 4, 2015
1 parent 0313963 commit 3d30ea9
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
1 change: 1 addition & 0 deletions processes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
__all__ = [
"wps_ncmeta",
"wps_cdo",
"wps_ensembles",
"wps_cfchecker",
"wps_tika",
]
69 changes: 69 additions & 0 deletions processes/wps_ensembles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from malleefowl.process import WPSProcess
from malleefowl import wpslogging as logging
logger = logging.getLogger(__name__)

class Ensembles(WPSProcess):

def __init__(self):
WPSProcess.__init__(
self,
identifier = "ensembles",
title = "Ensembles Operations",
version = "0.1",
metadata=[
{"title":"CDO ens","href":"https://code.zmaw.de/projects/cdo"},
],
abstract="Calling cdo to calculate ensembles operations.",
)

self.netcdf_file = self.addComplexInput(
identifier="netcdf_file",
title="NetCDF File",
abstract="NetCDF File",
minOccurs=1,
maxOccurs=100,
maxmegabites=5000,
formats=[{"mimeType":"application/x-netcdf"}],
)

# operators
self.operator_in = self.addLiteralInput(
identifier="operator",
title="Ensemble command",
abstract="Choose a CDO Operator",
default="ensmean",
type=type(''),
minOccurs=1,
maxOccurs=1,
allowedValues=['ensmin', 'ensmax', 'enssum', 'ensmean', 'ensavg', 'ensvar', 'ensstd', 'enspctl']
)

# complex output
# -------------

self.output = self.addComplexOutput(
identifier="output",
title="NetCDF Output",
abstract="NetCDF Output",
metadata=[],
formats=[{"mimeType":"application/x-netcdf"}],
asReference=True,
)

def execute(self):
self.show_status("starting cdo operator", 0)

nc_files = self.getInputValues(identifier='netcdf_file')
operator = self.operator_in.getValue()

out_filename = self.mktempfile(suffix='.nc')
try:
cmd = ["cdo", operator]
cmd.extend(nc_files)
cmd.append(out_filename)
self.cmd(cmd=cmd, stdout=True)
except:
logger.exception('cdo failed')
raise
self.show_status("ensembles calculation done", 100)
self.output.setValue( out_filename )

0 comments on commit 3d30ea9

Please sign in to comment.