History of omnipath
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] Add the date when each entry was added, and remove icon_hash 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/omnipath/__init__.py b/entries/omnipath/__init__.py
index 04e6a4d..a2f42ae 100644
--- a/entries/omnipath/__init__.py
+++ b/entries/omnipath/__init__.py
@@ -49,7 +49,7 @@ citation = [('D. Türei, T. Korcsmáros, J. Saez-Rodriguez, "OmniPath: guideline
'https://doi.org/10.1038/nmeth.4077'),
('D. Türei, A. Valdeolivas, L. Gul, N. Palacio-Escat, M. Klein, O. Ivanova, M. Ölbei, A. Gábor, F. Theis, D. Módos, T. Korcsmáros, J. Saez-Rodriguez, "Integrated intra- and intercellular signaling knowledge for multicellular omics analysis." Molecular Systems Biology 17, e9923 (2021)',
'https://doi.org/10.15252/msb.20209923')]
-icon_hash = None
+date_added = '2026-10-31'
# The archived contents are those served with the "academic" license (the
# default of the web service); each resource has its own license, some of
# them only for academic or non-commercial use
[entries] Prefix the properties in the descriptions with (Node), (Edge) or (Graph) 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/omnipath/__init__.py b/entries/omnipath/__init__.py
index bf3cb49..04e6a4d 100644
--- a/entries/omnipath/__init__.py
+++ b/entries/omnipath/__init__.py
@@ -28,21 +28,21 @@ The networks are all the archived contents of the OmniPath web service (the `int
The networks have the following properties (the columns of the web service; the later contents have more of them):
-- `name`: the identifier of the node in OmniPath (e.g. the UniProt accession `P0DP23`).
-- `genesymbol`: the gene symbol of the node (e.g. `CALM1`).
-- `ncbi_tax_id`: the NCBI taxonomy identifier of the organism of the node (e.g. 9606 for human; -1 if not given).
-- `entity_type` (from `2020-05-19`): the kind of node, e.g. `protein`, `complex`, `mirna`, `lncrna`, `small_molecule`.
-- Edge `is_directed`, `is_stimulation`, `is_inhibition`: whether the interaction is directed, stimulatory and inhibitory, according to at least one resource.
-- Edge `consensus_direction`, `consensus_stimulation`, `consensus_inhibition` (from `2019-06-26`): the same, according to the majority of the resources.
-- Edge `sources`: the resources of the interaction, separated by `;`.
-- Edge `references`: the PubMed identifiers of the references of the interaction (prefixed by the resource in the later contents), separated by `;`.
-- Edge `type`: the kind of interaction, e.g. `post_translational`, `transcriptional`, `post_transcriptional`, `mirna_transcriptional`, `small_molecule_protein` (`PPI`, `TF` and `MTI` until `2020-02-17`).
-- Edge dataset flags, e.g. `omnipath` (the core literature-curated signaling network), `kinaseextra`, `ligrecextra`, `pathwayextra`, `mirnatarget`, `dorothea`, `collectri`, `collectri2`, `tf_target`, `lncrna_mrna`, `tf_mirna`, `small_molecule` (`tfregulons` until `2020-02-17`; `ligrecextra` and `pathwayextra` from `2019-06-26`, `tf_target`, `lncrna_mrna` and `tf_mirna` from `2020-05-19`, `small_molecule` from `2022-01-14`, `collectri` from `2023-03-30`, `collectri2` in `2026-06-25`): whether the interaction belongs to the dataset.
-- Edge `dorothea_curated`, `dorothea_chipseq`, `dorothea_tfbs`, `dorothea_coexp`, `dorothea_level` (`tfregulons_...` until `2020-02-17`): the kinds of evidence and the confidence level (`A` to `E`) of the transcriptional regulation in DoRothEA.
-- Edge `curation_effort` (from `2020-02-17`): the number of unique resource-reference pairs of the interaction.
-- Edge `extra_attrs` (from `2021-11-13`): further attributes given by the resources, in JSON.
-- Edge `evidences` (from `2023-05-18`): the provenance of the interaction by resource and dataset, with the references and the direction and sign given by each, in JSON.
-- Edge `dip_url` (until `2021-06-21`): the URL of the interaction in DIP."""
+- (Node) `name`: the identifier of the node in OmniPath (e.g. the UniProt accession `P0DP23`).
+- (Node) `genesymbol`: the gene symbol of the node (e.g. `CALM1`).
+- (Node) `ncbi_tax_id`: the NCBI taxonomy identifier of the organism of the node (e.g. 9606 for human; -1 if not given).
+- (Node) `entity_type` (from `2020-05-19`): the kind of node, e.g. `protein`, `complex`, `mirna`, `lncrna`, `small_molecule`.
+- (Edge) `is_directed`, `is_stimulation`, `is_inhibition`: whether the interaction is directed, stimulatory and inhibitory, according to at least one resource.
+- (Edge) `consensus_direction`, `consensus_stimulation`, `consensus_inhibition` (from `2019-06-26`): the same, according to the majority of the resources.
+- (Edge) `sources`: the resources of the interaction, separated by `;`.
+- (Edge) `references`: the PubMed identifiers of the references of the interaction (prefixed by the resource in the later contents), separated by `;`.
+- (Edge) `type`: the kind of interaction, e.g. `post_translational`, `transcriptional`, `post_transcriptional`, `mirna_transcriptional`, `small_molecule_protein` (`PPI`, `TF` and `MTI` until `2020-02-17`).
+- (Edge) Dataset flags, e.g. `omnipath` (the core literature-curated signaling network), `kinaseextra`, `ligrecextra`, `pathwayextra`, `mirnatarget`, `dorothea`, `collectri`, `collectri2`, `tf_target`, `lncrna_mrna`, `tf_mirna`, `small_molecule` (`tfregulons` until `2020-02-17`; `ligrecextra` and `pathwayextra` from `2019-06-26`, `tf_target`, `lncrna_mrna` and `tf_mirna` from `2020-05-19`, `small_molecule` from `2022-01-14`, `collectri` from `2023-03-30`, `collectri2` in `2026-06-25`): whether the interaction belongs to the dataset.
+- (Edge) `dorothea_curated`, `dorothea_chipseq`, `dorothea_tfbs`, `dorothea_coexp`, `dorothea_level` (`tfregulons_...` until `2020-02-17`): the kinds of evidence and the confidence level (`A` to `E`) of the transcriptional regulation in DoRothEA.
+- (Edge) `curation_effort` (from `2020-02-17`): the number of unique resource-reference pairs of the interaction.
+- (Edge) `extra_attrs` (from `2021-11-13`): further attributes given by the resources, in JSON.
+- (Edge) `evidences` (from `2023-05-18`): the provenance of the interaction by resource and dataset, with the references and the direction and sign given by each, in JSON.
+- (Edge) `dip_url` (until `2021-06-21`): the URL of the interaction in DIP."""
tags = ['Biological', 'Protein interactions', 'Gene regulation', 'Signed', 'Unweighted', 'Multigraph', 'Metadata']
url = ['https://omnipathdb.org/', 'https://archive.omnipathdb.org/']
citation = [('D. Türei, T. Korcsmáros, J. Saez-Rodriguez, "OmniPath: guidelines and gateway for literature-curated signaling pathway resources." Nature Methods 13, 966-967 (2016)',
[entries] New entry: omnipath 7c013af
diff --git a/entries/omnipath/__init__.py b/entries/omnipath/__init__.py
new file mode 100644
index 0000000..bf3cb49
--- /dev/null
+++ b/entries/omnipath/__init__.py
@@ -0,0 +1,162 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 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/>.
+
+import csv
+import sys
+
+from .. import *
+
+title = "OmniPath molecular interactions (2018-2026)"
+description = r"""Directed and signed networks of molecular interactions from OmniPath, a database that integrates more than 100 resources of literature-curated and predicted molecular interactions (mostly of human proteins): signaling pathways (post-translational interactions, e.g. SIGNOR, SignaLink, Reactome, KEGG, PhosphoSite), enzyme-substrate (kinase-substrate) relations, ligand-receptor interactions between cells, transcriptional regulation of genes by transcription factors (DoRothEA, CollecTRI), regulation by miRNAs and lncRNAs, and interactions of small molecules with proteins. Each edge is an interaction, from the source to the target of the interaction (e.g. from a kinase to its substrate), with its direction and sign (stimulation or inhibition) when they are known; the interactions whose direction is unknown are also listed from a source to a target, with `is_directed` false.
+
+The networks are all the archived contents of the OmniPath web service (the `interactions` query, with all its datasets and organisms, i.e. human, and the interactions translated by homology to mouse and rat), each named by the date from which it was served, until the next one: `2018-06-14`, `2018-11-14`, `2019-04-25`, `2019-06-26`, `2019-08-26`, `2019-10-18`, `2019-11-27`, `2020-02-17`, `2020-05-19`, `2020-08-03`, `2020-09-09`, `2020-09-21`, `2021-01-21`, `2021-03-29`, `2021-06-16`, `2021-06-21`, `2021-11-13`, `2022-01-14`, `2023-03-30`, `2023-05-18`, `2023-05-24`, `2023-07-28` (until 2025-08-13), `2025-08-13` (the last content of the legacy web service, until 2026-06-24) and `2026-06-25` (with the new CollecTRI 2 dataset as a separate dataset). No two of them have identical content (`2023-05-24` and `2023-07-28` have the same interactions, resources and datasets, but differ in some gene symbols, directions, signs and further attributes). The current content of the web service (`omnipath_webservice_interactions__latest`, replaced in place at every update) is left out. Nodes are proteins (UniProt accessions), protein complexes (`COMPLEX:` followed by the accessions of their members), miRNAs, lncRNAs and small molecules.
+
+The networks have the following properties (the columns of the web service; the later contents have more of them):
+
+- `name`: the identifier of the node in OmniPath (e.g. the UniProt accession `P0DP23`).
+- `genesymbol`: the gene symbol of the node (e.g. `CALM1`).
+- `ncbi_tax_id`: the NCBI taxonomy identifier of the organism of the node (e.g. 9606 for human; -1 if not given).
+- `entity_type` (from `2020-05-19`): the kind of node, e.g. `protein`, `complex`, `mirna`, `lncrna`, `small_molecule`.
+- Edge `is_directed`, `is_stimulation`, `is_inhibition`: whether the interaction is directed, stimulatory and inhibitory, according to at least one resource.
+- Edge `consensus_direction`, `consensus_stimulation`, `consensus_inhibition` (from `2019-06-26`): the same, according to the majority of the resources.
+- Edge `sources`: the resources of the interaction, separated by `;`.
+- Edge `references`: the PubMed identifiers of the references of the interaction (prefixed by the resource in the later contents), separated by `;`.
+- Edge `type`: the kind of interaction, e.g. `post_translational`, `transcriptional`, `post_transcriptional`, `mirna_transcriptional`, `small_molecule_protein` (`PPI`, `TF` and `MTI` until `2020-02-17`).
+- Edge dataset flags, e.g. `omnipath` (the core literature-curated signaling network), `kinaseextra`, `ligrecextra`, `pathwayextra`, `mirnatarget`, `dorothea`, `collectri`, `collectri2`, `tf_target`, `lncrna_mrna`, `tf_mirna`, `small_molecule` (`tfregulons` until `2020-02-17`; `ligrecextra` and `pathwayextra` from `2019-06-26`, `tf_target`, `lncrna_mrna` and `tf_mirna` from `2020-05-19`, `small_molecule` from `2022-01-14`, `collectri` from `2023-03-30`, `collectri2` in `2026-06-25`): whether the interaction belongs to the dataset.
+- Edge `dorothea_curated`, `dorothea_chipseq`, `dorothea_tfbs`, `dorothea_coexp`, `dorothea_level` (`tfregulons_...` until `2020-02-17`): the kinds of evidence and the confidence level (`A` to `E`) of the transcriptional regulation in DoRothEA.
+- Edge `curation_effort` (from `2020-02-17`): the number of unique resource-reference pairs of the interaction.
+- Edge `extra_attrs` (from `2021-11-13`): further attributes given by the resources, in JSON.
+- Edge `evidences` (from `2023-05-18`): the provenance of the interaction by resource and dataset, with the references and the direction and sign given by each, in JSON.
+- Edge `dip_url` (until `2021-06-21`): the URL of the interaction in DIP."""
+tags = ['Biological', 'Protein interactions', 'Gene regulation', 'Signed', 'Unweighted', 'Multigraph', 'Metadata']
+url = ['https://omnipathdb.org/', 'https://archive.omnipathdb.org/']
+citation = [('D. Türei, T. Korcsmáros, J. Saez-Rodriguez, "OmniPath: guidelines and gateway for literature-curated signaling pathway resources." Nature Methods 13, 966-967 (2016)',
+ 'https://doi.org/10.1038/nmeth.4077'),
+ ('D. Türei, A. Valdeolivas, L. Gul, N. Palacio-Escat, M. Klein, O. Ivanova, M. Ölbei, A. Gábor, F. Theis, D. Módos, T. Korcsmáros, J. Saez-Rodriguez, "Integrated intra- and intercellular signaling knowledge for multicellular omics analysis." Molecular Systems Biology 17, e9923 (2021)',
+ 'https://doi.org/10.15252/msb.20209923')]
+icon_hash = None
+# The archived contents are those served with the "academic" license (the
+# default of the web service); each resource has its own license, some of
+# them only for academic or non-commercial use
+upstream_license = ('The licenses of the integrated resources (academic, non-profit or commercial use, depending on the resource)',
+ 'https://omnipathdb.org/info')
+upstream_prefix = 'https://archive.omnipathdb.org'
+snapshots = {
+ "2018-06-14": "omnipath_webservice_interactions__20180614-20181114.tsv.xz",
+ "2018-11-14": "omnipath_webservice_interactions__20181114-20190425.tsv.xz",
+ "2019-04-25": "omnipath_webservice_interactions__20190425-20190626.tsv.xz",
+ "2019-06-26": "omnipath_webservice_interactions__20190626-20190826.tsv.xz",
+ "2019-08-26": "omnipath_webservice_interactions__20190826-20191018.tsv.xz",
+ "2019-10-18": "omnipath_webservice_interactions__20191018-20191127.tsv.xz",
+ "2019-11-27": "omnipath_webservice_interactions__20191127-20200217.tsv.xz",
+ "2020-02-17": "omnipath_webservice_interactions__20200217-20200519.tsv.xz",
+ "2020-05-19": "omnipath_webservice_interactions__20200519-20200803.tsv.xz",
+ "2020-08-03": "omnipath_webservice_interactions__20200803-20200909.tsv.xz",
+ "2020-09-09": "omnipath_webservice_interactions__20200909-20200921.tsv.xz",
+ "2020-09-21": "omnipath_webservice_interactions__20200921-20210121.tsv.xz",
+ "2021-01-21": "omnipath_webservice_interactions__20210121-20210329.tsv.xz",
+ "2021-03-29": "omnipath_webservice_interactions__20210329-20210616.tsv.xz",
+ "2021-06-16": "omnipath_webservice_interactions__20210616-20210621.tsv.xz",
+ "2021-06-21": "omnipath_webservice_interactions__20210621-20211113.tsv.xz",
+ "2021-11-13": "omnipath_webservice_interactions__20211113-20220114.tsv.xz",
+ "2022-01-14": "omnipath_webservice_interactions__20220114-20230330.tsv.xz",
+ "2023-03-30": "omnipath_webservice_interactions__20230330-20230518.tsv.xz",
+ "2023-05-18": "omnipath_webservice_interactions__20230518-20230524.tsv.xz",
+ "2023-05-24": "omnipath_webservice_interactions__20230524-20230728.tsv.xz",
+ "2023-07-28": "omnipath_webservice_interactions__20230728-20250813.tsv.xz",
+ "2025-08-13": "legacy-webservice-20260624T211750Z/omnipath_webservice_interactions.tsv.xz",
+ "2026-06-25": "legacy-interactions-collectri2-separate-20260625T011819Z/omnipath_webservice_interactions.tsv.xz"}
+files = [(fname, alt, None) for alt, fname in snapshots.items()]
+
+def fetch_upstream(force=False):
+ return fetch_upstream_files(__name__.split(".")[-1], upstream_prefix, files,
+ force)
+
+VCOLS = ["genesymbol", "ncbi_tax_id", "entity_type"]
+
+# for checks: stop after this many rows per network (None: all)
+_check_rows = None
+
+@cache_network()
+@coerce_props()
+@annotate()
+def parse(alts=None):
+ name = __name__.split(".")[-1]
+ csv.field_size_limit(sys.maxsize)
+ for alt, fname in snapshots.items():
+ if alts is not None and alt not in alts:
+ continue
+ with open_upstream_file(name, fname, "r") as f:
+ reader = csv.reader(f, delimiter="\t")
+ header = next(reader)
+ ix = {c: i for i, c in enumerate(header)}
+ assert header[:2] == ["source", "target"], header
+ # the columns of the node attributes, for the source and the
+ # target ("x_source" or "source_x")
+ vcols = {}
+ for c in VCOLS:
+ for s, t in ((f"{c}_source", f"{c}_target"),
+ (f"source_{c}", f"target_{c}")):
+ if s in ix:
+ vcols[c] = {"source": s, "target": t}
+ vnames = {x for c in vcols.values() for x in c.values()}
+ ecols = [c for c in header[2:] if c not in vnames]
+ vidx = {}
+ vprops = {c: [] for c in vcols}
+ edges = []
+ evals = {c: [] for c in ecols}
+ for r in reader:
+ if _check_rows is not None and len(edges) >= _check_rows:
+ break
+ assert len(r) == len(header), r
+ e = []
+ for end in ("source", "target"):
+ k = r[ix[end]]
+ v = vidx.get(k)
+ if v is None:
+ v = vidx[k] = len(vidx)
+ for c in vcols:
+ vprops[c].append(r[ix[vcols[c][end]]])
+ e.append(v)
+ edges.append(e)
+ for c in ecols:
+ evals[c].append(r[ix[c]])
+ g = Graph(directed=True)
+ g.add_vertex(len(vidx))
+ g.add_edge_list(numpy.array(edges, dtype="int64").reshape(-1, 2))
+ del edges
+ g.vp.name = g.new_vp("string", vals=list(vidx.keys()))
+ for c in vcols:
+ if c == "ncbi_tax_id":
+ g.vp[c] = g.new_vp("int64_t", vals=[int(x) if x else -1
+ for x in vprops[c]])
+ else:
+ g.vp[c] = g.new_vp("string", vals=vprops[c])
+ for c in ecols:
+ vals = evals[c]
+ evals[c] = None
+ kinds = set(vals)
+ if kinds <= {"True", "False"}:
+ g.ep[c] = g.new_ep("bool", vals=[x == "True" for x in vals])
+ elif kinds <= {"0", "1"}:
+ g.ep[c] = g.new_ep("bool", vals=[x == "1" for x in vals])
+ elif c == "curation_effort":
+ g.ep[c] = g.new_ep("int", vals=[int(x) if x else -1 for x in vals])
+ else:
+ g.ep[c] = g.new_ep("string", vals=vals)
+ yield alt, g