import numpy as np from log import Log from cdo import Cdo from nco import Nco import tempfile import os class Utils(object): scratch_folder = '/scratch/Earth/jvegas' nco = Nco() cdo = Cdo() files = list() @staticmethod def setminmax(filename, variable_list): Log.info('Getting max and min values for {0}', ' '.join(variable_list)) dataset = Utils.nco.readCdf(filename) for variable in variable_list: var = dataset.variables[variable] values = [np.max(var), np.min(var)] Utils.nco.ncatted(input=filename, output=filename, options='-h -a valid_max,{0},m,f,{1}'.format(variable, values[0])) Utils.nco.ncatted(input=filename, output=filename, options='-h -a valid_min,{0},m,f,{1}'.format(variable, values[1])) @staticmethod def get_temp_file(): temp_file = tempfile.mkstemp(dir=Utils.scratch_folder, prefix='diag', suffix='.nc')[1] Utils.files.append(temp_file) return temp_file @staticmethod def get_scratch_file(filename): return os.path.join(Utils.scratch_folder, filename) @staticmethod def clean(): for temp_file in Utils.files: os.remove(temp_file)