def get_rank(request, algorithm, min_radius, max_radius): dajax = Dajax() user = request.session['fbuser'] if 'graphwrapper' in request.session: G_wrapper = request.session['graphwrapper'] else: G_wrapper = GraphWrapper(user.get_friend_ids(), user.get_friends_links()) request.session['graphwrapper'] = G_wrapper if algorithm=='PageRank': #if False: if 'pagerank' in request.session: rank = request.session['pagerank'] else: #rank = nx.pagerank_numpy(G_wrapper.G) print "Calculating pagerank" rank = G_wrapper.calculate_pagerank() request.session['pagerank'] = rank elif algorithm=='Betweenness': if 'betweenness' in request.session: rank = request.session['betweenness'] else: rank = nx.betweenness_centrality(G_wrapper.G) request.session['betweenness'] = rank elif algorithm=='Eigenvector': if 'eigenvector' in request.session: rank = request.session['eigenvector'] else: #rank = nx.eigenvector_centrality(G_wrapper.G) rank = G_wrapper.calculate_eigenvector_centrality() request.session['eigenvector'] = rank elif algorithm=='Degree': #if False: if 'degree' in request.session: rank = request.session['degree'] else: rank = G_wrapper.calculate_degree_centrality() request.session['degree'] = rank else: return dajax.json(); #Scale nodes' area (not radius!) between the areas of circles with min and max radius min_area = np.pi*min_radius**2 max_area = np.pi*max_radius**2 area_change = max_area-min_area min_rank = min(rank.values()) max_rank = max(rank.values()) rank_change = max_rank-min_rank node_radii = {} for node, rank in rank.iteritems(): area = (rank-min_rank)/rank_change * area_change + min_area radius = (area/np.pi)**0.5 node_radii[node] = radius dajax.add_data(node_radii, 'grapher.resizeNodes') result = dajax.json() return result
def find_groups(request, n): dajax = Dajax() s = request.session user = s['fbuser'] G_wrapper = GraphWrapper(user.get_friend_ids(), user.get_friends_links()) #Why does storing this in the session not work...? dendogram = community.generate_dendogram(G_wrapper.G) level = int(n * (len(dendogram)-1)) print "Level: %s" % level result =community.partition_at_level(dendogram, level) groupmap = {} for entry in result.iteritems(): #print entry #print groupmap if entry[1] in groupmap: groupmap[entry[1]].append(entry[0]) else: groupmap[entry[1]] = [entry[0]] colors = G_wrapper.get_colorscheme(len(groupmap)) response=zip(colors, groupmap.values()) #dajax.alert("Level: %s" % level) dajax.add_data(response, 'grapher.colorGroups') return dajax.json()