thresholded_random_geometric_graph#
- thresholded_random_geometric_graph(n, radius, theta, dim=2, pos=None, weight=None, p=2, seed=None)[source]#
Returns a thresholded random geometric graph in the unit cube.
The thresholded random geometric graph [1] model places
nnodes uniformly at random in the unit cube of dimensionsdim. Each nodeuis assigned a weight \(w_u\). Two nodesuandvare joined by an edge if they are within the maximum connection distance,radiuscomputed by thep-Minkowski distance and the summation of weights \(w_u\) + \(w_v\) is greater than or equal to the threshold parametertheta.Edges within
radiusof each other are determined using a KDTree when SciPy is available. This reduces the time complexity from \(O(n^2)\) to \(O(n)\).- Parameters:
- nint or iterable
Number of nodes or iterable of nodes
- radius: float
Distance threshold value
- theta: float
Threshold value
- dimint, optional
Dimension of graph
- posdict, optional
A dictionary keyed by node with node positions as values.
- weightdict, optional
Node weights as a dictionary of numbers keyed by node.
- pfloat, optional (default 2)
Which Minkowski distance metric to use.
phas to meet the condition1 <= p <= infinity.If this argument is not specified, the \(L^2\) metric (the Euclidean distance metric), p = 2 is used.
This should not be confused with the
pof an Erdős-Rényi random graph, which represents probability.- seedinteger, random_state, or None (default)
Indicator of random number generation state. See Randomness.
- Returns:
- Graph
A thresholded random geographic graph, undirected and without self-loops.
Each node has a node attribute
'pos'that stores the position of that node in Euclidean space as provided by theposkeyword argument or, ifposwas not provided, as generated by this function. Similarly, each node has a nodethre attribute'weight'that stores the weight of that node as provided or as generated.
Notes
This uses a k-d tree to build the graph.
The
poskeyword argument can be used to specify node positions so you can create an arbitrary distribution and domain for positions.For example, to use a 2D Gaussian distribution of node positions with mean (0, 0) and standard deviation 2
If weights are not specified they are assigned to nodes by drawing randomly from the exponential distribution with rate parameter \(\lambda=1\). To specify weights from a different distribution, use the
weightkeyword argument:::>>> import random >>> import math >>> n = 50 >>> pos = {i: (random.gauss(0, 2), random.gauss(0, 2)) for i in range(n)} >>> w = {i: random.expovariate(5.0) for i in range(n)} >>> G = nx.thresholded_random_geometric_graph(n, 0.2, 0.1, 2, pos, w)
References
Examples
Default Graph:
G = nx.thresholded_random_geometric_graph(50, 0.2, 0.1)
Custom Graph:
Create a thresholded random geometric graph on 50 uniformly distributed nodes where nodes are joined by an edge if their sum weights drawn from a exponential distribution with rate = 5 are >= theta = 0.1 and their Euclidean distance is at most 0.2.