Example #1
0
from py2neo import Graph as pGraph
from igraph import Graph as iGraph

graph = pGraph("http://localhost:7474/db/data/")
print graph

query = """
MATCH (n)-[r]->(m)
WHERE r.prob>0.8
RETURN n.person_ID,m.person_ID,r.prob
"""

data = graph.cypher.execute(query)
print data

ig=iGraph.TupleList(data,weights=True)


print ig
    def build_graph(self, random=False):
        neo4j = pGraph()
        # actors - movies
        print "getting data from neo4j"

        query = """
        MATCH (p1:Actor)-[:ACTS_IN]->(m:Movie)
        RETURN p1.name, m.title
        """
        data = neo4j.cypher.execute(query)

        actors = list(set([datum[0] for datum in data]))
        movies = list(set([datum[1] for datum in data]))

        query = """
        MATCH (p1:Director)-[:DIRECTED]->(m:Movie)
        RETURN p1.name, m.title
        """
        data1 = neo4j.cypher.execute(query)

        directors = list(set([datum[0] for datum in data1]))
        movies1 = list(set([datum[1] for datum in data1]))

        print "building vertices"
        self.graph = igraph.Graph()
        self.graph.add_vertices(actors)
        self.graph.vs['actor'] = True
        self.graph.vs['movie'] = False
        self.graph.vs['director'] = False

        self.graph.add_vertices(list(set(movies+movies1)))
        for v in self.graph.vs:
            if not v['actor']:
                v['movie'] = True
                v['actor'] = False
                v['director'] = False

        for d in directors:
            try:
                v = self.graph.vs.find(name=d)
                v['director'] = True
            except:
                self.graph.add_vertex(
                    name=d,
                    **{
                        'movie': False,
                        'actor': False,
                        'director': True
                    }
                )
        print "connecting vertices"
        if random:
            # todo make random network connections
            pass
        else:
            for datum in data:
                self.graph.add_edge(
                    datum[0], datum[1], **{'label': 'acts_in'}
                )
                for datum in data1:
                    self.graph.add_edge(
                        datum[0], datum[1], **{'label': 'directs'}
                    )
Example #3
0
# -*- coding: utf-8 -*-
"""
@author Hamsavardhini
"""
from py2neo import Graph as pGraph
from igraph import Graph as iGraph
import re

neo4j = pGraph("http://localhost:7474/db/data/")
query = "Match(n)-[r]->(c) return n,c"
data = neo4j.cypher.execute(query)

ig = iGraph.TupleList(data)
new_dict = {}
attributes = []
clusterID = []


class clustering(object):
    def walktrap(self):
        wcluster = ig.community_walktrap().as_clustering()
        self.modularity = wcluster.modularity
        self.membership = wcluster.membership
        self.num_of_clusters = max(wcluster.membership) + 1
        # print self.num_of_clusters
        # print len(self.membership)
        # print self.modularity
        # ig.write_svg("walktrap.svg",layout=ig.layout_kamada_kawai())

    def match_input(self):
        self.walktrap()
Example #4
0
import scholarly
import json
import urllib
from py2neo import Graph as pGraph, authenticate
from py2neo.packages.httpstream import http
from flask import Flask, render_template, url_for

http.socket_timeout = 9999

app = Flask(__name__)

authenticate("localhost:7474","neo4j", "BigData1")
neo4j = pGraph()


@app.route("/")
def main():
	return render_template("index.html")

@app.route("/clustering")
def clustering():
	return render_template("cluster.html")

@app.route("/analytics")
def analytics():
	return render_template("analytics.html")

@app.route("/papers/cluster/<algorithm>/<int:limit>")
@app.route("/papers/cluster/<algorithm>/<int:limit>/<keyword>")
def paper_clusters(algorithm, limit, keyword=""):