Contents

1 Introduction

Database knowledge is essential for omics data analysis and modeling. Despite being an important factor, contributing to the outcome of studies, often subject to little attention. With OmniPath our aim is to raise awarness of the diversity of available resources and facilitate access to these resources in a uniform and transparent way. OmniPath has been developed in a close contact to mechanistic modeling applications and functional omics analysis, hence it is especially suitable for these fields. OmniPath has been used for the analysis of various omics data. In the Saez-Rodriguez group we often use it in a pipeline with our footprint based methods DoRothEA and PROGENy and our causal reasoning method CARNIVAL to infer signaling mechanisms from transcriptomics data.

One recent novelty of OmniPath is a collection of intercellular communication interactions. Apart from simply merging data from existing resources, OmniPath defines a number of intercellular communication roles, such as ligand, receptor, adhesion, enzyme, matrix, etc, and generalizes the terms ligand and receptor by introducing the terms transmitter, receiver and mediator. This unique knowledge base is especially adequate for the emerging field of cell-cell communication analysis, typically from single cell transcriptomics, but also from other kinds of data.

2 Overview

2.1 Pre-requisites

No special pre-requisites apart from basic knowledge of R. OmniPath, the database resource in the focus of this workshop has been published in [1,2], however you don’t need to know anything about OmniPath to benefit from the workshop. In the workshop we will demonstrate the R/Bioconductor package OmnipathR. If you would like to try the examples yourself we recommend to install the latest version of the package before the workshop:

library(devtools)
install_github('saezlab/OmnipathR')

2.2 Participation

In the workshop we will present the design and some important features of the OmniPath database, so can be confident you get the most out of it. Then we will demonstrate further useful features of the OmnipathR package, such as accessing other resources, building graphs. Participants are encouraged to experiment with the examples and shape the contents of the workshop by asking questions. We are happy to recieve questions and topic suggestions by email also before the workshop. These could help us to adjust the contents to the interests of the participants.

2.3 R / Bioconductor packages used

  • OmnipathR
  • igraph
  • dplyr

2.4 Time outline

Total: 45 minutes

Activity Time
OmniPath database overview 5m
Network datasets 10m
Other OmniPath databases 5m
Intercellular communication 10m
Igraph integration 5m
Further resources 10m

2.5 Workshop goals and objectives

In this workshop you will get familiar with the design and features of the OmniPath databases. For example, to know some important details about the datasets and parameters which help you to query the database the most suitable way according to your purposes. You will also learn about functionalities of the OmnipathR package which might make your work easier.

2.6 Learning goals

  • Learn about the OmniPath database, its contents and how it can be useful
  • Get a picture about the OmnipathR package capabilities
  • Learn about the datasets and parameters of various OmniPath query types

2.7 Learning objectives

  • Try examples of each OmniPath query type with various parameters
  • Build igraph networks, search for paths
  • Access some further interesting resources

3 Workshop

library(OmnipathR)

3.1 Data from OmniPath

OmniPath consists of five major databases, each combining many original resources. The five databases are:

  • Network (interactions)
  • Enzyme-substrate relationships (enzsub)
  • Protein complexes (complexes)
  • Annotations (annotations)
  • Intercellular communication roles (intercell)

The parameters for each database (query type) are available in the web service, for example: https://omnipathdb.org/queries/interactions. The R package supports all features of the web service and the parameter names and values usually correspond to the web service parameters which you would use in a HTTP query string.

3.1.1 Networks

The network database contains protein-protein, gene regulatory and miRNA-mRNA interactions. Soon more interaction types will be added. Some of these categories can be further divided into datasets which are defined by the type of evidences. A full list of network datasets:

Not individual interactions but resource are classified into the datasets above, so these can overlap. Each interaction type and dataset has its dedicated function in OmnipathR, above we provide links to their help pages. As an example, let’s see the gene regulatory interactions:

gri <- import_transcriptional_interactions()
gri
## # A tibble: 73,802 × 17
##    source target source_genesymbol target_genesymbol is_directed is_stimulation is_inhibition consensus_direc…
##    <chr>  <chr>  <chr>             <chr>                   <dbl>          <dbl>         <dbl>            <dbl>
##  1 P35869 Q9ULH1 AHR               ASAP1                       1              0             0                0
##  2 P35869 P04798 AHR               CYP1A1                      1              1             0                1
##  3 P35869 P05177 AHR               CYP1A2                      1              0             0                0
##  4 P35869 Q16678 AHR               CYP1B1                      1              1             0                1
##  5 P35869 P11308 AHR               ERG                         1              0             0                0
##  6 P01100 P35869 FOS               AHR                         1              0             0                0
##  7 P35869 P01100 AHR               FOS                         1              0             0                0
##  8 P35869 P01106 AHR               MYC                         1              0             0                0
##  9 P35869 Q07889 AHR               SOS1                        1              0             0                0
## 10 P35869 P19224 AHR               UGT1A6                      1              0             0                0
## # … with 73,792 more rows, and 9 more variables: consensus_stimulation <dbl>, consensus_inhibition <dbl>,
## #   dip_url <lgl>, sources <chr>, references <chr>, curation_effort <dbl>, dorothea_level <chr>,
## #   n_references <chr>, n_resources <int>

The interaction data frame contains the UniProt IDs and Gene Symbols of the interacting partners, the list of resources and references (PubMed IDs) for each interaction, and whether the interaction is directed, stimulatory or inhibitory.

3.1.1.1 Igraph integration

The network data frames can be converted to igraph graph objects, so you can make use of the graph and visualization methods of igraph:

gr_graph <- interaction_graph(gri)
gr_graph
## IGRAPH d0f12d7 DN-- 14991 73802 -- 
## + attr: name (v/c), up_ids (v/c), is_directed (e/n), is_stimulation (e/n), is_inhibition (e/n),
## | consensus_direction (e/n), consensus_stimulation (e/n), consensus_inhibition (e/n), dip_url
## | (e/l), sources (e/x), references (e/x), curation_effort (e/n), dorothea_level (e/c),
## | n_references (e/c), n_resources (e/n)
## + edges from d0f12d7 (vertex names):
##  [1] AHR->ASAP1    AHR->CYP1A1   AHR->CYP1A2   AHR->CYP1B1   AHR->ERG      FOS->AHR      AHR->FOS     
##  [8] AHR->MYC      AHR->SOS1     AHR->UGT1A6   AHR->VGLL4    AR ->ABCC4    AR ->ABCE1    AR ->ABHD2   
## [15] AR ->ABLIM1   AR ->ACAD10   AR ->ACOXL    AR ->ACPP     AR ->ACSL1    AR ->ACTA1    AR ->ADAMTS4 
## [22] AR ->ADAMTSL1 AR ->ADGRG6   AR ->ADGRV1   AR ->ADIPOR1  AR ->AFDN     AR ->AFF1     AR ->AFF3    
## [29] AR ->AGAP1    AR ->AHSG     AR ->CRYBG1   AR ->AKAP13   AR ->AKAP6    AR ->AKAP7    AR ->AKR1B1  
## + ... omitted several edges

On this network we can use OmnipathR’s find_all_paths function, which is able to look up all paths up to a certain length between two set of nodes:

paths <- find_all_paths(
    graph = gr_graph,
    start = c('EGFR', 'STAT3'),
    end = c('AKT1', 'ULK1'),
    attr = 'name'
)

As this is a gene regulatory network, the paths are TFs regulating the transcription of other TFs.

3.1.2 Enzyme-substrate relationships

Enzyme-substrate interactions are also available also in the interactions query, but the enzyme-substrate query type provides additional information about the PTM types and residues.

enz_sub <- import_omnipath_enzsub()
enz_sub
## # A tibble: 39,042 × 12
##    enzyme substrate enzyme_genesymbol substrate_genes… residue_type residue_offset modification sources       
##    <chr>  <chr>     <chr>             <chr>            <chr>                 <dbl> <chr>        <chr>         
##  1 P06239 O14543    LCK               SOCS3            Y                       204 phosphoryla… KEA;MIMP;Phos…
##  2 P06239 O14543    LCK               SOCS3            Y                       221 phosphoryla… KEA;MIMP;Phos…
##  3 P12931 O14746    SRC               TERT             Y                       707 phosphoryla… BEL-Large-Cor…
##  4 P06241 O15117    FYN               FYB1             Y                       651 phosphoryla… HPRD;KEA;Phos…
##  5 P06241 O15117    FYN               FYB1             Y                       595 phosphoryla… HPRD;KEA;Phos…
##  6 P06241 O15117    FYN               FYB1             Y                       697 phosphoryla… HPRD;KEA;Phos…
##  7 P06241 O15117    FYN               FYB1             Y                       625 phosphoryla… PhosphoSite;P…
##  8 P06241 O15117    FYN               FYB1             Y                       771 phosphoryla… PhosphoSite;P…
##  9 P06241 O15117    FYN               FYB1             Y                       559 phosphoryla… PhosphoSite;P…
## 10 P06241 O15117    FYN               FYB1             Y                       755 phosphoryla… PhosphoSite;P…
## # … with 39,032 more rows, and 4 more variables: references <chr>, curation_effort <dbl>, n_references <chr>,
## #   n_resources <int>

This data frame also can be converted to an igraph object:

es_graph <- enzsub_graph(enz_sub)
es_graph
## IGRAPH f499b0e DN-- 4397 39042 -- 
## + attr: name (v/c), up_ids (v/c), residue_type (e/c), residue_offset (e/n), modification (e/c),
## | sources (e/x), references (e/x), curation_effort (e/n), n_references (e/c), n_resources (e/n)
## + edges from f499b0e (vertex names):
##  [1] LCK  ->SOCS3  LCK  ->SOCS3  SRC  ->TERT   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1  
##  [8] FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1  
## [15] FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1   FYN  ->FYB1  
## [22] ABL1 ->PLSCR1 ABL1 ->PLSCR1 SRC  ->PLSCR1 SRC  ->PLSCR1 ABL1 ->TP73   CDK2 ->TP73   CHEK1->TP73  
## [29] AURKB->BIRC5  AURKB->BIRC5  AURKB->BIRC5  CDK1 ->BIRC5  PDPK1->PDPK1  PDPK1->PDPK1  PDPK1->PDPK1 
## [36] PDPK1->PDPK1  PDPK1->PDPK1  PDPK1->PDPK1  PDPK1->PDPK1  PDPK1->PDPK1  PDPK1->PDPK1  PDPK1->PDPK1 
## [43] PDPK1->PDPK1  PDPK1->PDPK1  SRC  ->PDPK1  SRC  ->PDPK1  SRC  ->PDPK1  SRC  ->PDPK1  SRC  ->PDPK1 
## + ... omitted several edges

It is also possible to add effect signs (stimulatory or inhibitory) to enzyme-PTM relationships:

es_signed <- get_signed_ptms(enz_sub)

3.1.3 Protein complexes

cplx <- import_omnipath_complexes()
cplx
## # A tibble: 28,173 × 7
##    name         components     components_genesym… stoichiometry sources       references     identifiers     
##    <chr>        <chr>          <chr>               <chr>         <chr>         <chr>          <chr>           
##  1 NFY          P23511_P25208… NFYA_NFYB_NFYC      1:1:1         CORUM;Comple… 15243141;9372… CORUM:4478;Comp…
##  2 mTORC2       P68104_P85299… DEPTOR_EEF1A1_MLST… 0:0:0:0:0     Signor        <NA>           Signor:SIGNOR-C2
##  3 mTORC1       P42345_Q8N122… AKT1S1_DEPTOR_MLST… 0:0:0:0:0     Signor        <NA>           Signor:SIGNOR-C3
##  4 SCF-betaTRCP P63208_Q13616… BTRC_CUL1_SKP1      1:1:1         CORUM;Comple… 9990852        CORUM:227;Compl…
##  5 CBP/p300     Q09472_Q92793  CREBBP_EP300        0:0           Signor        <NA>           Signor:SIGNOR-C6
##  6 P300/PCAF    Q09472_Q92793… CREBBP_EP300_KAT2B  0:0:0         Signor        <NA>           Signor:SIGNOR-C7
##  7 SMAD2/SMAD4  Q13485_Q15796  SMAD2_SMAD4         1:2           ComplexPorta… 12923550;8061… PDB:1u7v;Signor…
##  8 SMAD3/SMAD4  P84022_Q13485  SMAD3_SMAD4         2:1           ComplexPorta… 12923550;8061… PDB:1U7F;PDB:1u…
##  9 SMAD4/JUN    P05412_Q13485  JUN_SMAD4           0:0           Signor        <NA>           Signor:SIGNOR-C…
## 10 SMAD2/SMURF2 Q15796_Q9HAU4  SMAD2_SMURF2        1:1           Compleat;Sig… 11389444       Compleat:HC501;…
## # … with 28,163 more rows

The resulted data frame provides the constitution and stoichiometry of protein complexes, with references.

3.1.4 Annotations

The annotations query type includes a diverse set of resources (about 60 of them), about protein function, localization, structure and expression. For most use cases it is better to convert the data into wide data frames, as these correspond to the original format of the resources. If you load more than one resources into wide data frames, the result will be a list of data frames, otherwise one data frame. See a few examples with localization data from UniProt, tissue expression from Human Protein Atlas and pathway information from SignaLink:

uniprot_loc <- import_omnipath_annotations(
    resources = 'UniProt_location',
    wide = TRUE
)
uniprot_loc
## # A tibble: 55,470 × 5
##    uniprot genesymbol entity_type location                features                   
##    <chr>   <chr>      <chr>       <chr>                   <chr>                      
##  1 Q99470  SDF2       protein     Secreted                <NA>                       
##  2 O75494  SRSF10     protein     Nucleus speckle         <NA>                       
##  3 O75494  SRSF10     protein     Cytoplasm               <NA>                       
##  4 Q9NQ55  PPAN       protein     Nucleus                 <NA>                       
##  5 Q9NQ55  PPAN       protein     Nucleolus               <NA>                       
##  6 Q8IW03  SIAH3      protein     Mitochondrion           <NA>                       
##  7 Q96L92  SNX27      protein     Cytosol                 <NA>                       
##  8 Q96L92  SNX27      protein     Early endosome membrane Peripheral membrane protein
##  9 Q96L92  SNX27      protein     Cytoplasm               <NA>                       
## 10 Q99598  TSNAX      protein     Nucleus                 <NA>                       
## # … with 55,460 more rows

The entity_type field can be protein, mirna or complex. Protein complexes mostly annotated based on the consensus of their members, we should be aware that this is an in silico inference.

In case of spelling mistake either in parameter names or values OmnipathR either corrects the mistake or gives a warning or error:

uniprot_loc <- import_omnipath_annotations(
    resources = 'Uniprot_location',
    wide = TRUE
)
## Warning in omnipath_check_param(param): The following resources are not available: Uniprot_location. Check the
## resource names for spelling mistakes.

Above the name of the resource is wrong. If the parameter name is wrong, it throws an error:

uniprot_loc <- import_omnipath_annotations(
    resuorces = 'UniProt_location',
    wide = TRUE
)
## Error in import_omnipath_annotations(resuorces = "UniProt_location", wide = TRUE): Downloading the entire annotations database is not allowed by default because of its huge size (>1GB). If you really want to do that, you find static files at https://archive.omnipathdb.org/. However we recommend to query a set of proteins or a few resources, depending on your interest.

Singular vs. plural forms and a few synonyms are automatically corrected:

uniprot_loc <- import_omnipath_annotations(
    resource = 'UniProt_location',
    wide = TRUE
)

Another example with tissue expression from Human Protein Atlas:

hpa_tissue <- import_omnipath_annotations(
    resources = 'HPA_tissue',
    wide = TRUE
)
hpa_tissue
## # A tibble: 1,810,497 × 15
##    uniprot genesymbol entity_type organ           tissue level status prognostic favourable pathology n_not_detected
##    <chr>   <chr>      <chr>       <chr>           <chr>  <chr> <chr>  <chr>      <chr>      <chr>     <chr>         
##  1 O43657  TSPAN6     protein     skin 1          fibro… Not … Appro… False      False      False     <NA>          
##  2 O43657  TSPAN6     protein     soft tissue 1   perip… Not … Appro… False      False      False     <NA>          
##  3 O43657  TSPAN6     protein     endometrium 2   gland… High  Appro… False      False      False     <NA>          
##  4 O43657  TSPAN6     protein     lung            pneum… Low   Appro… False      False      False     <NA>          
##  5 O43657  TSPAN6     protein     small intestine gland… Medi… Appro… False      False      False     <NA>          
##  6 O43657  TSPAN6     protein     hippocampus     glial… Not … Appro… False      False      False     <NA>          
##  7 O43657  TSPAN6     protein     spleen          cells… Not … Appro… False      False      False     <NA>          
##  8 O43657  TSPAN6     protein     nasopharynx     respi… High  Appro… False      False      False     <NA>          
##  9 O43657  TSPAN6     protein     lymphoma        lymph… Not … <NA>   <NA>       <NA>       True      11            
## 10 O43657  TSPAN6     protein     bone marrow     hemat… Not … Appro… False      False      False     <NA>          
## # … with 1,810,487 more rows, and 4 more variables: n_low <chr>, n_medium <chr>, n_high <chr>, score <chr>

And pathway annotations from SignaLink:

slk_pathw <- import_omnipath_annotations(
    resources = 'SignaLink_pathway',
    wide = TRUE
)
slk_pathw
## # A tibble: 2,372 × 4
##    uniprot genesymbol entity_type pathway                 
##    <chr>   <chr>      <chr>       <chr>                   
##  1 P20963  CD247      protein     T-cell receptor         
##  2 P43403  ZAP70      protein     Receptor tyrosine kinase
##  3 P43403  ZAP70      protein     T-cell receptor         
##  4 Q9NYJ8  TAB2       protein     Receptor tyrosine kinase
##  5 Q9NYJ8  TAB2       protein     Innate immune pathways  
##  6 Q9NYJ8  TAB2       protein     Toll-like receptor      
##  7 Q9NYJ8  TAB2       protein     JAK/STAT                
##  8 O43318  MAP3K7     protein     Receptor tyrosine kinase
##  9 O43318  MAP3K7     protein     WNT                     
## 10 O43318  MAP3K7     protein     Toll-like receptor      
## # … with 2,362 more rows

3.1.4.1 Combining networks with annotations

Annotations can be easily added to network data frames, in this case both the source and target nodes will have their annotation data. This function accepts either the name of an annotation resource or an annotation data frame:

network <- import_omnipath_interactions()

network_slk_pw <- annotated_network(network, 'SignaLink_pathway')
network_slk_pw
## # A tibble: 79,245 × 18
##    source target source_genesymbol target_genesymbol is_directed is_stimulation is_inhibition consensus_direc…
##    <chr>  <chr>  <chr>             <chr>                   <dbl>          <dbl>         <dbl>            <dbl>
##  1 P0DP25 P48995 CALM3             TRPC1                       1              0             1                1
##  2 Q03135 P48995 CAV1              TRPC1                       1              1             0                1
##  3 P14416 P48995 DRD2              TRPC1                       1              1             0                1
##  4 Q02790 P48995 FKBP4             TRPC1                       1              0             1                1
##  5 Q99750 P48995 MDFI              TRPC1                       1              0             1                1
##  6 Q14571 P48995 ITPR2             TRPC1                       1              1             0                1
##  7 P29966 P48995 MARCKS            TRPC1                       1              0             1                1
##  8 Q13255 P48995 GRM1              TRPC1                       1              1             0                1
##  9 Q13586 P48995 STIM1             TRPC1                       1              1             0                1
## 10 P48995 Q13507 TRPC1             TRPC3                       1              1             0                1
## # … with 79,235 more rows, and 10 more variables: consensus_stimulation <dbl>, consensus_inhibition <dbl>,
## #   dip_url <chr>, sources <chr>, references <chr>, curation_effort <dbl>, n_references <chr>,
## #   n_resources <int>, pathway_source <chr>, pathway_target <chr>

3.1.5 Intercellular communication roles

The intercell database assigns roles to proteins such as ligand, receptor, adhesion, transporter, ECM, etc. The design of this database is far from being simple, best is to check the description in the recent OmniPath paper [1].

ic <- import_omnipath_intercell()
ic
## # A tibble: 301,527 × 15
##    category      parent database scope aspect source uniprot genesymbol entity_type consensus_score transmitter
##    <chr>         <chr>  <chr>    <chr> <chr>  <chr>  <chr>   <chr>      <chr>                 <dbl> <lgl>      
##  1 transmembrane trans… UniProt… gene… locat… resou… Q9H6L2  TMEM231    protein                   5 FALSE      
##  2 transmembrane trans… UniProt… gene… locat… resou… Q8NFT8  DNER       protein                   8 FALSE      
##  3 transmembrane trans… UniProt… gene… locat… resou… Q6NTF9  RHBDD2     protein                   5 FALSE      
##  4 transmembrane trans… UniProt… gene… locat… resou… Q9H1U9  SLC25A51   protein                   5 FALSE      
##  5 transmembrane trans… UniProt… gene… locat… resou… Q6V0L0  CYP26C1    protein                   5 FALSE      
##  6 transmembrane trans… UniProt… gene… locat… resou… Q5QGT7  RTP2       protein                   6 FALSE      
##  7 transmembrane trans… UniProt… gene… locat… resou… O60320  FAM189A1   protein                   5 FALSE      
##  8 transmembrane trans… UniProt… gene… locat… resou… A2RU48  SMCO3      protein                   5 FALSE      
##  9 transmembrane trans… UniProt… gene… locat… resou… Q9UHF4  IL20RA     protein                   8 FALSE      
## 10 transmembrane trans… UniProt… gene… locat… resou… Q08722  CD47       protein                   7 FALSE      
## # … with 301,517 more rows, and 4 more variables: receiver <lgl>, secreted <lgl>,
## #   plasma_membrane_transmembrane <lgl>, plasma_membrane_peripheral <lgl>

This data frame is about individual proteins. To create a network of intercellular communication, we provide the import_intercell_network function:

icn <- import_intercell_network(high_confidence = TRUE)
icn
## # A tibble: 6,544 × 46
##    category_intercell_source parent_intercell_source source target category_interc… parent_intercel… target_genesymb…
##    <chr>                     <chr>                   <chr>  <chr>  <chr>            <chr>            <chr>           
##  1 activating_cofactor       receptor_regulator      O14786 P35968 receptor         receptor         KDR             
##  2 activating_cofactor       receptor_regulator      O14786 Q9UIW2 receptor         receptor         PLXNA1          
##  3 activating_cofactor       receptor_regulator      P08138 P04629 receptor         receptor         NTRK1           
##  4 activating_cofactor       receptor_regulator      P34925 Q9H461 receptor         receptor         FZD8            
##  5 activating_cofactor       receptor_regulator      Q01973 P21860 receptor         receptor         ERBB3           
##  6 activating_cofactor       receptor_regulator      Q01974 O00238 receptor         receptor         BMPR1B          
##  7 activating_cofactor       receptor_regulator      Q01974 Q13467 receptor         receptor         FZD5            
##  8 activating_cofactor       receptor_regulator      Q01974 Q13467 tight_junction   tight_junction   FZD5            
##  9 activating_cofactor       receptor_regulator      Q01974 Q14332 receptor         receptor         FZD2            
## 10 activating_cofactor       receptor_regulator      Q13145 O00238 receptor         receptor         BMPR1B          
## # … with 6,534 more rows, and 39 more variables: source_genesymbol <chr>, is_directed <dbl>,
## #   is_stimulation <dbl>, is_inhibition <dbl>, consensus_direction <dbl>, consensus_stimulation <dbl>,
## #   consensus_inhibition <dbl>, dip_url <chr>, ligrecextra <lgl>, omnipath <lgl>, sources <chr>,
## #   references <chr>, curation_effort <dbl>, n_references <chr>, n_resources <int>,
## #   database_intercell_source <chr>, scope_intercell_source <chr>, aspect_intercell_source <chr>,
## #   category_source_intercell_source <chr>, genesymbol_intercell_source <chr>,
## #   entity_type_intercell_source <chr>, consensus_score_intercell_source <dbl>, …

The result is similar to the annotated_network, each interacting partner has its intercell annotations. In the intercell database, OmniPath aims to ship all available information, which means it might contain quite some false positives. The high_confidence option is a shortcut to stringent filter settings based on the number and consensus of provenances. Using instead the filter_intercell_network function, you can have a fine control over the quality filters. It has many options which are described in the manual.

icn <- import_intercell_network()
icn_hc <- filter_intercell_network(
    icn,
    ligand_receptor = TRUE,
    consensus_percentile = 30,
    loc_consensus_percentile = 50,
    simplify = TRUE
)

The filter_intecell function does a similar procedure on an intercell annotation data frame.

3.1.6 Metadata

The list of available resources for each query type can be retrieved by the get_..._resources function. For example, the annotation resources are:

get_annotation_resources()
##  [1] "Adhesome"             "Almen2009"            "Baccin2019"           "CORUM_Funcat"        
##  [5] "CORUM_GO"             "CSPA"                 "CSPA_celltype"        "CancerGeneCensus"    
##  [9] "CancerSEA"            "CellCellInteractions" "CellChatDB"           "CellChatDB_complex"  
## [13] "CellPhoneDB"          "CellPhoneDB_complex"  "CellTalkDB"           "ComPPI"              
## [17] "DGIdb"                "DisGeNet"             "EMBRACE"              "Exocarta"            
## [21] "GO_Intercell"         "GPCRdb"               "Guide2Pharma"         "HGNC"                
## [25] "HPA_secretome"        "HPA_subcellular"      "HPA_tissue"           "HPMR"                
## [29] "HPMR_complex"         "HumanCellMap"         "ICELLNET"             "ICELLNET_complex"    
## [33] "IntOGen"              "Integrins"            "KEGG-PC"              "Kirouac2010"         
## [37] "LOCATE"               "LRdb"                 "MCAM"                 "MSigDB"              
## [41] "Matrisome"            "MatrixDB"             "Membranome"           "NetPath"             
## [45] "OPM"                  "Phobius"              "Phosphatome"          "Ramilowski2015"      
## [49] "Ramilowski_location"  "SIGNOR"               "SignaLink_function"   "SignaLink_pathway"   
## [53] "Surfaceome"           "TCDB"                 "TFcensus"             "TopDB"               
## [57] "UniProt_family"       "UniProt_keyword"      "UniProt_location"     "UniProt_tissue"      
## [61] "UniProt_topology"     "Vesiclepedia"         "Zhong2015"            "connectomeDB2020"    
## [65] "iTALK"                "kinase.com"           "talklr"

Categories in the intercell query also can be listed:

get_intercell_generic_categories()
##  [1] "transmembrane"                       "transmembrane_predicted"            
##  [3] "peripheral"                          "plasma_membrane"                    
##  [5] "plasma_membrane_transmembrane"       "plasma_membrane_regulator"          
##  [7] "plasma_membrane_peripheral"          "secreted"                           
##  [9] "cell_surface"                        "ecm"                                
## [11] "ligand"                              "receptor"                           
## [13] "secreted_enzyme"                     "secreted_peptidase"                 
## [15] "extracellular"                       "intracellular"                      
## [17] "receptor_regulator"                  "secreted_receptor"                  
## [19] "sparc_ecm_regulator"                 "ecm_regulator"                      
## [21] "ligand_regulator"                    "cell_surface_ligand"                
## [23] "cell_adhesion"                       "matrix_adhesion"                    
## [25] "adhesion"                            "matrix_adhesion_regulator"          
## [27] "cell_surface_enzyme"                 "cell_surface_peptidase"             
## [29] "secreted_enyzme"                     "extracellular_peptidase"            
## [31] "secreted_peptidase_inhibitor"        "transporter"                        
## [33] "ion_channel"                         "ion_channel_regulator"              
## [35] "gap_junction"                        "tight_junction"                     
## [37] "adherens_junction"                   "desmosome"                          
## [39] "intracellular_intercellular_related"
# get_intercell_categories() # this would show also the specific categories

3.2 Data from other resources

An increasing number of other resources (currently around 20) can be directly accessed by OmnipathR (not from the omnipathdb.org domain, but from their original providers). As an example,

3.3 General purpose functionalities

3.3.1 Identifier translation

OmnipathR uses UniProt data to translate identifiers. You may find a list of the available identifiers in the manual page of translate_ids function. The evaluation of the parameters is tidyverse style, and both UniProt’s notation and a simple internal notation can be used. Furthermore, it can handle vectors, data frames or list of vectors.

d <- data.frame(uniprot_id = c('P00533', 'Q9ULV1', 'P43897', 'Q9Y2P5'))
d <- translate_ids(
    d,
    uniprot_id = uniprot, # the source ID type and column name
    genesymbol # the target ID type using OmniPath's notation
)
d
##   uniprot_id genesymbol
## 1     P00533       EGFR
## 2     Q9ULV1       FZD4
## 3     P43897       TSFM
## 4     Q9Y2P5    SLC27A5

It is possible to have one source ID type and column in one call, but multiple target ID types and columns: to translate a network, two calls are necessary. Note: certain functionality fails recently due to changes in other packages, will be fixed in a few days.

network <- import_omnipath_interactions()
network <- translate_ids(
    network,
    source = uniprot_id,
    source_entrez = entrez
)
network <- translate_ids(
    network,
    target = uniprot_id,
    target_entrez = entrez
)

3.3.2 Gene Ontology

OmnipathR is able to look up ancestors and descendants in ontology trees, and also exposes the ontology tree in three different formats: as a data frame, as a list of lists or as an igraph graph object. All these can have two directions: child-to-parent (c2p) or parent-to-child (p2c).

go <- go_ontology_download()
go$rel_tbl_c2p
## # A tibble: 59,288 × 3
##    term       relation parents  
##    <fct>      <chr>    <list>   
##  1 GO:0000001 is_a     <chr [2]>
##  2 GO:0000002 is_a     <chr [1]>
##  3 GO:0000003 is_a     <chr [1]>
##  4 GO:0000006 is_a     <chr [1]>
##  5 GO:0000007 is_a     <chr [1]>
##  6 GO:0000009 is_a     <chr [1]>
##  7 GO:0000010 is_a     <chr [1]>
##  8 GO:0000011 is_a     <chr [2]>
##  9 GO:0000012 is_a     <chr [1]>
## 10 GO:0000014 is_a     <chr [1]>
## # … with 59,278 more rows

To convert the relations to list or graph format, use the relations_table_to_list or relations_table_to_graph functions. To swap between c2p and p2c use the swap_relations function.

go_graph <- relations_table_to_graph(go$rel_tbl_c2p)
go_graph
## IGRAPH 53d7690 DN-- 43917 86871 -- 
## + attr: name (v/c), relation (e/c)
## + edges from 53d7690 (vertex names):
##  [1] GO:0000001->GO:0048308 GO:0000001->GO:0048311 GO:0000002->GO:0007005 GO:0000003->GO:0008150
##  [5] GO:0000006->GO:0005385 GO:0000007->GO:0005385 GO:0000009->GO:0000030 GO:0000010->GO:0004659
##  [9] GO:0000011->GO:0007033 GO:0000011->GO:0048308 GO:0000012->GO:0006281 GO:0000014->GO:0004520
## [13] GO:0000015->GO:1902494 GO:0000015->GO:0005829 GO:0000016->GO:0004553 GO:0000017->GO:0042946
## [17] GO:0000018->GO:0051052 GO:0000018->GO:0006310 GO:0000019->GO:0000018 GO:0000019->GO:0006312
## [21] GO:0000022->GO:0051231 GO:0000022->GO:1903047 GO:0000022->GO:0000070 GO:0000022->GO:0007052
## [25] GO:0000023->GO:0005984 GO:0000024->GO:0000023 GO:0000024->GO:0046351 GO:0000025->GO:0000023
## [29] GO:0000025->GO:0046352 GO:0000026->GO:0000030 GO:0000027->GO:0022618 GO:0000027->GO:0042255
## + ... omitted several edges

It can also translate term IDs to term names:

ontology_ensure_name('GO:0000022')
## [1] "mitotic spindle elongation"

The first call takes a few seconds as it loads the database, subsequent calls are faster.

3.4 Useful tips

OmnipathR features a logging facility, a YML configuration file and a cache directory. By default the highest level messages are printed to the console, and you can browse the full log from R by calling omnipath_log(). The cache can be controlled by a number of functions, for example you can search for cache files by omnipath_cache_search(), and delete them by omnipath_cache_remove:

omnipath_cache_search('dorothea')
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$key
## [1] "c80a1943db40b7d3e23dcaa2afb68d3c37342458"
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$url
## [1] "https://github.com/saezlab/dorothea/raw/master/inst/extdata/networks/chip_seq/remap/network.rds"
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$post
## list()
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$payload
## list()
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$ext
## [1] ""
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$versions
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$versions$`1`
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$versions$`1`$number
## [1] "1"
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$versions$`1`$path
## [1] "/home/biocbuild/.cache/OmnipathR/c80a1943db40b7d3e23dcaa2afb68d3c37342458-1"
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$versions$`1`$status
## [1] "ready"
## 
## $c80a1943db40b7d3e23dcaa2afb68d3c37342458$versions$`1`$dl_finished
## [1] "2021-08-18 20:57:09 EDT"
## 
## 
## 
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`
## $`04562e577c465d67da1d5636644c939fc0850b15`$key
## [1] "04562e577c465d67da1d5636644c939fc0850b15"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$url
## [1] "https://omnipathdb.org/interactions?genesymbols=yes&resources=ABS,ARACNe-GTEx_DoRothEA,DoRothEA-reviews_DoRothEA,ENCODE-distal,ENCODE-proximal&datasets=dorothea&organisms=9606&dorothea_levels=A,B&fields=sources,references,curation_effort,dorothea_level&license=academic"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$post
## list()
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$payload
## list()
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$ext
## [1] "rds"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions$`1`
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions$`1`$number
## [1] "1"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions$`1`$path
## [1] "/home/biocbuild/.cache/OmnipathR/04562e577c465d67da1d5636644c939fc0850b15-1.rds"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions$`1`$dl_started
## [1] "2021-08-18 20:59:31 EDT"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions$`1`$status
## [1] "ready"
## 
## $`04562e577c465d67da1d5636644c939fc0850b15`$versions$`1`$dl_finished
## [1] "2021-08-18 20:59:31 EDT"
## 
## 
## 
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$key
## [1] "f4de1f63d60f35d18bb262dd6de84d1cccd9cc97"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$url
## [1] "https://omnipathdb.org/interactions?genesymbols=yes&datasets=dorothea,tf_target&organisms=9606&dorothea_levels=A,B&fields=sources,references,curation_effort,dorothea_level&license=academic"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$post
## list()
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$payload
## list()
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$ext
## [1] "rds"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions$`1`
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions$`1`$number
## [1] "1"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions$`1`$path
## [1] "/home/biocbuild/.cache/OmnipathR/f4de1f63d60f35d18bb262dd6de84d1cccd9cc97-1.rds"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions$`1`$dl_started
## [1] "2021-08-20 17:53:09 EDT"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions$`1`$status
## [1] "ready"
## 
## $f4de1f63d60f35d18bb262dd6de84d1cccd9cc97$versions$`1`$dl_finished
## [1] "2021-08-20 17:53:09 EDT"

The configuration can be set by options, all options are prefixed with omnipath., and can be saved by omnipath_save_config. For example, to exclude all OmniPath resources which don’t allow for-profit use:

options(omnipath.license = 'commercial')

The internal state is contained by the omnipath.env environment.

3.5 Further information

Find more examples in the other vignettes and the manual. For example, the NicheNet vignette presents the integratation between OmnipathR and nichenetr, a method for prediction of ligand-target gene connections. Another Bioconductor package wppi is able to add context specific scores to networks, based on genes of interest, functional annotations and network proximity (random walks with restart). The new paths vignette presents some approaches to construct pathways from networks. The design of the OmniPath database is described in our recent paper [1], while an in depth analysis of the pathway resources is available in the first OmniPath paper [2].

Session info

## R version 4.1.0 beta (2021-05-03 r80259)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.2 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.14-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.14-bioc/R/lib/libRlapack.so
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_GB             
##  [4] LC_COLLATE=C               LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
## [10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] OmnipathR_3.1.4  BiocStyle_2.21.3
## 
## loaded via a namespace (and not attached):
##  [1] progress_1.2.2      tidyselect_1.1.1    xfun_0.25           bslib_0.2.5.1       purrr_0.3.4        
##  [6] vctrs_0.3.8         generics_0.1.0      htmltools_0.5.1.1   yaml_2.2.1          utf8_1.2.2         
## [11] rlang_0.4.11        jquerylib_0.1.4     pillar_1.6.2        later_1.3.0         glue_1.4.2         
## [16] DBI_1.1.1           rappdirs_0.3.3      bit64_4.0.5         readxl_1.3.1        lifecycle_1.0.0    
## [21] stringr_1.4.0       cellranger_1.1.0    evaluate_0.14       knitr_1.33.5        tzdb_0.1.2         
## [26] curl_4.3.2          parallel_4.1.0      fansi_0.5.0         Rcpp_1.0.7          readr_2.0.1        
## [31] backports_1.2.1     checkmate_2.0.0     BiocManager_1.30.16 vroom_1.5.4         jsonlite_1.7.2     
## [36] bit_4.0.4           hms_1.1.0           digest_0.6.27       stringi_1.7.3       bookdown_0.23      
## [41] dplyr_1.0.7         cli_3.0.1           tools_4.1.0         magrittr_2.0.1      logger_0.2.1       
## [46] sass_0.4.0          tibble_3.1.3        crayon_1.4.1        tidyr_1.1.3         pkgconfig_2.0.3    
## [51] ellipsis_0.3.2      xml2_1.3.2          prettyunits_1.1.1   assertthat_0.2.1    rmarkdown_2.10     
## [56] httr_1.4.2          R6_2.5.1            igraph_1.2.6        compiler_4.1.0

References

[1] D Turei, A Valdeolivas, L Gul, N Palacio-Escat, M Klein, O Ivanova, M Olbei, A Gabor, F Theis, D Modos, T Korcsmaros and J Saez-Rodriguez (2021) Integrated intra- and intercellular signaling knowledge for multicellular omics analysis. Molecular Systems Biology 17:e9923

[2] D Turei, T Korcsmaros and J Saez-Rodriguez (2016) OmniPath: guidelines and gateway for literature-curated signaling pathway resources. Nature Methods 13(12)