logo Netzschleuder network catalog, repository, and centrifuge

History of mangal

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] New entry: mangal by Tiago de Paula Peixoto 477f0fd
diff --git a/entries/mangal/__init__.py b/entries/mangal/__init__.py
new file mode 100644
index 0000000..ef3a357
--- /dev/null
+++ b/entries/mangal/__init__.py
@@ -0,0 +1,814 @@
+#! /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 *
+from collections import defaultdict
+
+title = "Mangal ecological interaction networks"
+description = """A collection of ecological interaction networks from Mangal, a database and web service of ecological networks developed by Poisot, Gravel and colleagues (Poisot et al. 2016). Mangal gathers published networks of interactions between organisms, such as food webs (predation, herbivory, detritivory, scavenging), plant-pollinator and seed-dispersal networks (mutualism), and host-parasite networks, from many sources (most of them digitized from the literature, some of them from other collections such as the Interaction Web Database), and describes them in a common format, with the taxa of the nodes matched to taxonomic databases. Each Mangal network is a network of this entry (1,481 networks), named as in Mangal; they come from 175 data sets, and a data set can contain many networks, e.g. one per site or sampling date (e.g. the 783 small host-parasitoid networks of `kolpelke_2007`).
+
+Nodes are taxa (species or higher taxonomic groups), populations or individuals, as given by the authors, and edges are interactions between them. An interaction can be directed (with the direction recorded in Mangal), undirected, or of unknown direction; a network is directed if any of its interactions is directed. Interactions have a type (e.g. `predation`, `mutualism`, `herbivory`, `parasitism`) and a value with an attribute that says what the value measures: most are `presence/absence` (value 1), and the others are, e.g., numbers of visits of pollinators, frequencies or diet fractions (some networks are therefore weighted). The 180 interactions recorded as absent (`presence/absence` with value 0, in four networks of `rejmanek_stary_1979`) are left out, as are the six networks of `kolpelke_2007` that have no interactions at all. The data were retrieved from the Mangal web service (API version 2) in October 2026; the latest records of the database date from November 2021.
+
+Many of these networks are also part of the entries `iwdb` and `web_of_life`, from other collections.
+
+The networks have the following properties:
+
+- `name`: the name of the node as given by the original authors; `node_id`: the Mangal node id; `node_level`: whether the node is a `taxon`, a `population` or an `individual`; `taxon`: the name of the taxon matched in Mangal (empty if not matched); `rank`: its taxonomic rank (e.g. `species`, `genus`); `ncbi`, `tsn`, `gbif`, `eol`, `bold`: its identifiers in the NCBI Taxonomy, ITIS, GBIF, the Encyclopedia of Life and BOLD (-1 if unknown); `col`: its identifier in the Catalogue of Life.
+- Edge `interaction_id`: the Mangal interaction id; `type`: the type of interaction; `method`: the method by which the interaction was recorded (e.g. `field observations`, `gut content`, `literature`); `direction`: `directed`, `undirected` or `unknown`; `attribute`: what the value measures (e.g. `presence/absence`, `number of visit by a pollinator`); `value`: the value of the interaction (NaN if not given); `date`: the date of the observation (as given in Mangal; often the date of the whole network).
+- Network properties: `network_id`, `network_description` and `network_date`: the id, description and date of the Mangal network; `geometry`: its location, as a GeoJSON point or polygon (longitude, latitude), if known; `all_interactions`: whether absences of interactions were recorded as well; `dataset` and `dataset_description`: the Mangal data set it belongs to; `reference_doi`, `reference_bibtex`: the reference of the original publication; `data_url`: the address of the original data, if any."""
+tags = ['Biological', 'Food web', 'Unweighted', 'Weighted', 'Metadata']
+url = 'https://mangal.io/'
+citation = [('T. Poisot, B. Baiser, J. A. Dunne, S. Kéfi, F. Massol, N. Mouquet, T. N. Romanuk, D. B. Stouffer, S. A. Wood, D. Gravel, "mangal - making ecological network analysis simple." Ecography 39, 384-390 (2016)',
+             'https://doi.org/10.1111/ecog.00976')]
+icon_hash = None
+upstream_license = None
+
+# The data are served by the REST API of Mangal, read in pages of 5000
+# records sorted by id; the numbers of records (as of October 2026) are
+# pinned, and checked when parsing.
+api = 'https://mangal.io/api/v2'
+page_size = 5000
+totals = {'network': 1487, 'dataset': 175, 'reference': 175, 'node': 39939,
+          'interaction': 145989}
+
+def _pages(kind):
+    return [(f'{kind}_{p:03d}.json',
+             f'{api}/{kind}?count={page_size}&page={p}&sort=id&order=asc')
+            for p in range((totals[kind] + page_size - 1) // page_size)]
+
+upstream_urls = dict(p for kind in totals for p in _pages(kind))
+
+# The names of the networks, sorted by their Mangal ids
+networks = [
+    'howking_1968_19680601_12', 'witt_1998_19980101_13',
+    'silva_2002_20000301_15', 'mosquin_martin_1967_19650731_18',
+    'roberson_1929_18990701_19', 'kaehler_et_al_2005_20020401_23',
+    'woodwell_1967_19670101_26', 'barret_helenurm_1987_19870101_27',
+    'copeland_1974_19740101_28', 'kemp_1977_19770101_80',
+    'bradstreet_1982_19780101_81', 'patten_1979_19780101_82',
+    'clarke_1967_19650831_83', 'van_es_1967_19750101_84',
+    'macginitie_1935_19260601_85', 'zetina_2003_20030101_86',
+    'cruz_2007_20070101_87', 'lancraft_1991_19880620_88',
+    'lin_2006_20060101_89', 'torres_2013_20130101_91',
+    'yodzis_1998_19980101_92', 'kremer_1978_19780101_93',
+    'rosenthal_1974_19670901_94', 'peterson_1979_19721001_95',
+    'gontikaki_2011_20070501_96', 'christian_1999_19940101_97',
+    'hiatt_1960_19601001_98', 'landry_1977_19770101_99',
+    'mackintosh_1967_19450101_100', 'qazim_1970_19700101_101',
+    'knox_1970_19700101_102', 'parin_1970_19700101_103',
+    'hogetsu_1979_19790101_889', 'hatanaka_1977_19770101_890',
+    'thompson_2004_20040101_893', 'petipa_1970_19700101_906',
+    'petipa_1970_19700101_907', 'lundgren_olesen_2005_20020804_908',
+    'elberling_olesen_1999_19940823_909', 'brodeur_1992_19810501_918',
+    'brodeur_1992_19820501_919', 'brodeur_1992_19830501_920',
+    'brodeur_1992_19840601_921', 'saldanha_1980_19800101_922',
+    'day_1967_19670101_924', 'yanez_1978_19730901_926',
+    'yanez_1978_19730901_927', 'varassin_sazima_2012_20010601_928',
+    'bezerra_2009_20061201_929', 'smith_2007_20070101_930',
+    'frost_1980_19800101_931', 'olesen_al_2002_19990601_934',
+    'olesen_al_2002_20000701_935', 'percival_1974_19740101_938',
+    'fautin_1993_19930101_939', 'mccullen_1993_19930101_940',
+    'milne_1972_19720101_942', 'milne_1972_19720101_943',
+    'wheelwringht_1984_19780101_944', 'motten_1982_19820101_945',
+    'elberling_olesen__946', 'johnston_1956_19560101_947',
+    'kato_1993_19910901_948', 'arroyo_1982_19810301_949',
+    'arroyo_1982_19810301_950', 'arroyo_1982_19810301_951',
+    'kohler_2011_20110101_952', 'kohler_2011_20110101_953',
+    'kohler_2011_20110101_954', 'olesen__955', 'hadfield_2014_20140201_1007',
+    'hadfield_2014_20140201_1008', 'hadfield_2014_20140201_1009',
+    'hadfield_2014_20140201_1010', 'hadfield_2014_20140201_1011',
+    'hadfield_2014_20140201_1012', 'hadfield_2014_20140201_1013',
+    'hadfield_2014_20140201_1014', 'hadfield_2014_20140201_1015',
+    'hadfield_2014_20140201_1016', 'hadfield_2014_20140201_1017',
+    'hadfield_2014_20140201_1018', 'hadfield_2014_20140201_1019',
+    'hadfield_2014_20140201_1020', 'dunbar_1953_19530101_1021',
+    'hadfield_2014_20140201_1022', 'hadfield_2014_20140201_1023',
+    'hadfield_2014_20140201_1024', 'hadfield_2014_20140201_1025',
+    'hadfield_2014_20140201_1026', 'hadfield_2014_20140201_1027',
+    'hadfield_2014_20140201_1028', 'hadfield_2014_20140201_1029',
+    'hadfield_2014_20140201_1030', 'hadfield_2014_20140201_1031',
+    'hadfield_2014_20140201_1032', 'hadfield_2014_20140201_1033',
+    'hadfield_2014_20140201_1034', 'hadfield_2014_20140201_1035',
+    'hadfield_2014_20140201_1036', 'hadfield_2014_20140201_1037',
+    'hadfield_2014_20140201_1038', 'hadfield_2014_20140201_1044',
+    'hadfield_2014_20140201_1045', 'hadfield_2014_20140201_1046',
+    'hadfield_2014_20140201_1047', 'hadfield_2014_20140201_1048',
+    'hadfield_2014_20140201_1049', 'hadfield_2014_20140201_1050',
+    'hadfield_2014_20140201_1051', 'hadfield_2014_20140201_1052',
+    'hadfield_2014_20140201_1053', 'hadfield_2014_20140201_1054',
+    'hadfield_2014_20140201_1055', 'hadfield_2014_20140201_1056',
+    'hadfield_2014_20140201_1057', 'hadfield_2014_20140201_1058',
+    'hadfield_2014_20140201_1059', 'hadfield_2014_20140201_1060',
+    'hadfield_2014_20140201_1061', 'hadfield_2014_20140201_1062',
+    'hadfield_2014_20140201_1063', 'baeta_2011_19930101_1064',
+    'baeta_2011_19990101_1065', 'baeta_2011_20010101_1066',
+    'baeta_2011_19930101_1067', 'baeta_2011_19990101_1068',
+    'baeta_2011_20010101_1069', 'ricciardi_2010_20060701_1070',
+    'ricciardi_2010_20060701_1071', 'ricciardi_2010_20060701_1072',
+    'ricciardi_2010_20060701_1073', 'ricciardi_2010_20060701_1074',
+    'ricciardi_2010_20060701_1075', 'ricciardi_2010_20060701_1076',
+    'ricciardi_2010_20060701_1077', 'ricciardi_2010_20060701_1078',
+    'ricciardi_2010_20060701_1079', 'ricciardi_2010_20060701_1080',
+    'ricciardi_2010_20060701_1081', 'ricciardi_2010_20060701_1082',
+    'ricciardi_2010_20060701_1083', 'ricciardi_2010_20060701_1084',
+    'ricciardi_2010_20060701_1085', 'closs_1994_19850501_1089',
+    'closs_1994_19850501_1090', 'closs_1994_19850501_1091',
+    'closs_1994_19850901_1092', 'closs_1994_19850901_1093',
+    'closs_1994_19850901_1094', 'closs_1994_19851201_1095',
+    'closs_1994_19851201_1096', 'closs_1994_19851201_1097',
+    'closs_1994_19860301_1098', 'closs_1994_19860301_1099',
+    'closs_1994_19860301_1100', 'angelini_2010_20100601_1101',
+    'bulman_2001_19930701_1102', 'cornejo-donoso_2008_20080101_1103',
+    'dexter_1947_19330601_1104', 'dexter_1947_19330601_1105',
+    'dexter_1947_19330601_1106', 'dexter_1947_19330601_1107',
+    'dexter_1947_19330601_1108', 'douglas_2011_20050421_1112',
+    'douglas_2011_20060519_1113', 'douglas_2011_20060821_1114',
+    'filgueira_2011_20000201_1115', 'havens_1992_19840601_1216',
+    'havens_1992_19840601_1217', 'havens_1992_19840601_1218',
+    'havens_1992_19840601_1219', 'havens_1992_19840601_1220',
+    'havens_1992_19840601_1221', 'havens_1992_19840601_1222',
+    'havens_1992_19840601_1223', 'havens_1992_19840601_1224',
+    'havens_1992_19840601_1225', 'havens_1992_19840601_1226',
+    'havens_1992_19840601_1227', 'havens_1992_19840601_1228',
+    'havens_1992_19840601_1229', 'havens_1992_19840601_1230',
+    'havens_1992_19840601_1231', 'havens_1992_19840601_1232',
+    'havens_1992_19840601_1233', 'havens_1992_19840601_1234',
+    'havens_1992_19840601_1235', 'havens_1992_19840601_1236',
+    'havens_1992_19840601_1237', 'havens_1992_19840601_1238',
+    'havens_1992_19840601_1239', 'havens_1992_19840601_1240',
+    'havens_1992_19840601_1241', 'havens_1992_19840601_1242',
+    'havens_1992_19840601_1243', 'havens_1992_19840601_1244',
+    'havens_1992_19840601_1245', 'havens_1992_19840601_1246',
+    'havens_1992_19840601_1247', 'havens_1992_19840601_1248',
+    'havens_1992_19840601_1249', 'havens_1992_19840601_1250',
+    'havens_1992_19840601_1251', 'havens_1992_19840601_1252',
+    'havens_1992_19840601_1253', 'havens_1992_19840601_1254',
+    'havens_1992_19840601_1255', 'havens_1992_19840601_1256',
+    'havens_1992_19840601_1257', 'havens_1992_19840601_1258',
+    'havens_1992_19840601_1259', 'havens_1992_19840601_1260',
+    'havens_1992_19840601_1261', 'havens_1992_19840601_1262',
+    'havens_1992_19840601_1263', 'havens_1992_19840601_1264',
+    'havens_1992_19840601_1265', 'odum_1975_19750101_1268',
+    'shushkina_1979_19790101_1280', 'simenstad_1978_19690101_1281',
+    'simenstad_1978_19690101_1282', 'vinogradov_1978_19740114_1284',
+    'ponisio_2017_20060101_1285', 'ponisio_2017_20070101_1286',
+    'ponisio_2017_20080101_1287', 'ponisio_2017_20090101_1288',
+    'ponisio_2017_20110101_1289', 'ponisio_2017_20120101_1290',
+    'ponisio_2017_20130101_1291', 'ponisio_2017_20140101_1292',
+    'ponisio_2017_20090101_1293', 'ponisio_2017_20100101_1294',
+    'ponisio_2017_20120101_1295', 'ponisio_2017_20130101_1296',
+    'ponisio_2017_20140101_1297', 'ponisio_2017_20070101_1298',
+    'ponisio_2017_20080101_1299', 'ponisio_2017_20090101_1300',
+    'ponisio_2017_20110101_1301', 'ponisio_2017_20120101_1302',
+    'ponisio_2017_20130101_1303', 'ponisio_2017_20140101_1304',
+    'ponisio_2017_20060101_1305', 'ponisio_2017_20070101_1306',
+    'ponisio_2017_20080101_1307', 'ponisio_2017_20090101_1308',
+    'ponisio_2017_20110101_1309', 'ponisio_2017_20120101_1310',
+    'ponisio_2017_20130101_1311', 'ponisio_2017_20140101_1312',
+    'ponisio_2017_20070101_1313', 'ponisio_2017_20080101_1314',
+    'ponisio_2017_20090101_1315', 'ponisio_2017_20110101_1316',
+    'ponisio_2017_20120101_1317', 'ponisio_2017_20130101_1318',
+    'ponisio_2017_20140101_1319', 'ponisio_2017_20060101_1320',
+    'ponisio_2017_20070101_1321', 'ponisio_2017_20080101_1322',
+    'ponisio_2017_20090101_1323', 'ponisio_2017_20110101_1324',
+    'ponisio_2017_20120101_1325', 'ponisio_2017_20130101_1326',
+    'ponisio_2017_20140101_1327', 'ponisio_2017_20080101_1328',
+    'ponisio_2017_20090101_1329', 'ponisio_2017_20100101_1330',
+    'ponisio_2017_20110101_1331', 'ponisio_2017_20120101_1332',
+    'ponisio_2017_20130101_1333', 'ponisio_2017_20140101_1334',
+    'ponisio_2017_20070101_1335', 'ponisio_2017_20080101_1336',
+    'ponisio_2017_20090101_1337', 'ponisio_2017_20110101_1338',
+    'ponisio_2017_20120101_1339', 'ponisio_2017_20130101_1340',
+    'ponisio_2017_20140101_1341', 'ponisio_2017_20060101_1342',
+    'ponisio_2017_20070101_1343', 'ponisio_2017_20080101_1344',
+    'ponisio_2017_20090101_1345', 'ponisio_2017_20110101_1346',
+    'ponisio_2017_20130101_1347', 'ponisio_2017_20140101_1348',
+    'ponisio_2017_20090101_1349', 'ponisio_2017_20110101_1350',
+    'ponisio_2017_20120101_1351', 'ponisio_2017_20130101_1352',
+    'ponisio_2017_20140101_1353', 'ponisio_2017_20070101_1354',
+    'ponisio_2017_20080101_1355', 'ponisio_2017_20090101_1356',
+    'ponisio_2017_20110101_1357', 'ponisio_2017_20120101_1358',
+    'ponisio_2017_20130101_1359', 'ponisio_2017_20140101_1360',
+    'ponisio_2017_20090101_1361', 'ponisio_2017_20100101_1362',
+    'ponisio_2017_20120101_1363', 'ponisio_2017_20130101_1364',
+    'ponisio_2017_20140101_1365', 'ponisio_2017_20070101_1366',
+    'ponisio_2017_20080101_1367', 'ponisio_2017_20090101_1368',
+    'ponisio_2017_20110101_1369', 'ponisio_2017_20120101_1370',
+    'ponisio_2017_20130101_1371', 'ponisio_2017_20060101_1372',
+    'ponisio_2017_20070101_1373', 'ponisio_2017_20080101_1374',
+    'ponisio_2017_20090101_1375', 'ponisio_2017_20110101_1376',
+    'ponisio_2017_20120101_1377', 'ponisio_2017_20130101_1378',
+    'ponisio_2017_20140101_1379', 'ponisio_2017_20100101_1380',
+    'ponisio_2017_20110101_1381', 'ponisio_2017_20120101_1382',
+    'ponisio_2017_20130101_1383', 'ponisio_2017_20140101_1384',
+    'ponisio_2017_20090101_1385', 'ponisio_2017_20100101_1386',
+    'ponisio_2017_20110101_1387', 'ponisio_2017_20120101_1388',
+    'ponisio_2017_20130101_1389', 'ponisio_2017_20140101_1390',
+    'ponisio_2017_20070101_1391', 'ponisio_2017_20080101_1392',
+    'ponisio_2017_20090101_1393', 'ponisio_2017_20110101_1394',
+    'ponisio_2017_20120101_1395', 'ponisio_2017_20130101_1396',
+    'ponisio_2017_20140101_1402', 'ponisio_2017_20070101_1403',
+    'ponisio_2017_20080101_1404', 'ponisio_2017_20090101_1405',
+    'ponisio_2017_20110101_1406', 'ponisio_2017_20120101_1407',
+    'ponisio_2017_20130101_1408', 'ponisio_2017_20140101_1409',
+    'ponisio_2017_20090101_1410', 'ponisio_2017_20110101_1411',
+    'ponisio_2017_20120101_1412', 'ponisio_2017_20130101_1413',
+    'ponisio_2017_20140101_1414', 'ponisio_2017_20060101_1415',
+    'ponisio_2017_20070101_1416', 'ponisio_2017_20080101_1417',
+    'ponisio_2017_20090101_1418', 'ponisio_2017_20110101_1419',
+    'ponisio_2017_20120101_1420', 'ponisio_2017_20130101_1421',
+    'ponisio_2017_20140101_1422', 'ponisio_2017_20060101_1423',
+    'ponisio_2017_20070101_1424', 'ponisio_2017_20080101_1425',
+    'ponisio_2017_20090101_1426', 'ponisio_2017_20110101_1427',
+    'ponisio_2017_20120101_1428', 'ponisio_2017_20130101_1429',
+    'ponisio_2017_20140101_1430', 'alcorlo_et_al_2001_19941101_1439',
+    'alcorlo_et_al_2001_19941101_1440', 'alcorlo_et_al_2001_19960101_1441',
+    'alcorlo_et_al_2001_19960101_1442', 'allan_1982_19750708_1443',
+    'angelini_agostinho_2005_19920101_1444',
+    'angelini_et_al_2006_19880101_1446', 'angelini_et_al_2006_19830101_1447',
+    'angelini_et_al_2010_20030501_1448', 'beaver_1985__1449',
+    'beaver_1985__1450', 'beaver_1985__1451', 'beaver_1985__1452',
+    'beaver_1985__1453', 'bird_1930_19280101_1454', 'bird_1930_19280101_1455',
+    'bird_1930_19280101_1456', 'bird_1930_19280101_1457',
+    'carlson_1968_19600614_1458', 'collins_et_al_1976_19720711_1459',
+    'cornaby_1974_19680208_1460', 'cornaby_1974_19680229_1461',
+    'cruz_escalona_et_al_2007_19910101_1462', 'edwards_1982_19780501_1463',
+    'fetahi_et_al_2011_20071001_1464', 'fryer_1959_19550101_1465',
+    'fryer_1959_19550101_1466', 'fryer_1959_19550101_1467',
+    'gaedke_straile_1994_19870323_1468', 'hampton_et_al_2011_20040601_1469',
+    'hildrew_et_al_1985_19740401_1470', 'jiron_cartin_1981_19770101_1471',
+    'jones_1949_19480324_1472', 'liu_et_al_2007_20040101_1473',
+    'hopkins_et_al_1993_19830101_1474', 'massana_et_al_1996_19900101_1475',
+    'menge_et_al_1986_19770101_1476', 'menge_sutherland_1976_19730311_1477',
+    'menge_sutherland_1976_19730311_1478',
+    'menge_sutherland_1976_19730311_1479',
+    'menge_sutherland_1976_19730311_1480', 'mninshall_1967_19630401_1481',
+    'mohr_1943_19301001_1482', 'morgan_mclusky_1972_19710101_1483',
+    'niering_1963_19540622_1484', 'nybakken_2001__1485', 'paine_19630601_1486',
+    'paine_19630601_1487', 'rayner_et_al_2010_20040401_1488',
+    'rejmanek_stary_1979_19790726_1489', 'rejmanek_stary_1979_19790726_1490',
+    'rejmanek_stary_1979_19790726_1491', 'rejmanek_stary_1979_19790726_1492',
+    'robinson_1953_19480101_1493', 'savely_1939_19360901_1494',
+    'savely_1939_19360901_1495', 'savely_1939_19360901_1496',
+    'savely_1939_19360901_1497', 'schneider_1997_19850101_1498',
+    'schoenly_1983_19810601_1499', 'seifert_1976a_19700701_1500',
+    'seifert_1976a_19700701_1501', 'seifert_1979_19760201_1502',
+    'summerhayes_1928__1504', 'tilly_1968_19610701_1505',
+    'twomey_1945_19341101_1506', 'valiela_1974_19660527_1507',
+    'valiela_1974_19660527_1508', 'whittaker_1984', 'zaret_paine_1973',
+    'ferozkhan_panikkar_2009', 'marshall_1982', 'glynn_1965', 'minckley_1963',
+    'briand_1985', 'koslucher_minshall_1973', 'patten_et_al_1975',
+    'hurlbert_et_al_1972', 'hartley_1948', 'brown_1964', 'larsson_et_al_1978',
+    'wilbur_1972', 'jones_1950', 'hewatt_1937', 'parker_huryn_2006_1',
+    'parker_huryn_2006_2', 'parker_huryn_2006_3', 'parker_huryn_2006_4',
+    'motta_uieda_2005', 'jones_1949_2', 'cummins_et_al_1966', 'kuusela_1979',
+    'askew_1975', 'warren_1989', 'mckinnerney_1978_1', 'mckinnerney_1978_2',
+    'mckinnerney_1978_3', 'mckinnerney_1978_4', 'mckinnerney_1978_5',
+    'mckinnerney_1978_6', 'hawkins_goeden_1984_1', 'hawkins_goeden_1984_2',
+    'hawkins_goeden_1984_3', 'hawkins_goeden_1984_4', 'hawkins_goeden_1984_5',
+    'hawkins_goeden_1984_6', 'hawkins_goeden_1984_7', 'hawkins_goeden_1984_8',
+    'hawkins_goeden_1984_9', 'hawkins_goeden_1984_10',
+    'hawkins_goeden_1984_11', 'schoenly_reid_1983_1', 'schoenly_reid_1983_2',
+    'angelini_et_al_2013_1', 'angelini_et_al_2013_2', 'angelini_et_al_2013_3',
+    'richards_1926', 'filgueira_castro_2011', 'thompson_townsend_2004_1',
+    'thompson_townsend_2004_2', 'thompson_townsend_2004_3',
+    'thompson_townsend_2004_4', 'thompson_townsend_2004_5',
+    'thompson_townsend_2004_6', 'thompson_townsend_2004_7',
+    'thompson_townsend_2004_8', 'thompson_townsend_2004_9',
+    'thompson_townsend_2004_10', 'thompson_townsend_2004_11',
+    'thompson_townsend_2004_12', 'tavares-cromar_williams_1996_1',
+    'tavares-cromar_williams_1996_2', 'tavares-cromar_williams_1996_3',
+    'tavares-cromar_williams_1996_4', 'tavares-cromar_williams_1996_5',
+    'tavares-cromar_williams_1996_6', 'tavares-cromar_williams_1996_7',
+    'tavares-cromar_williams_1996_8', 'huang_et_al_2008', 'badcock_1949',
+    'mayse_price_1978_1', 'mayse_price_1978_2', 'swan_1961',
+    'stewart_sprules_2011_1', 'stewart_sprules_2011_2', 'boit_et_al_2012',
+    'baird_1980', 'dupont_et_al_2003', 'kaiser-bunbury_et_al_2010_1',
+    'kaiser-bunbury_et_al_2010_2', 'kaiser-bunbury_et_al_2010_3',
+    'kaiser-bunbury_et_al_2010_4', 'kaiser-bunbury_et_al_2010_5',
+    'kaiser-bunbury_et_al_2010_6', 'kaiser-bunbury_et_al_2010_7',
+    'kaiser-bunbury_et_al_2010_8', 'kaiser-bunbury_et_al_2010_9',
+    'kaiser-bunbury_et_al_2010_10', 'kaiser-bunbury_et_al_2010_11',
+    'kaiser-bunbury_et_al_2010_12', 'kaiser-bunbury_et_al_2010_13',
+    'kaiser-bunbury_et_al_2010_14', 'kaiser-bunbury_et_al_2010_15',
+    'kaiser-bunbury_et_al_2010_16', 'kaiser-bunbury_et_al_2010_17',
+    'kaiser-bunbury_et_al_2010_18', 'kaiser-bunbury_et_al_2010_19',
+    'kaiser-bunbury_et_al_2010_20', 'kaiser-bunbury_et_al_2010_21',
+    'kaiser-bunbury_et_al_2010_22', 'kaiser-bunbury_et_al_2010_23',
+    'kaiser-bunbury_et_al_2010_24', 'kaiser-bunbury_et_al_2014_1',
+    'kaiser-bunbury_et_al_2014_2', 'kaiser-bunbury_et_al_2014_3',
+    'kaiser-bunbury_et_al_2014_4', 'kaiser-bunbury_et_al_2014_5',
+    'kaiser-bunbury_et_al_2014_6', 'kaiser-bunbury_et_al_2014_7',
+    'kaiser-bunbury_et_al_2014_8', 'kaiser-bunbury_et_al_2014_9',
+    'kaiser-bunbury_et_al_2014_10', 'kaiser-bunbury_et_al_2014_11',
+    'kaiser-bunbury_et_al_2014_12', 'kaiser-bunbury_et_al_2014_13',
+    'kaiser-bunbury_et_al_2014_14', 'kaiser-bunbury_et_al_2014_15',
+    'kaiser-bunbury_et_al_2014_16', 'kaiser-bunbury_et_al_2014_17',
+    'kaiser-bunbury_et_al_2014_18', 'kaiser-bunbury_et_al_2014_19',
+    'kaiser-bunbury_et_al_2014_20', 'kaiser-bunbury_et_al_2014_21',
+    'kaiser-bunbury_et_al_2014_22', 'kaiser-bunbury_et_al_2014_23',
+    'kaiser-bunbury_et_al_2014_24', 'kaiser-bunbury_et_al_2014_25',
+    'kaiser-bunbury_et_al_2014_26', 'kaiser-bunbury_et_al_2014_27',
+    'kaiser-bunbury_et_al_2014_28', 'kaiser-bunbury_et_al_2014_29',
+    'kaiser-bunbury_et_al_2014_30', 'kaiser-bunbury_et_al_2014_31',
+    'kaiser-bunbury_et_al_2014_32', 'kaiser-bunbury_et_al_2014_33',
+    'kaiser-bunbury_et_al_2014_34', 'kaiser-bunbury_et_al_2014_35',
+    'kaiser-bunbury_et_al_2014_36', 'kaiser-bunbury_et_al_2014_37',
+    'kaiser-bunbury_et_al_2014_38', 'kaiser-bunbury_et_al_2014_39',
+    'kaiser-bunbury_et_al_2014_40', 'kaiser-bunbury_et_al_2014_41',
+    'kaiser-bunbury_et_al_2014_42', 'kaiser-bunbury_et_al_2014_43',
+    'kaiser-bunbury_et_al_2014_44', 'kaiser-bunbury_et_al_2014_45',
+    'kaiser-bunbury_et_al_2014_46', 'kaiser-bunbury_et_al_2014_47',
+    'kaiser-bunbury_et_al_2014_48', 'kanta_1979', 'lambert_1989',
+    'mack_wright_1996', 'philipp_et_al_2006', 'primack_1983_1',
+    'primack_1983_2', 'primack_1983_3', 'tutin_et_al_1997',
+    'yamazaki_kato_2003', 'cohen_et_al_2003_1', 'cohen_et_al_2003_2',
+    '2003_ruzicka_2012', '2004_ruzicka_2012', '2005_ruzicka_2012',
+    '2006_ruzicka_2012', '2007_ruzicka_2012', 'percival_whitehead_1929',
+    'teal_1962', 'kolpelke_2007_285', 'kolpelke_2007_287', 'kolpelke_2007_286',
+    'kolpelke_2007_225', 'kolpelke_2007_363', 'kolpelke_2007_645',
+    'kolpelke_2007_214', 'kolpelke_2007_192', 'kolpelke_2007_217',
+    'kolpelke_2007_216', 'kolpelke_2007_194', 'kolpelke_2007_190',
+    'kolpelke_2007_517', 'kolpelke_2007_120', 'kolpelke_2007_168',
+    'kolpelke_2007_520', 'kolpelke_2007_526', 'kolpelke_2007_43',
+    'kolpelke_2007_31', 'kolpelke_2007_117', 'kolpelke_2007_167',
+    'kolpelke_2007_519', 'kolpelke_2007_193', 'kolpelke_2007_746',
+    'kolpelke_2007_173', 'kolpelke_2007_218', 'kolpelke_2007_748',
+    'kolpelke_2007_750', 'kolpelke_2007_523', 'kolpelke_2007_524',
+    'kolpelke_2007_45', 'kolpelke_2007_743', 'kolpelke_2007_518',
+    'kolpelke_2007_191', 'kolpelke_2007_749', 'kolpelke_2007_357',
+    'kolpelke_2007_360', 'kolpelke_2007_383', 'kolpelke_2007_393',
+    'kolpelke_2007_395', 'kolpelke_2007_361', 'kolpelke_2007_388',
+    'kolpelke_2007_389', 'kolpelke_2007_394', 'kolpelke_2007_391',
+    'kolpelke_2007_514', 'kolpelke_2007_46', 'kolpelke_2007_202',
+    'kolpelke_2007_170', 'kolpelke_2007_171', 'kolpelke_2007_208',
+    'kolpelke_2007_245', 'kolpelke_2007_522', 'kolpelke_2007_779',
+    'kolpelke_2007_777', 'kolpelke_2007_119', 'kolpelke_2007_199',
+    'kolpelke_2007_359', 'kolpelke_2007_387', 'kolpelke_2007_398',
+    'kolpelke_2007_396', 'kolpelke_2007_198', 'kolpelke_2007_242',
+    'kolpelke_2007_248', 'kolpelke_2007_172', 'kolpelke_2007_200',
+    'kolpelke_2007_249', 'kolpelke_2007_385', 'kolpelke_2007_165',
+    'kolpelke_2007_174', 'kolpelke_2007_244', 'kolpelke_2007_516',
+    'kolpelke_2007_525', 'kolpelke_2007_44', 'kolpelke_2007_164',
+    'kolpelke_2007_252', 'kolpelke_2007_527', 'kolpelke_2007_528',
+    'kolpelke_2007_30', 'kolpelke_2007_118', 'kolpelke_2007_166',
+    'kolpelke_2007_197', 'kolpelke_2007_241', 'kolpelke_2007_250',
+    'kolpelke_2007_251', 'kolpelke_2007_319', 'kolpelke_2007_362',
+    'kolpelke_2007_392', 'kolpelke_2007_505', 'kolpelke_2007_515',
+    'kolpelke_2007_169', 'kolpelke_2007_201', 'kolpelke_2007_206',
+    'kolpelke_2007_211', 'kolpelke_2007_246', 'kolpelke_2007_747',
+    'kolpelke_2007_376', 'kolpelke_2007_375', 'kolpelke_2007_374',
+    'kolpelke_2007_355', 'kolpelke_2007_347', 'kolpelke_2007_354',
+    'kolpelke_2007_353', 'kolpelke_2007_356', 'kolpelke_2007_358',
+    'kolpelke_2007_382', 'kolpelke_2007_384', 'kolpelke_2007_377',
+    'kolpelke_2007_521', 'kolpelke_2007_247', 'kolpelke_2007_85',
+    'kolpelke_2007_529', 'kolpelke_2007_390', 'kolpelke_2007_493',
+    'kolpelke_2007_42', 'kolpelke_2007_29', 'kolpelke_2007_40',
+    'kolpelke_2007_223', 'kolpelke_2007_332', 'kolpelke_2007_114',
+    'kolpelke_2007_456', 'kolpelke_2007_457', 'kolpelke_2007_458',
+    'kolpelke_2007_471', 'kolpelke_2007_487', 'kolpelke_2007_494',
+    'kolpelke_2007_506', 'kolpelke_2007_5', 'kolpelke_2007_84',
+    'kolpelke_2007_93', 'kolpelke_2007_27', 'kolpelke_2007_39',
+    'kolpelke_2007_115', 'kolpelke_2007_195', 'kolpelke_2007_237',
+    'kolpelke_2007_238', 'kolpelke_2007_339', 'kolpelke_2007_717',
+    'kolpelke_2007_495', 'kolpelke_2007_94', 'kolpelke_2007_95',
+    'kolpelke_2007_28', 'kolpelke_2007_41', 'kolpelke_2007_196',
+    'kolpelke_2007_243', 'kolpelke_2007_336', 'kolpelke_2007_492',
+    'kolpelke_2007_721', 'kolpelke_2007_442', 'kolpelke_2007_583',
+    'kolpelke_2007_96', 'kolpelke_2007_445', 'kolpelke_2007_719',
+    'kolpelke_2007_584', 'kolpelke_2007_116', 'kolpelke_2007_239',
+    'kolpelke_2007_455', 'kolpelke_2007_718', 'kolpelke_2007_155',
+    'kolpelke_2007_588', 'kolpelke_2007_381', 'kolpelke_2007_720',
+    'kolpelke_2007_141', 'kolpelke_2007_161', 'kolpelke_2007_461',
+    'kolpelke_2007_462', 'kolpelke_2007_470', 'kolpelke_2007_472',
+    'kolpelke_2007_488', 'kolpelke_2007_496', 'kolpelke_2007_497',
+    'kolpelke_2007_2', 'kolpelke_2007_82', 'kolpelke_2007_91',
+    'kolpelke_2007_22', 'kolpelke_2007_464', 'kolpelke_2007_163',
+    'kolpelke_2007_160', 'kolpelke_2007_443', 'kolpelke_2007_444',
+    'kolpelke_2007_490', 'kolpelke_2007_491', 'kolpelke_2007_530',
+    'kolpelke_2007_4', 'kolpelke_2007_83', 'kolpelke_2007_92',
+    'kolpelke_2007_489', 'kolpelke_2007_159', 'kolpelke_2007_162',
+    'kolpelke_2007_334', 'kolpelke_2007_90', 'kolpelke_2007_21',
+    'kolpelke_2007_35', 'kolpelke_2007_36', 'kolpelke_2007_156',
+    'kolpelke_2007_157', 'kolpelke_2007_203', 'kolpelke_2007_224',
+    'kolpelke_2007_236', 'kolpelke_2007_335', 'kolpelke_2007_317',
+    'kolpelke_2007_352', 'kolpelke_2007_440', 'kolpelke_2007_587',
+    'kolpelke_2007_333', 'kolpelke_2007_314', 'kolpelke_2007_323',
+    'kolpelke_2007_158', 'kolpelke_2007_338', 'kolpelke_2007_226',
+    'kolpelke_2007_463', 'kolpelke_2007_465', 'kolpelke_2007_37',
+    'kolpelke_2007_240', 'kolpelke_2007_716', 'kolpelke_2007_595',
+    'kolpelke_2007_594', 'kolpelke_2007_153', 'kolpelke_2007_781',
+    'kolpelke_2007_24', 'kolpelke_2007_86', 'kolpelke_2007_154',
+    'kolpelke_2007_23', 'kolpelke_2007_38', 'kolpelke_2007_586',
+    'kolpelke_2007_3', 'kolpelke_2007_313', 'kolpelke_2007_318',
+    'kolpelke_2007_87', 'kolpelke_2007_1', 'kolpelke_2007_25',
+    'kolpelke_2007_651', 'kolpelke_2007_88', 'kolpelke_2007_89',
+    'kolpelke_2007_639', 'kolpelke_2007_606', 'kolpelke_2007_656',
+    'kolpelke_2007_683', 'kolpelke_2007_686', 'kolpelke_2007_685',
+    'kolpelke_2007_638', 'kolpelke_2007_324', 'kolpelke_2007_640',
+    'kolpelke_2007_653', 'kolpelke_2007_681', 'kolpelke_2007_710',
+    'kolpelke_2007_652', 'kolpelke_2007_684', 'kolpelke_2007_713',
+    'kolpelke_2007_604', 'kolpelke_2007_682', 'kolpelke_2007_709',
+    'kolpelke_2007_654', 'kolpelke_2007_708', 'kolpelke_2007_711',
+    'kolpelke_2007_712', 'kolpelke_2007_26', 'kolpelke_2007_602',
+    'kolpelke_2007_641', 'kolpelke_2007_707', 'kolpelke_2007_706',
+    'kolpelke_2007_605', 'kolpelke_2007_655', 'kolpelke_2007_687',
+    'kolpelke_2007_559', 'kolpelke_2007_504', 'kolpelke_2007_557',
+    'kolpelke_2007_254', 'kolpelke_2007_558', 'kolpelke_2007_253',
+    'kolpelke_2007_608', 'kolpelke_2007_714', 'kolpelke_2007_316',
+    'kolpelke_2007_331', 'kolpelke_2007_349', 'kolpelke_2007_370',
+    'kolpelke_2007_366', 'kolpelke_2007_378', 'kolpelke_2007_397',
+    'kolpelke_2007_399', 'kolpelke_2007_439', 'kolpelke_2007_441',
+    'kolpelke_2007_578', 'kolpelke_2007_609', 'kolpelke_2007_715',
+    'kolpelke_2007_554', 'kolpelke_2007_145', 'kolpelke_2007_673',
+    'kolpelke_2007_329', 'kolpelke_2007_337', 'kolpelke_2007_341',
+    'kolpelke_2007_340', 'kolpelke_2007_342', 'kolpelke_2007_647',
+    'kolpelke_2007_689', 'kolpelke_2007_322', 'kolpelke_2007_330',
+    'kolpelke_2007_603', 'kolpelke_2007_672', 'kolpelke_2007_688',
+    'kolpelke_2007_257', 'kolpelke_2007_309', 'kolpelke_2007_310',
+    'kolpelke_2007_315', 'kolpelke_2007_373', 'kolpelke_2007_648',
+    'kolpelke_2007_580', 'kolpelke_2007_660', 'kolpelke_2007_649',
+    'kolpelke_2007_674', 'kolpelke_2007_593', 'kolpelke_2007_401',
+    'kolpelke_2007_351', 'kolpelke_2007_350', 'kolpelke_2007_371',
+    'kolpelke_2007_380', 'kolpelke_2007_400', 'kolpelke_2007_344',
+    'kolpelke_2007_348', 'kolpelke_2007_372', 'kolpelke_2007_379',
+    'kolpelke_2007_646', 'kolpelke_2007_671', 'kolpelke_2007_255',
+    'kolpelke_2007_284', 'kolpelke_2007_321', 'kolpelke_2007_417',
+    'kolpelke_2007_320', 'kolpelke_2007_585', 'kolpelke_2007_555',
+    'kolpelke_2007_49', 'kolpelke_2007_579', 'kolpelke_2007_446',
+    'kolpelke_2007_453', 'kolpelke_2007_459', 'kolpelke_2007_468',
+    'kolpelke_2007_469', 'kolpelke_2007_476', 'kolpelke_2007_481',
+    'kolpelke_2007_498', 'kolpelke_2007_565', 'kolpelke_2007_148',
+    'kolpelke_2007_77', 'kolpelke_2007_78', 'kolpelke_2007_140',
+    'kolpelke_2007_176', 'kolpelke_2007_182', 'kolpelke_2007_229',
+    'kolpelke_2007_304', 'kolpelke_2007_454', 'kolpelke_2007_460',
+    'kolpelke_2007_467', 'kolpelke_2007_81', 'kolpelke_2007_177',
+    'kolpelke_2007_178', 'kolpelke_2007_213', 'kolpelke_2007_447',
+    'kolpelke_2007_466', 'kolpelke_2007_477', 'kolpelke_2007_479',
+    'kolpelke_2007_480', 'kolpelke_2007_499', 'kolpelke_2007_508',
+    'kolpelke_2007_512', 'kolpelke_2007_513', 'kolpelke_2007_567',
+    'kolpelke_2007_52', 'kolpelke_2007_150', 'kolpelke_2007_75',
+    'kolpelke_2007_79', 'kolpelke_2007_179', 'kolpelke_2007_184',
+    'kolpelke_2007_205', 'kolpelke_2007_231', 'kolpelke_2007_183',
+    'kolpelke_2007_215', 'kolpelke_2007_230', 'kolpelke_2007_553',
+    'kolpelke_2007_419', 'kolpelke_2007_452', 'kolpelke_2007_478',
+    'kolpelke_2007_507', 'kolpelke_2007_210', 'kolpelke_2007_232',
+    'kolpelke_2007_305', 'kolpelke_2007_325', 'kolpelke_2007_581',
+    'kolpelke_2007_180', 'kolpelke_2007_204', 'kolpelke_2007_448',
+    'kolpelke_2007_485', 'kolpelke_2007_500', 'kolpelke_2007_34',
+    'kolpelke_2007_450', 'kolpelke_2007_475', 'kolpelke_2007_483',
+    'kolpelke_2007_502', 'kolpelke_2007_149', 'kolpelke_2007_152',
+    'kolpelke_2007_80', 'kolpelke_2007_20', 'kolpelke_2007_33',
+    'kolpelke_2007_175', 'kolpelke_2007_233', 'kolpelke_2007_566',
+    'kolpelke_2007_569', 'kolpelke_2007_185', 'kolpelke_2007_235',
+    'kolpelke_2007_306', 'kolpelke_2007_307', 'kolpelke_2007_326',
+    'kolpelke_2007_327', 'kolpelke_2007_705', 'kolpelke_2007_733',
+    'kolpelke_2007_723', 'kolpelke_2007_755', 'kolpelke_2007_756',
+    'kolpelke_2007_449', 'kolpelke_2007_474', 'kolpelke_2007_482',
+    'kolpelke_2007_189', 'kolpelke_2007_532', 'kolpelke_2007_556',
+    'kolpelke_2007_139', 'kolpelke_2007_181', 'kolpelke_2007_451',
+    'kolpelke_2007_473', 'kolpelke_2007_484', 'kolpelke_2007_501',
+    'kolpelke_2007_568', 'kolpelke_2007_571', 'kolpelke_2007_207',
+    'kolpelke_2007_343', 'kolpelke_2007_438', 'kolpelke_2007_186',
+    'kolpelke_2007_188', 'kolpelke_2007_228', 'kolpelke_2007_234',
+    'kolpelke_2007_283', 'kolpelke_2007_328', 'kolpelke_2007_486',
+    'kolpelke_2007_503', 'kolpelke_2007_510', 'kolpelke_2007_572',
+    'kolpelke_2007_151', 'kolpelke_2007_209', 'kolpelke_2007_212',
+    'kolpelke_2007_48', 'kolpelke_2007_592', 'kolpelke_2007_610',
+    'kolpelke_2007_509', 'kolpelke_2007_511', 'kolpelke_2007_570',
+    'kolpelke_2007_573', 'kolpelke_2007_47', 'kolpelke_2007_19',
+    'kolpelke_2007_187', 'kolpelke_2007_76', 'kolpelke_2007_345',
+    'kolpelke_2007_369', 'kolpelke_2007_368', 'kolpelke_2007_364',
+    'kolpelke_2007_346', 'kolpelke_2007_367', 'kolpelke_2007_365',
+    'kolpelke_2007_32', 'kolpelke_2007_780', 'kolpelke_2007_51',
+    'kolpelke_2007_50', 'kolpelke_2007_146', 'kolpelke_2007_13',
+    'kolpelke_2007_695', 'kolpelke_2007_15', 'kolpelke_2007_560',
+    'kolpelke_2007_144', 'kolpelke_2007_142', 'kolpelke_2007_14',
+    'kolpelke_2007_143', 'kolpelke_2007_696', 'kolpelke_2007_690',
+    'kolpelke_2007_590', 'kolpelke_2007_597', 'kolpelke_2007_589',
+    'kolpelke_2007_600', 'kolpelke_2007_598', 'kolpelke_2007_97',
+    'kolpelke_2007_596', 'kolpelke_2007_98', 'kolpelke_2007_11',
+    'kolpelke_2007_12', 'kolpelke_2007_147', 'kolpelke_2007_599',
+    'kolpelke_2007_575', 'kolpelke_2007_227', 'kolpelke_2007_219',
+    'kolpelke_2007_222', 'kolpelke_2007_256', 'kolpelke_2007_274',
+    'kolpelke_2007_311', 'kolpelke_2007_751', 'kolpelke_2007_220',
+    'kolpelke_2007_650', 'kolpelke_2007_680', 'kolpelke_2007_702',
+    'kolpelke_2007_731', 'kolpelke_2007_745', 'kolpelke_2007_574',
+    'kolpelke_2007_754', 'kolpelke_2007_703', 'kolpelke_2007_722',
+    'kolpelke_2007_753', 'kolpelke_2007_576', 'kolpelke_2007_577',
+    'kolpelke_2007_7', 'kolpelke_2007_8', 'kolpelke_2007_637',
+    'kolpelke_2007_643', 'kolpelke_2007_644', 'kolpelke_2007_661',
+    'kolpelke_2007_6', 'kolpelke_2007_221', 'kolpelke_2007_308',
+    'kolpelke_2007_582', 'kolpelke_2007_591', 'kolpelke_2007_601',
+    'kolpelke_2007_607', 'kolpelke_2007_704', 'kolpelke_2007_752',
+    'kolpelke_2007_636', 'kolpelke_2007_665', 'kolpelke_2007_667',
+    'kolpelke_2007_758', 'kolpelke_2007_759', 'kolpelke_2007_642',
+    'kolpelke_2007_662', 'kolpelke_2007_664', 'kolpelke_2007_666',
+    'kolpelke_2007_669', 'kolpelke_2007_757', 'kolpelke_2007_668',
+    'kolpelke_2007_670', 'kolpelke_2007_663', 'kolpelke_2007_677',
+    'kolpelke_2007_692', 'kolpelke_2007_659', 'kolpelke_2007_693',
+    'kolpelke_2007_676', 'kolpelke_2007_658', 'kolpelke_2007_694',
+    'kolpelke_2007_657', 'kolpelke_2007_764', 'kolpelke_2007_765',
+    'kolpelke_2007_698', 'kolpelke_2007_691', 'kolpelke_2007_760',
+    'kolpelke_2007_10', 'kolpelke_2007_312', 'kolpelke_2007_679',
+    'kolpelke_2007_762', 'kolpelke_2007_9', 'kolpelke_2007_531',
+    'kolpelke_2007_678', 'kolpelke_2007_700', 'kolpelke_2007_732',
+    'kolpelke_2007_744', 'kolpelke_2007_763', 'kolpelke_2007_697',
+    'kolpelke_2007_699', 'kolpelke_2007_675', 'kolpelke_2007_272',
+    'kolpelke_2007_701', 'kolpelke_2007_776', 'kolpelke_2007_634',
+    'kolpelke_2007_773', 'kolpelke_2007_740', 'kolpelke_2007_771',
+    'kolpelke_2007_74', 'kolpelke_2007_303', 'kolpelke_2007_783',
+    'kolpelke_2007_437', 'kolpelke_2007_433', 'kolpelke_2007_741',
+    'kolpelke_2007_73', 'kolpelke_2007_726', 'kolpelke_2007_533',
+    'kolpelke_2007_18', 'kolpelke_2007_138', 'kolpelke_2007_434',
+    'kolpelke_2007_623', 'kolpelke_2007_728', 'kolpelke_2007_416',
+    'kolpelke_2007_137', 'kolpelke_2007_411', 'kolpelke_2007_413',
+    'kolpelke_2007_739', 'kolpelke_2007_772', 'kolpelke_2007_54',
+    'kolpelke_2007_56', 'kolpelke_2007_99', 'kolpelke_2007_630',
+    'kolpelke_2007_635', 'kolpelke_2007_738', 'kolpelke_2007_767',
+    'kolpelke_2007_633', 'kolpelke_2007_736', 'kolpelke_2007_768',
+    'kolpelke_2007_136', 'kolpelke_2007_775', 'kolpelke_2007_55',
+    'kolpelke_2007_632', 'kolpelke_2007_725', 'kolpelke_2007_730',
+    'kolpelke_2007_766', 'kolpelke_2007_53', 'kolpelke_2007_100',
+    'kolpelke_2007_631', 'kolpelke_2007_770', 'kolpelke_2007_302',
+    'kolpelke_2007_278', 'kolpelke_2007_727', 'kolpelke_2007_72',
+    'kolpelke_2007_17', 'kolpelke_2007_135', 'kolpelke_2007_277',
+    'kolpelke_2007_735', 'kolpelke_2007_742', 'kolpelke_2007_103',
+    'kolpelke_2007_534', 'kolpelke_2007_71', 'kolpelke_2007_16',
+    'kolpelke_2007_418', 'kolpelke_2007_774', 'kolpelke_2007_629',
+    'kolpelke_2007_628', 'kolpelke_2007_69', 'kolpelke_2007_729',
+    'kolpelke_2007_724', 'kolpelke_2007_627', 'kolpelke_2007_737',
+    'kolpelke_2007_734', 'kolpelke_2007_769', 'kolpelke_2007_611',
+    'kolpelke_2007_301', 'kolpelke_2007_626', 'kolpelke_2007_299',
+    'kolpelke_2007_298', 'kolpelke_2007_535', 'kolpelke_2007_279',
+    'kolpelke_2007_280', 'kolpelke_2007_625', 'kolpelke_2007_536',
+    'kolpelke_2007_300', 'kolpelke_2007_57', 'kolpelke_2007_101',
+    'kolpelke_2007_386', 'kolpelke_2007_624', 'kolpelke_2007_266',
+    'kolpelke_2007_134', 'kolpelke_2007_259', 'kolpelke_2007_612',
+    'kolpelke_2007_297', 'kolpelke_2007_613', 'kolpelke_2007_282',
+    'kolpelke_2007_537', 'kolpelke_2007_552', 'kolpelke_2007_58',
+    'kolpelke_2007_70', 'kolpelke_2007_113', 'kolpelke_2007_132',
+    'kolpelke_2007_258', 'kolpelke_2007_281', 'kolpelke_2007_621',
+    'kolpelke_2007_112', 'kolpelke_2007_130', 'kolpelke_2007_296',
+    'kolpelke_2007_133', 'kolpelke_2007_551', 'kolpelke_2007_59',
+    'kolpelke_2007_68', 'kolpelke_2007_778', 'kolpelke_2007_265',
+    'kolpelke_2007_275', 'kolpelke_2007_410', 'kolpelke_2007_615',
+    'kolpelke_2007_761', 'kolpelke_2007_276', 'kolpelke_2007_620',
+    'kolpelke_2007_131', 'kolpelke_2007_619', 'kolpelke_2007_273',
+    'kolpelke_2007_614', 'kolpelke_2007_432', 'kolpelke_2007_415',
+    'kolpelke_2007_435', 'kolpelke_2007_618', 'kolpelke_2007_622',
+    'kolpelke_2007_67', 'kolpelke_2007_111', 'kolpelke_2007_128',
+    'kolpelke_2007_293', 'kolpelke_2007_60', 'kolpelke_2007_129',
+    'kolpelke_2007_782', 'kolpelke_2007_270', 'kolpelke_2007_429',
+    'kolpelke_2007_538', 'kolpelke_2007_271', 'kolpelke_2007_428',
+    'kolpelke_2007_616', 'kolpelke_2007_617', 'kolpelke_2007_295',
+    'kolpelke_2007_66', 'kolpelke_2007_431', 'kolpelke_2007_405',
+    'kolpelke_2007_102', 'kolpelke_2007_121', 'kolpelke_2007_294',
+    'kolpelke_2007_414', 'kolpelke_2007_61', 'kolpelke_2007_65',
+    'kolpelke_2007_110', 'kolpelke_2007_263', 'kolpelke_2007_408',
+    'kolpelke_2007_547', 'kolpelke_2007_261', 'kolpelke_2007_403',
+    'kolpelke_2007_546', 'kolpelke_2007_406', 'kolpelke_2007_290',
+    'kolpelke_2007_427', 'kolpelke_2007_540', 'kolpelke_2007_542',
+    'kolpelke_2007_543', 'kolpelke_2007_544', 'kolpelke_2007_545',
+    'kolpelke_2007_563', 'kolpelke_2007_548', 'kolpelke_2007_564',
+    'kolpelke_2007_260', 'kolpelke_2007_409', 'kolpelke_2007_123',
+    'kolpelke_2007_262', 'kolpelke_2007_561', 'kolpelke_2007_539',
+    'kolpelke_2007_421', 'kolpelke_2007_549', 'kolpelke_2007_291',
+    'kolpelke_2007_105', 'kolpelke_2007_550', 'kolpelke_2007_62',
+    'kolpelke_2007_269', 'kolpelke_2007_426', 'kolpelke_2007_425',
+    'kolpelke_2007_64', 'kolpelke_2007_104', 'kolpelke_2007_127',
+    'kolpelke_2007_122', 'kolpelke_2007_562', 'kolpelke_2007_541',
+    'kolpelke_2007_63', 'kolpelke_2007_292', 'kolpelke_2007_423',
+    'kolpelke_2007_424', 'kolpelke_2007_422', 'kolpelke_2007_267',
+    'kolpelke_2007_106', 'kolpelke_2007_125', 'kolpelke_2007_288',
+    'kolpelke_2007_289', 'kolpelke_2007_412', 'kolpelke_2007_264',
+    'kolpelke_2007_430', 'kolpelke_2007_436', 'kolpelke_2007_109',
+    'kolpelke_2007_124', 'kolpelke_2007_407', 'kolpelke_2007_126',
+    'kolpelke_2007_107', 'kolpelke_2007_108', 'kolpelke_2007_268',
+    'kolpelke_2007_420', 'kolpelke_2007_402', 'kolpelke_2007_404',
+    'hines_et_al_2019', 'bartomeus_2005_BAT1CA', 'bartomeus_2005_BAT2CA',
+    'bartomeus_2005_FRA1OP', 'bartomeus_2005_FRA2OP', 'bartomeus_2005_MED1CA',
+    'bartomeus_2005_MED2CA', 'bartomeus_2005_MED3CA', 'bartomeus_2005_MED4CA',
+    'bartomeus_2005_MIQ1OP', 'bartomeus_2005_MIQ2OP', 'bartomeus_2005_SEL1OP',
+    'bartomeus_2005_SEL2OP', 'roopnarine_2013_Cuba', 'roopnarine_2013_Jamaica',
+    'roopnarine_2013_Cayman', 'RMBL_pollination_2013_week1_shady_point',
+    'RMBL_pollination_2013_week2_shady_point',
+    'RMBL_pollination_2013_week3_shady_point',
+    'RMBL_pollination_2013_week4_shady_point',
+    'RMBL_pollination_2013_week5_shady_point',
+    'RMBL_pollination_2013_week6_shady_point',
+    'RMBL_pollination_2013_week7_shady_point',
+    'RMBL_pollination_2013_week8_shady_point',
+    'RMBL_pollination_2013_week9_shady_point',
+    'RMBL_pollination_2013_week10_shady_point',
+    'RMBL_pollination_2013_week11_shady_point',
+    'RMBL_pollination_2013_week13_shady_point',
+    'RMBL_pollination_2013_week1_twin_meadows',
+    'RMBL_pollination_2013_week2_twin_meadows',
+    'RMBL_pollination_2013_week3_twin_meadows',
+    'RMBL_pollination_2013_week4_twin_meadows',
+    'RMBL_pollination_2013_week5_twin_meadows',
+    'RMBL_pollination_2013_week6_twin_meadows',
+    'RMBL_pollination_2013_week7_twin_meadows',
+    'RMBL_pollination_2013_week8_twin_meadows',
+    'RMBL_pollination_2013_week9_twin_meadows',
+    'RMBL_pollination_2013_week10_twin_meadows',
+    'RMBL_pollination_2013_week11_twin_meadows',
+    'RMBL_pollination_2013_week13_twin_meadows',
+    'RMBL_pollination_2014_week1_shady_point',
+    'RMBL_pollination_2014_week2_shady_point',
+    'RMBL_pollination_2014_week3_shady_point',
+    'RMBL_pollination_2014_week4_shady_point',
+    'RMBL_pollination_2014_week5_shady_point',
+    'RMBL_pollination_2014_week6_shady_point',
+    'RMBL_pollination_2014_week7_shady_point',
+    'RMBL_pollination_2014_week8_shady_point',
+    'RMBL_pollination_2014_week9_shady_point',
+    'RMBL_pollination_2014_week10_shady_point',
+    'RMBL_pollination_2014_week11_shady_point',
+    'RMBL_pollination_2014_week12_shady_point',
+    'RMBL_pollination_2014_week13_shady_point',
+    'RMBL_pollination_2014_week14_shady_point',
+    'RMBL_pollination_2014_week15_shady_point',
+    'RMBL_pollination_2014_week1_twin_meadows',
+    'RMBL_pollination_2014_week2_twin_meadows',
+    'RMBL_pollination_2014_week3_twin_meadows',
+    'RMBL_pollination_2014_week4_twin_meadows',
+    'RMBL_pollination_2014_week5_twin_meadows',
+    'RMBL_pollination_2014_week6_twin_meadows',
+    'RMBL_pollination_2014_week7_twin_meadows',
+    'RMBL_pollination_2014_week8_twin_meadows',
+    'RMBL_pollination_2014_week9_twin_meadows',
+    'RMBL_pollination_2014_week10_twin_meadows',
+    'RMBL_pollination_2014_week11_twin_meadows',
+    'RMBL_pollination_2014_week12_twin_meadows',
+    'RMBL_pollination_2014_week13_twin_meadows',
+    'RMBL_pollination_2014_week14_twin_meadows',
+    'RMBL_pollination_2014_week15_twin_meadows',
+    'RMBL_pollination_2015_week1_shady_point',
+    'RMBL_pollination_2015_week2_shady_point',
+    'RMBL_pollination_2015_week3_shady_point',
+    'RMBL_pollination_2015_week4_shady_point',
+    'RMBL_pollination_2015_week5_shady_point',
+    'RMBL_pollination_2015_week6_shady_point',
+    'RMBL_pollination_2015_week7_shady_point',
+    'RMBL_pollination_2015_week8_shady_point',
+    'RMBL_pollination_2015_week9_shady_point',
+    'RMBL_pollination_2015_week10_shady_point',
+    'RMBL_pollination_2015_week11_shady_point',
+    'RMBL_pollination_2015_week12_shady_point',
+    'RMBL_pollination_2015_week13_shady_point',
+    'RMBL_pollination_2015_week14_shady_point',
+    'RMBL_pollination_2015_week15_shady_point',
+    'RMBL_pollination_2015_week16_shady_point',
+    'RMBL_pollination_2015_week1_twin_meadows',
+    'RMBL_pollination_2015_week2_twin_meadows',
+    'RMBL_pollination_2015_week3_twin_meadows',
+    'RMBL_pollination_2015_week4_twin_meadows',
+    'RMBL_pollination_2015_week5_twin_meadows',
+    'RMBL_pollination_2015_week6_twin_meadows',
+    'RMBL_pollination_2015_week7_twin_meadows',
+    'RMBL_pollination_2015_week8_twin_meadows',
+    'RMBL_pollination_2015_week9_twin_meadows',
+    'RMBL_pollination_2015_week10_twin_meadows',
+    'RMBL_pollination_2015_week11_twin_meadows',
+    'RMBL_pollination_2015_week12_twin_meadows',
+    'RMBL_pollination_2015_week13_twin_meadows',
+    'RMBL_pollination_2015_week14_twin_meadows',
+    'RMBL_pollination_2015_week15_twin_meadows',
+    'RMBL_pollination_2015_week16_twin_meadows']
+
+# Networks without any interaction, left out
+empty = ['kolpelke_2007_13', 'kolpelke_2007_145', 'kolpelke_2007_202',
+         'kolpelke_2007_553', 'kolpelke_2007_560', 'kolpelke_2007_579']
+
+files = [(tuple(upstream_urls.keys()), alt, None) for alt in networks
+         if alt not in empty]
+
+def fetch_upstream(force=False):
+    return fetch_archived_files(__name__.split(".")[-1], upstream_urls, force,
+                                tries=3, timeout=600)
+
+_data = None
+
+def _load(name):
+    """Load the records of all the pages (once per process, since parse() is
+    called for each network in turn), keeping only the fields used."""
+    global _data
+    if _data is not None:
+        return _data
+    recs = {}
+    for kind in totals:
+        recs[kind] = []
+        for fname, url in _pages(kind):
+            with open_upstream_file(name, fname, "rb") as f:
+                page = json.load(f)
+            assert isinstance(page, list), (fname, str(page)[:200])
+            if kind == 'interaction':
+                page = [dict(id=x['id'], node_from=x['node_from'],
+                             node_to=x['node_to'], date=x['date'],
+                             direction=x['direction'], type=x['type'],
+                             method=x['method'], value=x['value'],
+                             attribute=(x.get('attribute') or {}).get('name'),
+                             unit=(x.get('attribute') or {}).get('unit'),
+                             network_id=x['network_id'])
+                        for x in page]
+            recs[kind].extend(page)
+        ids = [x['id'] for x in recs[kind]]
+        assert len(ids) == len(set(ids)) == totals[kind], \
+            (kind, len(ids), len(set(ids)), totals[kind])
+    assert sorted(x['name'] for x in recs['network']) == sorted(networks)
+    recs['datasets'] = {x['id']: x for x in recs['dataset']}
+    recs['refs'] = {x['id']: x for x in recs['reference']}
+    recs['nodes'] = defaultdict(list)
+    for x in recs['node']:
+        recs['nodes'][x['network_id']].append(x)
+    recs['inters'] = defaultdict(list)
+    for x in recs['interaction']:
+        recs['inters'][x['network_id']].append(x)
+    _data = recs
+    return _data
+
+def _int(x):
+    return -1 if x is None else int(x)
+
+@cache_network()
+@coerce_props(vforce={'name': 'string', 'taxon': 'string', 'rank': 'string',
+                      'col': 'string', 'node_level': 'string'},
+              eforce={'type': 'string', 'method': 'string',
+                      'direction': 'string', 'attribute': 'string',
+                      'date': 'string', 'value': 'double'})
+@annotate()
+def parse(alts=None):
+    name = __name__.split(".")[-1]
+    d = _load(name)
+    datasets, refs, nodes, inters = (d['datasets'], d['refs'], d['nodes'],
+                                     d['inters'])
+
+    for net in sorted(d['network'], key=lambda x: x['id']):
+        alt = net['name']
+        if alts is not None and alt not in alts:
+            continue
+        if alt in empty:
+            assert len(inters[net['id']]) == 0
+            continue
+        ns = sorted(nodes[net['id']], key=lambda x: x['id'])
+        # recorded absences of interactions are left out
+        es = sorted((e for e in inters[net['id']]
+                     if not (e['attribute'] == 'presence/absence' and
+                             e['value'] == 0)),
+                    key=lambda x: x['id'])
+        directed = any(e['direction'] == 'directed' for e in es)
+        g = Graph(directed=directed)
+        vidx = {x['id']: i for i, x in enumerate(ns)}
+        g.add_vertex(len(ns))
+        g.add_edge_list([(vidx[e['node_from']], vidx[e['node_to']]) for e in es])
+        tax = [x.get('taxonomy') or {} for x in ns]
+        g.vp.name = g.new_vp("string", vals=[x['original_name'] or "" for x in ns])
+        g.vp.node_id = g.new_vp("int64_t", vals=[x['id'] for x in ns])
+        g.vp.node_level = g.new_vp("string", vals=[x['node_level'] or "" for x in ns])
+        g.vp.taxon = g.new_vp("string", vals=[t.get('name') or "" for t in tax])
+        g.vp.rank = g.new_vp("string", vals=[t.get('rank') or "" for t in tax])
+        for k in ['ncbi', 'tsn', 'gbif', 'eol', 'bold']:
+            g.vp[k] = g.new_vp("int64_t", vals=[_int(t.get(k)) for t in tax])
+        g.vp.col = g.new_vp("string", vals=[t.get('col') or "" for t in tax])
+
+        g.ep.interaction_id = g.new_ep("int64_t", vals=[e['id'] for e in es])
+        g.ep.type = g.new_ep("string", vals=[e['type'] or "" for e in es])
+        g.ep.method = g.new_ep("string", vals=[e['method'] or "" for e in es])
+        g.ep.direction = g.new_ep("string", vals=[e['direction'] or "" for e in es])
+        g.ep.attribute = g.new_ep("string", vals=[e['attribute'] or "" for e in es])
+        g.ep.value = g.new_ep("double", vals=[numpy.nan if e['value'] is None
+                                              else float(e['value']) for e in es])
+        g.ep.date = g.new_ep("string", vals=[(e['date'] or "")[:10] for e in es])
+
+        ds = datasets.get(net['dataset_id'], {})
+        ref = refs.get(ds.get('ref_id'), {})
+        g.gp.network_id = g.new_gp("int64_t", val=net['id'])
+        g.gp.network_description = g.new_gp("string", val=net['description'] or "")
+        g.gp.network_date = g.new_gp("string", val=(net['date'] or "")[:10])
+        g.gp.geometry = g.new_gp("string", val=json.dumps(net['geom'])
+                                 if net['geom'] else "")
+        g.gp.all_interactions = g.new_gp("bool", val=bool(net['all_interactions']))
+        g.gp.dataset = g.new_gp("string", val=ds.get('name') or "")
+        g.gp.dataset_description = g.new_gp("string", val=ds.get('description') or "")
+        g.gp.reference_doi = g.new_gp("string", val=ref.get('doi') or "")
+        g.gp.reference_bibtex = g.new_gp("string", val=ref.get('bibtex') or "")
+        g.gp.data_url = g.new_gp("string", val=ref.get('data_url') or "")
+        yield alt, g