Пример #1
0
    def test_normalized_manhattan_distance_undir(self):
        g1 = full_graph(directed=False)
        s1 = create_stat(g1, StatType.TRIAD_CENSUS)

        g2 = star_graph()
        s2 = create_stat(g2, StatType.TRIAD_CENSUS)

        g3 = ring_graph(directed=False)
        s3 = create_stat(g3, StatType.TRIAD_CENSUS)

        g4 = random_graph_sparse(directed=False)
        s4 = create_stat(g4, StatType.TRIAD_CENSUS)

        g5 = random_graph_sparse(directed=False)
        s5 = create_stat(g5, StatType.TRIAD_CENSUS)

        self.assertEqual(s1.distance(s1, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(s2.distance(s2, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(s3.distance(s3, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(s4.distance(s4, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(s5.distance(s5, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertAlmostEqual(s1.distance(s2, DistanceType.NORMALIZED_MANHATTAN), 2., places=2)
        self.assertAlmostEqual(s1.distance(s3, DistanceType.NORMALIZED_MANHATTAN), 2., places=2)
        self.assertAlmostEqual(s2.distance(s3, DistanceType.NORMALIZED_MANHATTAN), 0.979, places=2)
        self.assertLess(s4.distance(s5, DistanceType.NORMALIZED_MANHATTAN), 2.)
        self.assertGreaterEqual(s1.distance(s3, DistanceType.NORMALIZED_MANHATTAN),
                                s4.distance(s5, DistanceType.NORMALIZED_MANHATTAN))
Пример #2
0
    def test_earth_mover_distance_undir_rel(self):
        g1 = full_graph(directed=False)
        s1 = create_stat(g1, StatType.DEGREES, bins=10)

        g2 = star_graph()
        s2 = create_stat(g2, StatType.DEGREES, bins=10, ref_stat=s1)

        g3 = ring_graph(directed=False)
        s3 = create_stat(g3, StatType.DEGREES, bins=10, ref_stat=s1)

        g4 = random_graph_sparse(directed=False)
        s4 = create_stat(g4, StatType.DEGREES, bins=10, ref_stat=s1)

        g5 = random_graph_sparse(directed=False)
        s5 = create_stat(g5, StatType.DEGREES, bins=10, ref_stat=s1)

        self.assertEqual(s1.distance(s1, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s2.distance(s2, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s3.distance(s3, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s4.distance(s4, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s5.distance(s5, DistanceType.EARTH_MOVER), 0.)
        self.assertAlmostEqual(
            s1.distance(s2, DistanceType.EARTH_MOVER), 8820.9, places=2)
        self.assertAlmostEqual(
            s1.distance(s3, DistanceType.EARTH_MOVER), 8910., places=2)
        self.assertAlmostEqual(
            s2.distance(s3, DistanceType.EARTH_MOVER), 89.1, places=2)
        self.assertLess(s4.distance(s5, DistanceType.EARTH_MOVER), 1000.)
        self.assertGreater(
            s1.distance(s3, DistanceType.EARTH_MOVER),
            s4.distance(s5, DistanceType.EARTH_MOVER))
Пример #3
0
    def test_earth_mover_distance_undir_rel(self):
        g1 = full_graph(directed=False)
        s1 = create_stat(g1, StatType.DEGREES, bins=10)

        g2 = star_graph()
        s2 = create_stat(g2, StatType.DEGREES, bins=10, ref_stat=s1)

        g3 = ring_graph(directed=False)
        s3 = create_stat(g3, StatType.DEGREES, bins=10, ref_stat=s1)

        g4 = random_graph_sparse(directed=False)
        s4 = create_stat(g4, StatType.DEGREES, bins=10, ref_stat=s1)

        g5 = random_graph_sparse(directed=False)
        s5 = create_stat(g5, StatType.DEGREES, bins=10, ref_stat=s1)

        self.assertEqual(s1.distance(s1, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s2.distance(s2, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s3.distance(s3, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s4.distance(s4, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s5.distance(s5, DistanceType.EARTH_MOVER), 0.)
        self.assertAlmostEqual(s1.distance(s2, DistanceType.EARTH_MOVER), 8820.9, places=2)
        self.assertAlmostEqual(s1.distance(s3, DistanceType.EARTH_MOVER), 8910., places=2)
        self.assertAlmostEqual(s2.distance(s3, DistanceType.EARTH_MOVER), 89.1, places=2)
        self.assertLess(s4.distance(s5, DistanceType.EARTH_MOVER), 1000.)
        self.assertGreater(s1.distance(s3, DistanceType.EARTH_MOVER), s4.distance(s5, DistanceType.EARTH_MOVER))
Пример #4
0
    def test_triad_census_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.TRIAD_CENSUS)
        self.assertListEqual(list(s.data), [0, 0, 0, 161700])

        g = star_graph()
        s = create_stat(g, StatType.TRIAD_CENSUS)
        self.assertListEqual(list(s.data), [0, 0, 4851, 0])

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.TRIAD_CENSUS)
        self.assertListEqual(list(s.data), [0, 0, 100, 0])
Пример #5
0
    def test_triad_census_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.TRIAD_CENSUS)
        self.assertListEqual(list(s.data), [0, 0, 0, 161700])

        g = star_graph()
        s = create_stat(g, StatType.TRIAD_CENSUS)
        self.assertListEqual(list(s.data), [0, 0, 4851, 0])

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.TRIAD_CENSUS)
        self.assertListEqual(list(s.data), [0, 0, 100, 0])
Пример #6
0
    def test_u_page_ranks_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.U_PAGERANKS, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertAlmostEqual(s.bin_edges[-1], .01, places=2)

        g = star_graph()
        s = create_stat(g, StatType.U_PAGERANKS, bins=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 1])
        self.assertAlmostEqual(s.bin_edges[-1], .46, places=2)

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.U_PAGERANKS, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertAlmostEqual(s.bin_edges[-1], .01, places=2)
Пример #7
0
    def test_degrees_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = star_graph()
        s = create_stat(g, StatType.DEGREES, bins=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 1])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 2.)
Пример #8
0
    def test_degrees_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = star_graph()
        s = create_stat(g, StatType.DEGREES, bins=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 1])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 2.)
Пример #9
0
    def test_u_dists_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.U_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [9900, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = star_graph()
        s = create_stat(g, StatType.U_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [198, 9702, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.U_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [200, 200, 200, 200, 200, 200, 200, 200, 200, 8100])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)
Пример #10
0
    def test_u_page_ranks_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.U_PAGERANKS, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertAlmostEqual(s.bin_edges[-1], .01, places=2)

        g = star_graph()
        s = create_stat(g, StatType.U_PAGERANKS, bins=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 1])
        self.assertAlmostEqual(s.bin_edges[-1], .46, places=2)

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.U_PAGERANKS, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertAlmostEqual(s.bin_edges[-1], .01, places=2)
Пример #11
0
    def test_u_dists_undir(self):
        g = full_graph(directed=False)
        s = create_stat(g, StatType.U_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [9900, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = star_graph()
        s = create_stat(g, StatType.U_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [198, 9702, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = ring_graph(directed=False)
        s = create_stat(g, StatType.U_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [200, 200, 200, 200, 200, 200, 200,
                                            200, 200, 8100])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)
Пример #12
0
    def test_out_degrees(self):
        g = full_graph(directed=True)
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = in_star_graph()
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [1, 0, 0, 0, 0, 0, 0, 0, 0, 99])
        self.assertEqual(s.bin_edges[-1], 1.)

        g = out_star_graph()
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 1])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = ring_graph(directed=True)
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 1.)
Пример #13
0
    def test_d_dists_dir(self):
        g = full_graph(directed=True)
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [9900, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = in_star_graph()
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 9801])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = out_star_graph()
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 9801])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = ring_graph(directed=True)
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [100, 100, 100, 100, 100, 100, 100, 100, 100, 9000])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)
Пример #14
0
    def test_out_degrees(self):
        g = full_graph(directed=True)
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = in_star_graph()
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [1, 0, 0, 0, 0, 0, 0, 0, 0, 99])
        self.assertEqual(s.bin_edges[-1], 1.)

        g = out_star_graph()
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 1])
        self.assertEqual(s.bin_edges[-1], 99.)

        g = ring_graph(directed=True)
        s = create_stat(g, StatType.OUT_DEGREES, bins=10)
        self.assertListEqual(list(s.data), [0, 0, 0, 0, 0, 0, 0, 0, 0, 100])
        self.assertEqual(s.bin_edges[-1], 1.)
Пример #15
0
    def test_d_dists_dir(self):
        g = full_graph(directed=True)
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [9900, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = in_star_graph()
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 9801])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = out_star_graph()
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [99, 0, 0, 0, 0, 0, 0, 0, 0, 9801])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)

        g = ring_graph(directed=True)
        s = create_stat(g, StatType.D_DISTS, max_dist=10)
        self.assertListEqual(list(s.data), [100, 100, 100, 100, 100, 100, 100,
                                            100, 100, 9000])
        self.assertAlmostEqual(s.bin_edges[-1], 10., places=2)
Пример #16
0
    def test_earth_mover_distance_dir(self):
        g1 = full_graph(directed=True)
        s1 = create_stat(g1, StatType.IN_DEGREES, bins=10)

        g2 = in_star_graph()
        s2 = create_stat(g2, StatType.IN_DEGREES, bins=10)

        g3 = out_star_graph()
        s3 = create_stat(g3, StatType.IN_DEGREES, bins=10)

        g4 = ring_graph(directed=True)
        s4 = create_stat(g4, StatType.IN_DEGREES, bins=10)

        g5 = random_graph_sparse(directed=True)
        s5 = create_stat(g5, StatType.IN_DEGREES, bins=10)

        g6 = random_graph_sparse(directed=True)
        s6 = create_stat(g6, StatType.IN_DEGREES, bins=10)

        self.assertEqual(s1.distance(s1, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s2.distance(s2, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s3.distance(s3, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s4.distance(s4, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s5.distance(s5, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s6.distance(s6, DistanceType.EARTH_MOVER), 0.)
        self.assertAlmostEqual(s1.distance(s2, DistanceType.EARTH_MOVER), 8820.9, places=2)
        self.assertAlmostEqual(s1.distance(s3, DistanceType.EARTH_MOVER), 89.1, places=2)
        self.assertAlmostEqual(s1.distance(s4, DistanceType.EARTH_MOVER), 0., places=2)
        self.assertAlmostEqual(s2.distance(s3, DistanceType.EARTH_MOVER), 8731.8, places=2)
        self.assertAlmostEqual(s2.distance(s4, DistanceType.EARTH_MOVER), 8820.9, places=2)
        self.assertAlmostEqual(s3.distance(s4, DistanceType.EARTH_MOVER), 0.9, places=2)
        self.assertLess(s5.distance(s6, DistanceType.EARTH_MOVER), 1000.)
Пример #17
0
    def test_normalized_manhattan_distance_undir(self):
        g1 = full_graph(directed=False)
        s1 = create_stat(g1, StatType.TRIAD_CENSUS)

        g2 = star_graph()
        s2 = create_stat(g2, StatType.TRIAD_CENSUS)

        g3 = ring_graph(directed=False)
        s3 = create_stat(g3, StatType.TRIAD_CENSUS)

        g4 = random_graph_sparse(directed=False)
        s4 = create_stat(g4, StatType.TRIAD_CENSUS)

        g5 = random_graph_sparse(directed=False)
        s5 = create_stat(g5, StatType.TRIAD_CENSUS)

        self.assertEqual(
            s1.distance(s1, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(
            s2.distance(s2, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(
            s3.distance(s3, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(
            s4.distance(s4, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertEqual(
            s5.distance(s5, DistanceType.NORMALIZED_MANHATTAN), 0.)
        self.assertAlmostEqual(
            s1.distance(s2, DistanceType.NORMALIZED_MANHATTAN), 2., places=2)
        self.assertAlmostEqual(
            s1.distance(s3, DistanceType.NORMALIZED_MANHATTAN), 2., places=2)
        self.assertAlmostEqual(
            s2.distance(
                s3, DistanceType.NORMALIZED_MANHATTAN), 0.979, places=2)
        self.assertLess(s4.distance(s5, DistanceType.NORMALIZED_MANHATTAN), 2.)
        self.assertGreaterEqual(
            s1.distance(s3, DistanceType.NORMALIZED_MANHATTAN),
            s4.distance(s5, DistanceType.NORMALIZED_MANHATTAN))
Пример #18
0
    def test_earth_mover_distance_dir(self):
        g1 = full_graph(directed=True)
        s1 = create_stat(g1, StatType.IN_DEGREES, bins=10)

        g2 = in_star_graph()
        s2 = create_stat(g2, StatType.IN_DEGREES, bins=10)

        g3 = out_star_graph()
        s3 = create_stat(g3, StatType.IN_DEGREES, bins=10)

        g4 = ring_graph(directed=True)
        s4 = create_stat(g4, StatType.IN_DEGREES, bins=10)

        g5 = random_graph_sparse(directed=True)
        s5 = create_stat(g5, StatType.IN_DEGREES, bins=10)

        g6 = random_graph_sparse(directed=True)
        s6 = create_stat(g6, StatType.IN_DEGREES, bins=10)

        self.assertEqual(s1.distance(s1, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s2.distance(s2, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s3.distance(s3, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s4.distance(s4, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s5.distance(s5, DistanceType.EARTH_MOVER), 0.)
        self.assertEqual(s6.distance(s6, DistanceType.EARTH_MOVER), 0.)
        self.assertAlmostEqual(
            s1.distance(s2, DistanceType.EARTH_MOVER), 8820.9, places=2)
        self.assertAlmostEqual(
            s1.distance(s3, DistanceType.EARTH_MOVER), 89.1, places=2)
        self.assertAlmostEqual(
            s1.distance(s4, DistanceType.EARTH_MOVER), 0., places=2)
        self.assertAlmostEqual(
            s2.distance(s3, DistanceType.EARTH_MOVER), 8731.8, places=2)
        self.assertAlmostEqual(
            s2.distance(s4, DistanceType.EARTH_MOVER), 8820.9, places=2)
        self.assertAlmostEqual(
            s3.distance(s4, DistanceType.EARTH_MOVER), 0.9, places=2)
        self.assertLess(s5.distance(s6, DistanceType.EARTH_MOVER), 1000.)
Пример #19
0
 def test_unknown_stat_throws_exception(self):
     g = star_graph()
     with self.assertRaises(ValueError):
         create_stat(g, 999999999)
Пример #20
0
 def test_unsupported_distance_throws_exception(self):
     g = star_graph()
     s = create_stat(g, StatType.TRIAD_CENSUS)
     with self.assertRaises(NotImplementedError):
         s.distance(s, DistanceType.EARTH_MOVER)
Пример #21
0
 def test_unknown_stat_throws_exception(self):
     g = star_graph()
     with self.assertRaises(ValueError):
         create_stat(g, 999999999)
Пример #22
0
 def test_unsupported_distance_throws_exception(self):
     g = star_graph()
     s = create_stat(g, StatType.TRIAD_CENSUS)
     with self.assertRaises(NotImplementedError):
         s.distance(s, DistanceType.EARTH_MOVER)