This organization contains the code to reproduce the figures and the results of my PhD thesis titled "Robust Modelling of Internet Delay and Smart Monitoring Schemes for the Automation of Overlay Networks" (2020).
The datasets used can be downloaded on Zenodo. These datasets are compiled from public sources (CAIDA MANIC, RIPE Atlas).
Feel free to contact me if you have any questions; my main GitHub account is @maxmouchet and my email address is max@maxmouchet.com.
These repositories contains code and notebooks used to analyze datasets and perform simulations.
The tables and figures in my PhD thesis are generated in these repositories.
Repository | Language(s) | Tests | Coverage |
---|---|---|---|
LargeScaleAnalysis | Julia | ||
ModelComparison | Julia, Python | ||
ParsimoniousMonitoring | Julia | ||
Shao17 | Julia, Python, R |
These repositories contains libraries that can be re-used in other projects.
The Julia libraries are registered in the SmartMonitoringSchemes/Registry repository.
Repository | Language(s) | Tests | Coverage | Documentation |
---|---|---|---|---|
fetchmesh | Python | |||
HDPHMM.jl | Julia | See the tests | ||
ThesisTools | Julia, Python | N/A |
The minimal requirements for using the code provided in the repositories are as follow:
- Python 3.7+
- Julia 1.4+
- (Optional) IPython and IJulia, for running the notebooks
- (Optional) tikzplotlib for producing some of the plots
# Verify Python and Julia versions
pip --version # pip 20.1.1 from ... (python 3.7)
python --version # Python 3.7.6
julia --version # julia version 1.5.0
# Install the optional dependencies
pip install ipython jupyterlab tikzplotlib
julia -e 'using Pkg; Pkg.add("IJulia")'
In addition, the JuliaPOMDP/Registry and the SmartMonitoringSchemes/Registry registries are required:
# Run the following in a Julia REPL
using Pkg
pkg"registry add General"
pkg"registry add https://github.com/JuliaPOMDP/Registry"
pkg"registry add https://github.com/SmartMonitoringSchemes/Registry"
Analysis and simulations repositories follows a layout similar to this one:
data/ # Small, usually textual, input files. Larger files are stored on backup1.enstb.org.
figures/ # PDF figures
notebooks/ # Notebooks, where the plots and results are generated
plots/ # TikZ (LaTeX) figures
results/ # Results, usually CSV files
scripts/ # Scripts for long running computations
src/ # Code common to the notebooks and the scripts
test/ # Unit tests for the common code
# Clone the repository, for example with the Shao17 repository:
git clone git@github.com:SmartMonitoringSchemes/Shao17.git
cd Shao17/
# Instantiate the notebooks dependencies
julia --project=notebooks/ -e 'using Pkg; pkg"instantiate"'
# Run Jupyter
jupyter lab