History of kangaroo
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] Move more KONECT-derived entries to their original sources bf9dc0e
The entries now download the data from where KONECT obtained them (live, or via the Wayback Machine), using the same release as KONECT where it is still available, and gain the metadata KONECT dropped; descriptions and citations are rewritten from the original sources: - Linton Freeman's UCINET data page: bible_nouns, bison, cattle, hens, highschool, kangaroo, macaques, moreno_sheep, physician_trust (the three relations and the physicians' attributes), rhesus_monkey, train_terrorists, windsurfers (now the networks `interaction` and `closeness`), college_freshmen, crime, interactome_yeast (from the primary source), moreno_taro (undirected), residence_hall, zebras - other pages, archived: contiguous_usa, advogato, google, github, digg_reply, twitter, bookcrossing, dbtropes_feature (without KONECT's spurious "ItemName" tropes) - movielens_100k (in fact the MovieLens 10M tag assignments) - dblp release 2017-05-02: dblp_author_paper, dblp_cite, dblp_coauthor - DBpedia 3.9: dbpedia_country, dbpedia_genre, dbpedia_location, dbpedia_occupation, dbpedia_producer, dbpedia_recordlabel, dbpedia_starring, dbpedia_team, dbpedia_writer, dbpedia_all, dbpedia_link - Discogs releases dump of October 2015: discogs_affiliation, discogs_genre and discogs_label (now with genre and style networks)
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index d5bb643..ebfb412 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__init__.py
@@ -18,22 +18,31 @@
from .. import *
-title = "Grey kangaroo dominance"
-description = """Dominance relations among a group of free-ranging grey kangaroos (Macropus giganteus). Edge weights represent the frequency of interaction. The two versions below are equivalent.[^icon]
-[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
-tags = ['Social', 'Animal', 'Weighted']
-url = 'http://konect.cc/networks/moreno_kangaroo'
-citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'https://doi.org/10.1016/s0003-3472(73)80004-1')]
+title = "Grey kangaroo associations (1973)"
+description = """Frequencies of observed physical proximity among 17 free-ranging grey kangaroos (Macropus giganteus) in the Nadgee Nature Reserve in New South Wales (Australia), from the study of dominance and association by T. R. Grant (1973). The original report included 18 kangaroos, but one (M11) was never observed and is not included. The animals comprise five females (F1 to F5) and 12 males (M1 to M13); F4, F5 and M2 are juveniles. Two dominance rankings are also given: `SS` is the ratio of the number of "successes" of an animal to its number of "involvements"; `PS` assigns an animal two points for each other animal it bests in more than 50% of their contacts, and one point for a tie. Since there were no contests between the sexes, except for the juvenile male M2, males and females are ranked separately, with M2 ranked among the females. The data were distributed by L. C. Freeman on his network data page at the University of California, Irvine (no longer online), from which this version was obtained via the Internet Archive.
+
+An undirected edge (i, j) indicates that kangaroos i and j were observed in proximity.
+
+The network has the following properties:
+
+- Nodes: `name`, the label of the kangaroo (F: female, M: male); `ss_rank` and `ps_rank`, the two dominance ranks described above; `diagonal`, the diagonal entry of the proximity matrix (its meaning is not documented).
+- Edges: `weight`, the number of observed proximities."""
+tags = ['Social', 'Animal', 'Weighted', 'Metadata']
+url = 'https://web.archive.org/web/20210115130726/http://moreno.ss.uci.edu/data.html#kangaroo'
+citation = [('T. R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'https://doi.org/10.1016/s0003-3472(73)80004-1')]
icon_hash = '573491a3461efe0c7a678322'
-upstream_prefix = 'http://konect.cc/files'
-files = [('download.tsv.moreno_kangaroo.tar.bz2', None, 'konect')]
+upstream_license = None
+upstream_prefix = 'https://web.archive.org/web/20210115130726id_/http://moreno.ss.uci.edu'
+files = [(('kangaroo.dat', 'kangaroo_ranks.dat'), None, None)]
def fetch_upstream(force=False):
- return fetch_upstream_files(__name__.split(".")[-1], upstream_prefix, files,
- force)
+ # The Wayback Machine refuses connections or fails when rate-limited, so
+ # retry with increasing pauses (files already fetched are skipped)
+ return retry_download(fetch_upstream_files, __name__.split(".")[-1],
+ upstream_prefix, files, force)
@cache_network()
-@coerce_props()
+@coerce_props(vforce={"name": "string"})
@annotate()
def parse(alts=None):
global files
@@ -44,6 +53,20 @@ def parse(alts=None):
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)
+ fs = [stack.enter_context(open_upstream_file(name, fn, "rb"))
+ for fn in fnames]
+ ds = [read_dl(f, pad=False) for f in fs]
+ d, dr = ds
+ A = d["data"][0].copy()
+ diag = numpy.diag(A).astype("int")
+ numpy.fill_diagonal(A, 0)
+ g = matrix_graph([A], False)
+ g.vp.name = g.new_vp("string", vals=d["rows"])
+ # the rows of the rank file are in a different order
+ idx = [dr["rows"].index(l) for l in d["rows"]]
+ R = dr["data"][0][idx].astype("int")
+ assert dr["cols"] == ["SS Rank", "PS Rank"]
+ g.vp.ss_rank = g.new_vp("int", vals=R[:, 0])
+ g.vp.ps_rank = g.new_vp("int", vals=R[:, 1])
+ g.vp.diagonal = g.new_vp("int", vals=diag)
yield alt, g
Update copyright information 73a4f0d
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index be2b602..d5bb643 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__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 3d288ea
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index 6dfa267..be2b602 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__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 8d005ae
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index 56a166a..6dfa267 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__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 db2efcc
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index ba5865b..56a166a 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__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
Un-orphan KONECT datasets 894eba5
KONECT has been brought back from the dead for the time being.
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index 80b1141..ba5865b 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__init__.py
@@ -26,7 +26,6 @@ url = 'http://konect.cc/networks/moreno_kangaroo'
citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'https://doi.org/10.1016/s0003-3472(73)80004-1')]
icon_hash = '573491a3461efe0c7a678322'
upstream_prefix = 'http://konect.cc/files'
-orphan = True
files = [('download.tsv.moreno_kangaroo.tar.bz2', None, 'konect')]
def fetch_upstream(force=False):
Update citations to use DOIs e878874
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index 4e6b1e3..80b1141 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__init__.py
@@ -23,7 +23,7 @@ description = """Dominance relations among a group of free-ranging grey kangaroo
[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
tags = ['Social', 'Animal', 'Weighted']
url = 'http://konect.cc/networks/moreno_kangaroo'
-citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'http://www.sciencedirect.com/science/article/pii/S0003347273800041')]
+citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'https://doi.org/10.1016/s0003-3472(73)80004-1')]
icon_hash = '573491a3461efe0c7a678322'
upstream_prefix = 'http://konect.cc/files'
orphan = True
Add support for 'orphan' datasets and tag konect entries e330b80
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index 9568f87..4e6b1e3 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__init__.py
@@ -26,6 +26,7 @@ url = 'http://konect.cc/networks/moreno_kangaroo'
citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'http://www.sciencedirect.com/science/article/pii/S0003347273800041')]
icon_hash = '573491a3461efe0c7a678322'
upstream_prefix = 'http://konect.cc/files'
+orphan = True
files = [('download.tsv.moreno_kangaroo.tar.bz2', None, 'konect')]
def fetch_upstream(force=False):
Change license from GPLv3 to AGPLv3 d754be5
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index baa0558..9568f87 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__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 1645314
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
index 90c7cbc..baa0558 100644
--- a/entries/kangaroo/__init__.py
+++ b/entries/kangaroo/__init__.py
@@ -19,7 +19,8 @@
from .. import *
title = "Grey kangaroo dominance"
-description = "Dominance relations among a group of free-ranging grey kangaroos (Macropus giganteus). Edge weights represent the frequency of interaction. The two versions below are equivalent."
+description = """Dominance relations among a group of free-ranging grey kangaroos (Macropus giganteus). Edge weights represent the frequency of interaction. The two versions below are equivalent.[^icon]
+[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
tags = ['Social', 'Animal', 'Weighted']
url = 'http://konect.cc/networks/moreno_kangaroo'
citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'http://www.sciencedirect.com/science/article/pii/S0003347273800041')]
Initial commit cc85872
diff --git a/entries/kangaroo/__init__.py b/entries/kangaroo/__init__.py
new file mode 100644
index 0000000..90c7cbc
--- /dev/null
+++ b/entries/kangaroo/__init__.py
@@ -0,0 +1,48 @@
+#! /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 = "Grey kangaroo dominance"
+description = "Dominance relations among a group of free-ranging grey kangaroos (Macropus giganteus). Edge weights represent the frequency of interaction. The two versions below are equivalent."
+tags = ['Social', 'Animal', 'Weighted']
+url = 'http://konect.cc/networks/moreno_kangaroo'
+citation = [('T.R. Grant. "Dominance and association among members of a captive and a free-ranging group of grey kangaroos (Macropus giganteus)." Animal Behaviour 21(3), 449-456, (1973)', 'http://www.sciencedirect.com/science/article/pii/S0003347273800041')]
+icon_hash = '573491a3461efe0c7a678322'
+upstream_prefix = 'http://konect.cc/files'
+files = [('download.tsv.moreno_kangaroo.tar.bz2', None, 'konect')]
+
+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