コード例 #1
0
ファイル: test_percolate.py プロジェクト: bt402/pypercolate
def test_microcanonical_averages_number_of_iterations(grid_3x3_graph):

    spanning_cluster = grid_3x3_graph.graph['span']

    n = 0

    for microcanonical_average in percolate.microcanonical_averages(
            grid_3x3_graph, spanning_cluster=spanning_cluster):
        assert microcanonical_average['n'] == n
        n += 1

    assert microcanonical_average['n'] == 12
コード例 #2
0
ファイル: test_percolate.py プロジェクト: bt402/pypercolate
def test_microcanonical_averages_initial_iteration(grid_3x3_graph):

    spanning_cluster = grid_3x3_graph.graph['span']

    ret = next(
        percolate.microcanonical_averages(grid_3x3_graph,
                                          spanning_cluster=spanning_cluster))

    assert ret['n'] == 0
    assert ret['max_cluster_size'] == 1.0
    np.testing.assert_allclose(ret['max_cluster_size_ci'], np.ones(2))
    np.testing.assert_allclose(ret['moments'], np.ones(5) * 8)
    np.testing.assert_allclose(ret['moments_ci'], np.ones((5, 2)) * 8)

    assert ('spanning_cluster' in ret) == spanning_cluster
    assert ('spanning_cluster_ci' in ret) == spanning_cluster

    if spanning_cluster:
        assert ret['spanning_cluster'] == 1 / 42
        np.testing.assert_allclose(
            np.array([0, 1]) + np.array([1, -1]) *
            scipy.stats.beta.cdf(ret['spanning_cluster_ci'], a=1, b=41),
            scipy.stats.norm.cdf(-1) * np.ones(2))
コード例 #3
0
ファイル: test_percolate.py プロジェクト: bt402/pypercolate
def test_microcanonical_averages_zero_alpha(grid_3x3_graph):
    with pytest.raises(ValueError):
        next(percolate.microcanonical_averages(grid_3x3_graph, alpha=0.0))
コード例 #4
0
ファイル: test_percolate.py プロジェクト: bt402/pypercolate
def test_microcanonical_averages_nonfloat_alpha(grid_3x3_graph):
    with pytest.raises(ValueError):
        next(percolate.microcanonical_averages(grid_3x3_graph, alpha='huge'))
コード例 #5
0
ファイル: test_percolate.py プロジェクト: bt402/pypercolate
def test_microcanonical_averages_nonpositive_runs(grid_3x3_graph):
    with pytest.raises(ValueError):
        next(percolate.microcanonical_averages(grid_3x3_graph, runs=0))
コード例 #6
0
ファイル: test_percolate.py プロジェクト: bt402/pypercolate
def test_microcanonical_averages_noninteger_runs(grid_3x3_graph):
    with pytest.raises(ValueError):
        next(percolate.microcanonical_averages(grid_3x3_graph, runs='many'))
コード例 #7
0
# number of runs
runs = 1
# system sizes
number_of_nodes = [10**5, 10**5]
constants = [5]
#
even = False
sequences = []
for i in number_of_nodes:
    while even == False:
        rng = np.random.default_rng()
        sequence = rng.poisson(constants[0], i)
        if (sum(sequence) % 2) == 0:
            even == True
    sequences.append(sequence)
graphs = [nx.configuration_model(i) for i in sequences]

# compute the microcanonical averages for all system sizes
microcanonical_averages = [
    percolate.microcanonical_averages(graph=graph, runs=runs)
    for graph in graphs
]
# combine microcanonical averages into one array
microcanonical_averages_arrays = [
    percolate.microcanonical_averages_arrays(avg)
    for avg in microcanonical_averages
]

print(microcanonical_averages_arrays)