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

add entry: wiki_rfa

parent 42e10c0c
#! /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 = "Wikipedia RfA voting network (2013)"
description = "The set of all votes on Requests for Adminships (RfA), from 2003 to May 2013, represented as a directed, signed network in which nodes represent Wikipedia members and edges represent votes."
tags = ['Social', 'Relationships', 'Signed']
url = 'http://snap.stanford.edu/data/wiki-RfA.html'
citation = [('R. West, H. S. Paskov, J. Leskovec, and C. Potts, "Exploiting Social Network Structure for Person-to-Person Sentiment Analysis." Trans. of the Assoc. for Comp. Ling. 2, 297-310 (2014). arxiv:1409.2450', 'http://infolab.stanford.edu/~west1/pubs/West-Paskov-Leskovec-Potts_TACL-14.pdf')]
icon_hash = '56a85c8e26855e083a2f78c0'
ustream_license = None
upstream_prefix = 'https://snap.stanford.edu/data'
files = [('wiki-RfA.txt.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 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.vote = g.new_ep("string")
g.ep.result = g.new_ep("string")
g.ep.year = g.new_ep("string")
g.ep.date = g.new_ep("string")
g.ep.txt = g.new_ep("string")
def edges():
rec = {}
for line in fs[0]:
vals = line.split(":")
k = vals[0].strip()
v = ":".join(vals[1:])
rec[k] = v.strip()
if k == "TXT":
yield [rec[k] for k in ["SRC", "TGT", "VOT", "RES", "YEA", "DAT", "TXT"]]
g.vp.name = g.add_edge_list(edges(), hashed=True, hash_type="string",
eprops=[g.ep[k] for k in ["vote", "result",
"year", "date",
"txt"]])
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