Esempio n. 1
0
    def test_voi(self):
        from cremi_tools.metrics import voi
        shape = (64, 64, 64)
        seg = np.random.randint(0, 100, size=shape, dtype='uint32')
        gt = np.random.randint(0, 100, size=shape, dtype='uint32')

        vis, vim = voi(seg, gt)
        self.assertGreater(vis, 0)
        self.assertGreater(vim, 0)
Esempio n. 2
0
 def test_vi_random_data(self):
     print("Blub")
     from elf.evaluation import rand_index
     shape = (256, 256)
     x = np.random.randint(0, 100, size=shape)
     y = np.random.randint(0, 100, size=shape)
     vi_s, vi_m = variation_of_information(x, y, ignore_gt=[0])
     vi_s_exp, vi_m_exp = voi(x, y)
     self.assertAlmostEqual(vi_s, vi_s_exp)
     self.assertAlmostEqual(vi_m, vi_m_exp)
Esempio n. 3
0
    def test_vi(self):
        from cluster_tools.utils.validation_utils import variation_of_information
        f = z5py.File(self.path)

        ds_gt = f[self.gt_key]
        ds_gt.n_threads = 4
        gt = ds_gt[self.bb]

        ds_seg = f[self.seg_key]
        ds_seg.n_threads = 4
        seg = ds_seg[self.bb]

        vi_s, vi_m = variation_of_information(seg, gt, ignore_gt=[0])
        vi_s_exp, vi_m_exp = voi(seg, gt)

        self.assertAlmostEqual(vi_s, vi_s_exp)
        self.assertAlmostEqual(vi_m, vi_m_exp)
Esempio n. 4
0
    def test_cremi_score(self):
        from cluster_tools.utils.validation_utils import cremi_score
        f = z5py.File(self.path)

        ds_gt = f[self.gt_key]
        ds_gt.n_threads = 4
        gt = ds_gt[self.bb]

        ds_seg = f[self.seg_key]
        ds_seg.n_threads = 4
        seg = ds_seg[self.bb]

        vis, vim, ari, cs = cremi_score(seg, gt, ignore_gt=[0])

        ari_exp = adapted_rand(seg, gt)
        vis_exp, vim_exp = voi(seg, gt)

        cs_exp = np.sqrt(ari_exp * (vis_exp + vim_exp))

        self.assertAlmostEqual(ari, ari_exp)
        self.assertAlmostEqual(vis, vis_exp)
        self.assertAlmostEqual(vim, vim_exp)
        self.assertAlmostEqual(cs, cs_exp)
Esempio n. 5
0
def get_scores(seg, gt):
    rand = adapted_rand(seg, gt)
    vis, vim = voi(seg, gt)
    return {'rand': rand, 'vi-split': vis, 'vi-merge': vim}