def clustering_api(engines, api=None, optionables=None, prefix="clustering"): def clustering_engine(optionables): """ Return a default engine over a lexical graph """ # setup engine = Engine("gbuilder", "clustering", "labelling") engine.gbuilder.setup(in_name="request", out_name="graph", hidden=True) engine.clustering.setup(in_name="graph", out_name="clusters") engine.labelling.setup(in_name="clusters", out_name="clusters", hidden=True) engine.gbuilder.set(engines.edge_subgraph) engine.clustering.set(*optionables) ## Labelling from cello.clustering.labelling.model import Label from cello.clustering.labelling.basic import VertexAsLabel, TypeFalseLabel, normalize_score_max def _labelling(graph, cluster, vtx): return Label(vtx["uuid"], score=1, role="default") labelling = VertexAsLabel( _labelling ) | normalize_score_max engine.labelling.set(labelling) return engine if api is None: api = ReliureAPI(name,expose_route = False) ## Clustering from cello.graphs.transform import EdgeAttr from cello.clustering.common import Infomap, Walktrap # weighted walktrap = Walktrap(weighted=True) walktrap.name = "Walktrap" infomap = Infomap(weighted=True) infomap.name = "Infomap" DEFAULTS = [walktrap, infomap] if optionables == None : optionables = DEFAULTS view = EngineView(clustering_engine(optionables)) view.set_input_type(EdgeList()) view.add_output("clusters", export_clustering, vertex_id_attr='uuid') api.register_view(view, url_prefix=prefix) return api
def clustering_api(graphdb, engines, api=None, optionables=None, prefix="clustering"): def clustering_engine(optionables): """ Return a default engine over a lexical graph """ # setup engine = Engine("gbuilder", "clustering") engine.gbuilder.setup(in_name="request", out_name="graph", hidden=True) engine.clustering.setup(in_name="graph", out_name="clusters") engine.gbuilder.set(engines.edge_subgraph) engine.clustering.set(*optionables) return engine if api is None: api = ReliureAPI(name, expose_route=False) ## Clustering from cello.graphs.transform import EdgeAttr from cello.clustering.common import Infomap, Walktrap # weighted walktrap = Walktrap(weighted=True) walktrap.name = "Walktrap" infomap = Infomap(weighted=True) infomap.name = "Infomap" DEFAULTS = [walktrap, infomap] if optionables == None: optionables = DEFAULTS from pdgapi.explor import EdgeList view = EngineView(clustering_engine(optionables)) view.set_input_type(EdgeList()) view.add_output("clusters", export_clustering, vertex_id_attr='uuid') api.register_view(view, url_prefix=prefix) # cluster labels view = EngineView(clusters_labels_engine(graphdb)) view.set_input_type(Clusters()) view.add_output("labels", lambda e: e) api.register_view(view, url_prefix="labels") return api