Skip to main content

Analyse temporal network and hypergraphs efficiently.

Project description

Python bindings for Reticula

Installation

The library offers pre-compiled Wheels for manylinux2014 compatible systems. That is, Linux systems with GNU C Library (glibc) version 2.17 and newer. The library currently supports Python version 3.8, 3.9 and 3.10.

$ pip install reticula

Installing from source

Alternatively you can install the library from source:

Clone the library:

$ git clone https://github.com/arashbm/reticula-python.git

Build the Wheel:

$ cd reticula-python
$ pip install .

Note that compiling source requires an unbelievable amount (> 40GB) of RAM.

Basic examples

Generate a random static network and investigate:

>>> import reticula as ret
>>> state = ret.mersenne_twister(42)  # create a pseudorandom number generator
>>> g = ret.random_gnp_graph[ret.int64](n=100, p=0.02, random_state=state)
>>> g
<undirected_network[int64] with 100 verts and 110 edges>
>>> g.vertices()
[0, 1, 2, 3, .... 99]
>>> g.edges()
[undirected_edge[int64](0, 16), undirected_edge[int64](0, 20),
   undirected_edge[int64](0, 31), undirected_edge[int64](0, 51), ...]
>>> ret.connected_components(g)
[<component[int64] of 1 nodes: {9}>, <component[int64] of 1 node {33}>, ...]
>>> lcc = max(ret.connected_components(g), key=len)
>>> lcc
<component[int64] of 93 nodes: {99, 96, 95, 94, ...}>
>>> g2 = ret.vertex_induced_subgraph(g, lcc)
>>> g2
<undirected_network[int64] with 93 verts and 109 edges>

A more complete example of static network percolation analysis, running on multiple threads, can be found in examples/static_network_percolation/

Create a random fully-mixed temporal network and calculate simple (unconstrained) reachability from node 0 at time 0 to all nodes and times.

>>> import reticula as ret
>>> state = ret.mersenne_twister(42)
>>> g = ret.random_fully_mixed_temporal_network[ret.int64](\
...    size=100, rate=0.01, max_t=1024, random_state=state)
>>> adj = ret.temporal_adjacency.simple[\
...    ret.undirected_temporal_edge[ret.int64, ret.double]]()
>>> cluster = ret.out_cluster(\
...    temporal_network=g, temporal_adjacency=adj, vertex=0, time=0.0)
>>> cluster
<temporal_cluster[undirected_temporal_edge[int64, double],
  simple[undirected_temporal_edge[int64, double]]] with volume 100
  and lifetime (0 1.7976931348623157e+308]>
>>> cluster.covers(vertex=12, time=100.0)
True

>>> # Let's see all intervals where vert 15 is reachable from vert 0 at t=0.0:
>>> list(cluster.interval_sets()[15])
[(3.099055278145548, 1.7976931348623157e+308)]

Let's now try limited waiting-time (with dt = 5.0) reachability:

>>> import reticula as ret
>>> state = ret.mersenne_twister(42)
>>> g = ret.random_fully_mixed_temporal_network[int64](\
...   size=100, rate=0.01, max_t=1024, random_state=state)
>>> adj = ret.temporal_adjacency.limited_waiting_time[\
...   ret.undirected_temporal_edge[ret.int64, ret.double]](dt=5.0)
>>> cluster = ret.out_cluster(\
...  temporal_network=g, temporal_adjacency=adj, vertex=0, time=0.0)
>>> cluster
<temporal_cluster[undirected_temporal_edge[int64, double],
  limited_waiting_time[undirected_temporal_edge[int64, double]]] with
  volume 100 and lifetime (0 1028.9972186553928]>
>>> cluster.covers(vertex=15, time=16.0)
True
>>> list(cluster.interval_sets()[15])
[(3.099055278145548, 200.17866501023616),
  (200.39858803326402, 337.96139372380003),
  ...
  (1017.5258263596586, 1028.9149586273347)]

>>> # Total "human-hours" of reachability cluster
>>> cluster.mass()
101747.97444555275

>>> # Survival time of the reachability cluster
>>> cluster.lifetime()
(0.0, 1028.9972186553928)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

reticula-0.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (24.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reticula-0.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (24.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reticula-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (24.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

reticula-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (24.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

reticula-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (24.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file reticula-0.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reticula-0.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c82fac5d51c0c08369475695a58ad375072a6adf18fad550e404312fa1c64f91
MD5 7781c06853549428fff2e08658193fef
BLAKE2b-256 de37a54e933d3d6d030354eb10cfd0b5305f8f476e5e7a67e78e180e2697950f

See more details on using hashes here.

File details

Details for the file reticula-0.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reticula-0.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6520c1c431e8bc5a44fb9cf6445449ac50f32ac48b397ac3283c74e58c3e38a
MD5 f58283e9c664c4f841ee4b011e081522
BLAKE2b-256 7e4c28ef779512ae21a792ffaeaba57bfc430efdd0923beb6f4d02581dbb701d

See more details on using hashes here.

File details

Details for the file reticula-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reticula-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1abd09c0d511d5b4d9165ccfd601bf8afaa8e4af4900c533d664132f4fdf4d69
MD5 8bc7fc7359b4a33e80f18912deb70f5e
BLAKE2b-256 58d59eb81918bc5a332f675d88f5ab51cf32811c776849c96b3c3c9d455ca762

See more details on using hashes here.

File details

Details for the file reticula-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reticula-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db19e59f42503d19aecd4d2c4285849e352af3e88ab32799955b5dfab6b763d5
MD5 21dd24fc9fb0016ffe2d2387d9023915
BLAKE2b-256 7426596761aea0f752604a2ad2c2828ee5886afcd85c61d216036a0567a400d7

See more details on using hashes here.

File details

Details for the file reticula-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reticula-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18e49f456ea6e11e4182ff7b177ea9818d3e3f5ea619c7222384f3ea83c26257
MD5 b97207dde1f4188de46c2c1b2595737d
BLAKE2b-256 77f37be45e8f0c5754ca7fd783827bbcb8a56dd08fe64969f42d24293d08a9f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page