Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including layered-label-propagation with all npm packages installed. Try it out:

var layeredLabelPropagation = require("layered-label-propagation")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

layered-label-propagation v1.0.4

Layered Label Propagation is a semi-supervised machine learning algorithm that assigns labels to previously unlabeled data points. At the start of the algorithm, a (generally small) subset of the data points have labels (or classifications). These labels are propagated to the unlabeled points throughout the course of the algorithm.

Layered Label Propagation Algorithm


The update rule distinguishes Layered Label Propagation from Label Propagation. Instead of limiting the community choice to the one that is predominant among the nodes in the neighborhood, it takes into account a factor that considers the labeled nodes in the complete network. In fact, both algorithm versions are equivalent whenever this factor is considered 0.

Optimizing equation:

Layered Label Propagation Equation


Install package using NPM.

npm i --save layered-label-propagation

Require it using Node.js.

const llp = require('layered-label-propagation');

Start community finding.

let node2com = llp.jLayeredLabelPropagation(nodes, links, gamma, max);

// node2com = {nodeID1: commmunityID1, nodeID2: commmunityID2...}
// nodes = [nodeID1, nodeID2...]
// links = [{source: nodeID1, target: nodeID2, value: weight ...}]
// gamma 
// Whenever the number of iterations exceeds a given "max", algorithms stops further partitioning of the network. 


Community Finding with Applications on Phylogenetic Networks (Master Thesis)

Louvain, Infomap, Layered Label Propagation, Label Propagation, Hamming Distance, Girvan-Newman Benchmark and Normalized Mutual Information algorithms were developed in JavaScript. To visualize the results, an interface using D3.js (SVG and Canvas) and Cytoscape was implemented. Every community finding algorithm was tested in terms of accuracy, speed and memory against 2 synthetic networks (Girvan-Newman and Lacichinetti-Fortunato-Radicchi networks with varying parameters). Final goal was to cluster microbiological data.

Check out more in the thesis website. You may also download an image of the application in Docker Hub. A description video is below.


Supervision Team

Alexandre Francisco (INESC-ID & IST) | João Carriço (iMM) | Vítor Borges (INSA)

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free