reticula
reticula copied to clipboard
The general purpose library for analysing static, temporal and hypergraph networks.
Currently the `relabel_nodes` test only checks number of nodes and edges. It should check that the two graphs are isomorphic, but the hypothetical `dag::is_isomorphic` function doesn't exist yet. Maybe worth...
Make sure `Distribution` and `ResDistribution` churn out something that is castable to `EdgeT::TimeType` in `random_events()`. Possibly through a requires clause.
It also should probably be renamed into `dag::relabel_vertices`, providing a variant that takes a vector/mapping of labels.
Add `edge_*_assortativity()` for parity with vertex `*_assortativity()` functions.
Add simple joint-degree sequence functions, returning the degree-pairs of both ends. Maybe use those in `*_degree_assortativity` functions. Maybe define a generic `attribute_pairs` function similar to definition of `attribute_assortativity` and go...
Take the following example: ```python d = ret.random_directed_expected_degree_sequence_hypergraph[ret.int64]([(2, 2)]*200000, [(5,5)]*80000, random_state=state) ``` It produces an edge with zero vertices, and many edges with only in- or out-verts. Similarly, the undirected...
Currently some functions use integer seeds, while some others use a mix of `std::mt19937` and `std::mt19937_64`. The code should allow the use of a generic pseudo-random generator or at least...
`dag::graph_union(g1, g2)` copies one graph and merges the other one into the copy before returning it. Currently the one with the larger number of vertices is selected. Investigate if selecting...
libstdc++ would try to [cache hash values](https://gcc.gnu.org/onlinedocs/gcc-11.2.0/libstdc++/manual/manual/unordered_associative.html#containers.unordered.cache) unless the hash function is marked as noexcept and `__is_fast_hash` returns true, which is the default. This might have some performance and memory...