Newer
Older
# Copyright (C) 2020-2024 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 Affero 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 Affero General Public License for more
# details.
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
from .. import *
title = "Skitter IP graph (2005)"
description = """An aggregate snapshot of the Internet Protocol (IP) graph, as measured by the traceroute tool on CAIDA's skitter infrastructure, in 2005.[^icon]
[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
tags = ['Technological', 'Communication', 'Unweighted']
url = 'http://snap.stanford.edu/data/as-skitter.html'
citation = [('"The CAIDA UCSD Macroscopic Skitter Topology Dataset"', 'https://www.caida.org/tools/measurement/skitter/')]
icon_hash = '57212e0e461efe0c7a6753b8'
ustream_license = None
upstream_prefix = 'https://snap.stanford.edu/data'
files = [('as-skitter.txt.gz', None, 'snap')]
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, "rb")) for fn in fnames]
g = parse_graph(fs, fmt, directed=False)
yield alt, g