History of huri
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: huri a6dc818
diff --git a/entries/huri/__init__.py b/entries/huri/__init__.py
new file mode 100644
index 0000000..509bda8
--- /dev/null
+++ b/entries/huri/__init__.py
@@ -0,0 +1,69 @@
+#! /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 *
+
+title = "Human Reference Interactome HuRI (2020)"
+description = """Networks of binary interactions between human proteins from the Human Reference Interactome (HuRI) mapping project of the Center for Cancer Systems Biology (CCSB) at the Dana-Farber Cancer Institute, with the Roth, Tavernier and Bader labs (Luck et al. 2020). HuRI is a systematic map of the binary interactome: the products of about 17,500 protein-coding genes ("Space III" of the human ORFeome) were screened pairwise by yeast two-hybrid (Y2H) assays, with three versions of the assay, and the detected pairs were verified by pairwise retesting (with samples validated by orthogonal assays). In all networks, nodes are proteins, identified by the Ensembl gene IDs of the genes that encode them (gene names are not given in these files), and an undirected edge represents a binary (direct) protein-protein interaction; self-loops are proteins that interact with themselves. The files have not changed since 2020.
+
+- `HuRI`: the HuRI map proper, the interactions detected in the screens of Space III (52,548 interactions among 8,272 proteins; the download page gives 52,569 interactions for this dataset).
+- `HI-union`: the union of all the systematic binary maps of the CCSB: HuRI, the earlier maps H-I-05 (CCSB-HI1, Rual et al. 2005), Venkatesan-09, Yu-11, HI-II-14 (Rolland et al. 2014) and Yang-16, and the test-space screens of 2019 (all of which are also available separately on the HuRI site).
+- `Lit-BM`: binary interactions curated from the literature and supported by at least two pieces of evidence (multiple publications or methods), as updated by Luck et al. for comparison with HuRI.
+- `Test_space_screens-19`: the interactions found in the screens of a smaller test space of genes with the assay versions of HuRI, used by Luck et al. to benchmark the screening pipeline.
+- `H-I-05`, `Venkatesan-09`, `Yu-11`, `HI-II-14`, `Yang-16`: the earlier systematic maps of the CCSB that make up `HI-union` besides HuRI, each on its own, with the proteins mapped to Ensembl gene IDs as in the other networks: H-I-05 (CCSB-HI1, Rual et al. 2005), the second-generation screens of Venkatesan et al. (2009) and Yu et al. (2011), HI-II-14 (Rolland et al. 2014) and the isoform screens of Yang et al. (2016).
+
+H-I-05 (CCSB-HI1) is also in the entry `interactome_vidal`, and HI-II-14 and Lit-BM-13 in the entry `human_interactome_2014`, with the identifiers of the original publications. The PSI-MI files of the site (with protein isoforms, scores and the screens in which each interaction was found) are not included either.
+
+The networks have the following properties:
+
+- `name`: the Ensembl gene ID."""
+tags = ['Biological', 'Protein interactions', 'Unweighted']
+url = 'https://interactome-atlas.org/download'
+citation = [('K. Luck, D.-K. Kim, L. Lambourne, K. Spirohn, B. E. Begg, W. Bian, et al., "A reference map of the human binary protein interactome." Nature 580, 402-408 (2020)',
+ 'https://doi.org/10.1038/s41586-020-2188-x')]
+icon_hash = None
+upstream_license = ('Creative Commons Attribution 4.0 International (CC BY 4.0)',
+ 'https://creativecommons.org/licenses/by/4.0/')
+upstream_prefix = 'https://interactome-atlas.org/data'
+files = [('HuRI.tsv', 'HuRI', None), ('HI-union.tsv', 'HI-union', None),
+ ('Lit-BM.tsv', 'Lit-BM', None),
+ ('Test_space_screens-19.tsv', 'Test_space_screens-19', None)]
+files += [(f'{m}.tsv', m, None) for m in ['H-I-05', 'Venkatesan-09', 'Yu-11',
+ 'HI-II-14', 'Yang-16']]
+
+def fetch_upstream(force=False):
+ return fetch_upstream_files(__name__.split(".")[-1], upstream_prefix, files,
+ force)
+
+@cache_network()
+@coerce_props(vforce={'name': 'string'})
+@annotate()
+def parse(alts=None):
+ name = __name__.split(".")[-1]
+ for fname, alt, fmt in files:
+ if alts is not None and alt not in alts:
+ continue
+ # Columns: Ensembl gene ID A, Ensembl gene ID B (no header)
+ with open_upstream_file(name, fname, "r") as f:
+ rows = [l.rstrip("\r\n").split("\t") for l in f if l.strip()]
+ assert all(len(r) == 2 and r[0].startswith("ENSG") and r[1].startswith("ENSG")
+ for r in rows)
+ g = Graph(directed=False)
+ g.vp.name = g.add_edge_list(rows, hashed=True, hash_type="string")
+ yield alt, g