Source code for network.module_network
import os
import time
from string import Template
from IPython.core.display import HTML, display
path = os.path.dirname(os.path.abspath(__file__))
[docs]def create_network(data):
import codecs
import networkx as nx
from networkx.readwrite import json_graph
G = nx.DiGraph()
for node in data:
G.add_node( encode_utf8( node['creator'] ) )
if '_comments' in node:
for comment in node['_comments']:
G.add_edge( encode_utf8( comment['from']['name'] ), encode_utf8( node['creator'] ) )
d = json_graph.node_link_data(G)
if not d['nodes']: return "Dataset empty."
graph_div_id = int( time.time() * 1000 )
html_template = Template( codecs.open( path + '/network.html', 'r').read() )
js_template_type = 'svg' if len(d['nodes']) < 500 else 'canvas'
js_template = Template( codecs.open( path + '/network_' + js_template_type +'.js', 'r').read() )
css_text = codecs.open( path + '/network.css', 'r').read()
js_text = js_template.substitute( {'graph_div_id' : graph_div_id,
'nodes' : d['nodes'],
'links' : d['links']} )
html_template = html_template.substitute( {'graph_div_id': 'network_graph_' + str(graph_div_id),
'css': css_text,
'js': js_text} )
display( HTML( html_template ) )
return None
[docs]def encode_utf8( string ):
try:
return string.encode('utf8')
except UnicodeDecodeError:
return string