N = 100 P = [0.5] rewiring_rate = [(0.0, 1.0)] t_run_total = 500.0 tmax = 1000.0 seed = 7925 infection_rate = 1.0 recovery_rate = 0.1 E = flockwork_P_equilibrium_configuration(N, P[0]) fwP_ec = tc.flockwork_P_varying_rates(E, N, P, t_run_total, rewiring_rate, tmax, seed=seed) fwP_el = tc.convert(fwP_ec) start = time.time() SIS = tc.node_based_SIS(N, t_run_total * 2, infection_rate, recovery_rate, N // 2, seed=seed, verbose=True) tc.gillespie_node_based_SIS(fwP_ec, SIS, verbose=True) end = time.time()
import time import numpy as np # ======== get original network ============= socio = tc.load_json_taco("~/.tacoma/dtu_1_weeks.taco") socio_binned = tc.bin(socio, dt=300) socio_result = tc.measure_group_sizes_and_durations(socio) # ============== generate surrogate network from flockwork_P model ============== fwP_params = estimate_flockwork_P_args( socio_binned, dt=3600., aggregated_network=socio_result.aggregated_network) fwP = tc.flockwork_P_varying_rates_neighbor_affinity(**fwP_params) fwP_params = estimate_flockwork_P_args(socio_binned, dt=3600.) fwP = tc.flockwork_P_varying_rates(**fwP_params) fwP_binned = tc.bin(fwP, dt=300) N = fwP.N R0 = 2.0 rho = 1.0 / (3 * 24 * 3600.) dt = 3600. t_simulation = 4 * fwP.tmax t_sample = np.arange(int(t_simulation / dt) + 1, dtype=float) * dt N_meas = 30 fig, ax = pl.subplots(1, 3, figsize=(12, 4))
import scipy.sparse as sprs import time dtu_week = tc.dtu_week() E = [] P = dtu_week.P gamma = dtu_week.gamma N = dtu_week.N tmax = dtu_week.tmax t_run_total = tmax seed = 45 edge_changes = tc.flockwork_P_varying_rates(E, N, P, t_run_total, gamma, tmax, seed=seed) print("measuring groups and durations, ignore histograms differences =", True) start = time.time() result = tc.measure_group_sizes_and_durations_for_edge_changes( edge_changes, ignore_size_histogram_differences=True) end = time.time() print("took", end - start, "seconds") new_fig, axes = pl.subplots(2, 2) axes = axes.flatten() for group_size in range(1, 10):
# plot properties result = tc.measure_group_sizes_and_durations(zsbb_binned) #print result.group_durations[4] fig, ax, data = temporal_network_group_analysis(result, max_group=5) fig.tight_layout() traj = tc.get_edge_trajectories(zsbb_binned) draw_edges(traj.trajectories, ax=ax[3]) # ============== generate surrogate network from flockwork_P model ============== #fwP_params = estimate_flockwork_P_args(socio_binned,dt=1800.,aggregated_network=socio_result.aggregated_network) fwP_params = estimate_flockwork_P_args(socio_binned, dt=3600., k_over_k_real_scaling=1.2) #tc.write_fwP_args(fwP_params,"./fwP_args_dtu_1_weeks.json") #fwP = tc.flockwork_P_varying_rates_neighbor_affinity(**fwP_params) fwP = tc.flockwork_P_varying_rates(seed=45, **fwP_params) fwP_binned = tc.bin(fwP, dt=300) result = tc.measure_group_sizes_and_durations(fwP_binned) fig, ax, data = temporal_network_group_analysis(result, time_unit='h', time_normalization_factor=1 / 3600.) fig.tight_layout() traj = tc.get_edge_trajectories(fwP_binned) draw_edges(traj.trajectories, ax=ax[3], time_unit='h', time_normalization_factor=1 / 3600.) # ============== generate surrogate network from dynamic RGG model ==============
import matplotlib.pyplot as pl from itertools import izip N = 100 dtu_week = tc.dtu_week() E = [] P = dtu_week.P gamma = dtu_week.gamma tmax = dtu_week.tmax t_run_total = tmax seed = 45 plot_size = False print "simulating" result = tc.flockwork_P_varying_rates(E,N,P,t_run_total,gamma,tmax,seed=seed) print "done" this = tc.edge_changes() this.t = result.t this.N = result.N this.edges_initial = result.edges_initial this.t0 = result.t0 this.tmax = result.tmax this.edges_in = result.edges_in this.edges_out = result.edges_out print len(this.t), len(this.edges_in) print "first time point: ", this.t[0] second_result = tc.measure_group_sizes_and_durations_for_edge_changes(
n_k_meas = 6 for iscl, scaling in enumerate([k_scaling, 1.0]): these_ks = [] for meas in range(n_k_meas): args = estimate_flockwork_P_args( orig, dt=dt_for_inference, k_over_k_real_scaling=scaling, ensure_empty_network=True, adjust_last_bin_if_dt_does_not_fit=True) fwP = tc.flockwork_P_varying_rates(**args) fwP_binned = tc.bin(fwP, dt_binning) t_fw, k_fw = tc.mean_degree(fwP_binned) these_ks.append(k_fw) print("scaling =", scaling, " ; measurement =", meas) ndx = np.where(np.logical_and(k_orig > 0.0, k_fw > 0.0)) print("k_fw / k_orig = ", np.mean(k_fw[ndx] / k_orig[ndx])) these_ks = np.array(these_ks).mean(axis=0) ax[iscl].plot(t_fw, these_ks, '-', c=tc.color_sequence[iscl + 1],
import tacoma as tc ec = tc.flockwork_P_varying_rates([], 10, [0.4, 0.8], 600, [(0, 1.), (300, 2.)], 600, seed=25456) print(ec.edges_out[:5]) print(ec.edges_in[:5]) import numpy as np ec = tc.flockwork_P_varying_rates_for_each_node( [], 10, [np.random.random(10).tolist(), np.random.random(10).tolist()], 600, [(0, np.random.random(10).tolist()), (300, np.random.random(10).tolist())], 600, seed=25456) print(ec.edges_out[:5]) print(ec.edges_in[:5])
return kwargs if __name__ == "__main__": import tacoma as tc import matplotlib.pyplot as pl from tacoma.analysis import temporal_network_group_analysis # THESE TESTS ARE DEPRECATED test = tc.dtu_week() rewiring_rate = test.gamma P = test.P fw = tc.flockwork_P_varying_rates([],100,P,24*3600,rewiring_rate,tmax=24*3600*7) fw_binned = tc.sample(fw,dt=300) fw_binned_result = tc.measure_group_sizes_and_durations(fw_binned) kwargs = get_ZSBB_parameters(fw_binned,fw_binned_result,fit_discrete=True,dt=300.) print("lambda =", kwargs['lambda']) print("b0 =", kwargs['b0']) print("b1 =", kwargs['b1']) kwargs['t_run_total'] = (len(fw_binned.t) + 1)*kwargs['N'] zsbb = tc.ZSBB_model(**kwargs) zsbb_binned = tc.sample(zsbb,dt=kwargs['N']) zsbb_binned_result = tc.measure_group_sizes_and_durations(zsbb_binned) fig, ax, data = temporal_network_group_analysis(fw_binned_result) temporal_network_group_analysis(zsbb_binned_result,