def test_trend_comparison(self): # Network topology g = nx.erdos_renyi_graph(1000, 0.1) # Model selection model = epd.SIRModel(g) # Model Configuration cfg = mc.Configuration() cfg.add_model_parameter('beta', 0.001) cfg.add_model_parameter('gamma', 0.02) cfg.add_model_parameter("percentage_infected", 0.01) model.set_initial_status(cfg) iterations = model.iteration_bunch(200) trends = model.build_trends(iterations) model1 = epd.SIModel(g) cfg = mc.Configuration() cfg.add_model_parameter('beta', 0.001) cfg.add_model_parameter("percentage_infected", 0.01) model1.set_initial_status(cfg) iterations = model1.iteration_bunch(200) trends1 = model1.build_trends(iterations) viz = DiffusionTrendComparison([model, model1], [trends, trends1]) viz.plot("trend_comparison.pdf") os.remove("trend_comparison.pdf")
def test_multiple_si_model(self): for g in get_graph(True): model = epd.SIModel(g) config = mc.Configuration() config.add_model_parameter('beta', 0.01) config.add_model_parameter("fraction_infected", 0.1) model.set_initial_status(config) executions = ut.multi_runs(model, execution_number=10, iteration_number=50) self.assertEqual(len(executions), 10) iterations = model.iteration_bunch(10, node_status=False) self.assertEqual(len(iterations), 10)
def test_si_model(self): for g in get_graph(True): model = epd.SIModel(g) config = mc.Configuration() config.add_model_parameter('beta', 0.5) 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)
def test_si_model(self): g = nx.erdos_renyi_graph(1000, 0.1) model = epd.SIModel(g) config = mc.Configuration() config.add_model_parameter('beta', 0.5) 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)
def test_multiple_si_model(self): g = nx.erdos_renyi_graph(1000, 0.1) model = epd.SIModel(g) config = mc.Configuration() config.add_model_parameter('beta', 0.01) config.add_model_parameter("percentage_infected", 0.1) model.set_initial_status(config) executions = ut.multi_runs(model, execution_number=10, iteration_number=50) self.assertEqual(len(executions), 10) iterations = model.iteration_bunch(10, node_status=False) self.assertEqual(len(iterations), 10)
def count(g, beta=0.2, percentage_infected=0.01, estimations=10): len_nodes = len(g.nodes()) list_of_iter = [] for i in range(estimations): model = ep.SIModel(g) cfg = mc.Configuration() cfg.add_model_parameter('beta', beta) cfg.add_model_parameter("percentage_infected", percentage_infected) model.set_initial_status(cfg) iteration = model.iteration() # initialization while (iteration['node_count'][1] < len_nodes): iteration = model.iteration() list_of_iter.append(iteration['iteration']) return np.mean(list_of_iter)
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.SIModel(g) # Model Configuration cfg = mc.Configuration() cfg.add_model_parameter('beta', 0.01) 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) #visualize viz = DiffusionTrend(model, trends) p = viz.plot(width=550, height=550) show(p)
def get_sznajd_params(): print('\n\tInput SZNAJD model parameters') fraction_infected = float(input('fraction_infected(initial)[0, 1]: ')) cfg = mc.Configuration() cfg.add_model_parameter('fraction_infected', fraction_infected) # 0.1 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)