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)
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)
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)
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)
def get_scores(seg, gt): rand = adapted_rand(seg, gt) vis, vim = voi(seg, gt) return {'rand': rand, 'vi-split': vis, 'vi-merge': vim}