# Gargantext lib from gargantext.util.db import session from gargantext.util.http import JsonHttpResponse from gargantext.models import Node, Ngram, NodeNgram, NodeNgramNgram #from gargantext.util.toolchain.ngram_coocs import compute_coocs from graphExplorer.cooccurrences import countCooccurrences from graphExplorer.distances import clusterByDistances from graphExplorer.bridgeness import filterByBridgeness # Prelude lib from copy import copy, deepcopy from collections import defaultdict from sqlalchemy.orm import aliased # Math/Graph lib import math import pandas as pd import numpy as np import networkx as nx def get_graph( request=None , corpus=None , field1='ngrams' , field2='ngrams' , mapList_id = None , groupList_id = None , cooc_id=None , type='node_link' , start=None , end=None , threshold=1 , distance='conditional' , isMonopartite=True # By default, we compute terms/terms graph , bridgeness=5 #, size=1000 ): ''' Get_graph : main steps: 1) count Cooccurrences (function countCooccurrences) main parameters: threshold 2) filter and cluster By Distances (function clusterByDistances) main parameter: distance 3) filter By Bridgeness (filter By Bridgeness) main parameter: bridgness 4) format the graph (formatGraph) main parameter: format_ ''' if cooc_id == None: cooc_id = countCooccurrences( corpus=corpus #, field1="ngrams", field2="ngrams" , start=start , end =end , mapList_id=mapList_id , groupList_id=groupList_id , isMonopartite=True , threshold = threshold #, limit=size ) G, partition, ids, weight = clusterByDistances ( cooc_id , field1="ngrams", field2="ngrams" , distance=distance ) data = filterByBridgeness(G,partition,ids,weight,bridgeness,type,field1,field2) return data