Code organization
For a user, the entry point is the DsmClustering.flowBasedMarkovClustering method which takes the following parameters:
| Parameter | Algorithmic name | Empirical useful range | Description | 
|---|---|---|---|
| 
 | - | - | Adjacency matrix between the nodes, non-negative element  | 
| 
 | - | - | Labels of the nodes. | 
| 
 | μ | Between  | Influence factor of distance between nodes. | 
| 
 | α | Normally  | Number of steps taken each iteration in the Markov clustering. | 
| 
 | β | Between  | Speed factor of deciding clusters. | 
| 
 | ε | - | Convergence limit. | 
| 
 | - | - | The bus detection algorithm to apply. | 
| 
 | - | - | Tuning factor for selecting bus nodes. Interpretation depends on the chosen bus detection algorithm. | 
The function computes how to group the nodes into a bus and hierarchical clusters by shuffling the nodes into a different order.
The result is a Dsm instance, which contains how the original nodes were shuffled to obtain the result, a shuffled version of the provided adjacency matrix and labels, and a tree describing the nested clustering hierarchy, with the getShuffledBase and getShuffledSize methods providing the node offset and length of each group in the shuffled version.