CiGRAM - Circular Gaussian Random grAph Model

CiGRAM was designed to generate undirected graphs with heterogeneous degree distributions and configurable assortativity and community structure.

CiGRAM is using two wrapped Gaussian distribution functions to determine the probability that a node is selected to form an edge. First, node positions are sampled from the distribution function f (shown in blue below). Each node is given a position (angle) on a unit circle. Then, each node position is scored using the distribution function s (shown in green below). The highest scores are given to the nodes in the least dense regions of the circle.

The scores determine the node degrees. The higher the score, the more likely it is that a node would become a part of an edge. Similar approach is used to determine the community structure, except that the scores determine the community size and influence the probability that a community is selected to form an edge between two communities.

number of nodes (n)

graph density (d)

number of communities (k)

assortativity (a)

node position (σf)

node score (σs)

inter-community edges (ek)

community position (Σf)

community score (Σs)

probability of overlap (po)

Model parameters


The graph generation failed. Perhaps you found a bug!

To help us fix it, please tell us what you were doing.

Examples of real-world networks and best model parameters found with PSO. For each target network only the largest connected component was used.

The goodness of fit was measured by comparison of the real-world network topological properties (clustering coefficient, assortativity, modularity) with the average values of these properties for a sample of 100 random graphs. Also an average Kolmogorov-Smirnoff distance between the cumulative degree distributions was calculated.

network KS CC r Q k a σf σs ek Σf Σs po
US Power Grid0.0800.0030.936
model 10.0020.0000.0080.74010.0830.5001.1920.0001.6001.6000.000
model 20.0000.073-0.0010.861488-0.1701.6631.3690.1000.6000.7080.010
model 30.0000.076-0.0000.8063800.0671.2531.4940.2500.6091.8000.100
Arabidopsis PPI0.099-0.1970.754
model 10.0060.014-0.2060.4491-1.2320.8540.9030.0001.6001.6000.000
model 20.0110.095-0.1930.74653-1.4160.7460.9390.1001.3920.6170.010
model 30.0090.104-0.1860.65688-5.0001.4850.7240.2501.8001.7960.100
Open Flights0.4560.0490.651
model 10.0080.0760.0470.23610.8650.8380.7310.0001.6001.6000.000
model 20.0110.4690.0500.7922904.7081.3600.5000.1000.7980.6000.010
model 30.0040.4500.0210.598531.5161.1630.6100.2500.6250.8940.100
model 10.0030.0050.2330.48112.5440.5400.7230.0001.6001.6000.000
model 20.0100.2530.2230.88910683.4000.8980.7640.1000.6000.7160.010
model 30.0080.2420.1390.7249881.8570.9650.7280.2500.6000.8630.100
arXiv astro-ph0.6330.2010.626
model 10.0270.0070.2210.21711.3221.1750.9190.0001.6001.6000.000
model 20.0190.5510.2070.87017901.0001.6970.7010.1000.6000.6380.010
model 30.0170.617-0.0570.676352-0.1351.8000.6380.2500.7031.2160.100
model 10.0360.1210.1740.11610.4071.3010.8450.0001.6001.6000.000
model 20.0390.3580.1720.564451.2111.7310.7670.1000.8000.6000.010
model 30.0220.2140.1000.43770.8211.8000.8320.2501.5441.2730.100

To the extent possible under law, the CiGRAM Authors have waived all copyright and related or neighbouring rights
to the CiGRAM example network models.




Source code

You can download the source code of the CiGRAM model generator to learn its internals or run it on your own computer. This code is released under the terms of the GNU General Public Licence version 3 (or later).