Generate instances of the thresholded locally correlated edge weights network model and calculate its properties.
MIT License
Generate instances of the thresholded locally-correlated edge weight network model. Find the scripts to generate the figures from the paper in https://github.com/benmaier/ThredgeCorr/tree/master/paper_figures .
Use pip:
pip install ThredgeCorr
Create an instance of the network model.
from ThredgeCorr import get_networkx_graph
N_nodes = 100
rho = 0.49
mean_degree = 1.2
G = get_networkx_graph(N_nodes, covariance, mean_degree=mean_degree)
# Alternatively, set this up with a threshold
G = get_networkx_graph(N_nodes, covariance, threshold=0.5)
To calculate network properties as explained in the paper, check out the modules
ThredgeCorr.basic_patterns
ThredgeCorr.degree_dist
and the scripts in https://github.com/benmaier/ThredgeCorr/tree/master/paper_figures .
Links:
https://github.com/benmaier/ThredgeCorr/blob/master/ThredgeCorr/basic_patterns.py
https://github.com/benmaier/ThredgeCorr/blob/master/ThredgeCorr/degree_dist.py
N_nodes = 100
covariance = 0.35
mean_degree = 2.0
from ThredgeCorr import ThredgeCorrConstructor
from scipy.special import binom
TC = ThredgeCorrConstructor(N_nodes, covariance, mean_degree=mean_degree)
# Generate edgelist
edgelist = TC.get_edgelist()
# generate sparse csr adjacency matrix
A_csr = TC.get_adjacency_matrix(sparse=True) # default = False
# generate networkx-Graph
G = TC.get_graph()
# Estimate the transitivity by sampling a network of 3 nodes `N` times,
# then calculating `T = 3 * n_triangles / (3 * n_triangles + n_chains)`.
T = TC.estimate_transitivity(int(binom(N_nodes,3))*500)
# Change the threshold directly, or indirectly using the desired mean degree
TC.set_threshold(2.253)
TC.set_mean_degree(1.2)
TC.update_covariance(0.2)
# Compute degree sequences of 500 instances of the current configuration.
ks = [ TC.get_adjacency_matrix().sum(axis=1).flatten() for n in range(500) ]
# Compute degree sequence comparable to 500 instances of `N = 100` nodes.
ks = TC.estimate_degree_sequence(N_nodes*500)
# Compute the mean degree
TC.get_mean_degree() # mean degree as given by the threshold