WatchComplexity is a package to understand and analyze complex networks and more in general complex data. It is a collection of clustering techniques inspired by social science and communication theories.
All useful informations can be found in the wiki documentation:
The tool provides the following algorithms.
- Ranked influence typology
Detect the type of influence that each node holds within a network. - Network Similarity
Measures the similarity between different networks.
npm install watch-complexity
const watchcomplexity = require('watch-complexity');
Example of use:
// The list of edges
const edges = [
{from: "Napoleon", to: "Myriel", weight: 1},
{from: "Mme.Magloire", to: "Myriel", weight: 10},
{...}
];
// Measure the influence score and detect the influence roles
const nodes = watchcomplexity.influence.typology(edges);
That will return as result:
{
ranking:
[
{node: "Marius", role: "Hub", score: 100},
{node: "Courfeyrac", role: "Amplifier", score: 93.68029739776952},
{node: "Enjolras", role: "Reducer", score: 92.93680297397769},
{node: "Fantine", role: "Amplifier", score: 89.96282527881041},
...,
{node: "Mme.Hucheloup", role: "Emitter", score: 39.405204460966544},
{node: "Anzelma", role: "Low emitter", score: 34.94423791821562},
{node: "Pontmercy", role: "Reducer", score: 33.08550185873605},
...
{node: "OldMan", role: "Emitter branch", score: 1.4869888475836461},
{node: "Napoleon", role: "Emitter branch", score: 0}
],
nodes: 77,
edges: 254,
distribution: {
Blackhole: 0,
Vulcano: 0,
Channeler: 0,
Chain: 0,
Bridge: 1,
Connector: 3,
'Emitter branch': 15,
'Receiver branch': 2,
Receiver: 2,
Emitter: 4,
'Low emitter': 9,
Idle: 0,
Transceiver: 5,
Tophub: 0,
Hub: 1,
Dam: 6,
Reducer: 12,
Megamplifier: 7,
Amplifier: 10
}
}
Unit tests are inside the folder /test
, included test coverage through nyc
.
To run all unit tests, type:
npm test
Our main goal is to do experimental research with practical applications.
WatchComplexity is an open source project available under the MIT license.