From 5ecbdcde7de245bcabff75da3f1e94e3fa0a4343 Mon Sep 17 00:00:00 2001 From: Javier Vegas-Regidor Date: Mon, 7 Dec 2020 17:23:04 +0100 Subject: [PATCH 1/3] Fix latest version and cdo interpolation --- earthdiagnostics/data_convention.py | 3 +++ earthdiagnostics/ocean/interpolatecdo.py | 22 +++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/earthdiagnostics/data_convention.py b/earthdiagnostics/data_convention.py index 5e4dd4b5..c6bb6aab 100644 --- a/earthdiagnostics/data_convention.py +++ b/earthdiagnostics/data_convention.py @@ -896,6 +896,9 @@ class Cmor3Convention(DataConvention): if not os.path.isdir(base_path): base_path = base_path.replace( '/original_files/cmorfiles/', '/cmorfiles/') + if not os.path.isdir(base_path): + base_path = base_path.replace( + '/cmorfiles/', '/diags/') versions = os.listdir(base_path) versions.sort(reverse=True) self.config.cmor.version = versions[0] diff --git a/earthdiagnostics/ocean/interpolatecdo.py b/earthdiagnostics/ocean/interpolatecdo.py index 3de0f28a..12376b1b 100644 --- a/earthdiagnostics/ocean/interpolatecdo.py +++ b/earthdiagnostics/ocean/interpolatecdo.py @@ -1,6 +1,7 @@ # coding=utf-8 """CDO-based interpolation""" import os +from cdo import CDOException import numpy as np @@ -399,11 +400,22 @@ class InterpolateCDO(Diagnostic): handler.close() temp = TempFile.get() - Utils.cdo().remap( - ",".join((self.grid.split("_")[0], self.weights)), - input=variable_file, - output=temp, - ) + try: + Utils.cdo().remap( + ",".join((self.grid.split("_")[0], self.weights)), + input=variable_file, + output=temp, + ) + except CDOException as ex: + if '(cdf_put_vara_double): NetCDF: Numeric conversion not representable' not in ex.msg: + raise + Utils.cdo().remap( + ",".join((self.grid.split("_")[0], self.weights)), + input=variable_file, + output=temp, + options='-b F64' + ) + handler = Utils.open_cdf(temp) if units: -- GitLab From 96e5d5ee490000502e4d8bef7a685634557c5ae8 Mon Sep 17 00:00:00 2001 From: Javier Vegas-Regidor Date: Mon, 7 Dec 2020 17:29:26 +0100 Subject: [PATCH 2/3] Fix format --- earthdiagnostics/ocean/interpolatecdo.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/earthdiagnostics/ocean/interpolatecdo.py b/earthdiagnostics/ocean/interpolatecdo.py index 12376b1b..6321cc9a 100644 --- a/earthdiagnostics/ocean/interpolatecdo.py +++ b/earthdiagnostics/ocean/interpolatecdo.py @@ -407,7 +407,11 @@ class InterpolateCDO(Diagnostic): output=temp, ) except CDOException as ex: - if '(cdf_put_vara_double): NetCDF: Numeric conversion not representable' not in ex.msg: + msg = ( + '(cdf_put_vara_double): NetCDF: Numeric ' + 'conversion not representable' + ) + if msg not in ex.msg: raise Utils.cdo().remap( ",".join((self.grid.split("_")[0], self.weights)), -- GitLab From eb3ea30cce6972e71da93e02c810ee76baa4752b Mon Sep 17 00:00:00 2001 From: Javier Vegas-Regidor Date: Mon, 7 Dec 2020 17:48:45 +0100 Subject: [PATCH 3/3] Fix format --- earthdiagnostics/ocean/interpolatecdo.py | 1 - 1 file changed, 1 deletion(-) diff --git a/earthdiagnostics/ocean/interpolatecdo.py b/earthdiagnostics/ocean/interpolatecdo.py index 6321cc9a..42dd17a9 100644 --- a/earthdiagnostics/ocean/interpolatecdo.py +++ b/earthdiagnostics/ocean/interpolatecdo.py @@ -420,7 +420,6 @@ class InterpolateCDO(Diagnostic): options='-b F64' ) - handler = Utils.open_cdf(temp) if units: handler.variables[self.variable].units = units -- GitLab