def plot(self, c, X, probas, interception_func=None, setting_kwargs={}, uninfected_small=False, lighten_obs=True, lighten_prediction=False, highlight_missing_infection=False, color_mapper=None, **kwargs): setting = heatmap_plot_setting(self.g, c, X, probas, color_mapper=color_mapper, **setting_kwargs) if uninfected_small: uninfected = set(np.arange(len(c))) - set(infected_nodes(c)) # make terminals larger setting['node_size_info'][tuple( X)] = setting['node_size_info'][tuple(X)] * 1.5 # make uninfected smaller setting['node_size_info'][tuple( uninfected)] = setting['node_size_info']['default'] / 1.5 if lighten_obs: setting['node_color_info'][X] = 0 if lighten_prediction: depth = setting['node_color_info'] source = cascade_source(c) depth[depth == 1] = 0.5 depth[source] = 1 if highlight_missing_infection: missing = set(infected_nodes(c)) - set(X) - set( (probas == 1).nonzero()[0]) if interception_func is not None: interception_func(setting) visualize(self.g, self.pos, **setting, **kwargs)
def default_plot_setting(g, c, X, size_multiplier=1.0, edge_width_multiplier=1.0, deemphasize_hidden_infs=False): source = cascade_source(c) inf_nodes = infected_nodes(c) hidden_infs = set(inf_nodes) - set(X) node_color_info = OrderedDict() node_color_info[tuple(X)] = COLOR_BLUE if not deemphasize_hidden_infs: # print(COLOR_DARK_RED) node_color_info[tuple(hidden_infs)] = COLOR_YELLOW node_color_info[(source, )] = COLOR_GREEN node_color_info['default'] = COLOR_WHITE node_shape_info = OrderedDict() node_shape_info[tuple(X)] = SHAPE_SQUARE node_shape_info['default'] = SHAPE_CIRCLE node_shape_info[(source, )] = SHAPE_PENTAGON node_size_info = OrderedDict() node_size_info[tuple(X)] = 15 * size_multiplier node_size_info[(source, )] = 20 * size_multiplier if not deemphasize_hidden_infs: node_size_info[tuple(hidden_infs)] = 12.5 * size_multiplier node_size_info['default'] = 6 * size_multiplier node_text_info = {'default': ''} edge_color_info = {'default': 'white'} edge_pen_width_info = {'default': 2.0 * edge_width_multiplier} return { 'node_color_info': node_color_info, 'node_shape_info': node_shape_info, 'node_size_info': node_size_info, 'edge_color_info': edge_color_info, 'edge_pen_width_info': edge_pen_width_info, 'node_text_info': node_text_info }
from cascade_generator import observe_cascade from helpers import cascade_source from glob import glob graph = 'grqc' from_obs = 0.1 model = 'si' from_dir = 'cascade-weighted/{}-m{}-s0.02-o{}/'.format(graph, model, from_obs) target_obs_list = [0.2, 0.3, 0.4, 0.5] for target_obs in target_obs_list: print('target_obs', target_obs) to_dir = 'cascade-weighted/{}-m{}-s0.02-o{}/'.format( graph, model, target_obs) if not os.path.exists(to_dir): os.makedirs(to_dir) for input_path in glob(from_dir + '*'): # print('input_path', input_path) id_ = os.path.basename(input_path) _, c = pkl.load(open(input_path, 'rb'))[:2] s = cascade_source(c) obs = observe_cascade(c, s, target_obs, 'uniform') output_path = to_dir + id_ # print('output_path', output_path) pkl.dump((obs, c, None), open(output_path, 'wb'))