Code

Spatially Embedded Random Networks (SERNS)

A SERN is a natural generalisation of a random network, taking into account that many physical networks are embedded in space, and longer links are more costly, and hence less likely.

We’ve been doing some work on SERNs for a little while. Here’s a few relevant links.

Reuleaux triangles

A Reuleaux triangle is the shape you get, starting from an equilateral triangle, and adding three circular arcs, drawn from each corner. It’s not actually a triangle, but what’s in a name?

The interesting thing is that a Reuleaux triangle is a shape of constant width. That means it can be used as a roller (but not a wheel). The animation below shows this – we can see that although the centre of the triangle moves up and down, the top surface of the rotating triangle is always level.

Rolling Reuleaux Triangle

Follow the link below to see more, get links to 3D printable versions, and Matlab code to play with it.

Open Computer Code

Links to code from projects or math topics.

  • conSERN: fast generation of Spatially Embedded Random Networks (SERNs).
  • mgtoolkit: a Python toolkit for Metagraphs.
  • LinePicking: code for solving the Line Picking problem.
  • AutoNetkit: Automated network configuration toolkit
  • Topology Zoo: a project to collect and transcribe data network topologies from around the world.
  • COLD: network topology synthesis.
  • SAIL: Statistically Accurate Internet Loss Measurements.
  • Roulette code is available from GitHub, or via the Zip file listed below.
  • latexFromExcel is a little tool to incorporate Excel table information into a LaTeX document flexibly. Its Perl – live the dream :) Or at least don’t complain – I’m not going to rewrite in Python.

I’m getting into Julia, which is cool. Here’s a few snippets resulting from my attempts to learn it

Sea Shells

There are a large variety of sea-shells (and land shells) that can be simply described by rotating a ellipse around a log-spiral that has been projected onto a cone. The image below was generated using this approach:


Roulettes

A Roulette is a curve derived by rolling one curve against another. In the image below, the blue point on the blue ellipse is rolled along a straight line (the x-axis) to generate the purple curve (which is called an undularly).

roulette

Included here is some Matlab code to generate roulette curves, with a fair degree of generality, but also showing how to generate specific instances such as cycloids, trochoids, the Cissoid of Dioclese, and the undularly and nodary.

COLD

The Combined Optimization and Layered Design (COLD) Algorithm is used to synthesise data network topologies.

It uses a Genetic Algorithm to optimise the PoP-level structure of a network, then uses Generalised Graph Products to synthesise a router level network.

AutoNetkit

AutoNetkit: Automated Network Configuration: Construct your network from a topology diagram, add protocols, automatically allocate IP addresses, and generate configuration files with templates. Deploy to emulated networks and measure the results, with live visual feedback of design and measurement steps. Go to the AutoNetkit page for more details.

SAIL

SAIL, short for Statistically Accurate Internet Loss Measurements, is a method for rigorous statistical analysis of packet-loss measurements. It uses algorithms from Hidden Semi-Markov Models to estimate the parameters of the underlying loss process from measurement traces, then computes the loss rate and its variance.

The method is designed to be light-weight: the main algorithms run in linear time in the number of measurement samples. This page collects the SAIL MATLAB implementation, usage notes, sample-data information, and related papers.