History of email_eu_core_temporal
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/email_eu_core_temporal/__init__.py b/entries/email_eu_core_temporal/__init__.py
index 9c39a54..0677467 100644
--- a/entries/email_eu_core_temporal/__init__.py
+++ b/entries/email_eu_core_temporal/__init__.py
@@ -36,7 +36,7 @@ The networks have the following properties:
tags = ['Social', 'Communication', 'Multigraph', 'Timestamps', 'Unweighted']
url = ['https://snap.stanford.edu/data/email-Eu-core-temporal.html']
citation = [('A. Paranjape, A. R. Benson, and J. Leskovec, "Motifs in Temporal Networks." Proceedings of the Tenth ACM International Conference on Web Search and Data Mining (WSDM), 601-610 (2017).', 'https://doi.org/10.1145/3018661.3018731')]
-icon_hash = None
+date_added = '2026-10-27'
upstream_license = None
upstream_prefix = 'https://snap.stanford.edu/data'
files = [('email-Eu-core-temporal.txt.gz', 'all', None)]
[entries] Prefix the properties in the descriptions with (Node), (Edge) or (Graph) bc3dbbd
The lists of properties at the end of the descriptions marked edge properties with "Edge" but left node properties unmarked, or grouped them in "Nodes: `a`, ...; `b`, ..." items, so the kind of a property was often unclear. Every item now starts with (Node), (Edge) or (Graph), followed by the property names, a colon and the explanation, one item per property or group of properties; qualifications (kinds of nodes, networks) follow the names in parentheses. Properties that were only named got a short explanation, and a few items that named the wrong kind of property were corrected.
diff --git a/entries/email_eu_core_temporal/__init__.py b/entries/email_eu_core_temporal/__init__.py
index 34e7e12..9c39a54 100644
--- a/entries/email_eu_core_temporal/__init__.py
+++ b/entries/email_eu_core_temporal/__init__.py
@@ -31,8 +31,8 @@ The node identifiers differ between the networks, and from those of the `email-E
The networks have the following properties:
-- `member_id`: the anonymized identifier of the member in the source data.
-- Edge `time`: the time the email was sent, in seconds since the beginning of the data (the absolute dates are not given)."""
+- (Node) `member_id`: the anonymized identifier of the member in the source data.
+- (Edge) `time`: the time the email was sent, in seconds since the beginning of the data (the absolute dates are not given)."""
tags = ['Social', 'Communication', 'Multigraph', 'Timestamps', 'Unweighted']
url = ['https://snap.stanford.edu/data/email-Eu-core-temporal.html']
citation = [('A. Paranjape, A. R. Benson, and J. Leskovec, "Motifs in Temporal Networks." Proceedings of the Tenth ACM International Conference on Web Search and Data Mining (WSDM), 601-610 (2017).', 'https://doi.org/10.1145/3018661.3018731')]
[entries] New entry: email_eu_core_temporal 2a80976
diff --git a/entries/email_eu_core_temporal/__init__.py b/entries/email_eu_core_temporal/__init__.py
new file mode 100644
index 0000000..34e7e12
--- /dev/null
+++ b/entries/email_eu_core_temporal/__init__.py
@@ -0,0 +1,63 @@
+#! /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 = "Emails at a European research institution, temporal (2003-2005)"
+description = r"""Directed temporal networks of the emails exchanged between members of a large European research institution over 803 days, from the anonymized email records underlying the SNAP `email-Eu-core` network, distributed by SNAP as `email-Eu-core-temporal` (Paranjape, Benson and Leskovec). Messages to or from people outside the institution are not included. Nodes are members of the institution, and an edge $(u, v, t)$ means that member $u$ sent an email to member $v$ at time $t$; an email with several recipients gives one edge per recipient. Repeated emails between the same members are separate edges (a multigraph).
+
+There are five networks:
+
+- `all`: the emails among all 986 members (the largest weakly connected component of the `email-Eu-core` network);
+- `dept1`, `dept2`, `dept3`, `dept4`: the emails among the members of four departments of the institution.
+
+The node identifiers differ between the networks, and from those of the `email-Eu-core` network and of the entry `email_eu_core` (the same records, as a bipartite network of emails and members, with the departments of all members), so that the members cannot be matched across them.
+
+The networks have the following properties:
+
+- `member_id`: the anonymized identifier of the member in the source data.
+- Edge `time`: the time the email was sent, in seconds since the beginning of the data (the absolute dates are not given)."""
+tags = ['Social', 'Communication', 'Multigraph', 'Timestamps', 'Unweighted']
+url = ['https://snap.stanford.edu/data/email-Eu-core-temporal.html']
+citation = [('A. Paranjape, A. R. Benson, and J. Leskovec, "Motifs in Temporal Networks." Proceedings of the Tenth ACM International Conference on Web Search and Data Mining (WSDM), 601-610 (2017).', 'https://doi.org/10.1145/3018661.3018731')]
+icon_hash = None
+upstream_license = None
+upstream_prefix = 'https://snap.stanford.edu/data'
+files = [('email-Eu-core-temporal.txt.gz', 'all', None)]
+files += [(f'email-Eu-core-temporal-Dept{i}.txt.gz', f'dept{i}', None) for i in range(1, 5)]
+
+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):
+ name = __name__.split(".")[-1]
+ for fname, alt, fmt in files:
+ if alts is not None and alt not in alts:
+ continue
+ with open_upstream_file(name, fname, "rb") as f:
+ E = numpy.loadtxt(f, dtype="int64", ndmin=2)
+ assert E.shape[1] == 3
+ g = Graph(directed=True)
+ g.ep.time = g.new_ep("int64_t")
+ g.vp.member_id = g.add_edge_list(E, hashed=True, eprops=[g.ep.time])
+ yield alt, g