Code Monkey home page Code Monkey logo

omnipathr's Introduction

OmnipathR

An R client for the OmniPath web service and many other resources.

Package contents

  • Client for the OmniPath web service
  • Functions for post-processing OmniPath data
  • Ensembl BioMart, UniProt and KEGG clients
  • Access to other databases (18+ resources, see below)
  • Integration to NicheNet, a method to infer ligand activities from transcriptomics data

OmniPath web service client

OmnipathR retrieves the data from the OmniPath web service at

https://omnipathdb.org/

The web service implements a very simple REST style API. This package make requests by the HTTP protocol to retreive the data. Hence, fast Internet access is required for a proper use of OmnipathR.

What is OmniPath?

OmniPath is a database of:

  • Protein-protein, TF target and miRNA-mRNA interactions
  • Enzyme-PTM relationships
  • Protein complexes
  • Annotations of protein function, structure, localization, expression
  • Intercellular communication roles of proteins

To learn more about OmniPath, you can visit its website, or read our recent publication or our first paper from 2016, especially its supplementary material.

Access to further resources

The package provides access to a number of other databases: BioPlex, ConsensusPathDB, EVEX, Gene Ontology, Guide to Pharmacology (IUPHAR/BPS), Harmonizome, HTRIdb, Human Phenotype Ontology, InWeb InBioMap, KEGG Pathway, Pathway Commons, PrePPI, Ramilowski et al. 2015, RegNetwork, ReMap, TF census, TRRUST and Vinayagam et al. 2011.

Documentation

The latest version of the reference manual is available from https://static.omnipathdb.org/omnipathr_manual.pdf. Tutorials can be found at https://workflows.omnipathdb.org/. Sroll down for quick start examples.

OmniPath query types

We provide here a brief summary about the data available through OmnipathR. OmnipathR provides access to 5 types of queries:

  1. Interactions: protein-protein interactions from different datasets.
  2. Enzyme-substrate: enzyme-PTM (post-translational modification) relationships.
  3. Complexes: comprehensive database of more than 22000 protein complexes.
  4. Annotations: large variety of data about proteins and complexes features.
  5. Intercell: information on the roles in inter-cellular signaling.

For a more detailed information, we recommend you to visit the following sites:

https://omnipathdb.org/

https://omnipathdb.org/info

https://github.com/saezlab/pypath/blob/master/webservice.rst

https://saezlab.github.io/OmnipathR/articles/omnipath_intro.html

Installation

First of all, you need a current version of R (https://r-project.org).

From Bioconductor

OmnipathR is a freely available package deposited on Bioconductor and Github: (https://bioconductor.org/, https://github.com/saezlab/OmnipathR).

You can install it by running the following commands on a R console:

if (!requireNamespace('BiocManager', quietly = TRUE))
    install.packages('BiocManager')

## Last release in Bioconductor
BiocManager::install('OmnipathR', version = '3.12')
## Development version with the lastest updates
BiocManager::install('OmnipathR', version = 'devel')

From github

We add new features to OmnipathR way more often than the Bioconductor release frequency. To make use of the recent developments, you can use devtools to install the package directly from github:

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

Getting started and some usage examples

To get started, we strongly recommend to read our main vignette in order to deal with the different types of queries and handle the data they return:

https://saezlab.github.io/OmnipathR/articles/omnipath_intro.html

You can also check the manual:

https://saezlab.github.io/OmnipathR/reference/index.html

In addition, we provide here some examples for a quick start:

library(OmnipathR)

Download human protein-protein interactions from the specified resources:

interactions <- import_omnipath_interactions(
    resources = c('SignaLink3', 'PhosphoSite', 'SIGNOR')
)

Download human enzyme-PTM relationships from the specified resources:

enzsub <- import_omnipath_enzsub(resources = c('PhosphoSite', 'SIGNOR'))

Convert both data frames into networks (igraph objects)

ptms_g = ptms_graph(ptms = enzsub)
OPI_g = interaction_graph(interactions = interactions)

Print some interactions in a nice format:

print_interactions(head(interactions))

          source interaction         target n_resources n_references
4    SRC (P12931)  ==( + )==> TRPV1 (Q8NER1)           9            6
2  PRKG1 (Q13976)  ==( - )==> TRPC6 (Q9Y210)           7            5
1  PRKG1 (Q13976)  ==( - )==> TRPC3 (Q13507)           9            2
5    LYN (P07948)  ==( + )==> TRPV4 (Q9HBA0)           9            2
6  PTPN1 (P18031)  ==( - )==> TRPV6 (Q9H1D0)           3            2
3 PRKACA (P17612)  ==( + )==> TRPV1 (Q8NER1)           6            1

Find interactions between a specific kinase and a specific substrate:

print_interactions(dplyr::filter(enzsub,enzyme_genesymbol=='MAP2K1',
  substrate_genesymbol=='MAPK3'))

           enzyme interaction           substrate    modification n_resources
1 MAP2K1 (Q02750)       ====> MAPK3_Y204 (P27361) phosphorylation           8
2 MAP2K1 (Q02750)       ====> MAPK3_T202 (P27361) phosphorylation           8
3 MAP2K1 (Q02750)       ====> MAPK3_Y210 (P27361) phosphorylation           2
4 MAP2K1 (Q02750)       ====> MAPK3_T207 (P27361) phosphorylation           2

Find shortest paths on the directed network between proteins:

print_path_es(shortest_paths(OPI_g,from = 'TYRO3',to = 'STAT3',
    output = 'epath')$epath[[1]],OPI_g)

           source interaction          target n_resources n_references
1  TYRO3 (Q06418)  ==( ? )==>   AKT1 (P31749)           2            0
2   AKT1 (P31749)  ==( - )==> DAB2IP (Q5VWQ8)           3            1
3 DAB2IP (Q5VWQ8)  ==( - )==>  STAT3 (P40763)           1            1

Find all shortest paths between proteins:

print_path_vs(all_shortest_paths(OPI_g,from = 'DYRK2',to = 'MAPKAPK2')$res,OPI_g)
Pathway 1: DYRK2 -> TBK1 -> NFKB1 -> MAP3K8 -> MAPK3 -> MAPKAPK2
Pathway 2: DYRK2 -> TBK1 -> AKT3 -> MAP3K8 -> MAPK3 -> MAPKAPK2
Pathway 3: DYRK2 -> TBK1 -> AKT2 -> MAP3K8 -> MAPK3 -> MAPKAPK2
Pathway 4: DYRK2 -> TBK1 -> AKT1 -> MAP3K8 -> MAPK3 -> MAPKAPK2
Pathway 5: DYRK2 -> TBK1 -> AKT3 -> PEA15 -> MAPK3 -> MAPKAPK2
Pathway 6: DYRK2 -> TBK1 -> AKT2 -> PEA15 -> MAPK3 -> MAPKAPK2
.....

Alternatives

Python

A similar web service client is available for Python:

<https://github.com/saezlab/omnipath>

Cytoscape

The OmniPath Cytoscape app provides access to the interactions, enzyme-PTM relationships and some of the annotations:

<https://apps.cytoscape.org/apps/omnipath>

Customization

The pypath Python module is a tool for building the OmniPath databases in a fully customizable way. We recommend to use pypath if you want to:

  • Tailor the database building to your needs
  • Include resources not available in the public web service
  • Use the rich Python APIs available for the database objects
  • Make sure the data from the original sources is the most up-to-date
  • Use the methods in pypath.inputs to download data from resources
  • Use the various extra tools in pypath.utils, e.g. for identifier translation, homology translation, querying Gene Ontology, working with protein sequences, processing BioPAX, etc.

With pypath it's also possible to run your own web service and serve your custom databases to the OmnipathR R client and the omnipath Python cient.

Feedbacks, bug reports, features

Feedbacks and bugreports are always very welcome!

Please use the Github issue page to report bugs or for questions:

https://github.com/saezlab/OmnipathR/issues

Many thanks for using OmnipathR!

omnipathr's People

Contributors

alberto-valdeolivas avatar christianholland avatar deeenes avatar gabora avatar goultard59 avatar hallba avatar jwokaty avatar nturaga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

omnipathr's Issues

Compatibility with ggraph

Nice to see this as an R package as well! 👍

It looks like the current version does not play nice with ggraph (related: thomasp85/ggraph#214; in fact, the code example is taken from working with OmnipathR and ggraph):

library(ggraph)
library(tidygraph)

net = OmnipathR::import_AllInteractions() %>%
    OmnipathR::interaction_graph() %>%
    as_tbl_graph() %>%
    activate(nodes) %>%
    filter(name == "TP53")

ggraph(net)

DoRothEA files

Hi Omnipath team,

Thank you so much for crating this tool.
While go thorough the documentation at I could not able to download the file DoRothEA in the link below.

Thank you!

NicheNet with OmnipathR on whole blood microarray data?

Hi,
first of all congratulations for the new release of such a great database and package you have built!
I'm intrigued by the new function that allows to build a nichenet model and already ran the pipeline presented in the vignette on my whole blood microarray data (bulk data). However, according to nichenetr developers, the approach could be used on "cell population – sorted bulk data", but no mention on whole blood data.

I was curious to know your opinion on this, and whether you rather recommend using other approache (e.g. CARNIVAL)

import_intercell_network() returns grouped tibble

Is it indented that the output from

import_intercell_network(
  interactions_param = list(datasets = c('ligrecextra', 'omnipath', 
                                         'pathwayextra'),
                            transmitter_param = list(parent = 'ligand'),
                            receiver_param = list(parent = 'receptor')
  ))

is a grouped tibble?

# A tibble: 61,076 x 42
# Groups:   category_intercell_source, parent_intercell_source, source, target,
#   category_intercell_target [61,076]

Timeline to merge BMA branch

Is there a timeline to merge the BMA... branch? The code was independent within the code base, but the branch has fallen substantially behind master.

PPI resources in omnipath

Dear,

First of all, I would like thank you for this amazing resource which has helped me a lot in my research.

I'm using the import_all_interactions function in OmnipathR to look for interactors of my protein of interest. One of the main databases that I was using before is BioGRID, which is one of the resources of omnipath. But when I compared the interactors of my protein between manually querying BioGRID and the filtered interactors of the import_all_interactions function of Omnipath, I found that many interactors in BioGRID weren't included in the import_all_interactions. Also, the command below only gives around 2400 interactors and BioGRID says that it contains over 1 million interactions. So my first guess is that BioGRID is not updated in omnipath? I'm relatively new to R, so maybe I'm filtering wrong or I'm missing something.

all_interactions_human <- import_all_interactions(organism = 9606, resources = "BioGRID")

Thank you in advance!

SSL certificate problem: certificate has expired

Hi,

Firstly, thanks for the very nice package - really like it. I started recently to run in the following error for a multitude of functions:

SSL certificate problem: certificate has expired

For example if I run: get_interaction_resources() I get this error. How can I renew the SSL certificates for your package?

integrating STRING or custom PPI

Hello,

To start , I want to say that OmnipathR has been incredibly helpful in my research. Thanks for creating this.

I have a issue regarding extracting PPI for certain proteins like Vcam1 for mouse. For the current study that I am doing, I am using CARNIVAL to predict causal networks. In our studies we have found Vcam1 to be strongly down regulated in RNA-seq data. But it is missing from the final CARNIVAL network. After some digging up, I realized that it is missing from the PPI network that I downloaded via OmnipathR using import_all_interactions function.

I was able to extract the interacting partners of Vcam1 from STRING PPI database. I was wondering, how to integrate these interactions with the other interactions downloaded from using OminpathR. Omnipath interactions include the activation/inhibition information while the STRING database don't provide this information.

Could you please help me out ?

Thanks in advance for any help...

Best,

Anupam

https://omnipathdb.org/ - 500 Internal Server Error

Hi,

thank you for developing Omnipath, I have been trying to retrieve interaction data from the https://omnipathdb.org using the function import_ligrecextra_interactions().

However, I get the error:
Error in open.connection(structure(9L, class = c("curl", "connection"), conn_id = <pointer: 0xabd>), : HTTP error 500..

I checked further if I can download the data from the link:
https://omnipathdb.org/interactions?genesymbols=yes&datasets=ligrecextra&organisms=9606&fields=sources,references,curation_effort&license=academic but no link to https://omnipathdb.org/ is currently working for me and I get 500 Internal Server Error.

Thank you in advance for looking into it (@deeenes) :).

Best wishes,
Georgia

Building NicheNet PK with error

Hi @deeenes,

I was trying to run the nichenet_main(tiny=True) pipeline and I get the output save to "nichenet_results/networks.rds".

However, I also get the following error when it tries to optimize the network:

Error in stopWithJobErrorMessages(inds, vcapply(result.list[inds], as.character)) : Errors occurred in 160 slave jobs, displaying at most 10 of them:

object 'ncitations' not found

Any idea how can we resolve this?

Thanks!
Daniel

Bug in newest R versions

Hi deenes,

In the scope of the network biology course we've been running into bugs when downloading resources:

# load interactions from BioGRID
biogrid_interactions <- import_omnipath_interactions(resources = "BioGRID")
Error in `mutate()`:
ℹ In argument: `n_references = ifelse(...)`.
Caused by error in `map()`:
ℹ In index: 1.
Caused by error in `.f()`:
! Arguments in `...` must be passed by position, not name.
✖ Problematic argument:
• outsep = outsep
Run `rlang::last_error()` to see where the error occurred.


> rlang::last_error()
<error/dplyr:::mutate_error>
Error in `mutate()`:
ℹ In argument: `n_references = ifelse(...)`.
Caused by error in `map()`:
ℹ In index: 1.
---
Backtrace:
  1. OmnipathR::import_omnipath_interactions(resources = "BioGRID")
 31. purrr (local) `<fn>`(`<rlb_rr__>`)
 32. cli::cli_abort(...)
Caused by error in `.f()`:
! Arguments in `...` must be passed by position, not name.
✖ Problematic argument:
• outsep = outsep
---
Backtrace:
  1. OmnipathR::import_omnipath_interactions(resources = "BioGRID")
 19. purrr::map(., method, ...)
 20. purrr:::map_("list", .x, .f, ..., .progress = .progress)
 24. dplyr (local) .f(.x[[i]], ...)
Run `rlang::last_trace()` to see the full context.

It's a bit hard for me to tell where the error comes from. I have the same error when running on R 4.2.1 and 4.2.2.

Here is the session info:

R version 4.2.1 (2022-06-23)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Ventura 13.2

Matrix products: default
LAPACK: /opt/homebrew/Caskroom/miniforge/base/envs/teaching/lib/libopenblasp-r0.3.21.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] OmnipathR_3.5.25    BiocManager_1.30.19 igraph_1.3.5       

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.10       cellranger_1.1.0  pillar_1.8.1      compiler_4.2.1    later_1.3.0       prettyunits_1.1.1 tools_4.2.1       progress_1.2.2    bit_4.0.5         digest_0.6.31     evaluate_0.20     jsonlite_1.8.4    lifecycle_1.0.3   tibble_3.1.8      checkmate_2.1.0  
[16] pkgconfig_2.0.3   rlang_1.0.6       cli_3.6.0         yaml_2.3.7        curl_5.0.0        xfun_0.36         fastmap_1.1.0     withr_2.5.0       stringr_1.5.0     xml2_1.3.3        knitr_1.42        dplyr_1.1.0       httr_1.4.4        generics_0.1.3    vctrs_0.5.2      
[31] hms_1.1.2         rappdirs_0.3.3    bit64_4.0.5       tidyselect_1.2.0  glue_1.6.2        R6_2.5.1          fansi_1.0.4       readxl_1.4.1      vroom_1.6.1       rmarkdown_2.20    tidyr_1.3.0       purrr_1.0.1       readr_2.1.3       tzdb_0.3.0        logger_0.2.2     
[46] magrittr_2.0.3    htmltools_0.5.4   backports_1.4.1   ellipsis_0.3.2    rvest_1.0.3       utf8_1.2.2        stringi_1.7.12    crayon_1.5.2 

Problem with downloading enzub particular database

Hello,
Could you help to fix the problem:

OK:

cddb_targets <- import_omnipath_interactions(resources = 'CancerDrugsDB', datasets = 'small_molecule')
[2023-01-11 06:57:45] [SUCCESS] [OmnipathR] Downloaded 1683 interactions.

interactions <- import_omnipath_interactions( resources = c('PhosphoSite', 'SIGNOR'))
[2023-01-11 07:03:53] [SUCCESS] [OmnipathR] Downloaded 13871 interactions.

enzsub <- import_omnipath_enzsub()
[2023-01-11 07:07:39] [SUCCESS] [OmnipathR] Downloaded 42248 enzyme-substrate relationships.

NOT OK:

enzsub <- import_omnipath_enzsub(resources = c('PhosphoSite', 'SIGNOR'))
[2023-01-11 07:04:15] [WARN] [OmnipathR] Failed to download https://omnipathdb.org/enzsub?genesymbols=yes&resources=PhosphoSite,SIGNOR&organisms=9606&fields=sources,references,curation_effort&license=academic (attempt 1/3); error: HTTP error 500.
[2023-01-11 07:04:20] [WARN] [OmnipathR] Failed to download https://omnipathdb.org/enzsub?genesymbols=yes&resources=PhosphoSite,SIGNOR&organisms=9606&fields=sources,references,curation_effort&license=academic (attempt 2/3); error: HTTP error 500.
[2023-01-11 07:04:26] [ERROR] [OmnipathR] Failed to download https://omnipathdb.org/enzsub?genesymbols=yes&resources=PhosphoSite,SIGNOR&organisms=9606&fields=sources,references,curation_effort&license=academic (attempt 3/3); error: HTTP error 500.
Error in open.connection(5L, "rb") : HTTP error 500.

Utilize Omnipath to construct a subset of high-confidence cancer PPI network for downstream network analysis approaches

Dear Omnipath people,

initially kudos for this great and most comprehensive resource of biological interactions !! My current post is more some important questions of possible implementations, rather than a direct issue, that perhaps also other people currently investigate or benefit;

briefly, based on my current project, I have constructed a somatic variant prioritization score per patient level, aiming to identify the most "oncogenic" relative mutations; besides various metrics being utilized, I would like to construct a "hub connectivity" score: that is, for each of the final selected oncogenic mutations, to exploit on the gene level, its connectivity and the number of distinct PPI interactors it has, based on high-confidence interactions; My ultimate goal is through using OmnipathR, for each of the genes in the input list, to have an aggregated "centrality" score, based on the total mutated gene-interactor distinct pairs that could be retreived;

Thus, my major questions are the following:

  1. For starting, the most safe approach would be to just query all the available PPIs, using some known recourses, like this:

interactions <- import_omnipath_interactions(resources = c('SignaLink3', 'PhosphoSite', 'SIGNOR'))

Or as my purpose is more "cancer-oriented", I should query additional specific databases? Would specific ones covered by Omnipath to be more appropriate for my purpose?

  1. Regarding the quality and number of interactions, as depicted from above:
head(interactions[,c(1,2,13,15)])
# A tibble: 6 x 4
  source target curation_effort n_resources
  <chr>  <chr>            <dbl>       <int>
1 Q13976 Q13507               9           8
2 P17612 Q9Y210               4           2
3 Q13976 Q9HCX4               3           3
4 P12931 Q8NER1               8           5
5 Q13438 Q9HBA0               3           3
6 P18031 Q9H1D0              10           6

One parallel filtering could be applied regarding especially the n_resources? And one PPI interaction to be more trustworthy, to be considered as having at least >= 3 in the respective field? But also the column curation_effort could be used as well?

  1. In addition, as also suggested from another tutorial (https://workflows.omnipathdb.org/tissue-hpa-r.html), could an additional filtering based on external expression evidence of the affected gene, in the specific cancer studied, through the HPA portal?

  2. Finally, for my "hub_score" approximation, the most direct way is to convert the data frame object from Omnipath, to an igraph object, through the igraph R package? To apply various metrics? Or could be also additional capabilities from Omnipath functionalities?

Thanks a gazillion :)

Efstathios

Putative issue with estimating kinase activity based on information from Omnipath db using cancer phosphoproteomics measurements

Dear OmnipathR community,

initially congrats for this great and comprehensive resource !! My major question is based on the utilization of Omnipath db, within the analysis of a cancer phosphoproteomics dataset, in the context of estimating kinase activities based on various comparisons;

In detail,

following the according vignette https://github.com/saezlab/kinase_tf_mini_tuto, I performed pairwise comparisons with limma to identify differentially phosphorylated peptides for 14 different conditions/timepoints; afterwards, using the vignette with Omnipath, I computed kinase activity analysis, in which I have attached two representative plots;

KinaseActivity.Sel.Plots.zip

As you can see, in the top perturbed targets, there are genes like IGF1 and ILB; however, these are not kinases/phosphatases; Thus, I incorrectly interpret the results, or indeed the analysis should not be mentioned kinase activity analysis, as on the results it includes targets that are not direct kinases/phosphatases?

omnipath_ptm <- get_signed_ptms()
omnipath_ptm <- omnipath_ptm[omnipath_ptm$modification %in% c("dephosphorylation","phosphorylation"),]
sel.omnipath <- omnipath_ptm %>% filter(enzyme_genesymbol%in%c("IGF1","IL1B"))

I just had a brief navigation into the Omnipath db, and I have attached a small snapshot as a tsv file, with the information regarding the signaling interactions keeping only IGF1 and IL1B; as you can see, both IGF1 and IL1B are mentioned in the column enzyme_genesymbol, and you see that there are various entries in the substrate_genesymbol, based on the enzyme-substrate relationship, along with the status (i.e. phosphorylation) and other information; that is why these are also appeared in the activity analysis?

Omnipath.DB.Check.Phospho.IGF1.IL1B.tsv.zip

To further expand this, one “plausible explanation” , as also found from the this publication: https://skeletalmusclejournal.biomedcentral.com/articles/10.1186/2044-5040-1-4

“A simplified scheme of the IGF1-Akt pathway is shown in Figure 1. Binding of IGF1 to its receptor leads to activation of its intrinsic tyrosine kinase and autophosphorylation, thus generating docking sites for insulin receptor substrate (IRS), which is also phosphorylated by the IGF1 receptor.”

Indeed, in the tsv file I have attached, there is a relationship of enzyme->substrate with IGF1 to AKT1, with the modification phosphorylation; thus, if the total translation of the activity refers also not only to direct kinases, but also other enzymes/growth factors that indirectly promote activation/de-activation of signaling cascades like this, then the total description of the analysis should be changed to something more general? Or another step would be to completely refine the db from R, keeping only known kinases/phosphatases in the enzyme_genesymbol?

For example, one quick and robust solution, would be to download a curated list of kinases/phosphatases? And as a second step, directly filter the omnipath network like this:

omnipath_ptm <- get_signed_ptms()
omnipath_ptm <- omnipath_ptm[omnipath_ptm$modification %in% c("dephosphorylation","phosphorylation"),]
sel.omnipath <- omnipath_ptm %>% filter(enzyme_genesymbol%in%kinase/phosphatase_vector) ?

Thank you in advance and looking forward for your feedback :)

sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] limma_3.50.0    PhosR_1.4.0     readxl_1.3.1    forcats_0.5.1   stringr_1.4.0   dplyr_1.0.7    
 [7] purrr_0.3.4     readr_2.1.0     tidyr_1.1.4     tibble_3.1.6    ggplot2_3.3.5   tidyverse_1.3.1
[13] decoupleR_2.0.0 OmnipathR_3.2.0

resources not accessible

Hi folks,

Following code:

signalink_pathways <-
  OmnipathR::import_omnipath_annotations(
    resources = 'SignaLink_pathway',
    entity_types = 'protein',
    wide = TRUE
  ) %>%
  select(genesymbol, pathway)

Produces following error:
Error in open.connection(con, "rb") : HTTP error 500.

Any idea how to solve it?

Thank you and regards,
Amel

getURL() failed

Hi,

Thanks for a great resource! I am using the import_OmniPath_annotations method for human genes, but for some selections of genes, the URL is not responding, and I recieve and error, e.g.:

cannot open URL 'https://omnipathdb.org/annotations?&proteins=YTHDF3,YTHDF2,YTHDF1,YTHDC2,YTHDC1,YRDC,YPEL5,YPEL4,YPEL3,YPEL2,YPEL1,YOD1,YME1L1,YLPM1,YKT6,YJU2,YJEFN3,YIPF7,YIPF6,YIPF5,YIPF4,YIPF3,YIPF2,YIPF1,YIF1B,YIF1A,YES1,YEATS4,YEATS2,YDJC,YBX3,YBX2,YBX1,YBEY,YARS2,YARS1,YAP1,YAF2,YAE1,XYLT2,XYLT1,XXYLT1,XRRA1,XRN2,XRN1,XRCC6,XRCC5,XRCC4,XRCC3,XRCC2

Not sure why this fails, got any idea?

On beforehand, thanks!

regards,
Sigve

Link rot causes OmnipathR functions to stop working

A third party changed their URL, and this causes OmnipathR to throw an error:

library(OmnipathR)
networks <- nichenet_networks()
[2022-09-21 15:17:56] [SUCCESS] [OmnipathR] Building NicheNet network knowledge
[2022-09-21 15:17:56] [SUCCESS] [OmnipathR] Starting to build NicheNet signaling network
[2022-09-21 15:18:02] [SUCCESS] [OmnipathR] Downloaded 77073 interactions.
[2022-09-21 15:18:13] [SUCCESS] [OmnipathR] Harmonizome (maayanlab.cloud): downloaded 6013 records
[2022-09-21 15:18:13] [SUCCESS] [OmnipathR] Harmonizome (maayanlab.cloud): downloaded 12161 records
[2022-09-21 15:18:13] [SUCCESS] [OmnipathR] Harmonizome (maayanlab.cloud): downloaded 819 records
[2022-09-21 15:18:14] [WARN]    [OmnipathR] Failed to download `https://stke.sciencemag.org/content/sigtrans/suppl/2011/09/01/4.189.rs8.DC1/4_rs8_Tables_S1_S2_and_S6.zip` (attempt 1/3); error: HTTP error 503.
[2022-09-21 15:18:16] [WARN]    [OmnipathR] Failed to download `https://stke.sciencemag.org/content/sigtrans/suppl/2011/09/01/4.189.rs8.DC1/4_rs8_Tables_S1_S2_and_S6.zip` (attempt 2/3); error: HTTP error 503.
[2022-09-21 15:18:17] [ERROR]   [OmnipathR] Failed to download `https://stke.sciencemag.org/content/sigtrans/suppl/2011/09/01/4.189.rs8.DC1/4_rs8_Tables_S1_S2_and_S6.zip` (attempt 3/3); error: HTTP error 503.
Error in download_base(url = url, fun = curl_download, destfile = version$path,  :
  Failed to download `https://stke.sciencemag.org/content/sigtrans/suppl/2011/09/01/4.189.rs8.DC1/4_rs8_Tables_S1_S2_and_S6.zip` (attempt 3/3); error: HTTP error 503.

This file seems to have the broken link:

"vinayagam": [
"https://www.science.org/action/downloadSupplement?",
"doi=10.1126%%2Fscisignal.2001699&",
"file=4_rs8_tables_s1_s2_and_s6.zip"
],

The URL in the urls.json file seems to take us to this old URL that does not work anymore:

https://stke.sciencemag.org/content/sigtrans/suppl/2011/09/01/4.189.rs8.DC1/4_rs8_Tables_S1_S2_and_S6.zip

Instead, it should be taking us to this new URL that does work on September 21, 2022:

https://www.science.org/doi/suppl/10.1126/scisignal.2001699/suppl_file/4_rs8_tables_s1_s2_and_s6.zip

Each time a third party makes changes to their URLs, we can expect that some OmnipathR function is going to be broken.

Could you please consider downloading each dependency by yourself, and then uploading each one to a permanent repository (e.g. Zenodo) for future researchers? Permanent archival would ensure that your package does not throw errors the next time some third party changes the URLs.

According to Wikipedia:

A 2003 study found that on the Web, about one link out of every 200 broke each week,[1] suggesting a half-life of 138 weeks.

Thank you for the tremendous contribution to the research community! It's truly magical to have one central package for accessing so many sources of information. It would be a shame to have all of this effort wasted due to link rot.

`hpo_download` throws exception in `mutate` due to `dbl` type columns

R version 4.2.2 (2022-10-31) -- "Innocent and Trusting"
Platform: x86_64-pc-linux-gnu (64-bit)

[ins] r$> library(devtools)                                                                                                                                                                                                                                   
Loading required package: usethis

[ins] r$> load_all()                                                                                                                                                                                                                                          
ℹ Loading OmnipathR

[ins] r$> hpo <- hpo_download()                                                                                                                                                                                                                               
Error in `mutate()`:
ℹ In argument: `across(everything(), na_if, "-")`.
Caused by error in `across()`:
! Can't compute column `entrez_gene_id`.
Caused by error in `fn()`:
! Can't convert `y` <character> to match type of `x` <double>.
Run `rlang::last_error()` to see where the error occurred.

[ins] r$> rlang::last_error()                                                                                                                                                                                                                                 
<error/dplyr:::mutate_error>
Error in `mutate()`:
ℹ In argument: `across(everything(), na_if, "-")`.
Caused by error in `across()`:
! Can't compute column `entrez_gene_id`.
---
Backtrace:
  1. OmnipathR::hpo_download()
 33. dplyr (local) `<fn>`(`<vctrs_r_>`)
Caused by error in `fn()`:
! Can't convert `y` <character> to match type of `x` <double>.
---
Backtrace:
  1. OmnipathR::hpo_download()
 17. dplyr::across(everything(), na_if, "-")
 19. dplyr (local) fn(col, ...)
Run `rlang::last_trace()` to see the full context.

[ins] r$> rlang::last_trace()                                                                                                                                                                                                                                 
<error/dplyr:::mutate_error>
Error in `mutate()`:
ℹ In argument: `across(everything(), na_if, "-")`.
Caused by error in `across()`:
! Can't compute column `entrez_gene_id`.
---
Backtrace:
     ▆
  1. ├─OmnipathR::hpo_download()
  2. │ └─... %T>% load_success() at omnipathr/R/hpo.R:55:4
  3. ├─OmnipathR:::load_success(.)
  4. │ └─from_cache %<>% if_null(data %>% is_from_cache) at omnipathr/R/misc.R:345:4
  5. ├─OmnipathR:::if_null(., data %>% is_from_cache)
  6. │ └─value1 %>% is.null %>% if (value2) value1 at omnipathr/R/misc.R:437:4
  7. ├─data %>% is_from_cache
  8. ├─OmnipathR:::is_from_cache(.)
  9. │ └─obj %>% attr("origin") %>% ... at omnipathr/R/misc.R:367:4
 10. ├─dplyr::mutate(., across(everything(), na_if, "-"))
 11. ├─dplyr:::mutate.data.frame(., across(everything(), na_if, "-"))
 12. │ └─dplyr:::mutate_cols(.data, dplyr_quosures(...), by)
 13. │   ├─base::withCallingHandlers(...)
 14. │   └─dplyr:::mutate_col(dots[[i]], data, mask, new_columns)
 15. │     └─mask$eval_all_mutate(quo)
 16. │       └─dplyr (local) eval()
 17. ├─dplyr::across(everything(), na_if, "-")
 18. │ ├─base::withCallingHandlers(...)
 19. │ └─dplyr (local) fn(col, ...)
 20. │   └─vctrs::vec_cast(x = y, to = x, x_arg = "y", to_arg = "x")
 21. ├─vctrs (local) `<fn>`()
 22. │ └─vctrs::vec_default_cast(...)
 23. │   ├─base::withRestarts(...)
 24. │   │ └─base (local) withOneRestart(expr, restarts[[1L]])
 25. │   │   └─base (local) doWithOneRestart(return(expr), restart)
 26. │   └─vctrs::stop_incompatible_cast(...)
 27. │     └─vctrs::stop_incompatible_type(...)
 28. │       └─vctrs:::stop_incompatible(...)
 29. │         └─vctrs:::stop_vctrs(...)
 30. │           └─rlang::abort(message, class = c(class, "vctrs_error"), ..., call = vctrs_error_call(call))
 31. │             └─rlang:::signal_abort(cnd, .file)
 32. │               └─base::signalCondition(cnd)
 33. ├─dplyr (local) `<fn>`(`<vctrs_r_>`)
 34. │ └─rlang::abort(bullets, call = error_call, parent = cnd)
 35. │   └─rlang:::signal_abort(cnd, .file)
 36. │     └─base::signalCondition(cnd)
 37. └─dplyr (local) `<fn>`(`<rlng_rrr>`)
 38.   └─rlang::abort(message, class = error_class, parent = parent, call = error_call)
Caused by error in `fn()`:
! Can't convert `y` <character> to match type of `x` <double>.
---
Backtrace:
     ▆
  1. ├─OmnipathR::hpo_download()
  2. │ └─... %T>% load_success() at omnipathr/R/hpo.R:55:4
  3. ├─OmnipathR:::load_success(.)
  4. │ └─from_cache %<>% if_null(data %>% is_from_cache) at omnipathr/R/misc.R:345:4
  5. ├─OmnipathR:::if_null(., data %>% is_from_cache)
  6. │ └─value1 %>% is.null %>% if (value2) value1 at omnipathr/R/misc.R:437:4
  7. ├─data %>% is_from_cache
  8. ├─OmnipathR:::is_from_cache(.)
  9. │ └─obj %>% attr("origin") %>% ... at omnipathr/R/misc.R:367:4
 10. ├─dplyr::mutate(., across(everything(), na_if, "-"))
 11. ├─dplyr:::mutate.data.frame(., across(everything(), na_if, "-"))
 12. │ └─dplyr:::mutate_cols(.data, dplyr_quosures(...), by)
 13. │   ├─base::withCallingHandlers(...)
 14. │   └─dplyr:::mutate_col(dots[[i]], data, mask, new_columns)
 15. │     └─mask$eval_all_mutate(quo)
 16. │       └─dplyr (local) eval()
 17. ├─dplyr::across(everything(), na_if, "-")
 18. │ ├─base::withCallingHandlers(...)
 19. │ └─dplyr (local) fn(col, ...)
 20. │   └─vctrs::vec_cast(x = y, to = x, x_arg = "y", to_arg = "x")
 21. └─vctrs (local) `<fn>`()
 22.   └─vctrs::vec_default_cast(...)
 23.     ├─base::withRestarts(...)
 24.     │ └─base (local) withOneRestart(expr, restarts[[1L]])
 25.     │   └─base (local) doWithOneRestart(return(expr), restart)
 26.     └─vctrs::stop_incompatible_cast(...)
 27.       └─vctrs::stop_incompatible_type(...)
 28.         └─vctrs:::stop_incompatible(...)
 29.           └─vctrs:::stop_vctrs(...)
 30.             └─rlang::abort(message, class = c(class, "vctrs_error"), ..., call = vctrs_error_call(call))

ligands and receptors

Could I please ask if OmnipathR provides access to a list of gene pairs?

That is, I would like to get a dataframe where each row corresponds to a pair of genes (or proteins), e.g., CXCL10 and CXCR3.

So far, here's what I could figure out from the vignette:

library(OmnipathR)

intercell <- import_Omnipath_intercell()

my_genes <- c("CXCL11", "CXCL10", "CXCL1", "CXCL9", "CXCL13", "CXCR3", "CXCR5")

setdiff(my_genes, intercell$genesymbol)

intercell %>%
  dplyr::filter(genesymbol %in% my_genes)
        category                  parent         database    scope     aspect
1  transmembrane           transmembrane UniProt_location  generic locational
2  transmembrane           transmembrane UniProt_location  generic locational
3  transmembrane           transmembrane UniProt_topology  generic locational
4  transmembrane           transmembrane UniProt_topology  generic locational
5  transmembrane           transmembrane  UniProt_keyword  generic locational
6  transmembrane           transmembrane  UniProt_keyword  generic locational
7  transmembrane transmembrane_predicted          Phobius  generic locational
8  transmembrane transmembrane_predicted          Phobius  generic locational
9  transmembrane           transmembrane     GO_Intercell  generic locational
10 transmembrane           transmembrane     GO_Intercell  generic locational
11 transmembrane           transmembrane      CellPhoneDB specific locational
12 transmembrane           transmembrane      CellPhoneDB specific locational
13 transmembrane           transmembrane           LOCATE  generic locational
              source uniprot genesymbol entity_type consensus_score transmitter
1  resource_specific  P49682      CXCR3     protein               5       False
2  resource_specific  P32302      CXCR5     protein               6       False
3  resource_specific  P49682      CXCR3     protein               5       False
4  resource_specific  P32302      CXCR5     protein               6       False
5  resource_specific  P49682      CXCR3     protein               5       False
6  resource_specific  P32302      CXCR5     protein               6       False
7  resource_specific  P49682      CXCR3     protein               5       False
8  resource_specific  P32302      CXCR5     protein               6       False
9  resource_specific  P49682      CXCR3     protein               5       False
10 resource_specific  P32302      CXCR5     protein               6       False
11 resource_specific  P49682      CXCR3     protein               5       False
12 resource_specific  P32302      CXCR5     protein               6       False
13 resource_specific  P32302      CXCR5     protein               6       False
   receiver secreted plasma_membrane_transmembrane plasma_membrane_peripheral
1     False    False                          True                      False
2     False    False                          True                      False
3     False    False                          True                      False
4     False    False                          True                      False
5     False    False                          True                      False
6     False    False                          True                      False
7     False    False                          True                      False
8     False    False                          True                      False
9     False    False                          True                      False
10    False    False                          True                      False
11    False    False                          True                      False
12    False    False                          True                      False
13    False    False                          True                      False
 [ reached 'max' / getOption("max.print") -- omitted 243 rows ]

Notice that CXCR3 is listed by itself, but there is no hint that CXCL10 is a ligand for this receptor.

Is there some way to run OmniPathR to get the known pairs of proteins that interact?

I'll keep looking in the documentation, but I would greatly appreciate any hints or tips!

Thank you.

TF-target interactions - cancer

Hi,

First of all, thanks for a fantastic and very comprehensive resource!

I was looking at the regulatory interactions (i.e. OmnipathR::import_transcriptional_interactions), and had some questions regarding the output.

  1. I see that you have established a cancer-dedicated TF-target interaction dataset as part of the DoRothEA package, which from what I can see was based on network inference with ARACNE using TCGA as the (pan-cancer) expression dataset. In the source column output from improt_transcriptional_interactions() there is however only the ARACNe-GTEx_DoRothEA, and no source with ARACNE networks inferred with TCGA, is that correct? Are all the interactions in the dorothea_hs_pancancer also found in the interactions returned by import_transcriptional_interactions()?

  2. The columns consensus_inhibition and consensus_stimulation found in the data frame returned by import_transcriptional_interactions(), what do they mean? Does it mean that there are conflicting evidence for these interactions (i.e. if they are 1/TRUE)?

Regards,
Sigve

Plyr dependency

Running commands from the readme, the first command after install fails with an unloaded dependency

ptms = import_Omnipath_PTMS(filter_databases=c("PhosphoSite", "Signor"))
[1] "Downloaded 25143 interactions"
Error in loadNamespace(name) : there is no package called ‘plyr’

Installing and loading the library allows the command to run

Import Dorothea interactions not working

Hi @deeenes,

I am currently having trouble loading the Dorothea interactions from OmnipathR:
OmnipathR::import_dorothea_interactions(dorothea_levels = c("A", "B", "C"))

I get the following error

Error in `mutate()`:
ℹ In argument: `n_references = ifelse(...)`.
Caused by error in `map()`:
ℹ In index: 1.
Caused by error in `.f()`:
! Arguments in `...` must be passed by position, not name.
✖ Problematic argument:
• outsep = outsep
Run `rlang::last_error()` to see where the error occurred. 

I was using the bioconductor OmnipathR package and then re-tried with the current github version but got the same error.

Thanks for your help in advance!

Generating input files to use with Cellchat from OmniPathR

Hello,

Thank you so much for this amazing resource. Great job, very useful resource 👍

I have few quick questions. I would like to use the underlying inter cellular network database from Omnipath to run cellchat.

I am interested in interactions that are literature supported. So I applied a filter on column n_references and got a total list of 8072 unique interactions by running the following code

icn.lr_all<- import_intercell_network()
icn.lr_all$interaction_nm=paste0(icn.lr_all$source_genesymbol,":",icn.lr_all$target_genesymbol)
icn.lr_all.interaction_nm=data.frame(in_name=unique(icn.lr_all$interaction_nm))
icn.lr_all.interaction_nm$lig=sapply(strsplit(icn.lr_all.interaction_nm$in_name,split=":",fixed=T),'[',1)
icn.lr_all.interaction_nm$rec=sapply(strsplit(icn.lr_all.interaction_nm$in_name,split=":",fixed=T),'[',2)

#8072

Question 1 : Is this correct way to filter for literature supported interactions?

Question 2 : It would be really nice, if you could give some advice on generating input files to use with cellchat. Cellchat requires four input files. Is there function to add annotation information to a list of interactions?

  • interaction_input <- CellChatDB$interaction
  • complex_input <- CellChatDB$complex
  • cofactor_input <- CellChatDB$cofactor
  • geneInfo <- CellChatDB$geneInfo

Question 3 : In CellChat interaction_input , Ligand-Receptor interactions were assigned a pathway name. From the annotation available in omnipath, is there a column that associates interactions to pathways?

Question 4 : Is there a function to retrieve entrez_ids for the ligands / receptors from the interaction table?

Thank you again for this helpful resource.

Omnipath database update

As of 25/2/20 the PPI database (http://omnipathdb.org/interactions?fields=sources&fields=references&genesymbols=1) was substantially updated. In the update several new interactions were added, changing the networks that can be generated.

Notably, this includes new self interactions that hadn't been present in prior versions of the database. Checking some of the associated PMIDs these may have been introduced unintentionally as the papers do not clearly show self activation through oligomerisation

One example is MAP3K5, which is noted as self interacting with the PMID 11920685. This paper however discusses trans-phosphorylation within the oligomer in response to a phosphorylation induced conformational change. This isn't clearly a PPI, and I'm not sure this is correct.

Are these changes intentional?

How to obtain output from import_intercell_networks and and nichenet_networks for mouse?

Hi thanks for a great package! I understand that the functions import_intercell_networks and nichenet_networks return network knowledge for human that can be provided as input for cell-cell interaction inference tools such as CellPhoneDB and NicheNet, respectively.

I was wondering whether you can suggest an approach to obtain such networks also for mouse? I understand that this will likely involve some sort of orthology transfer, and I was just wondering whether you have something easy and convenient as eg available for nichenetr? That would be very helpful. Thanks!

Automatic logs in the working directory create problems for docker containers

As part of the Bioconda project we package all Bioconductor packages with conda and automatically create docker (and later singularity) containers for use in workflow systems such as Snakemake, NextFlow, and Galaxy. While creating the container for OmnipathR, we ran into problems because simply loading the package in R creates log files. These are created where ever the current working directory happens to be and tends to produce problems with docker containers (the automated tests fail because they lack root permissions needed to delete the log files inside the container). While I have adjusted the automatic tests to remove these logs, it would be good to not create log files if one simply runs library('OmnipathR') in R.

Xref: bioconda/bioconda-recipes#28911

PubMed IDs for edge interactions

Hi, thanks so much for making this package, its really great and helpful!

I was wondering if there was a way to extract the PubMed IDs for edge interactions as in the PyPath module for python? I can't seem to find it in the interactions databases that I can download, so I wasn't sure if it was a download parameter or if that option wasn't available in the R package.

I've been downloading (all) interaction data like so:

interactions <- import_AllInteractions(from_cache_file = NULL,
                                        filter_databases = get_interaction_databases(),
                                        select_organism = 9606)

Thanks very much!

load_db() function

Hi Deeenes,

I was using your package for my study and I want to use the load_db() function in dbmanager.R, but I couldn't find it exists in package.
Did I miss something important?

Best wishes,
Kirito

Signor database identifiers are wrong.

Hey, thanks a lot for providing this tool, it is a great!

I think there is a minor typo in your guides. You describe that the user can download Signor interaction data using the 'Signor' identifier, however I think uppercase letters are required: 'SIGNOR'.

interactions <- import_Omnipath_Interactions(filter_databases=c("SignaLink3","PhosphoSite", 
  "SIGNOR"))

instead of:

interactions <- import_Omnipath_Interactions(filter_databases=c("SignaLink3","PhosphoSite", 
  "Signor"))

Using NicheNet with OmnipathR in windows

Hello there,

I would like to use NicheNet with OmnipathR. I was following this tutorial [http://www.bioconductor.org/packages/release/bioc/vignettes/OmnipathR/inst/doc/nichenet.html]

and received the following error message in

Error in parallelStart(mode = MODE_MULTICORE, cpus = cpus, level = level,  : 
  Multicore mode not supported on windows!

when running this code

nichenet_results <- nichenet_main(
    expressed_genes_transmitter = expressed_genes_transmitter,
    expressed_genes_receiver = expressed_genes_receiver,
    genes_of_interest = genes_of_interest,
    background_genes = background_genes,
    signaling_network = list(
        cpdb = NULL,
        evex = list(min_confidence = 1.0)
    ),
    gr_network = list(only_omnipath = TRUE),
    n_top_ligands = 20,
    mlrmbo_optimization_param = list(ncores = 4)
)

Could you please advise?

Thanks,
Janaki

import_intercell_network() function has no organism argument

Hi Dear OmnipathR teams,
Thanks for the tool you develop!
I wonder the interactions we get from the function import_intercell_network() is from human or other organism?
Because while I try to download interactions from import_ligrecextra_interactions() function, I have seen organism argument which enables me to specify the organism type.
Thank you!
Best,
AD

import_omnipath_enzsub() not returning 'n_references'

Hi Denes,

Whenever I run the import_omnipath_enzsub() or import_omnipath_interactions() function, the 'n_references' column doesn't contain the number of references, but their Pubmed IDs (it's basically a copy of the 'references' column).
I'm using the 3.5.0 version, it used to work with the older version I was using before.

Thank you!

Number of unique references would be nice...

Dear developers,

today I was using your amazing OmnipathR tool.

While I was checking the number of references that can be listed, I realized that the number of references is the sum of all mentioned references of all database sources. But I think, it would be nice to get the number of unique references…

Many, many thanks for all your efforts.

Kind regards,
Melanie

Error with go_annot_slim

Thanks for providing an amazing package.

I just discovered the go_annot_slim() function but when I use it:

library(OmnipathR)
goslim <- go_annot_slim(organism = 'human', slim = 'generic')

I get the following error:

[2022-09-14 09:57:00] [SUCCESS] [OmnipathR] Building GO slim (organism: human; aspects: C, F, P; slim: generic). This will take 20-40 min at the first time, and will be saved in the cache for later use.
[2022-09-14 09:57:03] [WARN]    [OmnipathR] Failed to download `http://geneontology.org/gene-associations/goa_human.gaf.gz` (attempt 1/3); error: embedded nul in string: '\037\x8b\b\b\x9c\xa6\xbfb\0\003goa_human.gaf\0ԝ\xd9r\xe3\xb8Ҡ\xaf\xd9O\xc1\xbe\x9b\x89h\xba\x88\x85 鉹\xd0⭼\xa9l\x97\xbb\xabo*h\x99\xb65-\x89\xfe\xb5T\037\x9f\xf0\xc3\017\xc0M\022EI\\\022\\:\xa2\xcan\x95\x8d\xfc\x90H$\xd6D\xfe\xfe\xea\xbch\xbf\xdc\xd9|\xe4M\x8fU|\x84\177\xfb\xfd\xb7\xdf_ݩ;s\026\xee\xb3\xf6\xf4q\xac\x9e\xdd\xf6ć\xcf\xfc\003-\xfe\027\xfe\xb3:ƚnj:~\xd0ѱa\x8b\x9f9w\x9dgw\xa6\xbe̼\x89:\xf7\x96\xb3\xa1\xab:\xf3\xb97\0349\v^\xbe\xfa2\032\xbbǿ\xfd\xfe\177\017\xfd\x97\x9f\001= r\xac\x93$ë\xe7\xfc|[N\x9ciY\x9a\x877W\x9d\xbb\v\xd5{Q\xdfg\xde\xc2\035MUg8t\xe7Bmsu4\035\x8e\x97\xcf\xee3\xffF]\xbc\x8d\xe6~\xd1*\xff\xfa\xe4\xcc\xf9\xa7\\\xd6\xf7\xe9h\xc0\177O\x9d\xb9/\xee̝r\022\xbf\030o\xe2\xce\xffP\xff}\033'
[2022-09-14 09:57:09] [WARN]    [OmnipathR] Failed to download `http://geneontology.org/gene-associations/goa_human.gaf.gz` (attempt 2/3); error: embedded nul in string: '\037\x8b\b\b\x9c\xa6\xbfb\0\003goa_human.gaf\0ԝ\xd9r\xe3\xb8Ҡ\xaf\xd9O\xc1\xbe\x9b\x89h\xba\x88\x85 鉹\xd0⭼\xa9l\x97\xbb\xabo*h\x99\xb65-\x89\xfe\xb5T\037\x9f\xf0\xc3\017\xc0M\022EI\\\022\\:\xa2\xcan\x95\x8d\xfc\x90H$\xd6D\xfe\xfe\xea\xbch\xbf\xdc\xd9|\xe4M\x8fU|\x84\177\xfb\xfd\xb7\xdf_ݩ;s\026\xee\xb3\xf6\xf4q\xac\x9e\xdd\xf6ć\xcf\xfc\003-\xfe\027\xfe\xb3:ƚnj:~\xd0ѱa\x8b\x9f9w\x9dgw\xa6\xbe̼\x89:\xf7\x96\xb3\xa1\xab:\xf3\xb97\0349\v^\xbe\xfa2\032\xbbǿ\xfd\xfe\177\017\xfd\x97\x9f\001= r\xac\x93$ë\xe7\xfc|[N\x9ciY\x9a\x877W\x9d\xbb\v\xd5{Q\xdfg\xde\xc2\035MUg8t\xe7Bmsu4\035\x8e\x97\xcf\xee3\xffF]\xbc\x8d\xe6~\xd1*\xff\xfa\xe4\xcc\xf9\xa7\\\xd6\xf7\xe9h\xc0\177O\x9d\xb9/\xee̝r\022\xbf\030o\xe2\xce\xffP\xff}\033'
[2022-09-14 09:57:15] [ERROR]   [OmnipathR] Failed to download `http://geneontology.org/gene-associations/goa_human.gaf.gz` (attempt 3/3); error: embedded nul in string: '\037\x8b\b\b\x9c\xa6\xbfb\0\003goa_human.gaf\0ԝ\xd9r\xe3\xb8Ҡ\xaf\xd9O\xc1\xbe\x9b\x89h\xba\x88\x85 鉹\xd0⭼\xa9l\x97\xbb\xabo*h\x99\xb65-\x89\xfe\xb5T\037\x9f\xf0\xc3\017\xc0M\022EI\\\022\\:\xa2\xcan\x95\x8d\xfc\x90H$\xd6D\xfe\xfe\xea\xbch\xbf\xdc\xd9|\xe4M\x8fU|\x84\177\xfb\xfd\xb7\xdf_ݩ;s\026\xee\xb3\xf6\xf4q\xac\x9e\xdd\xf6ć\xcf\xfc\003-\xfe\027\xfe\xb3:ƚnj:~\xd0ѱa\x8b\x9f9w\x9dgw\xa6\xbe̼\x89:\xf7\x96\xb3\xa1\xab:\xf3\xb97\0349\v^\xbe\xfa2\032\xbbǿ\xfd\xfe\177\017\xfd\x97\x9f\001= r\xac\x93$ë\xe7\xfc|[N\x9ciY\x9a\x877W\x9d\xbb\v\xd5{Q\xdfg\xde\xc2\035MUg8t\xe7Bmsu4\035\x8e\x97\xcf\xee3\xffF]\xbc\x8d\xe6~\xd1*\xff\xfa\xe4\xcc\xf9\xa7\\\xd6\xf7\xe9h\xc0\177O\x9d\xb9/\xee̝r\022\xbf\030o\xe2\xce\xffP\xff}\033'
Error in (function (url, fun = NULL, post = NULL, http_param = list(),  : 
  Failed to download `http://geneontology.org/gene-associations/goa_human.gaf.gz` (attempt 3/3); error: embedded nul in string: '\037\x8b\b\b\x9c\xa6\xbfb\0\003goa_human.gaf\0ԝ\xd9r\xe3\xb8Ҡ\xaf\xd9O\xc1\xbe\x9b\x89h\xba\x88\x85 鉹\xd0⭼\xa9l\x97\xbb\xabo*h\x99\xb65-\x89\xfe\xb5T\037\x9f\xf0\xc3\017\xc0M\022EI\\\022\\:\xa2\xcan\x95\x8d\xfc\x90H$\xd6D\xfe\xfe\xea\xbch\xbf\xdc\xd9|\xe4M\x8fU|\x84\177\xfb\xfd\xb7\xdf_ݩ;s\026\xee\xb3\xf6\xf4q\xac\x9e\xdd\xf6ć\xcf\xfc\003-\xfe\027\xfe\xb3:ƚnj:~\xd0ѱa\x8b\x9f9w\x9dgw\xa6\xbe̼\x89:\xf7\x96\xb3\xa1\xab:\xf3\xb97\0349\v^\xbe\xfa2\032\xbbǿ\xfd\xfe\177\017\xfd\x97\x9f\001= r\xac\x93$ë\xe7\xfc|[N\x9ciY\x9a\x877W\x9d\xbb\v\xd5{Q\xdfg\xde\xc2\035MUg8t\xe7Bmsu4\035\x8e\x97\xcf\xee3\xffF]\xbc\x8d\xe6~\xd1*\xff\xfa\xe4\xcc\xf9\xa7\\\xd6\xf7\xe9h\xc0\177O\x9d\xb9/\xee̝r\022\xbf\030o\xe2\xce\xffP\xff}\033'

Any idea what I need to do to fix it?

And here is my session info:

─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.2.1 (2022-06-23)
 os       macOS Catalina 10.15.7
 system   x86_64, darwin17.0
 ui       RStudio
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Europe/Copenhagen
 date     2022-09-14
 rstudio  2022.07.1+554 Spotted Wakerobin (desktop)
 pandoc   NA

─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 assertthat    0.2.1   2019-03-21 [1] CRAN (R 4.2.0)
 backports     1.4.1   2021-12-13 [1] CRAN (R 4.2.0)
 bit           4.0.4   2020-08-04 [1] CRAN (R 4.2.0)
 bit64         4.0.5   2020-08-30 [1] CRAN (R 4.2.0)
 cachem        1.0.6   2021-08-19 [1] CRAN (R 4.2.0)
 callr         3.7.2   2022-08-22 [1] CRAN (R 4.2.1)
 cellranger    1.1.0   2016-07-27 [1] CRAN (R 4.2.0)
 checkmate     2.1.0   2022-04-21 [1] CRAN (R 4.2.0)
 cli           3.3.0   2022-04-25 [1] CRAN (R 4.2.0)
 crayon        1.5.1   2022-03-26 [1] CRAN (R 4.2.0)
 curl          4.3.2   2021-06-23 [1] CRAN (R 4.2.0)
 DBI           1.1.3   2022-06-18 [1] CRAN (R 4.2.0)
 devtools      2.4.4   2022-07-20 [1] CRAN (R 4.2.0)
 digest        0.6.29  2021-12-01 [1] CRAN (R 4.2.0)
 dplyr         1.0.9   2022-04-28 [1] CRAN (R 4.2.0)
 ellipsis      0.3.2   2021-04-29 [1] CRAN (R 4.2.0)
 fansi         1.0.3   2022-03-24 [1] CRAN (R 4.2.0)
 fastmap       1.1.0   2021-01-25 [1] CRAN (R 4.2.0)
 fs            1.5.2   2021-12-08 [1] CRAN (R 4.2.0)
 generics      0.1.3   2022-07-05 [1] CRAN (R 4.2.0)
 glue          1.6.2   2022-02-24 [1] CRAN (R 4.2.0)
 hms           1.1.2   2022-08-19 [1] CRAN (R 4.2.0)
 htmltools     0.5.3   2022-07-18 [1] CRAN (R 4.2.0)
 htmlwidgets   1.5.4   2021-09-08 [1] CRAN (R 4.2.0)
 httpuv        1.6.5   2022-01-05 [1] CRAN (R 4.2.0)
 httr          1.4.4   2022-08-17 [1] CRAN (R 4.2.0)
 igraph        1.3.4   2022-07-19 [1] CRAN (R 4.2.0)
 jsonlite      1.8.0   2022-02-22 [1] CRAN (R 4.2.0)
 later         1.3.0   2021-08-18 [1] CRAN (R 4.2.0)
 lifecycle     1.0.1   2021-09-24 [1] CRAN (R 4.2.0)
 logger        0.2.2   2021-10-19 [1] CRAN (R 4.2.0)
 magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.2.0)
 memoise       2.0.1   2021-11-26 [1] CRAN (R 4.2.0)
 mime          0.12    2021-09-28 [1] CRAN (R 4.2.0)
 miniUI        0.1.1.1 2018-05-18 [1] CRAN (R 4.2.0)
 OmnipathR   * 3.5.6   2022-09-07 [1] Github (saezlab/OmnipathR@47daefb)
 pillar        1.8.1   2022-08-19 [1] CRAN (R 4.2.0)
 pkgbuild      1.3.1   2021-12-20 [1] CRAN (R 4.2.0)
 pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.2.0)
 pkgload       1.3.0   2022-06-27 [1] CRAN (R 4.2.0)
 prettyunits   1.1.1   2020-01-24 [1] CRAN (R 4.2.0)
 processx      3.7.0   2022-07-07 [1] CRAN (R 4.2.0)
 profvis       0.3.7   2020-11-02 [1] CRAN (R 4.2.0)
 progress      1.2.2   2019-05-16 [1] CRAN (R 4.2.0)
 promises      1.2.0.1 2021-02-11 [1] CRAN (R 4.2.0)
 ps            1.7.1   2022-06-18 [1] CRAN (R 4.2.0)
 purrr         0.3.4   2020-04-17 [1] CRAN (R 4.2.0)
 R6            2.5.1   2021-08-19 [1] CRAN (R 4.2.0)
 rappdirs      0.3.3   2021-01-31 [1] CRAN (R 4.2.0)
 Rcpp          1.0.9   2022-07-08 [1] CRAN (R 4.2.0)
 readr         2.1.2   2022-01-30 [1] CRAN (R 4.2.0)
 readxl        1.4.1   2022-08-17 [1] CRAN (R 4.2.0)
 remotes       2.4.2   2021-11-30 [1] CRAN (R 4.2.0)
 rlang         1.0.4   2022-07-12 [1] CRAN (R 4.2.0)
 rstudioapi    0.14    2022-08-22 [1] CRAN (R 4.2.1)
 rvest         1.0.3   2022-08-19 [1] CRAN (R 4.2.0)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.2.0)
 shiny         1.7.2   2022-07-19 [1] CRAN (R 4.2.0)
 stringi       1.7.8   2022-07-11 [1] CRAN (R 4.2.0)
 stringr       1.4.1   2022-08-20 [1] CRAN (R 4.2.0)
 tibble        3.1.8   2022-07-22 [1] CRAN (R 4.2.0)
 tidyr         1.2.0   2022-02-01 [1] CRAN (R 4.2.0)
 tidyselect    1.1.2   2022-02-21 [1] CRAN (R 4.2.0)
 tzdb          0.3.0   2022-03-28 [1] CRAN (R 4.2.0)
 urlchecker    1.0.1   2021-11-30 [1] CRAN (R 4.2.0)
 usethis       2.1.6   2022-05-25 [1] CRAN (R 4.2.0)
 utf8          1.2.2   2021-07-24 [1] CRAN (R 4.2.0)
 vctrs         0.4.1   2022-04-13 [1] CRAN (R 4.2.0)
 vroom         1.5.7   2021-11-30 [1] CRAN (R 4.2.0)
 withr         2.5.0   2022-03-03 [1] CRAN (R 4.2.0)
 xml2          1.3.3   2021-11-30 [1] CRAN (R 4.2.0)
 xtable        1.8-4   2019-04-21 [1] CRAN (R 4.2.0)
 yaml          2.3.5   2022-02-21 [1] CRAN (R 4.2.0)

 [1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library

────────────────────────────────────────────────────────────────────────────────────────────────────────────

Peer certificate cannot be authenticated with given CA certificates

I was trying to load the OmniPath Interactions with R, but there is error. the error message says that cannot open the connection to omnipathdb.org and the url status is Peer certificate cannot be authenticated with given CA certificates. Could you please help? Thank you.

Intallation Issue with YAML file

Hello,

Firstly, thank you for curating this excellent protein interaction resources! It really helps my research a lot! I used the old version on my local windows machine very well! Now I want to move to HPC to do some heavy "find_all_path" calculations.
When I tried to install the latest version using "BiocManager::install("OmnipathR")", I got an error related to yaml file.

Error: package or namespace load failed for ‘OmnipathR’:
.onLoad failed in loadNamespace() for 'OmnipathR', details:
call: yaml.load(readLines(con, warn = readLines.warn), error.label = error.label,
error: (~/.config/OmnipathR/omnipathr.yml) Parser error: did not find expected at line 2, column 1
Error: loading failed
Execution halted
ERROR: loading failed
removing ‘/home/u32/cchen22/R/x86_64-pc-linux-gnu-library/4.2/OmnipathR’

OS: CentOS7
R: 4.2.2

Thank you!
Chen

OmniPath Interactions Sources

Hi OmniPath team,

I'm currently using the Web Service to retrieve some Interactions from the Omnipath dataset and had a question regarding the "sources" column.
There are several interactions that are annotated with a combination of two databases. For example some interactions will have the sources SIGNOR_ProtMapper or PhosphoSite_ProtMapper while also including the distinct databases. There are also instances where the interaction contains the composite source such as SIGNOR_ProtMapper yet does not include the distinct database SIGNOR. I was wondering why some of the interactions where annotated in this way.

question in extracting different cofactor types

Hi @deeenes

I followed your suggestion from the previous post #28 to get the cofactor information- which is great. I have couple of questions.

cofactor_ligand <- import_intercell_network(
    transmitter_param = list(parent = 'ligand_regulator', causality = NA),
    receiver_param = list(parent = 'ligand', causality = NA)
)
cofactor_receptor <- import_intercell_network(
    transmitter_param = list(parent = 'receptor_regulator', causality = NA),
    receiver_param = list(parent = 'receptor', causality = NA)
)
  1. I tried to see the different types of cofactors in these two categories. I was wondering if you could comment on the definition of third type of cofactors - ligand_regulator and receptor regulator?

Q1_COFA

  1. Another question is from the co-factor table, what is the difference between columns "is_stimulation" and "consensus_stimulation". Likewise "is_inhibition" vs "consensus_inhibition"?

Thank you,
Janaki

Optimizing the interactions in the network produced an error

Hi Deeenes,

I was using your package for my study and all was cool but the code below was giving me an error.
If you have some time I would really appreciate it your answer

optimization_results = lapply(1,mlrmbo_optimization, 
                              obj_fun = obj_fun_multi_topology_correction, 
         niter = 8, ncores = 6, nstart = 160, 
         additional_arguments = additional_arguments_topology_correction)

the error was here

Computing y column(s) for design. Not provided.
Mapping in parallel: mode = multicore; level = mlrMBO.feval; cpus = 12; elements = 160.
Error in stopWithJobErrorMessages(inds, vcapply(result.list[inds], as.character)) :
Errors occurred in 160 slave jobs, displaying at most 10 of them:

00001: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00002: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00003: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00004: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00005: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00006: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00007: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00008: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00009: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value

00010: Error in igraph::page_rank(G, algo = c("prpack"), vids = igraph::V(G), :
At prpack.cpp:55 : the sum of the elements in the reset vector must not be zero, Invalid value](url)

Tracing back where it comes

traceback()
12: stop(obj)
11: stopf("Errors occurred in %i slave jobs, displaying at most 10 of them:\n\n%s\n%s",
n, collapse(msgs, sep = "\n"), extra.msg)
10: stopWithJobErrorMessages(inds, vcapply(result.list[inds], as.character))
9: checkResultsAndStopWithErrorsMessages(res)
8: parallelMap(wrapFun, xs.trafo, level = "mlrMBO.feval", impute.error = if (is.null(imputeY)) NULL else identity)
7: evalTargetFun.OptState(opt.state, xs, extras)
6: evalMBODesign.OptState(opt.state)
5: mboTemplate.OptProblem(opt.problem)
4: mboTemplate(opt.problem)
3: mbo(obj_fun, design = design, learner = surr.rf, control = ctrl,
show.info = TRUE, more.args = additional_arguments)
2: FUN(X[[i]], ...)
1: lapply(1, mlrmbo_optimization, obj_fun = obj_fun_multi_topology_correction,

Thank you!

Is import_dorothea_interactions downgraded?

Hi,

I am following "Interaction sources comparison: NicheNet VS Omnipath" analysis. In the Omnipath version used in that analysis, there are some differences in certain function names. It is fine for most functions, I just had to capitalize initials. But import_dorothea_interactions is not available at all. Is everything alright with the version I am using? Or, is there a specific reason for downgrading the function, if it is the case?

Many thanks for this amazing package!

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets 
[7] methods   base     

other attached packages:
[1] OmnipathR_1.2.1     readr_1.4.0         VennDiagram_1.6.20 
[4] futile.logger_1.4.3 gprofiler2_0.2.0    tidyr_1.1.2        
[7] igraph_1.2.6       

Reproducing the cytoscape visualization

Hi @deeenes

Thank you again for the resource and walkthrough examples of two datasets in the paper.

I would like to reproduce a similar cytoscape visualization you have in Figure 5A. It looks really beautiful. I was wondering if you could advise about the cytoscape layout name you used to generate this figure.

Fig5a_Omnipathr_page

Thank you,
Janaki

error in `n_references`: arguments in `...` must be passed by position, not name

Hey Denes,

Since I updated my R packages to the latest versions, import_omnipath_enzsub isn't working anymore.

Here is the code i run to get the error

library(OmnipathR)

KSN <- import_omnipath_enzsub()

Here is the error:

Error in mutate():
ℹ In argument: n_references = ifelse(...).
Caused by error in map():
ℹ In index: 1.
Caused by error in .f():
! Arguments in ... must be passed by position, not name.
✖ Problematic argument:
• outsep = outsep

Here is my session infos:

R version 4.2.0 (2022-04-22)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Monterey 12.6

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] OmnipathR_3.7.0

loaded via a namespace (and not attached):
[1] Rcpp_1.0.10 pillar_1.8.1 compiler_4.2.0 cellranger_1.1.0 later_1.3.0 prettyunits_1.1.1 tools_4.2.0 progress_1.2.2
[9] bit_4.0.5 digest_0.6.31 evaluate_0.20 jsonlite_1.8.4 lifecycle_1.0.3 tibble_3.1.8 checkmate_2.1.0 pkgconfig_2.0.3
[17] rlang_1.0.6 igraph_1.3.5 cli_3.6.0 rstudioapi_0.14 yaml_2.3.7 curl_5.0.0 xfun_0.36 fastmap_1.1.0
[25] withr_2.5.0 stringr_1.5.0 xml2_1.3.3 knitr_1.42 dplyr_1.1.0 httr_1.4.4 generics_0.1.3 vctrs_0.5.2
[33] hms_1.1.2 rappdirs_0.3.3 bit64_4.0.5 tidyselect_1.2.0 glue_1.6.2 R6_2.5.1 fansi_1.0.4 readxl_1.4.1
[41] vroom_1.6.1 rmarkdown_2.20 sessioninfo_1.2.2 tidyr_1.3.0 purrr_1.0.1 readr_2.1.3 tzdb_0.3.0 logger_0.2.2
[49] magrittr_2.0.3 htmltools_0.5.4 backports_1.4.1 ellipsis_0.3.2 rvest_1.0.3 utf8_1.2.2 stringi_1.7.12 crayon_1.5.2

Cheers,

Aurelien

error in 'map()' OmniPathR

Hi OmniPathR team, can someone helps on this, please? I got this error running any interactions query functions in R, after properly installing OmniPathR package in R 4.2.2:

Error in mutate():
i In argument: n_references = ifelse(...).
Caused by error in map():
i In index: 1.
Caused by error in .f():
! Arguments in ... must be passed by position, not name.
x Problematic argument:

  • outsep = outsep
    Run rlang::last_error() to see where the error occurred.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.