コード例 #1
0
def main():
    csvfile = open(result_file, 'a')
    result_writer = csv.writer(csvfile, delimiter=',',
                       quotechar='|', quoting=csv.QUOTE_MINIMAL)

    #net_name = network_name[int(sys.argv[1])]
    for net_name in network_name:
        print("Net:", net_name)
        net = nx.read_edgelist(network_path + net_name + ".txt",
                           create_using=nx.Graph(),
                           nodetype=int)

        origin_edge_count = net.number_of_edges()

        for epsilon in [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1]:
            delta = epsilon
            result_writer.writerow([time.time(),
                                    "edge_privacy",
                                    "origin",
                                    net_name,
                                    origin_edge_count,
                                    origin_edge_count,
                                    origin_edge_count,
                                    epsilon,
                                    delta])

            for _ in range(int(sys.argv[1])):
                edge_sampled_net = basic_edge.private_basic_edge_sample(net,
                                                                        epsilon,
                                                                        delta)
                result_writer.writerow([time.time(),
                                        "edge_privacy",
                                        "basic_edge",
                                        net_name,
                                        edge_sampled_net.number_of_edges(),
                                        edge_sampled_net.number_of_edges() / min(1 - math.exp(-epsilon), delta, 1.0),
                                        origin_edge_count,
                                        epsilon,
                                        delta])

                color_sampled_net = color.private_color_sample(net,
                                                               epsilon,
                                                               delta)

                result_writer.writerow([time.time(),
                                        "edge_privacy",
                                        "color",
                                        net_name,
                                        color_sampled_net.number_of_edges(),
                                        color_sampled_net.number_of_edges() / min(1.0, delta),
                                        origin_edge_count,
                                        epsilon,
                                        delta])

                csvfile.flush()
コード例 #2
0
def main():
    csvfile = open(result_file, 'a')
    result_writer = csv.writer(csvfile,
                               delimiter=',',
                               quotechar='|',
                               quoting=csv.QUOTE_MINIMAL)

    #net_name = network_name[int(sys.argv[1])]
    for net_name in network_name:
        print("Net:", net_name)
        net = nx.read_edgelist(network_path + net_name + ".txt",
                               create_using=nx.Graph(),
                               nodetype=int)

        for epsilon in [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1]:
            delta = epsilon

            original_dist = compute_degree_distribution(net, limit=LIMIT)

            for i in range(LIMIT + 1):
                result_writer.writerow([
                    time.time(), "edge_privacy", "origin", net_name, i,
                    original_dist[i], epsilon, delta
                ])

            edge_sampled_dists = [None] * int(sys.argv[1])
            color_sampled_dists = [None] * int(sys.argv[1])
            for i in range(int(sys.argv[1])):
                edge_sampled_dists[i] = compute_degree_distribution(
                    basic_edge.private_basic_edge_sample(net, epsilon, delta),
                    limit=LIMIT)

                color_sampled_dists[i] = compute_degree_distribution(
                    color.private_color_sample(net, epsilon, delta),
                    limit=LIMIT)

            average_edge_dist = np.mean(
                np.array(edge_sampled_dists),
                axis=0)  # / min(1 - math.exp(-epsilon), delta, 1.0)
            average_color_dist = np.mean(np.array(color_sampled_dists),
                                         axis=0)  # / min(1.0, delta)

            for i in range(LIMIT + 1):
                result_writer.writerow([
                    time.time(), "edge_privacy", "basic_edge", net_name, i,
                    average_edge_dist[i], epsilon, delta
                ])

                result_writer.writerow([
                    time.time(), "edge_privacy", "color", net_name, i,
                    average_color_dist[i], epsilon, delta
                ])

            csvfile.flush()
コード例 #3
0
def main():
    csvfile = open(result_file, 'a')
    result_writer = csv.writer(csvfile,
                               delimiter=',',
                               quotechar='|',
                               quoting=csv.QUOTE_MINIMAL)

    true_k_core = {}
    for net_name in network_name:
        net = nx.read_edgelist(network_path + net_name + ".txt",
                               create_using=nx.Graph(),
                               nodetype=int)
        net.remove_edges_from(nx.selfloop_edges(net))
        for k in [512, 256, 128, 64, 32, 16, 8, 4]:
            true_k_core[(net_name, k)] = nx_core.k_core(net, k)
            # result_writer.writerow([time.time(),
            #                         "node_privacy",
            #                         "true",
            #                         "k_core",
            #                         net_name,
            #                         0.5,
            #                         0.5,
            #                         k,  # reserve for index
            #                         true_k_core
            # ])

    for i in range(int(sys.argv[1])):
        print("Repeat:", i)
        for net_name in network_name:
            print("Net:", net_name)
            net = nx.read_edgelist(network_path + net_name + ".txt",
                                   create_using=nx.Graph(),
                                   nodetype=int)

            net.remove_edges_from(nx.selfloop_edges(net))
            for k in [512, 256, 128, 64, 32, 16, 8, 4]:
                for epsilon in [0.5, 0.1, 0.05]:
                    delta = epsilon
                    basic_node_k_core = nx_core.k_core(
                        basic_node.private_basic_node_sample(
                            net, epsilon, delta),
                        k * min(1 - math.exp(-epsilon), delta, 1.0)**2)
                    result_writer.writerow([
                        time.time(),
                        "node_privacy",
                        "basic_node",
                        "k_core",
                        net_name,
                        epsilon,
                        delta,
                        k,  #reserve for index
                        jaccard(true_k_core[(net_name, k)], basic_node_k_core)
                    ])

                    basic_edge_k_core = nx_core.k_core(
                        basic_edge.private_basic_edge_sample(
                            net, epsilon, delta),
                        k * min(1 - math.exp(-epsilon), delta, 1.0))
                    result_writer.writerow([
                        time.time(), "edge_privacy", "basic_edge", "k_core",
                        net_name, epsilon, delta, k,
                        jaccard(true_k_core[(net_name, k)], basic_edge_k_core)
                    ])

                    color_k_core = nx_core.k_core(
                        color.private_color_sample(net, epsilon, delta),
                        k * min(1.0, delta))
                    result_writer.writerow([
                        time.time(), "edge_privacy", "color", "k_core",
                        net_name, epsilon, delta, k,
                        jaccard(true_k_core[(net_name, k)], color_k_core)
                    ])

                    csvfile.flush()

                blocki_edge_100_k_core = nx_core.k_core(
                    blocki_edge.blocki_edge_trim(net, 100), k)
                for epsilon in [0.5, 0.1, 0.05]:
                    result_writer.writerow([
                        time.time(), "edge_privacy", "blocki_edge_100",
                        "k_core", net_name, epsilon, epsilon, k,
                        jaccard(true_k_core[(net_name, k)],
                                blocki_edge_100_k_core)
                    ])

                blocki_edge_1000_k_core = nx_core.k_core(
                    blocki_edge.blocki_edge_trim(net, 1000), k)
                for epsilon in [0.5, 0.1, 0.05]:
                    result_writer.writerow([
                        time.time(), "edge_privacy", "blocki_edge_1000",
                        "k_core", net_name, epsilon, epsilon, k,
                        jaccard(true_k_core[(net_name, k)],
                                blocki_edge_1000_k_core)
                    ])

                ding_26_k_core = nx_core.k_core(ding.ding_trim(net, 100), k)
                for epsilon in [0.5, 0.1, 0.05]:
                    result_writer.writerow([
                        time.time(), "edge_privacy", "ding_100", "k_core",
                        net_name, epsilon, epsilon, k,
                        jaccard(true_k_core[(net_name, k)], ding_26_k_core)
                    ])

                csvfile.flush()