In [222]:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#from scipy import stats as st
import time
import glob
import ntpath

In [223]:
sys.path.append('/work/eng/eliavb/all_distance_sketch/src/proto/')

In [224]:
import cover_pb2
import ranking_pb2

In [225]:
def get_cover_gpb(cover_gpb):
    cover = []
    for seed_info in cover_gpb.seeds:
        cover.append((seed_info.seed_node_id, len(seed_info.node_ids)))
    return cover

In [226]:
def get_cover(file_name):
    data = open(file_name, "rb").read()
    cover_gpb = cover_pb2.CoverGpb()
    cover_gpb.ParseFromString(data)
    return get_cover_gpb(cover_gpb)

def get_cum_cover(file_name):
    cover = get_cover(file_name)
    cover_ranks = [cover_info[1] for cover_info in cover]
    cover_ranks = sorted(cover_ranks, reverse=True)
    cum_sum = np.cumsum(cover_ranks)
    total = cum_sum[-1]
    cum_sum_relative = [c / float(total) for c in cum_sum]
    return cum_sum_relative

In [227]:
def get_K(file_name):
    c_cum = get_cum_cover(file_name)
    s_ = c_.split("_")
    T = s_[-3]
    K = s_[-2]
    return int(K)

In [228]:
def plot_covers(glob_pattern, exact):
    covers_ = glob.glob(glob_pattern)
    max_len = 0
    plt.plot(get_cum_cover(exact), label="exact")
    for c_ in covers_:
        c_cum = get_cum_cover(c_)
        s_ = c_.split("_")
        T = s_[-3]
        K = s_[-2]
        plt.plot(c_cum, label="T="+str(T) + " K="+K)
        max_len = max(max_len, len(c_cum))
    plt.xscale("log")
    plt.legend()
    fig = plt.gcf()
    fig.set_size_inches(20.5, 10.5)

In [229]:
plot_covers("/work/eng/eliavb/experiments/youtube/cover/youtube_1000_100_*", "/work/eng/eliavb/experiments/youtube/cover/youtube_1000")



In [219]:
plot_covers("/work/eng/eliavb/experiments/youtube/cover/youtube_100_100_*", "/work/eng/eliavb/experiments/youtube/cover/youtube_100")



In [220]:
plot_covers("/work/eng/eliavb/experiments/youtube/cover/youtube_100_100_*", "/work/eng/eliavb/experiments/youtube/cover/youtube_100")
plot_covers("/work/eng/eliavb/experiments/youtube/cover/youtube_1000_100_*", "/work/eng/eliavb/experiments/youtube/cover/youtube_1000")



In [221]:
plot_covers("/work/eng/eliavb/experiments/youtube/cover/youtube_10000_100_*", "/work/eng/eliavb/experiments/youtube/cover/youtube_10000")



In [ ]: