def plot_eigpro_res(res1, res2, idx=None, show_flag=False, save_flag=False): # res1 = {1: ((0.03345335, 0.6225), (0.0323456, 0.6305732484076433), 0.019212722778320312), 10: ((0.02896553, 0.6645), (0.027736971, 0.6751592356687898), 0.15459346771240234), 16: ((0.027915038, 0.6805), (0.027045922, 0.6751592356687898), 0.21888422966003418), 25: ((0.027005592, 0.7005), (0.026337573, 0.6836518046709129), 0.3047153949737549), 50: ((0.02561936, 0.701), (0.024892189, 0.7091295116772823), 0.5407752990722656)} # res2 = {1: ((0.03954246, 0.5725), (0.039126936, 0.5859872611464968), 0.010367870330810547), 10: ((0.03561854, 0.6245), (0.03524615, 0.6326963906581741), 0.09223318099975586), 16: ((0.03479484, 0.639), (0.034788787, 0.6369426751592356), 0.1485884189605713), 25: ((0.03404998, 0.6535), (0.03433756, 0.6369426751592356), 0.22641897201538086), 50: ((0.03294293, 0.662), (0.033193808, 0.6645435244161358), 0.4424324035644531)} x, y = [], [] for k, v in res1.items(): x.append(k) y.append(v[1][1]) print(x, y) plt.scatter(x, y, c='b', marker='o', label='no permute') x, y = [], [] for k, v in res2.items(): x.append(k) y.append(v[1][1]) print(x, y) plt.scatter(x, y, c='r', label='permute') plt.legend() plt.title(f'perm vs. no permutation for idx {idx}') if show_flag: plt.show() if save_flag: dir = osp.join(osp.dirname(osp.realpath(__file__)), 'Fig', '') make_dir(dir) file = str(idx) + '.png' print(dir + file) plt.savefig(dir + file)
def load_graph(graph, debug=False, single_graph_flag=True): # exptect label to be numpy.ndarry of shape (n,). However protein_data is different so have to handle it differently """ :param graph: str: :param debug: :param single_graph_flag: :return: graphs and lables """ print('Loading graphs...') assert type(graph) == str dir = os.path.join('/home/cai.507/Documents/DeepLearning/deep-persistence', graph, 'LearningFiltration') make_dir(dir) inputFile = os.path.join(dir, 'graph+label') if os.path.isfile(inputFile): graphs, labels = load_existing_graph(graph, inputFile) return graphs, labels print('Start Loading from dataset') file = os.path.join( "/Users/admin/Documents/osu/Research/DeepGraphKernels/datasets/dataset", graph + ".graph") if not os.path.isfile(file): file = os.path.join( '/home/cai.507/Documents/DeepLearning/deep-persistence/dataset/datasets', graph + '.graph') with open(file, 'rb') as f: data = pickle.load(f, encoding='latin1') graphs = data['graph'] if graph == 'ptc': graphs[151] = graphs[152] labels = data['labels'] if debug: print((graph), end=' ') print((type(labels), )) print((np.shape(labels))) if graph == 'protein_data': labels = labels.reshape(1113, 1) labels = np.array([-1] * 663 + [1] * 450) elif graph == ('nci1' or 'nci109'): labels = np.sign(labels - 0.5) print('Finish Loading graphs') outputFile = dir + '/graph+label' fw = open(outputFile, 'wb') dataset = (graphs, labels) pickle.dump(dataset, fw) fw.close() print('Finish Saving data for future use') return graphs, labels
def ioobj(graphs, args, save_flag=True): # usually a list of graphs, dgms direct = '/home/cai.507/Documents/DeepLearning/deep-persistence/pythoncode/permutation/experiments/' \ + args.graph + '/' + args.kerneltype + '/' make_dir(direct) if save_flag: pickle_out = open(direct + 'graph.pickle', "wb") pickle.dump(graphs, pickle_out) pickle_out.close() else: print('load existing graphs...') pickle_in = open(direct + 'graph.pickle', "rb") return pickle.load(pickle_in)
def dgmsio(obj, args, method='deg', save_flag=True): direct = '/home/cai.507/Documents/DeepLearning/deep-persistence/pythoncode/permutation/experiments/' \ + args.graph + '/' + args.kerneltype + '/' + method + '/' filename = 'dgms_' + method + '.pickle' make_dir(direct) if save_flag: pickle_out = open(direct + filename, "wb") pickle.dump(obj, pickle_out) pickle_out.close() else: print('load existing dgms...') pickle_in = open(direct + filename, "rb") return pickle.load(pickle_in)
def savedgm(res, f): direct = DGM_DIRECT direct = os.path.join(direct, f) make_dir(direct) with open(os.path.join(direct, 'm' + f + '.pkl'), 'wb') as fp: pickle.dump(res, fp)