def test_d3_json1(self): G_json=d3_js.d3_json(self.G) G_nodes=map(lambda v: int(v['name']), G_json['nodes']) G_nodes.sort() self.assertEquals(G_nodes, range(6)) G_group=map(lambda v: int(v['group']), G_json['nodes']) self.assertTrue(all(g == 0 for g in G_group)) G_edges=map(lambda e: (e['source'], e['target'], e['value']), G_json['links']) G_edges.sort() self.assertEquals(G_edges, [(a,b,1) for (a,b) in self.e])
def test_d3_json2(self): H_json=d3_js.d3_json(self.H, group='group') self.assertRaises(nx.NetworkXError, d3_js.d3_json, self.H, 'fake') H_nodes=map(lambda v: int(v['name']), H_json['nodes']) H_nodes.sort() self.assertEquals(H_nodes, range(6)) H_group=map(lambda v: int(v['group']), H_json['nodes']) self.assertEquals(H_group, range(6)) H_edges=map(lambda e: (e['source'], e['target'], e['value']), H_json['links']) H_edges.sort() self.assertEquals(H_edges, map(lambda i: (self.e[i][0], self.e[i][1], self.attributes[i]), xrange(6)))
def test_d3_json1(self): G_json = d3_js.d3_json(self.G) G_nodes = map(lambda v: int(v['name']), G_json['nodes']) G_nodes.sort() self.assertEquals(G_nodes, range(6)) G_group = map(lambda v: int(v['group']), G_json['nodes']) self.assertTrue(all(g == 0 for g in G_group)) G_edges = map(lambda e: (e['source'], e['target'], e['value']), G_json['links']) G_edges.sort() self.assertEquals(G_edges, [(a, b, 1) for (a, b) in self.e])
def test_d3_json2(self): H_json = d3_js.d3_json(self.H, group='group') self.assertRaises(nx.NetworkXError, d3_js.d3_json, self.H, 'fake') H_nodes = map(lambda v: int(v['name']), H_json['nodes']) H_nodes.sort() self.assertEquals(H_nodes, range(6)) H_group = map(lambda v: int(v['group']), H_json['nodes']) self.assertEquals(H_group, range(6)) H_edges = map(lambda e: (e['source'], e['target'], e['value']), H_json['links']) H_edges.sort() self.assertEquals( H_edges, map(lambda i: (self.e[i][0], self.e[i][1], self.attributes[i]), xrange(6)))
def grapher(self): print "results length : %s",(len(self.searcher.generator.results), ) grapher = Grapher() newg = nx.Graph() for path in self.searcher.useful_paths: print '%s - %s' % (self.uuid,path) newg.add_path(path) grapher.paths.append(path) grapher.graph = newg #writer = nx.readwrite.graphml.GraphMLWriter(encoding='utf-8') #writer.add_graph_element(grapher.graph) #output = StringIO.StringIO() #writer.dump(self.request) from networkx.readwrite import d3_js # mikedewar = nx.read_graphml('mikedewar_rec.graphml') mikedewar = newg # We need to relabel nodes as Twitter name if we want to show the names in the plot #def gen_label(node): # label = "" # label = "%s::%s::%s::%d" %(node.path_index,node.publication_date.absdate,node.id,node.hasMatchingAuthorsName(self.searcher.core_authors())) # print label # return label #label_dict = dict(map(lambda i : (mikedewar.nodes()[i], gen_label(mikedewar.nodes()[i])), xrange(mikedewar.number_of_nodes()))) #mikedewar_d3 = nx.relabel_nodes(mikedewar, label_dict) # Export #d3_js.export_d3_js(mikedewar_d3, files_dir="mikedewar", graphname="mikedewar", group=None) graph_json = d3_js.d3_json(mikedewar, group=None, searcher=self.searcher) import json #self.request.write(json.dumps(graph_json, indent=2)) params = self.params params['network_graph'] = json.dumps(graph_json, indent=2) self.updateDatabase(params)