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.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reticula-0.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reticula-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

reticula-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

reticula-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

reticula-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

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

File metadata

File hashes

Hashes for reticula-0.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba7bd1c4cfce6a3497e1fc997b1758742c6a7911b785aa82b2e8b6bdf4439542
MD5 17bbe0f658d94efef6af6a9996d0bdc1
BLAKE2b-256 cf8e02616c69468878bfdc62d2c7180075b8aadd8c84b25358e23bb63bd07c6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reticula-0.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82bce4a21d95479196463b886e0154f730d0d762e976c7a5b261a0e5fe1e5ae4
MD5 8f0b76dcf88436d376b3c511c516f15a
BLAKE2b-256 e0b175a79ebc0ab22ac6d9f3396ce584ea46c1ed181e04c1138c8712970c2fcf

See more details on using hashes here.

File details

Details for the file reticula-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reticula-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d73d15dce346c658252601248c609c3be0dd3a59a2034d5ae069bcf32aa78240
MD5 6808d87399a869aacac35fa3b689fe7c
BLAKE2b-256 2f33039a9f5e6ab79f95e23f59a4d6df7163c8638e89723516ef4182d92b3e13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reticula-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 753839aac97fb75665840898149d407f231f2a4c431ccba69cb7a8aa55ba973d
MD5 7706db39706416ea5acbb75eec6bf9e1
BLAKE2b-256 de998224d7b4b2a5e641c9e3740076a9ab13755f40c0cbc604d79c1eecea263e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reticula-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0206fb1fd4638891fd6377649bdea64a4e1d06b40a4ced549151c19007952ff
MD5 6f19e87ac621ca9c4200783298a310e3
BLAKE2b-256 f82b83adf0bb63d0802ab1a6d7d9c7be58d078ffc6cb8f2a4759190605d24653

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reticula-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fbc2c2068df83e421d64524523143367f356fbe49d6716d28729ee6529cc0ad
MD5 40e375e4bab88f8965e3ed2ed61ac234
BLAKE2b-256 b32a6eef3288058a50597850e982ba766e1c7e57524e8ad831af1a72964e8b2b

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