Vito D.P. Servedio   Manual of NET

NET is a program thought to help those researchers in the field of complex networks to analyse the statistical properties of complex networks. NET can be used both to generate complex networks and to  analyze them. NET can run multiple realizations of network generation models and perform multiple realization (ensemble) statistics. NET can perform single and multiple statistics on networks read from files.

Overview

By running NET into an empty directory, a template initialization file named NET.INI will be created. Click here if you like to browse the NET.INI file in another window. You have to edit the NET.INI file in order to meet your needs and run the program again into the same directory. Output data files containing the statistical analysis data can be easily detected inside the running directory as their filename begins with the '=' character.

If you have the Qt 3.0 installed you may run the graphical frontend with the command NetIni. NetIni creates the file NET.INI according to your specifications and eventually runs the NET program.

Description of the initialization file NET.INI

Hereby follows a description of options available in the initialization file.


 VERSION 1.19                         ######################################

Version number is checked at startup in order to avoid the processing of old initialization files. In case an old NET.INI file is detected, you have to delete it and let the program generate a new one from scratch. That one will have the correct version number.



 NK         =   50              # Number of nodes

This line defines the number of nodes of the network. It is taken into account only if you are generating a new network using the built in models. If the READ_IN flag is set, then the network will be loaded from file and the value of NK will be overwritten. The program NET uses dynamical allocation of memory so that large values of NK may cause the program to exit due to insufficient memory.


 DISTRIB    =   0		# See comment lines above
A = 0.0 # Parameter for the distribution above
B = 1.0 # Another parameter for the distribution above

These parameters define which probability density distribution is to be used to extract the fitness random variables for each node. They are used only if you choose to generate a network with the fitness model of course. The definition of the fitness model can be found in Phys. Rev. Lett. 89, 258702 (2002) . The numerical value of option DISTRIB selects the type of distribution to use. If with x we denote the fitness variable, the probability density distributions so far implemented are:

  1. Uniform distribution: x in (A,B)
  2. Exponential distribution: A EXP(-Ax) , x>0
  3. Gaussian distribution: EXP(-x^2/2A^2)/SQRT(2 Pi A^2), x>0
  4. Power-law distribution: c x^(-A) if x>B , 0 otherwise , c=normalization constant
  5. User defined distribution: edit source file RandomDistributions.c

 LINKTYPE   =   0 		# Type of function to use as linking probability
Z = 0.0 # Cutoff in the linking probability
M = 0.03 # Probability of successfull connections per node
E = 0.0 # Parameter in the linking prob

These set of parameters define which linking probability is to be used to construct the net with the fitness model. Again we cite the corresponding letter where details of the model can be found. If x and y denote the fitnesses of two nodes, and f(x,y) the linking probability function, then the implemented functions are:

  1. f(x,y) = M/(1.0+ EXP((Z-x-y)/E)) if E>0 ; M*THETA(x+y -Z) if E=0
  2. f(x,y) = M/(1.0+ EXP((|x-y|-Z)/E)) if E>0 ; M*THETA(Z-|x-y|) if E=0
  3. f(x,y) = M x y / Z^2
  4. User defined
  5. User defined
  6. User defined

With THETA we indicate the Heaviside step function. In order to inspect and change the user defined functions, please edit the source file LinkProbability.c. Note that with the above default values, i.e. with M as the only non vanishing parameter, a binomial graph with linking probability p=M will be generated. Further, we showed in Phys. Rev. E 70, 056126 (2004) that given a fixed probability density function it is always possible to find a linking function such to produce a network with the node degree distribution obeying a power-law with given exponent. Explicit formulae can be found in the article and can be implemented as user defined linking functions.

   TREE     =   0 	        # Force the generation of a tree

This option forces the generation of tree-like networks in that the new incoming nodes are allowed to link only once. Set to 1 (TRUE) to activate this option.

   ACYCLIC  =   0 	        # Force the generation of acyclicgraphs 

If set to 1 (TRUE) this option forces the generation of graphs with no triangles (third order loops), so that the clustering coefficient is identically zero for each node. This does not preclude the existence of higher order loops.



 BA_N0      =   2                 # Starting clique order
BA_M = 2 # Links entering at each step

In case you chose the generation of networks by using the Barabasi-Albert preferential attachment rule, you need to set these parameters to the initial number of node already present in the graph at time 0 (as complete graph -clique-), and the number of incoming links at each time step, respectively.



 PROJNAME   =   gnu		# Project name

Input and output file names will refer to the project name. For example, input graph files containing the link list of the network will be "PROJNAME.in" (or better "gnu.in" with the present choice of the parameter). Output file names will be e.g. "=gnu.DegreeDistribution.dat" and so on.


 NET_GENR   =   0 		# 0=FITNESS, 1=BA, 2=MG

Here you decide which algorithm to use for generating graphs. Till now only two possibilities are implemented: the fitnes model mentioned above and the preferential attachment of Barabasi-Albert. Method 2 (Minimum Growth) is still experimental and not documented.


 NET_TYPE   =   0 		# 0=undirected, 1=directed

This option lets you define whether the network is directed or undirected. Most of output data are split according to the in-degree and out-degree of nodes. Generation of directed nets with the fitness model and preferential attachment are allowed. In this case links go from the new entering node to the old ones.


 WEIGHTED   =   0  		# 0=unweighted, 1=weighted edges (only with READ_IN=1)

To be set to 1 (TRUE) if the network is a weighted network. Each link in the network has a weight associated with it. Only network read as input and not generated internally may be wheighted ones for now. Most of output data files will refer to the node strength rather than its degree.


 MULTI      =   1  		# If>1 do multiple runs

This parameter defines how many ensemble replica are to be generated. This is usefull in order to test the statistical properties of a model of net generation. The project name is modified into "PROJNAMExxxx" where xxxx ranges from 0000 up to MULTI-1 with a maximum of 9999. The final ensemble statistics have file names with project "PROJNAME_STATS". If READ_IN is TRUE then the nets are read from files "PROJNAMExxxx.in", which you might have generated before.


 READ_IN    =   0  		# Read net from file PROJNAME.in

If this parameter is set to 1 (TRUE) then the net will be read from file "PROJNAME.in", or from files "PROJNAMExxxx.in" in case MULTI is greater than 1.
Network input files are so structured:

           # Network: gnu
           # Total number of nodes: 35
           # Links follow:
           0      6
           0     28   # comment
           1     20   # another comment
           2     30
           etc.  etc.
where lines starting with "#" are ignored. Also all characters following the first "#" sign in the line are treated as comment. With directed nets, links are drawn from the first node index to the second. In case of WEIGHTED networks, the user has to supply a third numerical field after node indeces. Nodes whose index does not appear in the link list are still considered to belong to the network but are isolated nodes. You might set SAVE_NET to 1 in order to get rid of isolated nodes.



 SAVE_NET       =   1  		# Save the resulting net on file 1=.net 2=.paj for pajek

The processed net is saved into file "PROJNAME.net". If you need to reuse this network, you must rename the file into "PROJNAME.in" by hand. This is done in order not to automatically overwrite the original "PROJNAME.in" if present. By saving the net, all isolated nodes are discarded and the list of new node labels is appended to the end of the "PROJNAME.net" file as comment.
If this parameter is set to 2 then the output file is saved in a format compatible with the Pajek network drawing and analysis software.