# degree_mixing_matrix#

degree_mixing_matrix(G, x='out', y='in', weight=None, nodes=None, normalized=True, mapping=None)[source]#

Returns mixing matrix for attribute.

Parameters:
Ggraph

NetworkX graph object.

x: string (â€˜inâ€™,â€™outâ€™)

The degree type for source node (directed graphs only).

y: string (â€˜inâ€™,â€™outâ€™)

The degree type for target node (directed graphs only).

nodes: list or iterable (optional)

Build the matrix using only nodes in container. The default is all nodes.

weight: string or None, optional (default=None)

The edge attribute that holds the numerical value used as a weight. If None, then each edge has weight 1. The degree is the sum of the edge weights adjacent to the node.

normalizedbool (default=True)

Return counts if False or probabilities if True.

mappingdictionary, optional

Mapping from node degree to integer index in matrix. If not specified, an arbitrary ordering will be used.

Returns:
m: numpy array

Counts, or joint probability, of occurrence of node degree.

Notes

Definitions of degree mixing matrix vary on whether the matrix should include rows for degree values that donâ€™t arise. Here we do not include such empty-rows. But you can force them to appear by inputting a `mapping` that includes those values. See examples.

Examples

```>>> G = nx.star_graph(3)
>>> mix_mat = nx.degree_mixing_matrix(G)
>>> mix_mat[0, 1]  # mixing from node degree 1 to node degree 3
0.5
```

If you want every possible degree to appear as a row, even if no nodes have that degree, use `mapping` as follows,

```>>> max_degree = max(deg for n, deg in G.degree)
>>> mapping = {x: x for x in range(max_degree + 1)} # identity mapping
>>> mix_mat = nx.degree_mixing_matrix(G, mapping=mapping)
>>> mix_mat[3, 1]  # mixing from node degree 3 to node degree 1
0.5
```