Exemplo n.º 1
0
def rwrw_size_estimate(graph, n_samples=-1, walk_length=200, thinning=40):
    # determine the number of samples
    if n_samples == -1: n_samples = graph.size() * 2
    samples = RWRW(graph, n_samples, length=walk_length, thinning=thinning)
    node_degrees = [graph.degree(node) for node in samples]
    sum_of_degrees = sum(node_degrees)
    sum_of_inverse_degrees = sum(graphsize.inverse_seq(node_degrees))
    collisions = graphsize.collision_count(samples)
    return graphsize.estimate_size(sum_of_degrees, sum_of_inverse_degrees, collisions)
Exemplo n.º 2
0
def uis_wr_size_estimate(graph, n_samples=-1):
    # determine the number of samples
    if n_samples == -1: n_samples = graph.size() * 2

    #uniform sample so degree ratios fixed to 1
    sum_of_degrees = n_samples
    sum_of_inverse_degrees = n_samples
    node_samples = UIS_WR(graph.nodes(), n_samples)
    collisions = graphsize.collision_count(node_samples)
    return graphsize.estimate_size(sum_of_degrees, sum_of_inverse_degrees, collisions)
Exemplo n.º 3
0
def wis_wr_size_estimate(graph, n_samples=-1):
    # determine the number of samples
    if n_samples == -1:
        n_samples = graph.size() * 2
    samples = graphsize.WIS_WR(graphsize.degree_weighted_nodes_for(graph), n_samples)
    node_degrees = [graph.degree(node) for node in samples]
    sum_of_degrees = sum(node_degrees)
    sum_of_inverse_degrees = sum(graphsize.inverse_seq(node_degrees))
    collisions = graphsize.collision_count(samples)
    return graphsize.estimate_size(sum_of_degrees, sum_of_inverse_degrees, collisions)
Exemplo n.º 4
0
def estimate_size_with_mhrw(graph, n_samples=-1, thinning=1, random_walk_length=20):
    # determine the number of samples
    if n_samples == -1: n_samples = graph.size() * 4

    #sample the graph and process the results
    node_samples = MHRW(graph, graph.nodes(), n_samples, length=random_walk_length, thinning=thinning)
    degrees = [graph.degree(node) for node in node_samples]
    sum_of_degrees = sum(degrees)
    sum_of_inverse_degrees = sum(graphsize.inverse_seq(degrees))

    collisions = graphsize.collision_count(node_samples)

    print 'Sum of degrees: ', sum_of_degrees
    print 'Sum of inverse degrees: ', sum_of_inverse_degrees
    print 'Repeated samples: ', collisions

    return graphsize.estimate_size(sum_of_degrees, sum_of_inverse_degrees, collisions)
Exemplo n.º 5
0
 def test_estimate_size_arithmetic(self):
     """degrees * inverse_degrees / 2 * identical_samples"""
     self.assertEqual(10, graphsize.estimate_size(10, 10, 5))
     self.assertEqual(100.4, graphsize.estimate_size(10, 100.4, 5))