Skip to main content

UNKNOWN

Project description

========================
Sonnet J(SON + Net)workX
========================

Sonnet wraps a NetworkX graph and produces detailed JSON output for use with JavaScript to produce detailed graph visualizations in the browser.

Getting Started
===============

Install Sonnet::

pip install sonnet

Build a NetworkX graph::

import networkx as nx

g = nx.gnp_random_graph(20, 0.5)

Wrap it with Sonnet::

import sonnet as sn

s = sn.Sonnet(g, name='An Awesome Graph')

Build stats directly into node directory using modified NetworkX algorithms. Currently available: degree, degree_centrality, in_degree_centrality, out_degree_centrality, closeness_centrality, betweenness_centrality, eigenvector_centrality::

s.betweenness_centrality()

Find communities and assign nodes to group based on community::

s.find_communities()

Rank node size by nodes by attribute::

s.rank_nodes(rank_by='betweenness_centrality')

Now we have a nodes with lots of relevant data::

Produce JSON data (example data reduced for readability)::

s.jsonify()

'{
"directed": false,
"name": "An Awesome Graph",
"links": [
{
"source": 4,
"target": 8
},
{
"source": 5,
"target": 7
},
{
"source": 6,
"target": 8
},
],
"multigraph": false,
"graph": [
[
"name",
"gnp_random_graph(10,0.5)"
]
],
"nodes": [
{
"betweenness_centrality_ranking": 2.7258064516129035,
"community": 2,
"id": 0,
"betweenness_centrality": 0.04953703703703703
},
{
"betweenness_centrality_ranking": 1,
"community": 1,
"id": 1,
"betweenness_centrality": 0.0
},
{
"betweenness_centrality_ranking": 4.580645161290322,
"community": 1,
"id": 2,
"betweenness_centrality": 0.10277777777777775
},
{
"betweenness_centrality_ranking": 6.0,
"community": 2,
"id": 3,
"betweenness_centrality": 0.1435185185185185
},
]
}'


D3Graph
=======

D3Graph is designed to produce JSON output for D3.js graphs. It works just like Sonnet, but it has extra attributes set at during init.

Compare::

s = sn.Sonnet(g)

vars(s)

{'color_by': 'community',
'graph': <networkx.classes.graph.Graph at 0x1726210>,
'max_node_size': 6,
'min_node_size': 1,
'name': None,
'rank_by': 'degree_centrality'}

d = ns.D3Graph()

vars(d)

{'charge': -150,
'color_by': 'community',
'graph': <networkx.classes.graph.Graph at 0x1726210>,
'gravity': 0.06,
'height': 800,
'link_distance': 40,
'max_node_size': 6,
'min_node_size': 1,
'name': None,
'rank_by': 'degree_centrality',
'width': 1280}

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page