Mercurial > hg > NetworkVis
view ismi-python-neo4jrestclient/ismi-vis.py @ 11:5674d1cf5ab2
cleaned up stray git repos.
author | casties |
---|---|
date | Thu, 01 Oct 2015 17:42:58 +0200 |
parents | 0f4846255b20 |
children | 394bd5cfc508 |
line wrap: on
line source
#!/usr/bin/env python from json import dumps from flask import Flask, Response, request from neo4jrestclient.client import GraphDatabase, Node, Relationship app = Flask(__name__, static_url_path='/static/') gdb = GraphDatabase("http://localhost:7474", username="neo4j", password="neo5j") @app.route("/") def get_index(): return app.send_static_file('index.html') @app.route("/commentaries.html") def get_commentaries(): return app.send_static_file('commentaries.html') @app.route("/graph") def get_graph(): query = ("match (t1:TEXT)-[r:is_commentary_on]->(t2:TEXT) return t1,r,t2") results = gdb.query(query, returns=(Node,Relationship,Node)) n4j_nodes = {} node_idx = {} nodes = [] rels = [] i = 0 for node1, rel, node2 in results: # source node id1 = node1['ismi_id'] if id1 not in n4j_nodes: n4j_nodes[id1] = node1 nodes.append({"title": node1['label'], "label": "TEXT"}) node_idx[id1] = i source = i i += 1 else: source = node_idx[id1] # target node id2 = node2['ismi_id'] if id2 not in n4j_nodes: n4j_nodes[id2] = node2 nodes.append({"title": node2['label'], "label": "TEXT"}) node_idx[id2] = i target = i i += 1 else: target = node_idx[id2] # relation rels.append({"source": source, "target": target}) return Response(dumps({"nodes": nodes, "links": rels}), mimetype="application/json") @app.route("/search") def get_search(): try: q = request.args["q"] except KeyError: return [] else: query = ("MATCH (text:TEXT) " "WHERE text.label =~ {title} " "RETURN text") results = gdb.query( query, returns=Node, params={"title": "(?i).*" + q + ".*"} ) return Response(dumps([{"text": row.properties} for [row] in results]), mimetype="application/json") @app.route("/text/<text_id>") def get_text(text_id): query = ("MATCH (text:TEXT {ismi_id:{text_id}}) " " RETURN text" " LIMIT 1") results = gdb.query(query, returns=Node, params={"text_id": int(text_id)}) node = results[0][0] print("node:%s"%repr(node)) return Response(dumps({"title": node['label'], "attrs": node.properties}), mimetype="application/json") if __name__ == '__main__': app.run(port=8080)