Graph properties

Density

density(network) float
template<network_vertex VertT>
double density(const undirected_network<VertT> &net)
template<network_vertex VertT>
double density(const directed_network<VertT> &net)

Calculates density of a static, dyadic graph.

Density of an undirected network is the number of edges divided by the number of possible unordered pairs of distinct vertices.

Density of a directed graph is the number of edges divided by the number of possible ordered pairs of distinct vertices.

Note that in the presense of self-links, density might be higher than 1.

>>> import reticula as ret
>>> g = ret.cycle_graph[ret.int64](size=128)
>>> ret.density(g)
0.015748031496062992

Temporal network observation window

time_window(temporal_network) tuple[temporal_network.time_type(), temporal_network.time_type()]
template<temporal_network_edge EdgeT>
std::pair<typename EdgeT::TimeType, typename EdgeT::TimeType> time_window(const network<EdgeT> &temporal_network)

Finds the range of event times present in the events. If temporal edges have different cause and effect times (i.e. they have delays) this would be equivalent to a tuple consisting of the minimum cause time and maximum effect time. If the events don’t have delays, this returns a tuple with the minimum and the maximum event time.

If the temporal network has no events (edges), this function throws a std::invalid_argument in C++ and a ValueError in Python.

cause_time_window(temporal_network) tuple[temporal_network.time_type(), temporal_network.time_type()]
template<temporal_network_edge EdgeT>
std::pair<typename EdgeT::TimeType, typename EdgeT::TimeType> cause_time_window(const network<EdgeT> &temporal_network)

Finds the range of event cause times present in the events. If the temporal network has no events (edges), this function throws a std::invalid_argument in C++ and a ValueError in Python. If the temporal network events don’t have delays, this is indistinguishable from time_window().

effect_time_window(temporal_network) tuple[temporal_network.time_type(), temporal_network.time_type()]
template<temporal_network_edge EdgeT>
std::pair<typename EdgeT::TimeType, typename EdgeT::TimeType> effect_time_window(const network<EdgeT> &temporal_network)

Finds the range of event effect times present in the events. If the temporal network has no events (edges), this function throws a std::invalid_argument in C++ and a ValueError in Python. If the temporal network events don’t have delays, this is indistinguishable from time_window().

Static projection of a temporal network

static_projection(temporal_network)
template<network_edge EdgeT>
network<typename EdgeT::StaticProjectionType> effect_time_window(const network<EdgeT> &temporal_network)

Returns a static projection (also known as spatial projection or time-aggregate) of the temporal network. Each event is stripped of it’s temporal information, and a static network of the most appropriate type is formed. For example, a directed delayed hypergraph temporal network, passed to this function, is projected into a directed hypergraph.