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'))