def test_basic_col_in_4d(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_altitude, SepConstraintKdtree import datetime as dt ug_data = mock.make_regular_4d_ungridded_data() sample_points = HyperPointList() sample_points.append( HyperPoint(lat=1.0, lon=1.0, alt=12.0, t=dt.datetime(1984, 8, 29, 8, 34))) sample_points.append( HyperPoint(lat=4.0, lon=4.0, alt=34.0, t=dt.datetime(1984, 9, 2, 1, 23))) sample_points.append( HyperPoint(lat=-4.0, lon=-4.0, alt=89.0, t=dt.datetime(1984, 9, 4, 15, 54))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_altitude())[0] eq_(new_data.data[0], 6.0) eq_(new_data.data[1], 16.0) eq_(new_data.data[2], 46.0)
def test_coordinates_outside_grid_in_col_ungridded_to_ungridded_in_2d( self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_pressure, SepConstraintKdtree import datetime as dt ug_data = mock.make_regular_4d_ungridded_data() sample_points = HyperPointList() sample_points.append( HyperPoint(lat=0.0, lon=0.0, pres=0.1, t=dt.datetime(1984, 8, 29, 8, 34))) sample_points.append( HyperPoint(lat=0.0, lon=0.0, pres=91.0, t=dt.datetime(1984, 9, 2, 1, 23))) sample_points.append( HyperPoint(lat=0.0, lon=0.0, pres=890.0, t=dt.datetime(1984, 9, 4, 15, 54))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_pressure())[0] eq_(new_data.data[0], 1.0) eq_(new_data.data[1], 46.0) eq_(new_data.data[2], 46.0)
def constrain_points(self, sample_point, data): """Returns HyperPoints lying within a cell. This implementation returns the points that have been stored in the appropriate bin by the index_data method. :param sample_point: HyperPoint of indices of cells defining sample region :param data: list of HyperPoints to check :return: HyperPointList of points found within cell """ point_list = self.grid_cell_bin_index.get_points_by_indices(sample_point) con_points = HyperPointList() if point_list is not None: for point in point_list: con_points.append(data[point]) return con_points
def test_coordinates_outside_grid_in_col_ungridded_to_ungridded_in_2d(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, SepConstraintKdtree import datetime as dt ug_data = mock.make_regular_2d_with_time_ungridded_data() sample_points = HyperPointList() sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=dt.datetime(1984, 8, 26))) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=dt.datetime(1884, 8, 26))) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=dt.datetime(1994, 8, 27))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_time())[0] eq_(new_data.data[0], 1.0) eq_(new_data.data[1], 1.0) eq_(new_data.data[2], 15.0)
def test_coordinates_outside_grid_in_col_ungridded_to_ungridded_in_2d(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_pressure, SepConstraintKdtree import datetime as dt ug_data = mock.make_regular_4d_ungridded_data() sample_points = HyperPointList() sample_points.append(HyperPoint(lat=0.0, lon=0.0, pres=0.1, t=dt.datetime(1984, 8, 29, 8, 34))) sample_points.append(HyperPoint(lat=0.0, lon=0.0, pres=91.0, t=dt.datetime(1984, 9, 2, 1, 23))) sample_points.append(HyperPoint(lat=0.0, lon=0.0, pres=890.0, t=dt.datetime(1984, 9, 4, 15, 54))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_pressure())[0] eq_(new_data.data[0], 1.0) eq_(new_data.data[1], 46.0) eq_(new_data.data[2], 46.0)
def test_basic_col_gridded_to_ungridded_in_2d_with_time(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_gridded import datetime as dt cube = gridded_data.make_from_cube(mock.make_square_5x3_2d_cube_with_time()) sample_points = HyperPointList() sample_points.append(HyperPoint(lat=1.0, lon=1.0, t=dt.datetime(1984, 8, 28, 8, 34))) sample_points.append(HyperPoint(lat=4.0, lon=4.0, t=dt.datetime(1984, 8, 31, 1, 23))) sample_points.append(HyperPoint(lat=-4.0, lon=-4.0, t=dt.datetime(1984, 9, 2, 15, 54))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, cube, None, nn_gridded())[0] eq_(new_data.data[0], 51.0) eq_(new_data.data[1], 82.0) eq_(new_data.data[2], 28.0)
def constrain_points(self, ref_point, data): con_points = HyperPointList() if self.haversine_distance_kd_tree_index: point_indices = self._get_cached_indices(ref_point) if point_indices is None: point_indices = self.haversine_distance_kd_tree_index.find_points_within_distance(ref_point, self.h_sep) self._add_cached_indices(ref_point, point_indices) for idx in point_indices: point = data[idx] if all(check(point, ref_point) for check in self.checks): con_points.append(point) else: for point in data: if all(check(point, ref_point) for check in self.checks): con_points.append(point) return con_points
def test_already_collocated_in_col_ungridded_to_ungridded_in_2d(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, SepConstraintKdtree import datetime as dt import numpy as np ug_data = mock.make_regular_2d_with_time_ungridded_data() sample_points = HyperPointList() t0 = dt.datetime(1984, 8, 27) for d in range(15): sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=t0 + dt.timedelta(days=d))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_time())[0] assert (np.equal(new_data.data, np.arange(15) + 1.0).all())
def constrain_points(self, sample_point, data): """Returns HyperPoints lying within a cell. :param sample_point: HyperPoint of cells defining sample region :param data: list of HyperPoints to check :return: HyperPointList of points found within cell """ con_points = HyperPointList() for point in data: include = True for idx in range(HyperPoint.number_standard_names): cell = sample_point[idx] if cell is not None: if not (np.min(cell.bound) <= point[idx] < np.max(cell.bound)): include = False if include: con_points.append(point) return con_points
def test_already_collocated_in_col_ungridded_to_ungridded_in_2d(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, SepConstraintKdtree import datetime as dt import numpy as np ug_data = mock.make_regular_2d_with_time_ungridded_data() sample_points = HyperPointList() t0 = dt.datetime(1984, 8, 27) for d in range(15): sample_points.append( HyperPoint(lat=0.0, lon=0.0, t=t0 + dt.timedelta(days=d))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_time())[0] assert (np.equal(new_data.data, np.arange(15) + 1.0).all())
def get_iterator(self, missing_data_for_missing_sample, coord_map, coords, data_points, shape, points, output_data): for out_indices, slice_start_end in self.grid_cell_bin_index_slices.get_iterator(): if not missing_data_for_missing_sample or points.data[out_indices] is not np.ma.masked: # iterate through the points which are within the same cell con_points = HyperPointList() slice_indicies = slice(*slice_start_end) for x in self.grid_cell_bin_index_slices.sort_order[slice_indicies]: con_points.append(data_points[x]) hp_values = [None] * HyperPoint.number_standard_names for (hpi, ci, shi) in coord_map: hp_values[hpi] = coords[ci].points[out_indices[shi]] hp = HyperPoint(*hp_values) yield out_indices, hp, con_points
def test_basic_col_in_4d(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_altitude, SepConstraintKdtree import datetime as dt ug_data = mock.make_regular_4d_ungridded_data() sample_points = HyperPointList() sample_points.append(HyperPoint(lat=1.0, lon=1.0, alt=12.0, t=dt.datetime(1984, 8, 29, 8, 34))) sample_points.append(HyperPoint(lat=4.0, lon=4.0, alt=34.0, t=dt.datetime(1984, 9, 2, 1, 23))) sample_points.append(HyperPoint(lat=-4.0, lon=-4.0, alt=89.0, t=dt.datetime(1984, 9, 4, 15, 54))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_altitude())[0] eq_(new_data.data[0], 6.0) eq_(new_data.data[1], 16.0) eq_(new_data.data[2], 46.0)
def test_basic_col_in_2d_with_time(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, DummyConstraint import datetime as dt ug_data = mock.make_regular_2d_with_time_ungridded_data() sample_points = HyperPointList() sample_points.append(HyperPoint(lat=1.0, lon=1.0, t=dt.datetime(1984, 8, 29, 8, 34))) sample_points.append(HyperPoint(lat=4.0, lon=4.0, t=dt.datetime(1984, 9, 2, 1, 23))) sample_points.append(HyperPoint(lat=-4.0, lon=-4.0, t=dt.datetime(1984, 9, 4, 15, 54))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, DummyConstraint(), nn_time())[0] eq_(new_data.data[0], 3.0) eq_(new_data.data[1], 7.0) eq_(new_data.data[2], 10.0)
def test_coordinates_outside_grid_in_col_ungridded_to_ungridded_in_2d( self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, SepConstraintKdtree import datetime as dt ug_data = mock.make_regular_2d_with_time_ungridded_data() sample_points = HyperPointList() sample_points.append( HyperPoint(lat=0.0, lon=0.0, t=dt.datetime(1984, 8, 26))) sample_points.append( HyperPoint(lat=0.0, lon=0.0, t=dt.datetime(1884, 8, 26))) sample_points.append( HyperPoint(lat=0.0, lon=0.0, t=dt.datetime(1994, 8, 27))) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_time())[0] eq_(new_data.data[0], 1.0) eq_(new_data.data[1], 1.0) eq_(new_data.data[2], 15.0)
def test_basic_col_with_time(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, SepConstraintKdtree import numpy as np ug_data = mock.make_MODIS_time_steps() ref = np.array([0.0, 1.0, 2.0, 3.0]) sample_points = HyperPointList() sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149751.369618055)) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149759.378055556, )) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149766.373969907)) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149776.375995371)) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_time())[0] assert (np.equal(new_data.data, ref).all())
def test_basic_col_with_time(self): from cis.collocation.col_implementations import GeneralUngriddedCollocator, nn_time, SepConstraintKdtree import numpy as np ug_data = mock.make_MODIS_time_steps() ref = np.array([0.0, 1.0, 2.0, 3.0]) sample_points = HyperPointList() sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149751.369618055)) sample_points.append(HyperPoint( lat=0.0, lon=0.0, t=149759.378055556, )) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149766.373969907)) sample_points.append(HyperPoint(lat=0.0, lon=0.0, t=149776.375995371)) sample_points = UngriddedData.from_points_array(sample_points) col = GeneralUngriddedCollocator() new_data = col.collocate(sample_points, ug_data, SepConstraintKdtree(), nn_time())[0] assert (np.equal(new_data.data, ref).all())
def constrain_points(self, ref_point, data): con_points = HyperPointList() for point in data: if all(check(point, ref_point) for check in self.checks): con_points.append(point) return con_points