The directionality of the input network does not matter, so both directed and undirected networks yield the same results.
If the input network has numeric edge attributes, one can be chosen as edge weight. If no edge weight (attribute) is specified, all edges default to having a weight of 1.
The output network will structurally be the same as the input network, but the nodes will be annotated with new attributes labeled "blondel_community_level_x", where x is a community level. The value of each of these attributes is the id of a community. Communities with the same id, but across multiple community levels are separate communities. Also, the lower the community level, the larger the communities in that level are likely to be.
A single network is expected as the input, and a single network is produced as the output.
A modified version of the C++ implementation of this algorithm is compiled and wrapped for integration into CIShell (see #Links and #References). This version is modified to output the community tree to a file called "communities.tree", instead of printing it to standard output.
To integrate this algorithm in CIShell, a custom (Java) converter is used to convert the input network file to a binary edge list file that is proprietary to the compiled algorithm. The compiled algorithm is then executed upon this proprietary binary edge list. The output "communities.tree" file is merged with the input network to produce the output network with annotations.
Once an NWB output File object is ready, it is then passed to a helper function removeOuterNodeAttribute, which returns a File object that is then returned by the algorithm (after being wrapped in metadata). This function checks the outermost Blondel community level node attribute for each node in the NWB file. If the outermost community level is unique, it leaves the file as is and returns it as a File object. If the outermost community level is identical to the one preceding it, this node attribute is stripped out completely, with the edited version returned as a new File object. This helper method was implemented to fix a bug where the Blondel algorithm occasionally generated a final community level which was identical and unnecessary.
The output of this algorithm can be visualized well with the Circular Hierarchy visualization.
- C++ algorithm source code and executables (SVN)
- Java algorithm that calls Blondel wrapper (SVN)
- Original C++ implementation of the algorithm : Finding communities in large networks
- BLONDEL VD, 2008, J STAT MECH-THEO OCT, ARTN P10008. http://lanl.arxiv.org/abs/0803.0476v2