Module identification in bipartite and directed networks. Given a bipartite (or directed) network, the program returns a partition into groups of the nodes in one of the sets of nodes (the 'actors' or the 'teams').

Input parameters

The program will prompt for the following parameters:

  • Seed for the random number generator: Must be a positive integer. Since the module identification algorithm is stochastic, different runs will yield, in general, slightly different different modules. Two runs with the same seed, though, should give the exact same results.

  • Name of the network file: Name of the file that contains the network. The file must be a list of links with the format:

    n1 n2
    n3 n4
    ... ...

    This represents a network with a link between nodes n1 and n2, another between nodes n3 and n4, and so on. Nodes must be separated by spaces.

  • Iteration factor (f): At each temperature of the simulated annealing (SA), the program performs fN^2 individual-node updates (involving the movement of a single node from one module to another) and fN collective updates (involving the merging of two modules and the split of a module). The number "f" is the iteration factor. Large values of f (1 or larger) will result, in general, in better results (higher modularities) and longer execution times. The recommended range for f is [0.1, 1], although smaller values may be needed for large and/or dense networks. Note, also, that a minimum number of iterations is imposed at each temperature, so that when f is very small, the minimum number will be used instead of fN^2 or fN.

  • Cooling factor (c): After the desired number of updates is done at a certain temperature T, the system is cooled down to a new temperature T'=cT, where c is the cooling factor. the cooling factor must be strictly larger than 0 and strictly smaller than 1. In general, values close to one will result in better results and longer execution times. Recommended values of the cooling factor f are [0.990, 0.999], although smaller values (0.95 or even 0.9) may be needed for large and/or dense networks.

  • Invert (0 or 1): If 0 (conversely, 1), the program will identify modules in the first (second) set of nodes, that is, the first (second) column in the input file.


Program output

The program returns a text file modules_bipart.dat containing some basic information about the modules (can be edited with any text editor such as NotePad, or imported in Excel as a csv file). The format of the file is as follows. Each line corresponds to a different module. The first number is an ID number for the module, mostly irrelevant. The second is the number of nodes in the module. The remaining numbers before "---" are mostly irrelevant for bipartite networks, so you can go ahead and ignore them. Then, columns after "---" correspond to the list of nodes in the module. The last line of the file contains the value of the modularity for this partition.

If you use this code in a publication, please cite the following articles: You may consider reading and citing the following articles:
  • Bipartmod executable for Linux: Bipartmod executable for Linux | Download
  • Bipartmod executable for Windows 32bits: Default 32bit version for Windows | Download
  • Test network for Windows: Sample network (Southern women) for Windows systems | Download