def _write_c_adj_txt(self): import os directory = self.base_dir + self.expr_dir + SQLDao.ce.properties[ 'matlab_dir'] if not os.path.exists(directory): os.makedirs(directory) import gc gc.collect() f = open(directory + 'adj_content_full', 'w') from ExtractContentEdge import ContentEdgeExtractorBaseRoutine cebr = ContentEdgeExtractorBaseRoutine(self.base_dir, self.expr_dir) data = [] for i in range(len(self.g_sub.vs)): l = [] for j in range(len(self.g_sub.vs)): l.append(0.0) data.append(l) for i, vi in enumerate(self.g_sub.vs): for j in range(i + 1, len(self.g_sub.vs)): vj = self.g_sub.vs[j] h1, h2, h3 = cebr.compute_similarity(vi, vj) sim = self.w1 * h1 + self.w2 * h2 + self.w3 * h3 data[i][j] = sim data[j][i] = sim pass for l in data: f.write(','.join([str(j) for j in l])) f.write('\n') f.close()
def Build_Content_Graph_From_Rg(self, uid): if 'rg' not in dir(self): self._load_user_relation_pickle(uid) self.cg = self.rg.copy() self.cg.delete_edges(self.cg.es) from ExtractContentEdge import ContentEdgeExtractorBaseRoutine cebr = ContentEdgeExtractorBaseRoutine(self.base_dir, self.expr_dir) edges = [] weights = [] for i, vi in enumerate(self.cg.vs): for j in range(i + 1, len(self.cg.vs)): vj = self.cg.vs[j] h1, h2, h3 = cebr.compute_similarity(vi, vj) sim = self.w1 * h1 + self.w2 * h2 + self.w3 * h3 if sim > self.criterion: edges.append((vi.index, vj.index)) weights.append(sim) self.cg.add_edges(edges) self.cg.es['weight'] = weights FSDao.write_pickle(self.base_dir + self.expr_dir, '%s_content.pickle' % uid, self.cg)
def _fulfill_content_graph(self, sim): ''' since the edge of the content graph is not enough we have to add more edge to the graph ''' # delete all edges self.cg.delete_edges(None) # rebuild the edges cebr = ContentEdgeExtractorBaseRoutine(self.base_dir, self.expr_dir) edges = [] weights = [] for i, vi in enumerate(self.cg.vs): for j in range(i + 1, len(self.cg.vs)): vj = self.cg.vs[j] h1, h2, h3 = cebr.compute_similarity(vi, vj) similarity = self.w1 * h1 + self.w2 * h2 + self.w3 * h3 if similarity > sim: edges.append((i, j)) weights.append(similarity) pass self.cg.add_edges(edges) self.cg.es['weight'] = weights