Experimental configuration

In our framework, we include a program that simplifies measuring the structural properties of a given network. This program can be executed as follows, once the binary for the library has been generated:

java -jar RELISON.jar sna network multigraph directed weighted selfloops metrics output (-communities comm1,comm2,...,commN --distances)

where

  • network: a file containing the social network graph to analyze.

  • multigraph: true if the network allows multiple edges between each pair of users, false otherwise.

  • directed: true if the network is directed, false otherwise.

  • weighted: true if we want to use the weights of the links, false otherwise (weights will be binary).

  • selfloops: true if we allow links between a node and itself, false otherwise.

  • metrics: a configuration file for reading the structural properties we want to measure (see Configuration file below).

  • :code:output: a directory in which to store the structural properties.

  • Optional parameters:
    • -communities comm1,comm2,...,commN: a comma-separated list of files containing community partitions of the users.

    • --distances: indicates that we want to pre-compute the distance-based metrics in the network (recommended if more than one is used).

Configuration file

In order to select a suitable set of metrics, the program receives, as input, a configuration file, specifying the different properties we want to measure and analyze. This is a Yaml file with the following format:

metrics:
  metric_name1:
    type: vertex/edge/pair/graph/indiv. community/global community
      params:
        param_name1:
          type: int/double/boolean/string/long/orientation/object
          values: [value1,value2,...,valueN] / value
          range:
          - start: startingValue
            end: endingValue
            step: stepValue
          - start: ...
          objects:
            name_of_the_object:
              param_name1:
                type: int/double/boolean/string/long/orientation/object
                ...
              param_name2:
                type: int/double/boolean/string/long/orientation/object
                ...
  metric_name2:
    ...

In this configuration file, we identify each metric by each name, and, afterwards, we identify its type. We differentiate between six groups of metrics:

  • Vertex metrics: Properties of individual nodes in the network (e.g. degree, local clustering coefficient).

  • Edge/Pair metrics: Properties of pairs of users in the network. If they are selected with the “edge” identifier, the metrics are only computed over the set of links in the network.

  • Graph metrics: Global properties of the network (e.g. global clustering coefficient).

  • Individual community metrics: Properties of a single community in the partition (e.g. community size, degree).

  • Global community metrics: Global metrics depending on the community partition (e.g. modularity).