This data corresponds to the paper "Data for paper Designing Quantum Networks Using Preexisting Infrastructure".
It can be found on the arXiv with the url https://arxiv.org/abs/2005.14715, and will be published in the journal "npj Quantum Information".
In this paper, we provide a method for solving the repeater-allocation problem.
That is, a method for choosing where to place quantum repeaters in an existing optical fiber network such that certain requirements on the resulting quantum network are satisfied,
while minimizing the total number of quantum repeaters.

To study the performance of the method, we study how it performs on random network graphs.
The random network graphs are geometric graphs; "num_nodes" nodes are distributed on a unit cube of dimension 2 uniformly at random, after which all nodes within Euclidean distance "radius" are connected together.
The weight of each edge corresponds to its Euclidean length.
To divide the network into end nodes (that need to be connected to solve the repeater-allocation problem) and potential repeater locations,
we use all nodes in the complex hull of the graph as end nodes and the others as potential repeater locations.

All data was generated using the code in random_graph_scan.py of the repository jtrabbie/RepAlloc on github (https://github.com/jtrabbie/RepAlloc).

The data falls into two categories.


Network-Requirement Parameters
------------------------------

There are three files that contain data about the effect of network-requirement parameters on the quality of the solutions to the repeater-allocation problem provided by our method.
These contain the data used to create Figure 5 of the paper.
All three files are in CSV format.
They each contain three columns: one containing values of the parameter being scanned over, one containing the number of quantum repeaters in the solution, and one containing the connectivity (this is the vertex connectivity of the graph representation of the resulting quantum network).
Each row corresponds to a different random network graph that our method was applied to.
All random network graphs used for this part of the data have num_nodes = 25 (i.e. 25 nodes in total in the network) and a radius of 0.9.

The three network-requirement parameters that are being scanned over are the capacity parameter D, the robustness parameter K and the maximum elementary-link length L_max.
The names of the files first indicate which of the parameters is being scanned over.
The rest of the name specifies all other parameters used to obtain the solutions.
For these three parameter, if they are not the parameter being scanned over, the value is
* D: 4
* K: 6
* L_max: 0,9
Additionallly, there are parameters that are not being scanned over; these are constant for all random graphs considered.
These are N_max, which is the maximum number of quantum repeaters allowed in the shortest path between any two end nodes, num_nodes, and radius.
For these data files, always N_max = 6, num_nodes = 25 and radius = 0.9.

The files are
* scan_D-num_nodes_25_L_max_0,9_N_max_6_K_6_radius_0,9.csv
Scan over capacity parameter D. Range 4 <= D <= 10.
* scan_K-num_nodes_25_Lmax_0,9_N_max_6_D_4_radius_0,9.csv
Scan over robustness parameter K. Range 1 <= K <= 6.
* scan_Lmax-num_nodes_25_N_max_6_D_4_K_6_radius_0,9.csv
Scan over maximum elementary-link length L_max. Range 0.9 <= L_max <= 1.5.

A plot of the data can be made using the included python script plot_csv_data_parameter_scan_on_random_geometric_graphs.py.
This is done by running
python plot_csv_data_parameter_scans_on_random_geometric_graphs.py scan_D-num_nodes_25_L_max_0,9_N_max_6_K_6_radius_0,9.csv --num_repeaters --connectivity
The resulting plots show the mean and standard deviation of the mean for the number of repeaters and connectivity respectively.
This requires pandas, numpy and matplotlib python packages to be installed.
Plots of the other data files can be made by adjusting the file name.
To plot only the number of repeaters, remove "--connectivity".
To plot only the connectivity, remove "--num_repeaters".
Note that this is not the script used to create the figures in the paper; it has just been added to make the data more accessible.


Computation-Time Scan
---------------------

There is one additional data file, called computation_times_data.csv.
This file contains the data used to create Figure 6 of the paper.
It contains data of performing a scan over the parameter num_nodes, i.e. the total number of nodes in the random network graph.
For each value of num_nodes (first column in the data, called "number of nodes"), it is reported how long it took to find a solution to the repeater-allocation problem using our method.
While the other data files contain data points on a per network graph basis, this data file only contains slightly further-processed data.
For each value of num_nodes, only the mean and standard deviation of the computation time over all random graphs are reported (calculated using the numpy python package).
All computation times are reported in seconds.
Additionally, the data also contains a column for the number of samples per value of num_nodes (this always has the value 100),
and the standard deviation of the mean (which is always the standard deviation devided by sqrt(number of samples) = 10).

