Commit c6c31faa authored by Tiago Peixoto's avatar Tiago Peixoto
Browse files

Add entry: packet_delays

parent 6e1ef216
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 Tiago de Paula Peixoto <tiago@skewed.de>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from .. import *
title = "Internet packet delays (2002)"
description = "A network representing the difference in delay observed by packet probes sent from a computer at Rice University to similar machines at different universities, in c.2002. The edge weight denotes the difference in delay of the packet in milliseconds."
tags = ['Technological', 'Communication', 'Weighted']
url = 'http://math.bu.edu/people/kolaczyk/datasets.html'
citation = [('M. Coates et al., "Maximum likelihood network topology identification from edge-based unicast measurements." ACM SIGMETRICS Performance Evaluation Review 30(1), 11-20 (2002)', 'http://dl.acm.org/citation.cfm?id=511337')]
icon_hash = '59233c5462da63251188ee8c'
ustream_license = None
upstream_prefix = 'http://math.bu.edu/people/kolaczyk/datasets'
files = [('packet_delay.zip:FBR1output.delay', None, None)]
def fetch_upstream(force=False):
return fetch_upstream_files(__name__.split(".")[-1], upstream_prefix, files,
force)
@cache_network()
@coerce_props()
@annotate()
def parse(alts=None):
global files
name = __name__.split(".")[-1]
for fnames, alt, fmt in files:
if alts is not None and alt not in alts:
continue
if isinstance(fnames, str):
fnames = [fnames]
with ExitStack() as stack:
fs = [stack.enter_context(open_upstream_file(name, fn, "r")) for fn in fnames]
g = Graph()
g.ep.delay = g.new_ep("int")
def edges():
for line in fs[0]:
vals = [int(x) for x in line.split()]
yield vals[1:3] + vals[:1]
g.vp.name = g.add_edge_list(edges(), hashed=True, hash_type="int",
eprops=[g.ep.delay])
g = Graph(g, vorder=g.vp.name)
yield alt, g
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment