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)
예제 #3
0
    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