def test_8c(s): for feature in s.features: s.assertEqual(len(feature.neighbors), 0) const = default_constants(nx=s.nx, ny=s.ny, connectivity=8) features_find_neighbors(s.features, const) s.assertNeighbors(s.features[0], [s.features[2], s.features[1]]) s.assertNeighbors(s.features[1], [s.features[0], s.features[3]]) s.assertNeighbors(s.features[2], [s.features[0]]) s.assertNeighbors(s.features[3], [s.features[1]])
def test_given_neighbors_8c(s): const = default_constants(nx=s.nxy[0], ny=s.nxy[1], connectivity=8) features = merge_adjacent_features( s.features_in_8c, base_id=0, find_neighbors=False, ignore_missing_neighbors=False, constants=const, ) s.assertFeaturesEqual(features, s.features_out_8c, check_shared_pixels=False)
def test_3_8c(s): nx, ny = s.fld_raw.shape[:2] const = default_constants(nx=nx, ny=ny, connectivity=8) regions = find_features_2d_threshold( s.fld_raw[:, :, 2], lower=s.threshold, constants=const, ) s.assertEqual(len(regions), 2, "should find exactly two regions") regions_px = [[(i, j) for i, j in r.pixels] for r in regions] s.assert_regions(regions_px, s.regions_xy[2])
def test_unknown_neighbors_4c(s): for feature in s.features_in_8c: feature.neighbors = [] const = default_constants(nx=s.nxy[0], ny=s.nxy[1], connectivity=4) features = merge_adjacent_features( s.features_in_4c, base_id=0, find_neighbors=True, ignore_missing_neighbors=False, constants=const, ) s.assertFeaturesEqual(features, s.features_out_4c, check_shared_pixels=False)
def create_feature(self, pixels, id_, shells=None, holes=None, connectivity=None): values = self.fld[(pixels.T[0], pixels.T[1])] dummy_center = [0, 0] dummy_extrema = [[0, 0]] def arr(lst, dt=np.int32): if lst is None: lst = [] return np.asarray(lst, dtype=dt) if shells is not None: shells = [arr(shell) for shell in shells] if holes is not None: holes = [arr(hole) for hole in holes] feature = Feature( values=arr(values, np.float32), pixels=arr(pixels), shells=shells, holes=holes, id_=id_, ) if shells is None or holes is None: if connectivity is None: raise ValueError("no connectivity but shells or holes is None") nx, ny = self.nxy const = default_constants(nx=nx, ny=ny, connectivity=connectivity) if (shells, holes) is (None, None): feature.derive_boundaries_from_pixels(const) elif shells is None: feature.derive_shells_from_pixels(const) elif holes is None: feature.derive_holes_from_pixels(const) return feature
def test_grow3_8c(s): const = default_constants(nx=s.nxy[0], ny=s.nxy[1], connectivity=8) features_grown = features_grow(3, s.features_in_8c, const) s.assertFeaturesEqual( features_grown, s.features_out_g3_8c, check_shared_pixels=False )