History of slashdot_zoo_snap
The changes to the source code of this entry in the repository, newest first, each with the differences it made to the entry's files. They are also listed on GitLab.
[entries] Add the date when each entry was added, and remove icon_hash beff7c9
The dates are those of the commits that first added the entries' files (2020-08-11 for the entries of the initial commit); renamed entries keep the date of their first name. Changed: none
diff --git a/entries/slashdot_zoo_snap/__init__.py b/entries/slashdot_zoo_snap/__init__.py
index 1e76803..ff55c32 100644
--- a/entries/slashdot_zoo_snap/__init__.py
+++ b/entries/slashdot_zoo_snap/__init__.py
@@ -24,7 +24,7 @@ tags = ['Social', 'Online', 'Unweighted']
url = ['https://snap.stanford.edu/data/soc-Slashdot0811.html',
'https://snap.stanford.edu/data/soc-Slashdot0902.html']
citation = [('J. Leskovec, K. J. Lang, A. Dasgupta, M. W. Mahoney, "Community Structure in Large Networks: Natural Cluster Sizes and the Absence of Large Well-Defined Clusters." Internet Mathematics 6(1), 29-123 (2009)', 'https://doi.org/10.1080/15427951.2009.10129177')]
-icon_hash = '56a85c8e26855e083a2f795f'
+date_added = '2026-10-25'
upstream_license = None
upstream_prefix = 'https://snap.stanford.edu/data'
files = [('soc-Slashdot0811.txt.gz', '0811', 'snap'),
[entries] Remove unneeded code from the entries 2c69f19
Unneeded "global files" statements, unused imports and variables, f-strings without placeholders, duplicate keys in foodweb_little_rock (keeping the order and the values used), and the second definition of get_lines() in twitter_higgs. Nothing changes in the networks or descriptions. Changed: none
diff --git a/entries/slashdot_zoo_snap/__init__.py b/entries/slashdot_zoo_snap/__init__.py
index 6e6445e..1e76803 100644
--- a/entries/slashdot_zoo_snap/__init__.py
+++ b/entries/slashdot_zoo_snap/__init__.py
@@ -38,7 +38,6 @@ def fetch_upstream(force=False):
@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:
[entries] New entry: slashdot_zoo_snap 019a19d
diff --git a/entries/slashdot_zoo_snap/__init__.py b/entries/slashdot_zoo_snap/__init__.py
new file mode 100644
index 0000000..6e6445e
--- /dev/null
+++ b/entries/slashdot_zoo_snap/__init__.py
@@ -0,0 +1,51 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2020-2026 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 = "Slashdot Zoo social network (2008-2009)"
+description = """Two snapshots of the "Slashdot Zoo" of the technology news website Slashdot.org, a feature introduced in 2002 that allows users to tag each other as friends or foes, as distributed by SNAP and used by Leskovec, Lang, Dasgupta and Mahoney in their study of community structure in large networks. Nodes are users, and a directed edge from one user to another denotes a friend or foe tag (the type of tag is not included; see the `signed_social_media` entry for signed versions of the same network). The snapshots were obtained on November 6 2008 (`0811`) and in February 2009 (`0902`). As distributed, almost every node has a self-loop, and the node numbers are not consistent with those of the signed versions. Although `0811` and the signed network `slashdot081106` of `signed_social_media` are from the same date and have nearly the same number of nodes (77,360 and 77,357), their edge sets differ (about 905,000 and 517,000 edges), reflecting different processing."""
+tags = ['Social', 'Online', 'Unweighted']
+url = ['https://snap.stanford.edu/data/soc-Slashdot0811.html',
+ 'https://snap.stanford.edu/data/soc-Slashdot0902.html']
+citation = [('J. Leskovec, K. J. Lang, A. Dasgupta, M. W. Mahoney, "Community Structure in Large Networks: Natural Cluster Sizes and the Absence of Large Well-Defined Clusters." Internet Mathematics 6(1), 29-123 (2009)', 'https://doi.org/10.1080/15427951.2009.10129177')]
+icon_hash = '56a85c8e26855e083a2f795f'
+upstream_license = None
+upstream_prefix = 'https://snap.stanford.edu/data'
+files = [('soc-Slashdot0811.txt.gz', '0811', 'snap'),
+ ('soc-Slashdot0902.txt.gz', '0902', '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=True)
+ yield alt, g