Example #1
0
    def testCountSphere3(self):
        
        g = BigGraph()

        g.add_node('a')        
        g.add_node('b')
        g.add_node('c')
        g.add_node('d')        
        
        g.add_edge( 'a', 'c' )
        g.add_edge( 'c', 'b' )
        g.add_edge( 'c', 'd' )
        
        self.assertEqual( g.count_edges_lookahead('c', 0), g.degree('c'))
        self.assertEqual( g.count_edges_lookahead('c', 1), g.degree('c'))
Example #2
0
class Test(unittest.TestCase):
    def setUp(self):

        self.graph = BigGraph()
        self.graph.debug = False
        self.graph.input_debug_links = 1
        self.graph.output_debug_nodes = 1

        for i in range(5):
            self.graph.add_edge(str(i), str(i + 1))
            self.graph.add_edge(str(-i), str(-i - 1))

        self.graph.create_indices()

    def tearDown(self):
        pass
Example #3
0
class BigPrivacyStressTest4(unittest.TestCase):


    def setUp(self):
        pass
        self.graph = BigGraph()
        self.graph.debug = False
        self.graph.max_links_input = 5000
        self.graph.input_debug_links = 200000
        self.graph.output_debug_nodes = 500
        use_big_alphabet = False
        self.graph.load_compressed_graph(cloudlight.tests.data_enc1, use_big_alphabet)

        self.graph.create_indices()
        self.graph.remove_degree_cache()
        self.graph.create_index_degree()
        self.graph.index_parameter_from_degree('unseen_degree')
        

        lookahead = 1
        coverage = 'korolova node'

        self.strategies = PrivacyAttackStrategies(self.graph, lookahead, coverage, self.graph.debug)
        
        
        self.coverages = [0.80] # [ float(f)/100 for f in range(2, 104, 2) ]


    def testStrategyRandom(self):
        
        random.seed(6661)
                
        self.assertEqual( list(self.strategies.start_random([0.01]))[0], 1)
        

    def testStrategyDegree(self):
        
        random.seed(6662)
        
        self.assertEqual( list(self.strategies.start_degree(self.coverages))[0], 3)
        

    def testStrategyGreedy(self):

        random.seed(6663)
        
        self.assertEqual( list(self.strategies.start_greedy(self.coverages))[0], 3)
        

    def testStrategyCrawler(self):
        
        random.seed(6664)
        
        self.assertEqual( list(self.strategies.start_crawler(self.coverages))[0], 3)
        

    def testStrategySupernodeRandom(self):
        
        random.seed(666)
                
        #self.assertEqual( list(self.strategies.start_supernode_random([0.01]))[0], 51)
        

    def testStrategySupernodeDegree(self):
        
        random.seed(6667)
        
        self.assertEqual( list(self.strategies.start_supernode_degree(self.coverages))[0], 4)
        

    def testStrategySupernodeGreedy(self):
        
        random.seed(6668)
        
        self.assertEqual( list(self.strategies.start_supernode_greedy(self.coverages))[0], 4)
        

    def testStrategySupernodeCrawler(self):
        
        random.seed(6669)
        
        self.assertEqual( list(self.strategies.start_supernode_crawler(self.coverages))[0], 5)


    def testStrategyTriangles(self):
        
        self.graph.create_index_triangles()
        random.seed(7777)

        self.coverages = [0.20]
        self.assertEqual( list(self.strategies.start_triangles(self.coverages))[0], 531)

        
    def testStrategyTrianglesCoverage(self):

        self.graph = BigGraph()
        self.graph.debug = False
        self.graph.max_links_input = 40000 #5000
        self.graph.input_debug_links = 200000
        self.graph.output_debug_nodes = 500
        use_big_alphabet = False
        self.graph.load_compressed_graph(cloudlight.tests.data_enc1, use_big_alphabet)

        self.graph.create_indices()
        self.graph.remove_degree_cache()
        self.graph.create_index_degree()
        self.graph.index_parameter_from_degree('unseen_degree')
        

        lookahead = 1
        coverage = 'korolova node'

        self.strategies = PrivacyAttackStrategies(self.graph, lookahead, coverage, self.graph.debug)
        
        
        self.coverages = [0.80] # [ float(f)/100 for f in range(2, 104, 2) ]

        
        self.graph.create_index_triangles()
        self.graph.index_parameter_from_parameter('triangles', 'unseen_triangles')
        random.seed(7777)

        self.graph.add_edge(1234000, 1234001)
        self.graph.add_edge(1234001, 1234002)
        self.graph.add_edge(1234002, 1234000)

        self.graph.add_edge(1234000, 1234001)
        self.graph.add_edge(1234001, 1234003)
        self.graph.add_edge(1234003, 1234000)

        coverage = 'triangle'
        lookahead = 1

        self.strategies = PrivacyAttackStrategies(self.graph, lookahead, coverage, self.graph.debug)

        self.coverages = [0.80]
        self.assertEqual( list(self.strategies.start_triangles(self.coverages))[0], 28)
Example #4
0
class Test(unittest.TestCase):


    def setUp(self):
        
        self.graph = BigGraph()
        self.graph.debug = False
        self.graph.input_debug_links = 1
        self.graph.output_debug_nodes = 1
        self.graph.create_indices()
        self.graph.create_index_clustering()
        self.graph.create_index_degree()
        self.graph.create_index_knn()
        self.graph.load_edgelist(StringIO(example_txt), num=False)
        
        

    def tearDown(self):
        pass

    def testNodes(self):
        nodes = list(self.graph.nodes_iter())
        self.assertEqual( nodes, [u'1', u'2', u'3', u'4', u'5', u'6', u'666', u'7', u'8', u'9'])


    def testEdges(self):
        edges = list(self.graph.edges_iter())
        self.assertEqual( len(edges), 8)

        edges = list(self.graph.edges_iter('9'))
        self.assertEqual( len(edges), 3)

    
    def testEdgesBunch(self):
        edges = list(self.graph.edges_iter(['1','4']))
        self.assertEqual( len(edges), 2)

    
    def testDegrees(self):
        self.assertEqual(list(self.graph.degrees_iter()), [1, 1, 1, 1, 2, 1, 1, 3, 2, 3])


    def testDegreesPartial(self):
        self.assertEqual(list(self.graph.degrees_iter(['2','3','4'])), [1, 1, 1])


    def testClustering(self):

        pass
        #self.assertEqual( list(self.graph.clustering_indices_iter()), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.33333333333333331, 1.0, 0.33333333333333331])


    def testKnn(self):
        self.assertEqual(list(self.graph.average_neighbor_degrees()), [1.0, 1.0, 2.0, 2.0, 1.0, 3.0, 3.0, 2.0, 3.0, 2.0])


    def testKcorenessIterPartial(self):
        self.assertEqual(list(self.graph.kcoreness_iter(['3', '4', '5'])), [1, 1, 1])

    
    def testEdgeWeight(self):
        
        self.assertEqual( self.graph.degree( '1' ), 1 )
        self.graph.update_edge_weight('1', '2', 0)
        self.assertEqual( self.graph.degree( '1' ), 0 )
        self.assertEqual( self.graph.degree( '1', 0 ), 1 )
        

    def testCountSphere(self):        
        pass
#        self.assertEqual( self.graph.count_edges_lookahead('1', 0), self.graph.degree('1'))
#        self.assertEqual( self.graph.count_edges_lookahead('1', 1), 1)
#        self.graph.add_edge('2', '34')
#        self.graph.add_edge('2', '35')
#        self.assertEqual( self.graph.count_edges_lookahead('1', 1), 3)        
#        self.assertEqual( self.graph.count_edges_lookahead('1', 2), 3)
#        self.graph.add_edge('34', '35')
#        self.assertEqual( self.graph.count_edges_lookahead('1', 2), 4)
#        self.graph.add_edge('34', '3435')
#        self.graph.add_edge('34', '3436')
#        self.graph.add_edge('3435', '3436')
#        self.assertEqual( self.graph.count_edges_lookahead('1', 2), 6)        
#        self.assertEqual( self.graph.count_edges_lookahead('1', 3), 7)


    def testCountSphere2(self):
        self.assertEqual( self.graph.count_nodes_lookahead('1', 0), 2)        
        self.assertEqual( self.graph.count_nodes_lookahead('1', 1), 2)
        self.graph.add_edge('2', '34')
        self.graph.add_edge('2', '35')
        self.assertEqual( self.graph.count_nodes_lookahead('1', 1), 4)        
        self.assertEqual( self.graph.count_nodes_lookahead('1', 2), 4)
        self.graph.add_edge('34', '35')
        self.assertEqual( self.graph.count_nodes_lookahead('1', 2), 4)
        self.graph.add_edge('34', '3435')
        self.graph.add_edge('34', '3436')
        self.assertEqual( self.graph.count_nodes_lookahead('1', 2), 6)        
        self.assertEqual( self.graph.count_nodes_lookahead('1', 3), 6)


    def testCountSphere3(self):
        
        g = BigGraph()

        g.add_node('a')        
        g.add_node('b')
        g.add_node('c')
        g.add_node('d')        
        
        g.add_edge( 'a', 'c' )
        g.add_edge( 'c', 'b' )
        g.add_edge( 'c', 'd' )
        
        self.assertEqual( g.count_edges_lookahead('c', 0), g.degree('c'))
        self.assertEqual( g.count_edges_lookahead('c', 1), g.degree('c'))


    def testSphereIndices(self):
        
        self.graph.create_index_nodesphere(0)
        self.graph.create_index_nodesphere(1)
        self.graph.create_index_nodesphere(2)
        self.graph.create_index_nodesphere(3)

        self.graph.create_index_linksphere(0)
        self.graph.create_index_linksphere(1)
        self.graph.create_index_linksphere(2)
        self.graph.create_index_linksphere(3)
        

    def testCountSphere4(self):
        
        g = BigGraph()

        g.add_node('e')
        g.add_node('a')        
        g.add_node('b')
        g.add_node('c')
        g.add_node('f')
        g.add_node('d')
        g.add_node('g')
        
        
        g.add_edge( 'a', 'c' )
        g.add_edge( 'c', 'b' )
        g.add_edge( 'c', 'd' )
        g.add_edge( 'a', 'f' )
        g.add_edge( 'd', 'e' )
        g.add_edge( 'b', 'g' )
        
        self.assertEqual( g.count_edges_lookahead('c', 0), g.degree('c'))
        
        self.assertEqual( g.count_edges_lookahead('c', 1), 6)


    def testTotalTriangles(self):
        
        self.graph = BigGraph()
        self.graph.create_indices()        
        
        self.graph.add_edge(1234000, 1234001)
        self.graph.add_edge(1234001, 1234002)
        self.graph.add_edge(1234002, 1234000)

        self.graph.add_edge(1234000, 1234001)
        self.graph.add_edge(1234001, 1234003)
        self.graph.add_edge(1234003, 1234000)
        
        self.graph.create_index_triangles()
        
        self.assertEqual(self.graph.get_parameter_cache('triangles', 1234000), 2)
        self.assertEqual(self.graph.get_parameter_cache('triangles', 1234001), 2)
        self.assertEqual(self.graph.get_parameter_cache('triangles', 1234002), 1)
        self.assertEqual(self.graph.get_parameter_cache('triangles', 1234003), 1)
                
        self.assertEqual(self.graph.total_triangles(), 2)
        
        self.assertEqual(self.graph.total_triangles_weight(1), 2)
        self.assertEqual(self.graph.total_triangles_weight(2), 0)
        
        self.assertEqual(self.graph.triangles_weight(1234000, 1), 2)
        self.assertEqual(self.graph.triangles_weight(1234000, 2), 0)
        self.assertEqual(self.graph.triangles_weight(6756443, 1), 0)
        self.assertEqual(self.graph.triangles_weight(6756443, 2), 0)
Example #5
0
class BigGraphTest3(unittest.TestCase):
    def setUp(self):

        self.graph = BigGraph()
        self.graph.debug = False
        self.graph.max_links_input = 20000
        self.graph.input_debug_links = 200000
        self.graph.output_debug_nodes = 10000
        use_big_alphabet = False
        self.graph.load_compressed_graph(cloudlight.tests.data_enc1,
                                         use_big_alphabet,
                                         has_num=True)

        self.graph.create_indices()
        self.graph.create_index_kcores()

        pass

    def tearDown(self):
        pass

    def testNodes(self):
        self.assertEqual(self.graph.number_of_nodes(), 18284)

    def testEdges(self):
        self.assertEqual(self.graph.number_of_edges(), 20000)

    def testDegreesPartial(self):
        self.assertEqual(list(self.graph.degrees_iter(['2', '3', '4'])),
                         [606, 595, 551])

    def testClustering(self):
        self.assertEqual(
            list(
                self.graph.clustering_indices_iter(
                    ['4071', '274', '1174', '278', '2'])),
            [1.0, 0.0, 0.0, 0.0, 0.0])

    def testKnn(self):
        self.assertEqual(
            list(
                self.graph.average_neighbor_degrees_iter(
                    ['2', '274', '1174', '278'])),
            [1.2112211221122111, 0.0, 870.0, 0.0])

    def testKcorenessIterPartial1(self):
        self.assertEqual(list(self.graph.kcoreness_iter(['2', '1174'])),
                         [4, 1])

    def testKcorenessIterPartial2(self):
        self.assertEqual(list(self.graph.kcoreness_iter(['3', '4', '5'])),
                         [4, 4, 4])

    def testTriangles(self):

        #self.graph = BigGraph()
        #self.graph.create_indices()

        self.graph.add_edge('2', '1234000')
        self.graph.add_edge('1234000', '1234001')
        self.graph.add_edge('1234001', '2')

        self.graph.add_edge('2', '1')
        self.graph.add_edge('1', '1234001')
        self.graph.add_edge('1234001', '2')

        self.graph.add_edge('2', '1234003')
        self.graph.add_edge('1234003', '1234004')
        self.graph.add_edge('1234004', '2')

        self.graph.add_edge('2', '1234003')
        self.graph.add_edge('1234003', '1234006')
        self.graph.add_edge('1234006', '2')

        self.graph.create_index_triangles()
        self.assertEqual(
            list(self.graph.triangles_iter(['2', '274', '1174', '278'])),
            [4, 0, 0, 0])