Core library details

As described in The core libraries section the modules in MITIE that do most of the work are one of four types, processes, link selectors, node selectors, or link dimensioners. Below is a list of the currently available modules in the core library of modules in MITIE.

Specifically this page contains detailed information on:

Processes [ addLink | grow | linkNodes | redim | remLink | adjLDump | degDistDump | distDistDump | distancesDump | eigenvalDump | pajekDump | routesDump | topStatDump | weightDistDump | weightsDump ]
Link Selectors [ degree | geoabs | geopow | geowax | random | rpl | wt ]
Node Selectors [ D | EP | EW | R | RPN | node | prev ]
Link Dimensioners [ const | nroutes ]

Processes

addLink

Add a link between two nodes, selecting the pair with a link selector.
Usage: addLink{link_selector_name,link_dimensioner_name}

Where:

grow

Adds a single node to the network (assuming -maxSize hasn't been exceeded) and connects it to the existing nodes with the specified node selector.
Usage: grow{destination_selector_name,link_dimensioner_name}
Where:

linkNodes

Add a link between two nodes, selecting each node with two node selectors.
Usage: linkNodes{node_selector_name1,node_selector_name2,link_dimensioner_name[,dupe_ok]}
Where:

redim

Redimensions all links in the network.
Usage: redim{link_dimensioner_name}
Where:

remLink

Remove a link from the network, selecting it with a link selector.
Usage: remLink{link_selector_name}
Where:


Output/Dump Processes

Common output options

A number of the output modules have the following common set of options:

So, for example, if mitie is called with: -initChain 4 '0:linkNodes{D,D,const=1}' '0:adjLDump{append_epoch,label=somelabel_,header=This is an example header}' 'END:topStatDump{}' 'END:distDistDump:{append_epoch,label=anotherlabel,header = Another header}'
The output is:

Parsed 2 epoch processes and 2 END processes.
Starting main loop.. send SIGUSR1 to see progress or SIGINT/^C to terminate main loop early.
This is an example header
somelabel_0	0 ( 1 ):	1
somelabel_0	1 ( 3 ):	0	2	3
somelabel_0	2 ( 2 ):	1	3
somelabel_0	3 ( 2 ):	1	2
This is an example header
somelabel_1	0 ( 2 ):	1	2
somelabel_1	1 ( 3 ):	0	2	3
somelabel_1	2 ( 3 ):	0	1	3
somelabel_1	3 ( 2 ):	1	2
This is an example header
somelabel_2	0 ( 3 ):	1	2	3
somelabel_2	1 ( 3 ):	0	2	3
somelabel_2	2 ( 3 ):	0	1	3
somelabel_2	3 ( 3 ):	0	1	2
Failed to complete process in epoch 3: CjNP_grow::performAction: Couldn't find a node to connected new node to.
Terminating main loop.
Network now has 4 nodes and 12 links.
Invoking END processes..
Invoking topStatDump
numlinks	12
numnodes	4
frac_connected_node_pairs_no_self_loops	0.75
frac_connected_node_pairs_inc_self_loops	1
numSelfLoops	0
isPartitioned	false
Invoking distDistDump
..APSP done in 2.8e-05 seconds.
Another header
anotherlabelEND	0	4
anotherlabelEND	1	12

The use of header and label should make it easier to delimit and parse the output for further processing.

adjLDump

Prints the adjacency list of the topology. The column after the label is the source node, the fourth column (the number in brackets) is the out-degree, and the number after the colon are the nodes that this node connects to. The options are as per the Common output options.
The output of '0:adjLDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	0 ( 1 ):	1
somelabel_0	1 ( 3 ):	0	2	3
somelabel_0	2 ( 2 ):	1	3
somelabel_0	3 ( 2 ):	1	2

degDistDump

Prints the frequency distribution of node degrees of the topology. The column after the label is the node degree number, and the last column is the frequency. The options are as per the Common output options.
The output of '0:degDistDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	1	1
somelabel_0	2	2
somelabel_0	3	1

distDistDump

Prints the frequency distribution of distances (sum of wieghts in minimum cost path) between all node pairs. The column after the label is the distance and the last column is the frequency. The options are as per the Common output options.
The output of '0:distDistDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	0	4
somelabel_0	1	8
somelabel_0	2	4

distancesDump

Prints a matrix of distances (minimum total-weight paths) between all pairs in the topology. The options are as per the Common output options.
The output of '0:distancesDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	0	1	1	2
somelabel_0	1	0	1	2
somelabel_0	1	1	0	1
somelabel_0	2	2	1	0

eigenvalDump

Prints the adjacency list of the topology. The options are as per the Common output options, additionally the following options are supported:

Sample output for '0:eigenvalDump{adj,desc,append_epoch,label=somelabel_,header=This is an example header}':

This is an example header
somelabel_0 2.17009 0.311108 -1 -1.48119 

pajekDump

Output the topology to a Pajek file.
Usage: {fn_base=file_prefix [,fn_ext=ext] [,overwrite]}
Where:

e.g. 0:pajekDump{fn_base=expt1_,fn_ext=.net}
Will output the topology at every epoch to a file called expt1_#####.net where ##### is the epoch number.
So, calling mitie with the following options: -initChain 4 'END:pajekDump{fn_base=filebase_,fn_ext=.net,overwrite}'
Would result in the following been written to file filebase_END.net:

*Vertices 4
1 0
2 1
3 2
4 3
*Edges
1 2
2 1
2 3
3 2
3 4
4 3

routesDump

Prints the routes between every node pair. The options are as per the Common output options.
The output of '0:routesDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	0-0: 0
somelabel_0	0-1: 0 1
somelabel_0	0-2: 0 1 2
somelabel_0	0-3: 0 3
somelabel_0	1-0: 1 0
somelabel_0	1-1: 1
somelabel_0	1-2: 1 2
somelabel_0	1-3: 1 0 3
somelabel_0	2-0: 2 1 0
somelabel_0	2-1: 2 1
somelabel_0	2-2: 2
somelabel_0	2-3: 2 3
somelabel_0	3-0: 3 0
somelabel_0	3-1: 3 0 1
somelabel_0	3-2: 3 2
somelabel_0	3-3: 3

topStatDump

Prints various topology statistics, including: number of nodes, number of links, the number of nodes that are connected to themselves (self-loops), whether the topology is partitioned, and what fraction of node pairs are connected. The options are as per the Common output options.
The output of '0:topStatDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	numlinks	8
somelabel_0	numnodes	4
somelabel_0	frac_connected_node_pairs_no_self_loops	0.5
somelabel_0	frac_connected_node_pairs_inc_self_loops	0.666667
somelabel_0	numSelfLoops	0
somelabel_0	isPartitioned	false

weightDistDump

Prints the frequency distribution of the link weights. The options are as per the Common output options.
The output of '0:weightDistDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	0	8
somelabel_0	1	8

weightsDump

Prints the weights matrix (the weight of each link). The options are as per the Common output options.
The output of '0:weightsDump{append_epoch,label=somelabel_,header=This is an example header}' is:

This is an example header
somelabel_0	0	1	0	1
somelabel_0	1	0	1	0
somelabel_0	0	1	0	1
somelabel_0	1	0	1	0

Link Selectors

Below is a list and overview of the link selector modules available in the MITIE core library. Their use is always through invocation in a network process.

degree

Selects a link or node-pair based on the degree of the nodes. Whether a connected or disconnected node pair are selected is dependant on the context (i.e. if used in an addLink{} context then only node pairs which aren't already connected will be considered (unless dupe_ok is specified), ).The probability of a two endpoints being chosen The endpoints are selected by either the diff
Usage: degree={(add|diff)[,exp=float][,dupe_ok]}

Where:


Example1: degree={add,exp=-1}
Would populate the roulette wheel with values which are the reciprocal of the sum of degrees of the two end-points. This effectively increases poor-club (I guess that's what the opposite of rich club is) connectivity.

Example2: degree={diff}
Would populate the roulette wheel with values which are the difference of the degrees of the two end-points. This leads to higher dis-assortitative mixing (i.e. nodes of a non-similar degree have a tendancy to be linked).

geoabs

Selects the link or node-pair which has the highest, or lowest absolute value for geographic/euclidean distance between them.

Usage: geoabs={(min|max)[,dupe_ok]}

Where:

geopow

Selects a link or node-pair preferring those with a higher value of alpha*geographic_distance_between_nodes_in_pair^beta.
Usage: geopow={alpha=float,beta=float[,no_warn][,dupe_ok]}

Where:

geowax

Selects a link or node-pair preferring those with a higher Waxman probability i.e. alpha * exp(-geographic_distance_between_nodes_in_pair/beta).
Usage: geowax={alpha=float,beta=float[,no_warn][,dupe_ok]}

Where:

random

Selects a link or node-pair at random, with a uniform probability distribution.
Usage: random={[dupe_ok]}

Where:

rpl

Selects a link, preferring with a higher value of rpl^exp, where rpl is the number of routes passing across the link (routes, not load, so equivalent to a full mesh of unity load).
Usage:

Where:

wt

Selects a link based on its weight.
Usage:

Where:

Node Selectors

Below is a list and overview of the node selector modules available in the MITIE core library. Their use is always through invocation in a network process.

D

Select a node based on its out-degree.
Usage: D[={[exp=float],[dupe_ok]}]

Where:

EP

Selects a second node preferring those with a higher value of alpha*geographic_distance_between_nodes_in_pair^beta.
Usage: EP={alpha=float1,beta=float2[,no_warn][,dupe_ok]}

Where:

EW

Selects a second node preferring those with a higher Waxman probability i.e. alpha * exp(-geographic_distance_between_nodes_in_pair/beta).
Usage: EW={alpha=float1,beta=float2[,no_warn][,dupe_ok]}

Where:

R

Select a node based at random with a uniform porbability.
Usage: R[={dupe_ok}]

Where:

RPN

Select a node preferring nodes with a higher number of routes that ingress and egress the node. Can also consider transit only routes.
Usage: RPN={[transit][,ave][,exp=float][,dupe_ok]}

Where:

node

Selects the node specified as an argument.
Usage: node=M

Beware that if M is fully connected then the process will return an error and the simulation will probably terminate.
Where:

prev

Selects a node from a previous operation.
Usage: prev={(rem,add),(bigD|smallD|old|new)}

Where:

Link Dimensioners

Below is a list and overview of the link dimensioner modules available in the MITIE core library. Their use is always through invocation in a network process - probably a addLink but also redim.

const

Sets the link to the constant value specified.
Usage: const=1

Where:

nroutes

Sets the link to a function of the number of routes (routes, not load) that traverse it. Sets the weight of the link to alpha*number_of_routes_on_link^beta. If alpha or beta are not specified then their value defaults to 1.0. min_val is the minimum value a link weight could be.
Usage: nroutes={min_val=1[,alpha=float][,beta=float][,no_warn]}

Where:

 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator