bitquill - Spiros Papadimitriou

Hierarchical Community Exploration in Graphs

Under construction

Our aim in this work is to co-cluster unweighted bipartite graphs (aka, sparse binary matrices) and navigate the results via a simple GUI. The main motivation stems from our desire to expand upon our previous work. The key idea is simple: instead of treating the original matrix and each of the resulting sub-matrices asymmetrically (by enforcing a random graph model on the sub-matrices), we treat them symmetrically by applying the same criteria recursively. We have also built a simple visualization demo in Matlab, to navigate the resulting structure, which you may find useful.

Matlab demo

The tarball hcc-gui-0.1.tgz contains the code, along with some sample data.

Quickstart guide

After downloading the code, you can try this basic demo:

> mex cc_col_nz.c
> mex cc_iter_main.c
> load demodata
> showgroups

Before calling any co-clustering functions, make sure to:

> setpref('cc', 'selfgraph', false);

Creating groups and hierarchy (will take some time, depending on hardware):

% Make sure Aauthors from demodata.mat is loaded for this example
> Hauthors = cc_hier_search(Aauthors);

Displaying groups and hierarchy:

> gui_hier(Hauthors, 'labels', prolific_authors, 'matrix', Aauthors);

Known issues

The code does not handle certain conditions gracefully, including:

  • The matrix must be sparse.
  • The matrix should have only 0/1 entries, or you may get weird errors (or even a coredump from the MEX routines).
  • The code for self-graphs is known to be broken in this release.