# Edge counts and degree¶

The first and simplest network observables to analyze are the network density (or mean degree or total number of edges) and degree distribution.

## Average degree distribution¶

To compute the average degree distribution

$\overline{P_k} = \frac{1}{t_\mathrm{max}-t_0} \int\limits_{t_0}^{t_\mathrm{max}}dt\ P_k(t)$

you can use the function tacoma.api.degree_distribution(). Here’s an example

>>> P_k = tc.degree_distribution(temporal_network)
>>> P_k
[ 0.0, 0.21, 0.45, 0.1 ]


The k-th entry of the list P_k is the average probability that a node has degree k.

## Mean degree¶

The time-dependent mean degree $$\left\langle k \right\rangle(t)$$ is one way of computing the density of a temporal network and is computed as

$\left\langle k \right\rangle(t) = 2m(t)/N.$

To compute it, use the function tacoma.api.mean_degree()

>>> t, mean_k = tc.mean_degree(temporal_network)
>>> t
[ 0.0, 0.1, 0.25 ]
>>> mean_k
[ 1.2, 0.1, 4.7 ]


The mean degree is constant in between changing times. In order to compute the average mean degree, use tacoma.tools.time_average()

>>> average_mean_k = tc.time_average(t,
mean_k,
tmax=temporal_network.tmax
)


## Edge counts¶

Measuring the mean degree does not tell you anything about the network activity, i.e. the exchange of edges in the network. To find out about activity, one can measure the total amount of edges being switched off and the total amount of edges being created at events times $$t$$. The observables $$m(t)$$, $$m_\mathrm{in}(t)$$, and $$m_\mathrm{out}(t)$$ can be computed using the function tacoma.api.edge_counts() as

>>> m, m_in, m_out = tc.edge_counts(temporal_network)


While m contains the number of edges present in the temporal network at $$t_0$$ and all event times, m_in is a list of counts of all edges being created at all event times (m_out being a list of counts of all edges leaving the network), so the length of the list m is $$N_e+1$$, while the length of the lists m_in and m_out is $$N_e$$.

In data where the inter-event time is large but m_in and m_out are typically large, as well, one could interpret both to reflect the number of edges being created/deleted in the time interval $$(t_i,t_{i+1}]$$.

## Contact coverage¶

An observable to analyze the distribution of edge activity rates in a temporal network is the total number of uniquely observed edges up to time $$t$$, the contact coverage $$C(t)$$. It can be computed using the function tacoma.tools.contact_coverage() as

>>> t, C = tc.contact_coverage(temporal_network)


t contains the time points at which C changes and C contains the corresponding count of uniquely observed edges. $$C(t)$$ is hence a strict monotonically increasing function.