Exemple #1
0
 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]])
Exemple #2
0
 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)
Exemple #3
0
 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])
Exemple #4
0
 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)
Exemple #5
0
    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
Exemple #6
0
 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
     )