UNPKG

ngraph.louvain

Version:

Given a graph instance detects communities using the Louvain Method

54 lines (38 loc) 1.36 kB
# ngraph.louvain Given a graph instance detects clusters using the [Louvain Method](https://en.wikipedia.org/wiki/Louvain_Modularity). [Demo](https://anvaka.github.io/ngraph.louvain/demo/basic/) # usage ``` js // Let's say you have an ngraph instance: var graph = createAGraph(); // To detect clusters: var detectClusters = require('ngraph.louvain'); var clusters = detectClusters(graph); // now you can iterate over each node and get it's community (aka class): graph.forEachNode(function(node) { console.log(node.id, clusters.getClass(node.id)); }); ``` Note: Louvain method is hierarchical. I.e. you should be able to get coarser graphs based on detected communities. By default `ngraph.louvain` does not implement hierarchies, yet you can easily achieve it by following: ``` js var coarsen = require('ngraph.coarsen'); var detectClusters = require('ngraph.louvain'); var clusters = detectClusters(graph); while(clusters.canCoarse()) { graph = coarsen(graph, clusters); clusters = detectClusters(graph); // this will give you next level in the hierarchy } ``` # install ``` npm install ngraph.louvain ``` # see also * https://github.com/anvaka/ngraph.graph - graph structure * https://github.com/anvaka/ngraph.cw - label-propagation based community detection * https://github.com/anvaka/ngraph.coarsen - Graph coarser # license MIT