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)
Exemple #5
0
 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] +