logo Netzschleuder network catalog, repository, and centrifuge

History of genetic_multiplex

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] Remove superfluous details of the upstream distribution from the descriptions by Tiago de Paula Peixoto dc07aa0
The descriptions mentioned incidental details of how the upstream data
are made available: the file formats (CSV, JSON, XML, GEXF, SBML, HIF,
Pajek, UCINET, ...), file names, where the files were published or
obtained from (Zenodo, figshare, Kaggle, the Pajek datasets page, the
Internet Archive), and that some networks are only available in the gt
format. These are left out; caveats about the data themselves are kept,
referring to "the data" instead of "the file". The description of
sp_baboons now lists its properties instead of the upstream columns,
and says that events without a recipient are left out.
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index dd32be3..80e975a 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -21,7 +21,7 @@ from .. import *
 title = "Multiplex genetic interactions (2014)"
 description = r"""Multiplex networks of genetic and protein interactions in several organisms, assembled by M. De Domenico and collaborators. Nodes are genes (or their protein products), identified by their gene symbols, and each layer corresponds to a different type of interaction.
 
-Most networks were extracted from BioGRID (Biological General Repository for Interaction Datasets, version 3.2.108 of 1 January 2014), a curated database of genetic and protein interactions from high-throughput data sets and focused studies in the literature. These are directed multiplex networks with up to seven layers, named according to BioGRID's interaction types: direct interaction, physical association, association, colocalization, and additive, suppressive and synthetic genetic interactions defined by inequality. An edge connects two genes that have an interaction of the type of its layer; the direction of the edges follows the order of the two genes in the source files, and its meaning is not documented. Not every organism has every layer, and the numbering of the layers differs between organisms (see the graph property `layer_key`). The organisms are: *Arabidopsis thaliana* (`Arabidopsis`), *Bos taurus* (`Bos_Multiplex_Genetic`), *Candida albicans* (`Candida`), *Caenorhabditis elegans* (`Celegans`), *Danio rerio* (`DanioRerio`), *Drosophila melanogaster* (`Drosophila`), *Gallus gallus* (`Gallus`), Hepatitis C virus (`HepatitusCVirus`), *Homo sapiens* (`Homo`), human herpesvirus 4 (`HumanHerpes4`), HIV-1 (`HumanHIV1`), *Mus musculus* (`Mus`), *Oryctolagus cuniculus* (`Oryctolagus`), *Plasmodium falciparum* (`Plasmodium`), *Rattus norvegicus* (`Rattus`), *Saccharomyces cerevisiae* (`Sacchcere`), *Schizosaccharomyces pombe* (`Sacchpomb`) and *Xenopus laevis* (`Xenopus`).
+Most networks were extracted from BioGRID (Biological General Repository for Interaction Datasets, version 3.2.108 of 1 January 2014), a curated database of genetic and protein interactions from high-throughput data sets and focused studies in the literature. These are directed multiplex networks with up to seven layers, named according to BioGRID's interaction types: direct interaction, physical association, association, colocalization, and additive, suppressive and synthetic genetic interactions defined by inequality. An edge connects two genes that have an interaction of the type of its layer; the direction of the edges follows the order of the two genes in the data, and its meaning is not documented. Not every organism has every layer, and the numbering of the layers differs between organisms (see the graph property `layer_key`). The organisms are: *Arabidopsis thaliana* (`Arabidopsis`), *Bos taurus* (`Bos_Multiplex_Genetic`), *Candida albicans* (`Candida`), *Caenorhabditis elegans* (`Celegans`), *Danio rerio* (`DanioRerio`), *Drosophila melanogaster* (`Drosophila`), *Gallus gallus* (`Gallus`), Hepatitis C virus (`HepatitusCVirus`), *Homo sapiens* (`Homo`), human herpesvirus 4 (`HumanHerpes4`), HIV-1 (`HumanHIV1`), *Mus musculus* (`Mus`), *Oryctolagus cuniculus* (`Oryctolagus`), *Plasmodium falciparum* (`Plasmodium`), *Rattus norvegicus* (`Rattus`), *Saccharomyces cerevisiae* (`Sacchcere`), *Schizosaccharomyces pombe* (`Sacchpomb`) and *Xenopus laevis* (`Xenopus`).
 
 The network `YeastLandscape` is different: it is based on the genetic interaction map of *Saccharomyces cerevisiae* of Costanzo et al. (Science 327, 425-431, 2010), obtained with synthetic genetic array experiments. It has four layers: positive and negative genetic interactions, and positive and negative correlations between the genetic interaction profiles of genes. Unlike the other networks, it is undirected. It contains all pairs present in the original data set (pairs listed twice, in both orientations with the same value, are included only once), without any threshold applied, so the edges should be filtered by their `weight` value before use.
 
[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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index d3b3943..dd32be3 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -33,8 +33,7 @@ The networks have the following properties:
 tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
 url = 'https://manliodedomenico.com/data.php'
 citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'https://doi.org/10.1093/comnet/cnu038')]
-icon_hash = ['58851617a411221d0e7c676b',
-             '588516a4a411221d0e7c676c']
+date_added = '2020-08-11'
 upstream_license = ('Open Data Commons Open Database License (ODbL)', 'https://opendatacommons.org/licenses/odbl/')
 upstream_prefix = 'https://manliodedomenico.com/data'
 files = [('Arabidopsis_Multiplex_Genetic.zip', 'Arabidopsis', 'comunelab'),
[entries] Prefix the properties in the descriptions with (Node), (Edge) or (Graph) by Tiago de Paula Peixoto 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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index b51bd75..d3b3943 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -27,9 +27,9 @@ The network `YeastLandscape` is different: it is based on the genetic interactio
 
 The networks have the following properties:
 
-- `name` and `nodeLabel`: the gene symbol.
-- `layer` (edges): the interaction type (layer); the graph property `layer_key` maps the layer numbers to their names.
-- `weight` (edges): always 1, except in `YeastLandscape`, where it is the genetic interaction score (interaction layers) or the Pearson correlation coefficient between interaction profiles (correlation layers)."""
+- (Node) `name` and `nodeLabel`: the gene symbol.
+- (Edge) `layer` (edges): the interaction type (layer); the graph property `layer_key` maps the layer numbers to their names.
+- (Edge) `weight` (edges): always 1, except in `YeastLandscape`, where it is the genetic interaction score (interaction layers) or the Pearson correlation coefficient between interaction profiles (correlation layers)."""
 tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
 url = 'https://manliodedomenico.com/data.php'
 citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'https://doi.org/10.1093/comnet/cnu038')]
[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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 35a43c8..b51bd75 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -65,7 +65,6 @@ def fetch_upstream(force=False):
 @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:
[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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index d43e1d6..35a43c8 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -21,7 +21,7 @@ from .. import *
 title = "Multiplex genetic interactions (2014)"
 description = r"""Multiplex networks of genetic and protein interactions in several organisms, assembled by M. De Domenico and collaborators. Nodes are genes (or their protein products), identified by their gene symbols, and each layer corresponds to a different type of interaction.
 
-Most networks were extracted from BioGRID (Biological General Repository for Interaction Datasets, version 3.2.108 of 1 January 2014), a curated database of genetic and protein interactions from high-throughput data sets and focused studies in the literature. These are directed multiplex networks with up to seven layers, named according to BioGRID's interaction types: direct interaction, physical association, association, colocalization, and additive, suppressive and synthetic genetic interactions defined by inequality. Not every organism has every layer, and the numbering of the layers differs between organisms (see the graph property `layer_key`). The organisms are: *Arabidopsis thaliana* (`Arabidopsis`), *Bos taurus* (`Bos_Multiplex_Genetic`), *Candida albicans* (`Candida`), *Caenorhabditis elegans* (`Celegans`), *Danio rerio* (`DanioRerio`), *Drosophila melanogaster* (`Drosophila`), *Gallus gallus* (`Gallus`), Hepatitis C virus (`HepatitusCVirus`), *Homo sapiens* (`Homo`), human herpesvirus 4 (`HumanHerpes4`), HIV-1 (`HumanHIV1`), *Mus musculus* (`Mus`), *Oryctolagus cuniculus* (`Oryctolagus`), *Plasmodium falciparum* (`Plasmodium`), *Rattus norvegicus* (`Rattus`), *Saccharomyces cerevisiae* (`Sacchcere`), *Schizosaccharomyces pombe* (`Sacchpomb`) and *Xenopus laevis* (`Xenopus`).
+Most networks were extracted from BioGRID (Biological General Repository for Interaction Datasets, version 3.2.108 of 1 January 2014), a curated database of genetic and protein interactions from high-throughput data sets and focused studies in the literature. These are directed multiplex networks with up to seven layers, named according to BioGRID's interaction types: direct interaction, physical association, association, colocalization, and additive, suppressive and synthetic genetic interactions defined by inequality. An edge connects two genes that have an interaction of the type of its layer; the direction of the edges follows the order of the two genes in the source files, and its meaning is not documented. Not every organism has every layer, and the numbering of the layers differs between organisms (see the graph property `layer_key`). The organisms are: *Arabidopsis thaliana* (`Arabidopsis`), *Bos taurus* (`Bos_Multiplex_Genetic`), *Candida albicans* (`Candida`), *Caenorhabditis elegans* (`Celegans`), *Danio rerio* (`DanioRerio`), *Drosophila melanogaster* (`Drosophila`), *Gallus gallus* (`Gallus`), Hepatitis C virus (`HepatitusCVirus`), *Homo sapiens* (`Homo`), human herpesvirus 4 (`HumanHerpes4`), HIV-1 (`HumanHIV1`), *Mus musculus* (`Mus`), *Oryctolagus cuniculus* (`Oryctolagus`), *Plasmodium falciparum* (`Plasmodium`), *Rattus norvegicus* (`Rattus`), *Saccharomyces cerevisiae* (`Sacchcere`), *Schizosaccharomyces pombe* (`Sacchpomb`) and *Xenopus laevis* (`Xenopus`).
 
 The network `YeastLandscape` is different: it is based on the genetic interaction map of *Saccharomyces cerevisiae* of Costanzo et al. (Science 327, 425-431, 2010), obtained with synthetic genetic array experiments. It has four layers: positive and negative genetic interactions, and positive and negative correlations between the genetic interaction profiles of genes. Unlike the other networks, it is undirected. It contains all pairs present in the original data set (pairs listed twice, in both orientations with the same value, are included only once), without any threshold applied, so the edges should be filtered by their `weight` value before use.
 
[entries] Fix parse bugs and improve the metadata of existing entries by Tiago de Paula Peixoto c996a0e
From a review of the dataset descriptions against the upstream sources
and papers, and from user reports:

- parse fixes (wrong edge direction or directedness, shifted or
  misnamed properties, merged node identities, duplicated or missing
  edges and nodes, wrong types), e.g. arxiv_citation (the HepTh dates
  were a copy of the HepPh ones; now from the KDD Cup 2003 data),
  eu_procurements, foursquare_global, hiv_transmission, genetic_multiplex,
  gnutella (adds the 05 snapshot), roadnet, macaque_neural, python_dependency
- descriptions rewritten from the upstream sources, documenting every
  property
- corrected titles, citations and DOIs, licences (ustream_license typo,
  the data's own terms), tags and ICON ids
- url lists for entries with several sources or dataset pages
- SocioPatterns entries moved to the site's new data location, with the
  daily networks of sp_infectious and sp_primary_school
- the Michael Fire entries marked as orphans (served from the mirror)
- redundant type forcings removed after the graph-tool coercion fixes
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index bf97743..d43e1d6 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -19,13 +19,23 @@
 from .. import *
 
 title = "Multiplex genetic interactions (2014)"
-description = """Multiplex networks representing different types of genetic interactions, for different organisms. Layers represent (i) physical, (ii) association, (iii) co-localization, (iv) direct, and (v) suppressive, (vi) additive or synthetic genetic interaction. Edge direction (i,j) indicates gene i interacting with gene j.[^icon]
-[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
+description = r"""Multiplex networks of genetic and protein interactions in several organisms, assembled by M. De Domenico and collaborators. Nodes are genes (or their protein products), identified by their gene symbols, and each layer corresponds to a different type of interaction.
+
+Most networks were extracted from BioGRID (Biological General Repository for Interaction Datasets, version 3.2.108 of 1 January 2014), a curated database of genetic and protein interactions from high-throughput data sets and focused studies in the literature. These are directed multiplex networks with up to seven layers, named according to BioGRID's interaction types: direct interaction, physical association, association, colocalization, and additive, suppressive and synthetic genetic interactions defined by inequality. Not every organism has every layer, and the numbering of the layers differs between organisms (see the graph property `layer_key`). The organisms are: *Arabidopsis thaliana* (`Arabidopsis`), *Bos taurus* (`Bos_Multiplex_Genetic`), *Candida albicans* (`Candida`), *Caenorhabditis elegans* (`Celegans`), *Danio rerio* (`DanioRerio`), *Drosophila melanogaster* (`Drosophila`), *Gallus gallus* (`Gallus`), Hepatitis C virus (`HepatitusCVirus`), *Homo sapiens* (`Homo`), human herpesvirus 4 (`HumanHerpes4`), HIV-1 (`HumanHIV1`), *Mus musculus* (`Mus`), *Oryctolagus cuniculus* (`Oryctolagus`), *Plasmodium falciparum* (`Plasmodium`), *Rattus norvegicus* (`Rattus`), *Saccharomyces cerevisiae* (`Sacchcere`), *Schizosaccharomyces pombe* (`Sacchpomb`) and *Xenopus laevis* (`Xenopus`).
+
+The network `YeastLandscape` is different: it is based on the genetic interaction map of *Saccharomyces cerevisiae* of Costanzo et al. (Science 327, 425-431, 2010), obtained with synthetic genetic array experiments. It has four layers: positive and negative genetic interactions, and positive and negative correlations between the genetic interaction profiles of genes. Unlike the other networks, it is undirected. It contains all pairs present in the original data set (pairs listed twice, in both orientations with the same value, are included only once), without any threshold applied, so the edges should be filtered by their `weight` value before use.
+
+The networks have the following properties:
+
+- `name` and `nodeLabel`: the gene symbol.
+- `layer` (edges): the interaction type (layer); the graph property `layer_key` maps the layer numbers to their names.
+- `weight` (edges): always 1, except in `YeastLandscape`, where it is the genetic interaction score (interaction layers) or the Pearson correlation coefficient between interaction profiles (correlation layers)."""
 tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
 url = 'https://manliodedomenico.com/data.php'
 citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'https://doi.org/10.1093/comnet/cnu038')]
-icon_hash = '58851617a411221d0e7c676b'
-ustream_license = ('Open Data Commons Open Database License (ODbL)', 'https://opendatacommons.org/licenses/odbl/')
+icon_hash = ['58851617a411221d0e7c676b',
+             '588516a4a411221d0e7c676c']
+upstream_license = ('Open Data Commons Open Database License (ODbL)', 'https://opendatacommons.org/licenses/odbl/')
 upstream_prefix = 'https://manliodedomenico.com/data'
 files = [('Arabidopsis_Multiplex_Genetic.zip', 'Arabidopsis', 'comunelab'),
          ('Bos_Multiplex_Genetic.zip', 'Bos_Multiplex_Genetic', 'comunelab'),
@@ -64,5 +74,18 @@ def parse(alts=None):
             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)
+            # YeastLandscape is undirected, according to its README
+            g = parse_graph(fs, fmt, directed=(alt != "YeastLandscape"))
+        if alt == "YeastLandscape":
+            # some pairs are listed in both orientations with the same
+            # value; keep only one of them
+            E = g.get_edges([g.ep.layer, g.ep.weight, g.edge_index])
+            key = numpy.stack([E[:, 2], numpy.minimum(E[:, 0], E[:, 1]),
+                               numpy.maximum(E[:, 0], E[:, 1]), E[:, 3]], 1)
+            _, idx = numpy.unique(key, axis=0, return_index=True)
+            efilt = g.new_ep("bool")
+            efilt.a[E[idx, 4].astype("int")] = True
+            g.set_edge_filter(efilt)
+            g.purge_edges()
+            g.clear_filters()
         yield alt, g
Update copyright information by Tiago de Paula Peixoto 73a4f0d
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index c9233f5..bf97743 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 4913a73..c9233f5 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 9f4d9e5..4913a73 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 22c9c71..9f4d9e5 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__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
Update comunelab's datasets by Tiago de Paula Peixoto ddccc3b
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index eee5b7d..22c9c71 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -22,11 +22,11 @@ title = "Multiplex genetic interactions (2014)"
 description = """Multiplex networks representing different types of genetic interactions, for different organisms. Layers represent (i) physical, (ii) association, (iii) co-localization, (iv) direct, and (v) suppressive, (vi) additive or synthetic genetic interaction. Edge direction (i,j) indicates gene i interacting with gene j.[^icon]
 [^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
 tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
-url = 'https://comunelab.fbk.eu/data.php'
+url = 'https://manliodedomenico.com/data.php'
 citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'https://doi.org/10.1093/comnet/cnu038')]
 icon_hash = '58851617a411221d0e7c676b'
 ustream_license = ('Open Data Commons Open Database License (ODbL)', 'https://opendatacommons.org/licenses/odbl/')
-upstream_prefix = 'https://comunelab.fbk.eu/data'
+upstream_prefix = 'https://manliodedomenico.com/data'
 files = [('Arabidopsis_Multiplex_Genetic.zip', 'Arabidopsis', 'comunelab'),
          ('Bos_Multiplex_Genetic.zip', 'Bos_Multiplex_Genetic', 'comunelab'),
          ('Candida_Multiplex_Genetic.zip', 'Candida', 'comunelab'),
@@ -43,7 +43,7 @@ files = [('Arabidopsis_Multiplex_Genetic.zip', 'Arabidopsis', 'comunelab'),
          ('Plasmodium_Multiplex_Genetic.zip', 'Plasmodium', 'comunelab'),
          ('Rattus_Multiplex_Genetic.zip', 'Rattus', 'comunelab'),
          ('SacchCere_Multiplex_Genetic.zip', 'Sacchcere', 'comunelab'),
-         ('SacchPomb_Multiplex_Genetic', 'Sacchpomb', 'comunelab'),
+         ('SacchPomb_Multiplex_Genetic.zip', 'Sacchpomb', 'comunelab'),
          ('Xenopus_Multiplex_Genetic.zip', 'Xenopus', 'comunelab'),
          ('YeastLandscape_Multiplex_Genetic.zip', 'YeastLandscape', 'comunelab')]
 
Update citations to use DOIs by Tiago de Paula Peixoto e878874
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 8fdaea2..eee5b7d 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -23,7 +23,7 @@ description = """Multiplex networks representing different types of genetic inte
 [^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
 tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
 url = 'https://comunelab.fbk.eu/data.php'
-citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'http://comnet.oxfordjournals.org/content/early/2014/10/12/comnet.cnu038.short')]
+citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'https://doi.org/10.1093/comnet/cnu038')]
 icon_hash = '58851617a411221d0e7c676b'
 ustream_license = ('Open Data Commons Open Database License (ODbL)', 'https://opendatacommons.org/licenses/odbl/')
 upstream_prefix = 'https://comunelab.fbk.eu/data'
Change license from GPLv3 to AGPLv3 by Tiago de Paula Peixoto d754be5
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 689b9b2..8fdaea2 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__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/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
index 8cdaa39..689b9b2 100644
--- a/entries/genetic_multiplex/__init__.py
+++ b/entries/genetic_multiplex/__init__.py
@@ -19,7 +19,8 @@
 from .. import *
 
 title = "Multiplex genetic interactions (2014)"
-description = "Multiplex networks representing different types of genetic interactions, for different organisms. Layers represent (i) physical, (ii) association, (iii) co-localization, (iv) direct, and (v) suppressive, (vi) additive or synthetic genetic interaction. Edge direction (i,j) indicates gene i interacting with gene j."
+description = """Multiplex networks representing different types of genetic interactions, for different organisms. Layers represent (i) physical, (ii) association, (iii) co-localization, (iv) direct, and (v) suppressive, (vi) additive or synthetic genetic interaction. Edge direction (i,j) indicates gene i interacting with gene j.[^icon]
+[^icon]: Description obtained from the [ICON](https://icon.colorado.edu) project."""
 tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
 url = 'https://comunelab.fbk.eu/data.php'
 citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'http://comnet.oxfordjournals.org/content/early/2014/10/12/comnet.cnu038.short')]
Initial commit by Tiago de Paula Peixoto cc85872
diff --git a/entries/genetic_multiplex/__init__.py b/entries/genetic_multiplex/__init__.py
new file mode 100644
index 0000000..8cdaa39
--- /dev/null
+++ b/entries/genetic_multiplex/__init__.py
@@ -0,0 +1,67 @@
+#! /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 = "Multiplex genetic interactions (2014)"
+description = "Multiplex networks representing different types of genetic interactions, for different organisms. Layers represent (i) physical, (ii) association, (iii) co-localization, (iv) direct, and (v) suppressive, (vi) additive or synthetic genetic interaction. Edge direction (i,j) indicates gene i interacting with gene j."
+tags = ['Biological', 'Gene regulation', 'Protein interactions', 'Unweighted', 'Multilayer']
+url = 'https://comunelab.fbk.eu/data.php'
+citation = [('M. De Domenico, M. A. Porter, & A. Arenas. "MuxViz: a tool for multilayer analysis and visualization of networks". Journal of Complex Networks, cnu038. (2014).', 'http://comnet.oxfordjournals.org/content/early/2014/10/12/comnet.cnu038.short')]
+icon_hash = '58851617a411221d0e7c676b'
+ustream_license = ('Open Data Commons Open Database License (ODbL)', 'https://opendatacommons.org/licenses/odbl/')
+upstream_prefix = 'https://comunelab.fbk.eu/data'
+files = [('Arabidopsis_Multiplex_Genetic.zip', 'Arabidopsis', 'comunelab'),
+         ('Bos_Multiplex_Genetic.zip', 'Bos_Multiplex_Genetic', 'comunelab'),
+         ('Candida_Multiplex_Genetic.zip', 'Candida', 'comunelab'),
+         ('Celegans_Multiplex_Genetic.zip', 'Celegans', 'comunelab'),
+         ('Drosophila_Multiplex_Genetic.zip', 'Drosophila', 'comunelab'),
+         ('DanioRerio_Multiplex_Genetic.zip', 'DanioRerio', 'comunelab'),
+         ('Gallus_Multiplex_Genetic.zip', 'Gallus', 'comunelab'),
+         ('HepatitusCVirus_Multiplex_Genetic.zip', 'HepatitusCVirus', 'comunelab'),
+         ('Homo_Multiplex_Genetic.zip', 'Homo', 'comunelab'),
+         ('HumanHerpes4_Multiplex_Genetic.zip', 'HumanHerpes4', 'comunelab'),
+         ('HumanHIV1_Multiplex_Genetic.zip', 'HumanHIV1', 'comunelab'),
+         ('Mus_Multiplex_Genetic.zip', 'Mus', 'comunelab'),
+         ('Oryctolagus_Multiplex_Genetic.zip', 'Oryctolagus', 'comunelab'),
+         ('Plasmodium_Multiplex_Genetic.zip', 'Plasmodium', 'comunelab'),
+         ('Rattus_Multiplex_Genetic.zip', 'Rattus', 'comunelab'),
+         ('SacchCere_Multiplex_Genetic.zip', 'Sacchcere', 'comunelab'),
+         ('SacchPomb_Multiplex_Genetic', 'Sacchpomb', 'comunelab'),
+         ('Xenopus_Multiplex_Genetic.zip', 'Xenopus', 'comunelab'),
+         ('YeastLandscape_Multiplex_Genetic.zip', 'YeastLandscape', 'comunelab')]
+
+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