diff --git a/earthdiagnostics/data_convention.py b/earthdiagnostics/data_convention.py index 5e4dd4b5a96d8ce236f70485a6e7e36556a32df7..c6bb6aabd5d72be53211e50413242c45b17df097 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 3de0f28ac58d00a67b402fab8e73d0ec174d5d90..42dd17a99020e021b2296c43bae56a7ca06254cd 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,25 @@ 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: + 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)), + input=variable_file, + output=temp, + options='-b F64' + ) handler = Utils.open_cdf(temp) if units: