def testGetAllSimilarNodes(self):
     dummy_sim_matrix_1 = np.array([
         [0., 1., 1., 1.],
         [0., 0., 1., 1.],
         [0., 0., 0., 1.],
         [0., 0., 0., 0.]])
     dummy_sim_matrix_2 = np.array([
         [0., 1., 1., 1.],
         [0., 0., 0., 1.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]])
     dummy_sim_matrix_3 = np.array([
         [0., 1., 0., 0.],
         [0., 0., 1., 0.],
         [0., 0., 0., 1.],
         [0., 0., 0., 0.]])
     cols_nodes_map = {0: "a", 1: "b", 2: "c", 3: "d"}
     
     # TODO: is this way of similar nodes extraction good?
     similar_nodes_1_exp = [["a", "b", "c", "d"], ["b", "c", "d"], ["c", "d"]]
     similar_nodes_2_exp = [["a", "b", "c", "d"], ["b", "d"]]
     similar_nodes_3_exp = [["a", "b"], ["b", "c"], ["c", "d"]]
     
     similar_nodes_1 = similar_nodes_mining.get_all_similar_nodes(dummy_sim_matrix_1, cols_nodes_map)
     similar_nodes_2 = similar_nodes_mining.get_all_similar_nodes(dummy_sim_matrix_2, cols_nodes_map)
     similar_nodes_3 = similar_nodes_mining.get_all_similar_nodes(dummy_sim_matrix_3, cols_nodes_map)
     self.assertEqual(similar_nodes_1_exp, similar_nodes_1, "Wrong similar nodes were extracted.")
     self.assertEqual(similar_nodes_2_exp, similar_nodes_2, "Wrong similar nodes were extracted.")
     self.assertEqual(similar_nodes_3_exp, similar_nodes_3, "Wrong similar nodes were extracted.")
    def testGetAllSimilarNodes(self):
        dummy_sim_matrix_1 = np.array([[0., 1., 1., 1.], [0., 0., 1., 1.],
                                       [0., 0., 0., 1.], [0., 0., 0., 0.]])
        dummy_sim_matrix_2 = np.array([[0., 1., 1., 1.], [0., 0., 0., 1.],
                                       [0., 0., 0., 0.], [0., 0., 0., 0.]])
        dummy_sim_matrix_3 = np.array([[0., 1., 0., 0.], [0., 0., 1., 0.],
                                       [0., 0., 0., 1.], [0., 0., 0., 0.]])
        cols_nodes_map = {0: "a", 1: "b", 2: "c", 3: "d"}

        # TODO: is this way of similar nodes extraction good?
        similar_nodes_1_exp = [["a", "b", "c", "d"], ["b", "c", "d"],
                               ["c", "d"]]
        similar_nodes_2_exp = [["a", "b", "c", "d"], ["b", "d"]]
        similar_nodes_3_exp = [["a", "b"], ["b", "c"], ["c", "d"]]

        similar_nodes_1 = similar_nodes_mining.get_all_similar_nodes(
            dummy_sim_matrix_1, cols_nodes_map)
        similar_nodes_2 = similar_nodes_mining.get_all_similar_nodes(
            dummy_sim_matrix_2, cols_nodes_map)
        similar_nodes_3 = similar_nodes_mining.get_all_similar_nodes(
            dummy_sim_matrix_3, cols_nodes_map)
        self.assertEqual(similar_nodes_1_exp, similar_nodes_1,
                         "Wrong similar nodes were extracted.")
        self.assertEqual(similar_nodes_2_exp, similar_nodes_2,
                         "Wrong similar nodes were extracted.")
        self.assertEqual(similar_nodes_3_exp, similar_nodes_3,
                         "Wrong similar nodes were extracted.")

if __name__ == '__main__':
    ch_matrix, hypergraph, index_node_map, node_id_map = calculate_ch_matrix()
    #     ch_matrix, hypergraph, index_node_map, node_id_map = load_ch_matrix()

    sketch_matrix = calculate_sketch_matrix(ch_matrix, hypergraph)
    #     sketch_matrix, index_node_map, node_id_map = load_sketch_matrix()

    print "Building similarity matrix started at", time.strftime(time_format)
    start = time.time()
    sim_mat = similar_nodes_mining.get_node_similarity_matrix(sketch_matrix)
    print "Building similarity matrix took", time.time() - start, "s"
    print "-----------------------------------------"

    print "Extracting similar nodes started at", time.strftime(time_format)
    start = time.time()
    similar_nodes = similar_nodes_mining.get_all_similar_nodes(
        sim_mat, index_node_map)
    print "Extracting similar nodes took", time.time() - start, "s"
    print "-----------------------------------------"

    print "Saving similar nodes started at", time.strftime(time_format)
    start = time.time()
    inout.save_to_file(similar_nodes,
                       path + "{0}_similar_nodes".format(dataset))
    print "Saving similar nodes took", time.time() - start, "s"
    print "-----------------------------------------"

    print "DONE!"
    print "-----------------------------------------"
    
    return sketch_matrix, index_node_map, node_id_map

if __name__ == '__main__':
    ch_matrix, hypergraph, index_node_map, node_id_map = calculate_ch_matrix()
#     ch_matrix, hypergraph, index_node_map, node_id_map = load_ch_matrix()
    
    sketch_matrix = calculate_sketch_matrix(ch_matrix, hypergraph)
#     sketch_matrix, index_node_map, node_id_map = load_sketch_matrix()
    
    print "Building similarity matrix started at", time.strftime(time_format)
    start = time.time()
    sim_mat = similar_nodes_mining.get_node_similarity_matrix(sketch_matrix)
    print "Building similarity matrix took", time.time() - start, "s"
    print "-----------------------------------------"
    
    print "Extracting similar nodes started at", time.strftime(time_format)
    start = time.time()
    similar_nodes = similar_nodes_mining.get_all_similar_nodes(sim_mat, index_node_map)
    print "Extracting similar nodes took", time.time() - start, "s"
    print "-----------------------------------------"
    
    print "Saving similar nodes started at", time.strftime(time_format)
    start = time.time()
    inout.save_to_file(similar_nodes, path + "{0}_similar_nodes".format(dataset))
    print "Saving similar nodes took", time.time() - start, "s"
    print "-----------------------------------------"
    
    print "DONE!"