logo Netzschleuder network catalog, repository, and centrifuge

History of twitter_sample

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 by Tiago de Paula Peixoto 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/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 84b1e40..5365a9f 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -25,7 +25,7 @@ In the cited paper, the accounts of the network that were suspended by Twitter a
 tags = ['Social', 'Online', 'Unweighted']
 url = 'http://proj.ise.bgu.ac.il/sns/datasets.html'
 citation = [('D. Kagan, M. Fire, and Y. Elovici, "Unsupervised Anomalous Vertices Detection Utilizing Link Prediction Algorithms", Preprint, arXiv:1610.07525 (2017)', 'https://arxiv.org/abs/1610.07525')]
-icon_hash = '5b3ff17f10471f300af5092d'
+date_added = '2020-08-11'
 upstream_license = None
 upstream_prefix = 'http://proj.ise.bgu.ac.il/sns/datasets'
 files = [('twitter.csv.gz', None, None)]
[entries] Remove unneeded code from the entries by Tiago de Paula Peixoto 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/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 1d9fcc5..84b1e40 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__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 fname, alt, fmt in files:
         if alts is not None and alt not in alts:
[entries] Fix parse bugs and improve descriptions and metadata by Tiago de Paula Peixoto 6bb6851
- parse fixes from the review of the descriptions, e.g. us_patents
  (directed), celegans_2019 (synapse direction), ecoli_transcription and
  yeast_transcription (regulator to target), bitcoin (direction, phantom
  node), ego_social (Google+ features and circles), scotus_majority,
  arxiv_authors and social_location (as in SNAP), caida_as, dnc, dom,
  mist, reuters and bibsonomy (names on the right nodes), uci_zoo
- every description now states explicitly what the nodes and edges
  represent; corrected titles, years, tags, citations and licences
- the "Hypergraph" tag is removed; very large entries are marked
  `huge = True` (see --skip-huge)
- ICON ids of partial duplicates added (hiv_transmission, congress_bills,
  openflights, dutch_school)
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 52e80e9..1d9fcc5 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -19,13 +19,14 @@
 from .. import *
 
 title = "Twitter sample (2014)"
-description = """A sample of the Twitter follower network in 2012, obtained by crawling follower links outward breadth- or depth-first from an arbitrary set of seed profiles. Nodes are twitter accounts, and edges represent the directed following relationship.[^icon]
-[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
+description = """A sample of the Twitter social network, obtained by D. Kagan, M. Fire and Y. Elovici with a dedicated crawler of the Twitter API, which collected at most 1,000 friends and followers of each crawled profile. Nodes are Twitter accounts and directed edges represent following relationships between them. The network has 5,384,162 nodes and 16,011,444 edges. The year of the crawl is given as 2014 in the text and as 2012 in the dataset table of the cited paper. The upstream data do not document the direction of the edges, nor the crawling order (e.g. breadth-first) or seed profiles.
+
+In the cited paper, the accounts of the network that were suspended by Twitter about one year after the crawl were used as ground truth for anomalous (malicious) accounts. These labels are not included in the network, which has no node or edge properties."""
 tags = ['Social', 'Online', 'Unweighted']
-url = 'http://data4good.cs.washington.edu/index.html'
+url = 'http://proj.ise.bgu.ac.il/sns/datasets.html'
 citation = [('D. Kagan, M. Fire, and Y. Elovici, "Unsupervised Anomalous Vertices Detection Utilizing Link Prediction Algorithms", Preprint, arXiv:1610.07525 (2017)', 'https://arxiv.org/abs/1610.07525')]
 icon_hash = '5b3ff17f10471f300af5092d'
-ustream_license = None
+upstream_license = None
 upstream_prefix = 'http://proj.ise.bgu.ac.il/sns/datasets'
 files = [('twitter.csv.gz', None, None)]
 
Update copyright information by Tiago de Paula Peixoto 73a4f0d
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 27a656c..52e80e9 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2020-2024 Tiago de Paula Peixoto <tiago@skewed.de>
+# 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
Update copyright information by Tiago de Paula Peixoto 3d288ea
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index f0a9fcc..27a656c 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2020-2023 Tiago de Paula Peixoto <tiago@skewed.de>
+# 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
Update copyright information by Tiago de Paula Peixoto 8d005ae
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index fa9e1ca..f0a9fcc 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2021 Tiago de Paula Peixoto <tiago@skewed.de>
+# Copyright (C) 2020-2023 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
Update copyright info by Tiago de Paula Peixoto db2efcc
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 1aad4f4..fa9e1ca 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2020 Tiago de Paula Peixoto <tiago@skewed.de>
+# Copyright (C) 2021 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
Change license from GPLv3 to AGPLv3 by Tiago de Paula Peixoto d754be5
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 2550f50..1aad4f4 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -3,18 +3,18 @@
 #
 # 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 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 General Public License for more details.
+# 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 General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# 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 *
 
Add explicit attribution to descriptions obtained from ICON by Tiago de Paula Peixoto 1645314
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
index 7ff6d0b..2550f50 100644
--- a/entries/twitter_sample/__init__.py
+++ b/entries/twitter_sample/__init__.py
@@ -19,7 +19,8 @@
 from .. import *
 
 title = "Twitter sample (2014)"
-description = "A sample of the Twitter follower network in 2012, obtained by crawling follower links outward breadth- or depth-first from an arbitrary set of seed profiles. Nodes are twitter accounts, and edges represent the directed following relationship."
+description = """A sample of the Twitter follower network in 2012, obtained by crawling follower links outward breadth- or depth-first from an arbitrary set of seed profiles. Nodes are twitter accounts, and edges represent the directed following relationship.[^icon]
+[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
 tags = ['Social', 'Online', 'Unweighted']
 url = 'http://data4good.cs.washington.edu/index.html'
 citation = [('D. Kagan, M. Fire, and Y. Elovici, "Unsupervised Anomalous Vertices Detection Utilizing Link Prediction Algorithms", Preprint, arXiv:1610.07525 (2017)', 'https://arxiv.org/abs/1610.07525')]
Initial commit by Tiago de Paula Peixoto cc85872
diff --git a/entries/twitter_sample/__init__.py b/entries/twitter_sample/__init__.py
new file mode 100644
index 0000000..7ff6d0b
--- /dev/null
+++ b/entries/twitter_sample/__init__.py
@@ -0,0 +1,51 @@
+#! /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 = "Twitter sample (2014)"
+description = "A sample of the Twitter follower network in 2012, obtained by crawling follower links outward breadth- or depth-first from an arbitrary set of seed profiles. Nodes are twitter accounts, and edges represent the directed following relationship."
+tags = ['Social', 'Online', 'Unweighted']
+url = 'http://data4good.cs.washington.edu/index.html'
+citation = [('D. Kagan, M. Fire, and Y. Elovici, "Unsupervised Anomalous Vertices Detection Utilizing Link Prediction Algorithms", Preprint, arXiv:1610.07525 (2017)', 'https://arxiv.org/abs/1610.07525')]
+icon_hash = '5b3ff17f10471f300af5092d'
+ustream_license = None
+upstream_prefix = 'http://proj.ise.bgu.ac.il/sns/datasets'
+files = [('twitter.csv.gz', 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 fname, alt, fmt in files:
+        if alts is not None and alt not in alts:
+            continue
+        with open_upstream_file(name, fname, "r") as f:
+            g = Graph()
+            next(f)
+            def get_lines():
+                for line in f:
+                    yield [int(x) - 1 for x in line.split(",")]
+            g.add_edge_list(get_lines(), hashed=False)
+        yield alt, g