Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/benmaier/biasedrandomwalks

Provides classes around biased random walks on networks.
https://github.com/benmaier/biasedrandomwalks

biased-random-walk graphs networks random-walk

Last synced: 10 days ago
JSON representation

Provides classes around biased random walks on networks.

Awesome Lists containing this project

README

        

# BiasedRandomWalks

Provides classes around biased random walks on networks.

## Install

$ git clone [email protected]:benmaier/BiasedRandomWalks.git
$ pip install ./BiasedRandomWalks

## Examples

```python
import numpy as np
import matplotlib.pyplot as pl
import networkx as nx

from BiasedRandomWalks import BiasedRandomWalk

# Create a test Graph with weighted edges where weights are distances
G = nx.Graph()
N = 4
G.add_nodes_from(range(N))
G.add_edge(0,1,weight=1)
G.add_edge(0,2,weight=1)
G.add_edge(1,2,weight=1)
G.add_edge(1,3,weight=0.1)
G.add_edge(2,3,weight=0.2)

# define sink nodes
sink_nodes = [2,]

# define bias
gamma = 1

# initial distribution on transient
p0 = np.array([1,0,0])

# initial distribution on all
p0_all = np.array([1,0,0,0])

# initial base class (choose 'exponential' or 'scale free')
RW = BiasedRandomWalk(G, gamma, sink_nodes, bias_kind = 'exponential')

fig, ax = pl.subplots(2,2,figsize=(9,7))

# integrate up to this time step
tmax = 10

# ========== prob density on sinks =========
t, rho = RW.get_amount_of_walkers_arriving_at_sink_nodes(p0,tmax)

for i_s, s in enumerate(sink_nodes):
ax[0,0].plot(t, rho[:,i_s], label='sink node '+ str(s))

ax[0,0].legend()
ax[0,0].set_xlabel('time')
ax[0,0].set_ylabel('amount of walkers arriving')

# ========== cdf on sinks =========
t, rho = RW.get_amount_of_walkers_arrived_at_sink_nodes(p0,tmax)

for i_s, s in enumerate(sink_nodes):
ax[0,1].plot(t, rho[:,i_s], label='sink node '+ str(s))

ax[0,1].legend()
ax[0,1].set_xlabel('time')
ax[0,1].set_ylabel('total amount of walkers arrived')

# ========== prob density on all =========
t, rho = RW.get_amount_of_walkers_on_nodes(p0_all,tmax)

for s in G.nodes():
ax[1,0].plot(t, rho[:,s], label='node '+ str(s))

ax[1,0].legend()
ax[1,0].set_xlabel('time')
ax[1,0].set_ylabel('amount of walkers on each node')

pl.show()
```