def test_cubelist_with_time_coords(self): # Tests an :class:`iris.cube.CubeList` containing cubes with time # coords against a time string and a time coord. cubelist = iris.cube.CubeList(self.simple_1d_time_cubes()) expected = 'hours since 1970-01-01 00:00:00' unify_time_units(cubelist) self._common(expected, cubelist)
def test_time_coord_only_in_some_cubes(self): list_of_cubes = self.simple_1d_time_cubes() cube = stock.simple_2d() list_of_cubes.append(cube) expected = 'hours since 1970-01-01 00:00:00' unify_time_units(list_of_cubes) self._common(expected, list_of_cubes)
def test_list_of_cubes_with_time_coords(self): # Tests an iterable containing cubes with time coords against a time # string and a time coord. list_of_cubes = self.simple_1d_time_cubes() expected = 'hours since 1970-01-01 00:00:00' unify_time_units(list_of_cubes) self._common(expected, list_of_cubes)
def test_multiple_calendars(self): cube0, cube1 = self.simple_1d_time_cubes() cube2, cube3 = self.simple_1d_time_cubes(calendar='360_day') cubelist = iris.cube.CubeList([cube0, cube1, cube2, cube3]) expected = 'hours since 1970-01-01 00:00:00' unify_time_units(cubelist) self._common(expected, cubelist)
def test_concat_1d_with_differing_time_units(self): reftimes = ["hours since 1970-01-01 00:00:00", "hours since 1970-01-02 00:00:00"] coords_points = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]] cubes = self.simple_1d_time_cubes(reftimes, coords_points) unify_time_units(cubes) result = concatenate(cubes) self.assertEqual(len(result), 1) self.assertEqual(result[0].shape, (10,))
def test_no_time_coord_in_cubes(self): path0 = tests.get_data_path(('PP', 'aPPglob1', 'global.pp')) path1 = tests.get_data_path(('PP', 'aPPglob1', 'global_t_forecast.pp')) cube0 = iris.load_cube(path0) cube1 = iris.load_cube(path1) cubes = iris.cube.CubeList([cube0, cube1]) result = copy.copy(cubes) unify_time_units(result) self.assertEqual(cubes, result)
def test_multiple_time_coords_in_cube(self): cube0, cube1 = self.simple_1d_time_cubes() units = iris.unit.Unit("days since 1980-05-02 00:00:00", calendar="gregorian") aux_coord = iris.coords.AuxCoord(72, standard_name="forecast_reference_time", units=units) cube1.add_aux_coord(aux_coord) cubelist = iris.cube.CubeList([cube0, cube1]) expected = "hours since 1970-01-01 00:00:00" unify_time_units(cubelist) self._common(expected, cubelist) self._common(expected, cubelist, coord_name="forecast_reference_time")
def make_cubes_compatible(list_of_cubes): equalise_attributes(list_of_cubes) unify_time_units(list_of_cubes) for cube_i in list_of_cubes: cube_i.cell_methods = () c = 0 for i in range(len(list_of_cubes)): for j in range(i+1,len(list_of_cubes)): if( not list_of_cubes[i].is_compatible(list_of_cubes[j])): print('cubes {} and {}:\n'.format(i,j)) describe_diff(list_of_cubes[i],list_of_cubes[j]) c+=1 if c == 0: print("All cubes are now compatible.") else: print("{} incompatible cubes".format(c))
ensemble_mean.attributes = temp_list_trim[0].attributes dates = get_dates(ensemble_mean, verbose=False) outpath = (fpath + '/test_ensemble_mean_historical_' + model + '_' + var + '_' + str(dates[0].year) + str(dates[0].month).zfill(2) + '_' + str(dates[-1].year) + str(dates[-1].month).zfill(2) + '.nc') print(outpath) iris.save(ensemble_mean, outpath) continue else: # if multiple runs calculate mean of runs n = len(temp_list_trim) print(n) equalise_attributes(temp_list_trim) unify_time_units(temp_list_trim) if n == 2: ensemble_mean = (temp_list_trim[0] + temp_list_trim[1]) / n if n == 3: ensemble_mean = (temp_list_trim[0] + temp_list_trim[1] + temp_list_trim[2]) / n if n == 4: ensemble_mean = (temp_list_trim[0] + temp_list_trim[1] + temp_list_trim[2] + temp_list_trim[3]) / n if n == 5: ensemble_mean = (temp_list_trim[0] + temp_list_trim[1] + temp_list_trim[2] + temp_list_trim[3] + temp_list_trim[4]) / n if n == 6: ensemble_mean = (temp_list_trim[0] + temp_list_trim[1] +