def igraph(self, where, table=None, vx="Invnum_N", ed="Patent", order="AppYear", va=", Lastname||', '||Firstname AS Name, City||'-'||State||'-'||Country AS Loc, Assignee, AsgNum", ea=", a.AppYear AS AppYear", eg=', a.AppYear'): import math, datetime, senGraph if not table: table = self.tbl tab = senGraph.senTab() self.c.executescript(""" DROP TABLE IF EXISTS G0; DROP TABLE IF EXISTS vx0; DROP TABLE IF EXISTS ed0; CREATE TEMP TABLE G0 AS SELECT * FROM %s WHERE %s ORDER BY %s; CREATE INDEX G_id ON G0 (%s); CREATE INDEX G_ed ON G0 (%s, %s); CREATE TEMPORARY TABLE vx0 AS SELECT %s, count(*) AS Patents %s FROM G0 GROUP BY %s; CREATE INDEX vx_id ON vx0 (%s); CREATE TEMPORARY TABLE ed0 AS SELECT a.%s, b.%s, a.%s AS hId, b.%s AS tId, count(*) AS Weight %s FROM G0 AS a INNER JOIN G0 AS b ON a.%s=b.%s AND a.%s<b.%s GROUP BY a.%s, b.%s %s; """ % (table, where, order, ed, vx, ed, vx, va, vx, vx, vx, vx, vx, vx, ea, ed, ed, vx, vx, vx, vx, eg)) tab.vList = self.c.execute("SELECT * FROM vx0").fetchall() tab.vlst = self.columns(table="vx0", output=False)[1:] tab.eList = self.c.execute("SELECT * FROM ed0").fetchall() tab.elst = self.columns(table="ed0", output=False)[2:] s = senGraph.senGraph(tab, "vertex") return s
def map(req): random.seed(19820817) info = req.form x = senGraph.senDBMySQL(dbconfig=cfg, table="invpat") InvList = [info['inv']] Inv = x.nhood(InvList) x.graph(vertex_list=Inv, flag=InvList) sG = senGraph.senGraph(x.tab, varType='vertex') sG.g.vs["size"] = [math.log(x)*3+4 for x in sG.g.vs["cnt"]] sG.vs_color("AsgNum", dbl=True) sG.g.vs["layout"] = [[x["Lat"], x["Lng"]] for x in sG.g.vs] surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, 200, 200) ctx = cairo.Context (surface) plot(sG.g, "/home/ron/web/py/img/1.png", layout=sG.g.vs["layout"], bbox=[200, 200], vertex_label="", vertex_layer=True, vertex_size2=[x['size']+5 for x in sG.g.vs()]) image = cairo.ImageSurface.create_from_png ("/home/ron/web/py/img/1.png") ctx = cairo.Context (surface) ctx.set_source_surface (image, 0, 0) ctx.paint() s = StringIO() img = Image.frombuffer("RGBA", (surface.get_width(), surface.get_height()), surface.get_data(), "raw", "RGBA", 0, 1) s.seek(0) req.content_type = 'image/png' img.save(req, 'png') return apache.OK
def network(self, InvNum): query = self.query category = self.category s = senGraph.senDBSQL() s.graph(vertex_list=s.nhood(InvNum), flag=InvNum, output="network.csv") sG = senGraph.senGraph(s.tab) sG.g.vs["size"] = [math.log(x)*3+4 for x in sG.g.vs["cnt"]] sG.vs_color("AsgNum", dbl=True) for x in InvNum: if x in sG.g.vs["Invnum_N"]: iG = sG.neighborhood([sG.g.vs["Invnum_N"].index(x)], 2) iG.g.vs["layout"] = iG.g.layout("FR") iG.json(output="%s.json" % x, vBool=["flag"], title="+2 degrees")
def json_v0(req): random.seed(19820817) info = req.form x = senGraph.senDBMySQL(dbconfig=cfg, table="invpat") InvList = [info['inv']] Inv = x.nhood(InvList) x.graph(vertex_list=Inv, flag=InvList) sG = senGraph.senGraph(x.tab, varType='vertex') sG.g.vs["size"] = [math.log(x)*3+4 for x in sG.g.vs["cnt"]] sG.vs_color("AsgNum", dbl=True) sG.g.vs["layout"] = [[x["Lat"], x["Lng"]] for x in sG.g.vs] json = sG.json(output=None, vBool=["flag"], title="", scale=None) return json
def json(req): random.seed(19820817) info = req.form x = senGraph.senDBMySQL(dbconfig=cfg, table="invpat") #x.graph(vertex_list=Inv, flag=InvList) Inv = [] if "mode" not in info and "State" in info: info["mode"] = "congdist" if "mode" in info: if info["mode"] == "inventor": InvList = [info['inv']] Inv = x.nhood(InvList) where = None output = "/home/ron/web/py/sqlite/%s.s3" % info['inv'] elif info["mode"] == "congdist": Inv = x.congdist(cd=(int)(info['CD']), state=info['State']); where = "a.CD=%d AND a.State='%s'" % ((int)(info['CD']), info['State']) output = "/home/ron/web/py/sqlite/%s%s.s3" % (info['State'], info['CD']) if len(Inv)>0: x.graph(vertex_list=Inv, where=where, output=output) sG = senGraph.senGraph(x.tab, varType='vertex') sG.g.vs["size"] = [math.log(x)*3+4 for x in sG.g.vs["cnt"]] sG.vs_color("AsgNum", dbl=True) sG.g.vs["layout"] = [[x["Lat"], x["Lng"]] for x in sG.g.vs] #year gets expanded if 'year' in info.keys(): yr = info['year'].split('-') if len(yr)==1: yr.append(yr[0]) sG.g = sG.g.vs.select(AppYear_ge=yr[0], AppYear_le=yr[1]).subgraph() #sG.g = sG.g.vs.select(AsgNum_eq="A000010088904").subgraph() json = sG.json(output=None, vBool=["flag"], title="", scale=None) return json else: return ""