示例#1
0
def simulate_sis_on_network(G):
    # Model Configuration
    cfg = mc.Configuration()
    cfg.add_model_parameter('beta', 0.05)
    cfg.add_model_parameter('lambda', 0.05)
    cfg.add_model_initial_configuration("Infected", random.sample(G.nodes,
                                                                  k=5))

    # Model selection
    model = ep.SISModel(G)

    # Initialize the simulation
    model.set_initial_status(cfg)

    Si, Ii = [], []
    for s in range(SIMULCOUNT):
        # Reset the model
        model.reset()

        # Simulation execution
        iterations = model.iteration_bunch(ITERCOUNT)

        # Collect results for figures
        S, I = [], []
        for i in range(ITERCOUNT):
            iteration = iterations[i]['node_count']
            S.append(iteration[0] / G.number_of_nodes())
            I.append(iteration[1] / G.number_of_nodes())
        Si.append(S)
        Ii.append(I)

    plot_spreading_figures(Si, Ii)
示例#2
0
 def test_sis_model(self):
     for g in get_graph(True):
         model = epd.SISModel(g)
         config = mc.Configuration()
         config.add_model_parameter('beta', 0.5)
         config.add_model_parameter('lambda', 0.2)
         config.add_model_parameter("fraction_infected", 0.1)
         model.set_initial_status(config)
         iterations = model.iteration_bunch(10)
         self.assertEqual(len(iterations), 10)
         iterations = model.iteration_bunch(10, node_status=False)
         self.assertEqual(len(iterations), 10)
示例#3
0
 def test_sis_model(self):
     g = nx.erdos_renyi_graph(1000, 0.1)
     model = epd.SISModel(g)
     config = mc.Configuration()
     config.add_model_parameter('beta', 0.5)
     config.add_model_parameter('lambda', 0.2)
     config.add_model_parameter("percentage_infected", 0.1)
     model.set_initial_status(config)
     iterations = model.iteration_bunch(10)
     self.assertEqual(len(iterations), 10)
     iterations = model.iteration_bunch(10, node_status=False)
     self.assertEqual(len(iterations), 10)
示例#4
0
 def test_initial_infected(self):
     for g in get_graph(True):
         model = epd.SISModel(g)
         config = mc.Configuration()
         config.add_model_parameter('beta', 0.5)
         config.add_model_parameter('lambda', 0.2)
         predefined_infected = [0, 1, 2, 3, 4, 5]
         config.add_model_initial_configuration("Infected", predefined_infected)
         model.set_initial_status(config)
         inft = [k for k, v in future.utils.iteritems(model.status) if v == 1]
         self.assertAlmostEqual(inft, predefined_infected)
         iterations = model.iteration_bunch(10)
         self.assertEqual(len(iterations), 10)
import networkx as nx
import ndlib.models.ModelConfig as mc
import ndlib.models.epidemics as ep
from bokeh.io import output_notebook, show
from ndlib.viz.bokeh.DiffusionTrend import DiffusionTrend

# Network topology
g = nx.erdos_renyi_graph(1000, 0.05)

# Model selection
model = ep.SISModel(g)

# Model Configuration
cfg = mc.Configuration()
cfg.add_model_parameter('beta', 0.01)
cfg.add_model_parameter('proability of return to S stage', 0.005)
cfg.add_model_parameter("initial infected rate", 0.05)
model.set_initial_status(cfg)

# Simulation execution
iterations = model.iteration_bunch(200)
trends = model.build_trends(iterations)

#visualize
viz = DiffusionTrend(model, trends)
p = viz.plot(width=550, height=550)
show(p)
示例#6
0
# plot SIS results
from bokeh.io import show, output_notebook
from ndlib.viz.bokeh.DiffusionTrend import DiffusionTrend

# %%
# to display SIS results plot inline in noteboook
output_notebook()

# %% [markdown]
# ### a) Plot fractions of infected and susceptible nodes in terms of time
# for infection rate $\beta = 0.1$ and recovery rate $\mu = 1$

# %%
# Model selection
model = ep.SISModel(graph)

# Model Configuration
cfg = mc.Configuration()
cfg.add_model_parameter('beta', 0.2)
cfg.add_model_parameter('lambda', 1)
cfg.add_model_parameter("fraction_infected", 0.05)
model.set_initial_status(cfg)

# Simulation execution
iterations = model.iteration_bunch(200)
trends = model.build_trends(iterations)

# plot fractions of infected and susceptible nodes in terms of time
viz = DiffusionTrend(model, trends)
p = viz.plot(width=600, height=600)
示例#7
0
    return cfg


if __name__ == '__main__':
    g = nx.erdos_renyi_graph(1000, 0.1)
    num_iterations = int(input('Number of iterations for all models: '))  # 200

    ###############################################################

    SIModel = ep.SIModel(g.copy())
    SIModel.set_initial_status(get_si_params())
    SI_iterations = SIModel.iteration_bunch(num_iterations)
    SI_trends = SIModel.build_trends(SI_iterations)
    visualize(SIModel, SI_trends, sub_dir='epidemics')

    SISModel = ep.SISModel(g.copy())
    SISModel.set_initial_status(get_sis_params())
    SIS_iterations = SISModel.iteration_bunch(num_iterations)
    SIS_trends = SISModel.build_trends(SIS_iterations)
    visualize(SISModel, SIS_trends, sub_dir='epidemics')

    SEISModel = ep.SEISModel(g.copy())
    SEISModel.set_initial_status(get_seis_params())
    SEIS_iterations = SEISModel.iteration_bunch(num_iterations)
    SEIS_trends = SEISModel.build_trends(SEIS_iterations)
    visualize(SEISModel, SEIS_trends, sub_dir='epidemics')

    SEIRModel = ep.SEIRModel(g.copy())
    SEIRModel.set_initial_status(get_seir_params())
    SEIR_iterations = SEIRModel.iteration_bunch(num_iterations)
    SEIR_trends = SEIRModel.build_trends(SEIR_iterations)