Skip to contents

Introduction

All ligand-receptor interaction prediction methods in LIANA require a resource of literature and database knowledge about intercellular signaling. LIANA, together with OmniPath web service, provide a number functionalities to obtain this prior knowledge.

Here we show how to customize and quality filter the prior knowledge from OmniPath, and how to use LIANA with a custom database resource.

Intercellular communication data in OmniPath

OmniPath combines data from more than 20 resources to depict the roles of proteins in intercellular communication, and it uses around 50 network resources to connect these proteins by signaling interactions. In its intercellular communication annotation (intercell) database, OmniPath aims to cover the broadest range of information, and contains numerous false positive records. Hence, for using in prediction methods, as we do in LIANA, quality filtering OmniPath is highly recommended. We do quality filtering based on 1) the amount of evidences (number of resources and references), 2) the consensus between resources for each annotation record, 3) the localization of proteins (e.g. secreted, plasma membrane). The design of the OmniPath database is described in Turei et al. Mol Syst Biol (2021)17:e9923, while you can read more about the quality filtering options here, here and here.

We further provide a list of curated interactions, which we define as those which come from manually-curated resources in the context of CCC, and come with a corresponding Pubmed ID, available via OmnipathR::curated_ligand_receptor_interactions.

Complexes

Some resources in OmniPath, such as CellChatDB, CellPhoneDB and ICELLNET, provide information about protein complexes in intercellular communication. Besides these, most of the protein complex annotations in OmniPath are in silico inferred, based on the members of the complex. Network interactions of protein complexes are very sparse, as only few resources provide this kind of data.

Connecting LIANA and OmniPath

OmniPath data is distributed by the web service at OmniPath web service, and the OmnipathR R/Bioconductor package offer a direct access in R. In OmnipathR, the import_intercell_network and filter_intercell_network functions represent the interface to the intercellular communication network. In liana, the generate_omni function wraps the Omnipath functions and ensures the output is suitable for the downstream methods in LIANA. get_curated_omni function which is used to generate the curated consensus (default) resource that LIANA uses.

We suggest using the latest OmnipathR version for any resource-generation purposes.

remotes::install_github('saezlab/OmnipathR')

Loading prerequisites

library(tidyverse)
library(OmnipathR)
library(liana)
library(purrr)
library(magrittr)

liana_path <- system.file(package = "liana")
testdata <-
    readRDS(file.path(liana_path , "testdata", "input", "testdata.rds"))

Curated OmniPath Consensus

By default, LIANA uses the Consensus resource, which is composed solely from the consensus interactions set coming from the manually-curated (in the context of CCC) “CellPhoneDB”, “CellChatDB”, “ICELLNET”, “connectomeDB2020”, and “CellTalkDB” resources. These interactions are also filtered by localisation and curation.

For more information about how we generate this resource please refer to the get_curated_omni function.

consensus_omni <- select_resource("Consensus")[[1]] %>%
  glimpse
## Rows: 4,701
## Columns: 10
## $ source                    <chr> "O00182", "O00182", "O00182", "O00182", "O00…
## $ target                    <chr> "P08575", "P08581", "P16070", "Q07954", "Q08…
## $ source_genesymbol         <chr> "LGALS9", "LGALS9", "LGALS9", "LGALS9", "LGA…
## $ target_genesymbol         <chr> "PTPRC", "MET", "CD44", "LRP1", "CD47", "PTP…
## $ category_intercell_source <chr> "cell_surface_ligand", "cell_surface_ligand"…
## $ database_intercell_source <chr> "CellPhoneDB", "CellPhoneDB", "CellPhoneDB",…
## $ category_intercell_target <chr> "receptor", "receptor", "receptor", "recepto…
## $ database_intercell_target <chr> "connectomeDB2020;CellChatDB;CellTalkDB", "c…
## $ sources                   <chr> "CellChatDB;Cellinker", "CellPhoneDB;InnateD…
## $ references                <chr> "CellChatDB:30120235;Cellinker:30120235", ""…

One could also obtain a list with all manually-curated interactions with corresponding PubMed IDs in the context of CCC from OmnipathR. We will use this list to double-check the curation effort of our Consensus resource.

# Obtain purely curated resources
curated <- OmnipathR::curated_ligand_receptor_interactions(
  cellphonedb = TRUE,
  cellinker = TRUE,
  talklr = TRUE,
  signalink = TRUE) %>%
  liana:::decomplexify() %>%
  select(source_genesymbol, target_genesymbol) %>%
  distinct() %>%
  mutate(curated_flag = 1)

consensus_omni %>%
  liana:::decomplexify() %>% # dissociates complexes
  select(source_genesymbol, target_genesymbol) %>%
  distinct() %>%
  left_join(curated, by = c("source_genesymbol", "target_genesymbol")) %>%
  distinct() %>%
  mutate(curated_flag = as.factor(replace_na(curated_flag, 0))) %>%
  mutate(total = n()) %>%
  group_by(curated_flag) %>%
  mutate(num =  n()) %>%
  ungroup() %>%
  select(curated_flag, total, num) %>%
  distinct() %>%
  rowwise() %>%
  mutate(perc = num/total * 100)
## # A tibble: 2 × 4
## # Rowwise: 
##   curated_flag total   num  perc
##   <fct>        <int> <int> <dbl>
## 1 1             4825  4390 91.0 
## 2 0             4825   435  9.02

We see that our Consensus resource is highly (>90%) curated.

It is, nevertheless, worth keeping in mind that this check obtains the information from the same resources, so please consider the percentages with a grain of salt :). Yet this approach provides us a reasonable quality reference, applicable to any custom-made resource.

Note that we plan to continuously update this resource, and we welcome any feedback here.

Surface or Membrane-bound Interactions only

We could also restrict our query to cell-surface (i.e. membrane bound) interactions, and also alter some further parameters: we set a more stringent threshold for consensus of resources on localization, we include also protein complexes, and we simplify the data frame to keep only the most relevant columns.

pm_omni <- generate_omni(
    loc_consensus_percentile = 51, # increase localisation consensus threshold
    consensus_percentile = NULL,
    # include only PM-bound proteins
    transmitter_topology = c(
        'plasma_membrane_transmembrane',
        'plasma_membrane_peripheral'
    ),
    receiver_topology = c(
        'plasma_membrane_transmembrane',
        'plasma_membrane_peripheral'
    ),
    min_curation_effort = 1,
    ligrecextra = FALSE,
    remove_complexes = FALSE, # keep complexes
    simplify = TRUE # do simplify
)


# check categories of ligands (category_intercell_source)
pm_omni$category_intercell_source %>%
  unique()
## [1] "activating_cofactor" "adhesion"            "cell_adhesion"      
## [4] "cell_surface_enzyme" "cell_surface_ligand" "ecm"                
## [7] "inhibitory_cofactor" "ligand"
# and receptors (category_intercell_target)
pm_omni$category_intercell_target %>%
  unique()
## [1] "adhesion"          "receptor"          "adherens_junction"
## [4] "cell_adhesion"     "ion_channel"
# remove some categories
pm_omni %<>% filter(
    !category_intercell_source %in% c(
        'activating_cofactor',
        'ligand_regulator',
        'inhibitory_cofactor'
    )
)
# an overview of the resulted data frame:
pm_omni %>% glimpse()
## Rows: 2,169
## Columns: 17
## $ source                    <chr> "A6NDA9", "A6NI73", "A8K4G0", "A8K4G0", "A8K…
## $ target                    <chr> "Q96LC7", "Q8IYV9", "O15389", "O43699", "O43…
## $ source_genesymbol         <chr> "LRIT2", "LILRA5", "CD300LB", "CD300LB", "CD…
## $ target_genesymbol         <chr> "SIGLEC10", "IZUMO1", "SIGLEC5", "SIGLEC6", …
## $ is_directed               <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ is_stimulation            <dbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,…
## $ is_inhibition             <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ consensus_direction       <dbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ consensus_stimulation     <dbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ consensus_inhibition      <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ sources                   <chr> "Cellinker;Wojtowicz2020", "Cellinker;Wojtow…
## $ references                <chr> "Cellinker:32822567", "Cellinker:32822567", …
## $ curation_effort           <dbl> 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2,…
## $ n_references              <dbl> 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2,…
## $ n_resources               <int> 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 4, 3,…
## $ category_intercell_source <chr> "adhesion", "adhesion", "adhesion", "adhesio…
## $ category_intercell_target <chr> "adhesion", "adhesion", "adhesion", "adhesio…

OmniPath resource as it is in the Biorxiv

In the first example, we filter OmniPath as described in the LIANA biorxiv: * Only interactions with literature curation * Interactions only where the receiver protein is plasma membrane transmembrane or peripheral, according to at least 30% of the localisation annotations * Only interactions between single proteins (interactions between complexes were included in that version of OmniPath).

# generate_omni returns a tibble with CCC OmniPath
cust_omni <- generate_omni(
    loc_consensus_percentile = 30,
    consensus_percentile = NULL,
    transmitter_topology = c(
        'secreted',
        'plasma_membrane_transmembrane',
        'plasma_membrane_peripheral'
    ),
    receiver_topology = c(
        'plasma_membrane_transmembrane',
        'plasma_membrane_peripheral'
    ),
    min_curation_effort = 1,
    ligrecextra = FALSE,
    remove_complexes = TRUE,
    simplify = FALSE
)

Note that this resource was subsequently improved by manually excluding certain duplicated or ambiguous interactions, and later it was finally deprecated all together. LIANA currently uses the curated resource presented above.

  • Also, available via select_resource("OmniPath")

Run LIANA with a custom CCC resource

RUN liana

# Run liana with the custom resource
# liana Wrap
liana_test <-
    liana_wrap(
        testdata,
        resource='custom',
        external_resource = pm_omni
    ) %>%
    liana_aggregate()
## Warning in exec(output, ...): 3465 genes and/or 0 cells were removed as they had
## no counts!
## Warning: `invoke()` is deprecated as of rlang 0.4.0.
## Please use `exec()` or `inject()` instead.
## This warning is displayed once per session.
liana_test %>% glimpse
## Rows: 799
## Columns: 16
## $ source                 <chr> "B", "B", "B", "B", "B", "B", "B", "B", "B", "B…
## $ target                 <chr> "B", "NK", "B", "B", "B", "B", "CD8 T", "B", "N…
## $ ligand.complex         <chr> "HLA-DRA", "HLA-DRA", "MS4A1", "HLA-DRB1", "HLA…
## $ receptor.complex       <chr> "CD37", "CD63", "CD82", "CD37", "CD74", "CD74",…
## $ aggregate_rank         <dbl> 3.814637e-08, 2.642569e-07, 3.058763e-06, 3.058…
## $ mean_rank              <dbl> 32.0, 27.0, 56.8, 40.0, 33.4, 39.2, 48.6, 54.4,…
## $ natmi.edge_specificity <dbl> 0.3655873, 0.4806804, 0.6939669, 0.3380952, 0.3…
## $ natmi.rank             <dbl> 54.0, 28.0, 11.0, 68.0, 46.0, 47.0, 4.0, 17.0, …
## $ connectome.weight_sc   <dbl> 0.9928272, 1.0496186, 0.9125238, 0.9158637, 1.0…
## $ connectome.rank        <dbl> 5.0, 1.0, 13.0, 11.0, 2.0, 7.0, 4.0, 18.0, 27.0…
## $ logfc.logfc_comb       <dbl> 2.753216, 2.996651, 2.219261, 2.166812, 2.40654…
## $ logfc.rank             <dbl> 3.0, 1.0, 13.0, 15.0, 6.0, 14.0, 4.0, 7.0, 23.0…
## $ sca.LRscore            <dbl> 0.9442782, 0.9348366, 0.8616937, 0.9344024, 0.9…
## $ sca.rank               <dbl> 1.0, 8.0, 150.0, 9.0, 16.0, 31.0, 134.0, 133.0,…
## $ cellphonedb.pvalue     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ cellphonedb.rank       <dbl> 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,…

Under the hood

In reality, generate_omni is just a wrapper function that calls the appropriate OmnipathR functions, provide a convenient interface and ensures a liana-appropriate format. Here we give an insight into this process.

# reproduce cust_op as from above with OmniPathR alone

# import the OmniPathR intercell network component
ligrec <- OmnipathR::import_intercell_network()

# filter out the complexes
ligrec %<>% filter(
    entity_type_intercell_source != 'complex' &
    entity_type_intercell_target != 'complex'
)


# apply filtering according to curation and localisation
ligrec %<>%
    OmnipathR::filter_intercell_network(
        loc_consensus_percentile = 30,
        consensus_percentile = NULL,
        transmitter_topology = c(
            'secreted',
            'plasma_membrane_transmembrane',
            'plasma_membrane_peripheral'
        ),
        receiver_topology = c(
            'plasma_membrane_transmembrane',
            'plasma_membrane_peripheral'
        ),
        min_curation_effort = 1,
        ligrecextra = FALSE
    )

# remove duplicate LRs
ligrec %<>%
    distinct_at(
        .vars = c(
            'source_genesymbol',
            'target_genesymbol'
        ),
        .keep_all = TRUE
    )

all_equal(ligrec, cust_omni)
## [1] TRUE

Further Info

To make use of the full potential of OmnipathR we kindly refer the user to its documentation.

This tutorial only presents the intercellular component of OmniPath, in the future we will add more details about intracellular signaling and gene regulation.

Session information

options(width = 120)
sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.1.2 (2021-11-01)
##  os       Ubuntu 20.04.5 LTS
##  system   x86_64, linux-gnu
##  ui       X11
##  language en
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       Europe/Berlin
##  date     2023-02-24
##  pandoc   2.18 @ /home/dbdimitrov/anaconda3/envs/liana4.1/bin/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
##  package              * version  date (UTC) lib source
##  abind                  1.4-5    2016-07-21 [2] CRAN (R 4.1.2)
##  assertthat             0.2.1    2019-03-21 [2] CRAN (R 4.1.2)
##  backports              1.4.1    2021-12-13 [2] CRAN (R 4.1.2)
##  basilisk               1.9.12   2022-10-31 [2] Github (LTLA/basilisk@e185224)
##  basilisk.utils         1.9.4    2022-10-31 [2] Github (LTLA/basilisk.utils@b3ab58d)
##  beachmat               2.10.0   2021-10-26 [2] Bioconductor
##  beeswarm               0.4.0    2021-06-01 [2] CRAN (R 4.1.2)
##  Biobase                2.54.0   2021-10-26 [2] Bioconductor
##  BiocGenerics           0.40.0   2021-10-26 [2] Bioconductor
##  BiocManager            1.30.18  2022-05-18 [2] CRAN (R 4.1.2)
##  BiocNeighbors          1.12.0   2021-10-26 [2] Bioconductor
##  BiocParallel           1.28.3   2021-12-09 [2] Bioconductor
##  BiocSingular           1.10.0   2021-10-26 [2] Bioconductor
##  BiocStyle            * 2.22.0   2021-10-26 [2] Bioconductor
##  bit                    4.0.4    2020-08-04 [2] CRAN (R 4.1.0)
##  bit64                  4.0.5    2020-08-30 [2] CRAN (R 4.1.0)
##  bitops                 1.0-7    2021-04-24 [2] CRAN (R 4.1.2)
##  bluster                1.4.0    2021-10-26 [2] Bioconductor
##  bookdown               0.27     2022-06-14 [2] CRAN (R 4.1.2)
##  broom                  1.0.0    2022-07-01 [2] CRAN (R 4.1.2)
##  bslib                  0.4.0    2022-07-16 [2] CRAN (R 4.1.2)
##  cachem                 1.0.6    2021-08-19 [2] CRAN (R 4.1.2)
##  cellranger             1.1.0    2016-07-27 [2] CRAN (R 4.1.2)
##  checkmate              2.1.0    2022-04-21 [2] CRAN (R 4.1.2)
##  circlize               0.4.15   2022-05-10 [2] CRAN (R 4.1.2)
##  cli                    3.6.0    2023-01-09 [2] CRAN (R 4.1.2)
##  clue                   0.3-61   2022-05-30 [2] CRAN (R 4.1.2)
##  cluster                2.1.3    2022-03-28 [2] CRAN (R 4.1.2)
##  codetools              0.2-18   2020-11-04 [2] CRAN (R 4.1.2)
##  colorspace             2.0-3    2022-02-21 [2] CRAN (R 4.1.2)
##  ComplexHeatmap         2.10.0   2021-10-26 [2] Bioconductor
##  cowplot                1.1.1    2020-12-30 [2] CRAN (R 4.1.2)
##  crayon                 1.5.1    2022-03-26 [2] CRAN (R 4.1.2)
##  curl                   4.3.2    2021-06-23 [2] CRAN (R 4.1.0)
##  data.table             1.14.2   2021-09-27 [2] CRAN (R 4.1.2)
##  DBI                    1.1.3    2022-06-18 [2] CRAN (R 4.1.2)
##  dbplyr                 2.2.1    2022-06-27 [2] CRAN (R 4.1.2)
##  DelayedArray           0.20.0   2021-10-26 [2] Bioconductor
##  DelayedMatrixStats     1.16.0   2021-10-26 [2] Bioconductor
##  deldir                 1.0-6    2021-10-23 [2] CRAN (R 4.1.2)
##  desc                   1.4.1    2022-03-06 [2] CRAN (R 4.1.2)
##  digest                 0.6.29   2021-12-01 [2] CRAN (R 4.1.1)
##  dir.expiry             1.2.0    2021-10-26 [2] Bioconductor
##  doParallel             1.0.17   2022-02-07 [2] CRAN (R 4.1.2)
##  dplyr                * 1.0.9    2022-04-28 [2] CRAN (R 4.1.2)
##  dqrng                  0.3.0    2021-05-01 [2] CRAN (R 4.1.2)
##  edgeR                  3.36.0   2021-10-26 [2] Bioconductor
##  ellipsis               0.3.2    2021-04-29 [2] CRAN (R 4.1.2)
##  evaluate               0.15     2022-02-18 [2] CRAN (R 4.1.2)
##  fansi                  1.0.3    2022-03-24 [2] CRAN (R 4.1.2)
##  fastmap                1.1.0    2021-01-25 [2] CRAN (R 4.1.2)
##  filelock               1.0.2    2018-10-05 [2] CRAN (R 4.1.2)
##  fitdistrplus           1.1-8    2022-03-10 [2] CRAN (R 4.1.2)
##  forcats              * 0.5.1    2021-01-27 [2] CRAN (R 4.1.2)
##  foreach                1.5.2    2022-02-02 [2] CRAN (R 4.1.2)
##  fs                     1.5.2    2021-12-08 [2] CRAN (R 4.1.2)
##  future                 1.27.0   2022-07-22 [2] CRAN (R 4.1.2)
##  future.apply           1.9.0    2022-04-25 [2] CRAN (R 4.1.2)
##  gargle                 1.2.0    2021-07-02 [2] CRAN (R 4.1.2)
##  generics               0.1.3    2022-07-05 [2] CRAN (R 4.1.2)
##  GenomeInfoDb           1.30.1   2022-01-30 [2] Bioconductor
##  GenomeInfoDbData       1.2.7    2022-01-26 [2] Bioconductor
##  GenomicRanges          1.46.1   2021-11-18 [2] Bioconductor
##  GetoptLong             1.0.5    2020-12-15 [2] CRAN (R 4.1.2)
##  ggbeeswarm             0.6.0    2017-08-07 [2] CRAN (R 4.1.2)
##  ggplot2              * 3.3.6    2022-05-03 [2] CRAN (R 4.1.2)
##  ggrepel                0.9.1    2021-01-15 [2] CRAN (R 4.1.2)
##  ggridges               0.5.3    2021-01-08 [2] CRAN (R 4.1.2)
##  GlobalOptions          0.1.2    2020-06-10 [2] CRAN (R 4.1.2)
##  globals                0.15.1   2022-06-24 [2] CRAN (R 4.1.2)
##  glue                   1.6.2    2022-02-24 [2] CRAN (R 4.1.2)
##  goftest                1.2-3    2021-10-07 [2] CRAN (R 4.1.2)
##  googledrive            2.0.0    2021-07-08 [2] CRAN (R 4.1.2)
##  googlesheets4          1.0.0    2021-07-21 [2] CRAN (R 4.1.2)
##  gridExtra              2.3      2017-09-09 [2] CRAN (R 4.1.2)
##  gtable                 0.3.0    2019-03-25 [2] CRAN (R 4.1.2)
##  haven                  2.5.0    2022-04-15 [2] CRAN (R 4.1.2)
##  hms                    1.1.1    2021-09-26 [2] CRAN (R 4.1.2)
##  htmltools              0.5.3    2022-07-18 [2] CRAN (R 4.1.2)
##  htmlwidgets            1.5.4    2021-09-08 [2] CRAN (R 4.1.2)
##  httpuv                 1.6.5    2022-01-05 [2] CRAN (R 4.1.2)
##  httr                   1.4.3    2022-05-04 [2] CRAN (R 4.1.2)
##  ica                    1.0-3    2022-07-08 [2] CRAN (R 4.1.2)
##  igraph                 1.3.0    2022-04-01 [2] CRAN (R 4.1.3)
##  IRanges                2.28.0   2021-10-26 [2] Bioconductor
##  irlba                  2.3.5    2021-12-06 [2] CRAN (R 4.1.2)
##  iterators              1.0.14   2022-02-05 [2] CRAN (R 4.1.2)
##  jquerylib              0.1.4    2021-04-26 [2] CRAN (R 4.1.2)
##  jsonlite               1.8.0    2022-02-22 [2] CRAN (R 4.1.2)
##  KernSmooth             2.23-20  2021-05-03 [2] CRAN (R 4.1.2)
##  knitr                  1.39     2022-04-26 [2] CRAN (R 4.1.2)
##  later                  1.3.0    2021-08-18 [2] CRAN (R 4.1.2)
##  lattice                0.20-45  2021-09-22 [2] CRAN (R 4.1.1)
##  lazyeval               0.2.2    2019-03-15 [2] CRAN (R 4.1.2)
##  leiden                 0.4.2    2022-05-09 [2] CRAN (R 4.1.2)
##  liana                * 0.1.12   2023-02-24 [1] Bioconductor
##  lifecycle              1.0.3    2022-10-07 [2] CRAN (R 4.1.2)
##  limma                  3.50.3   2022-04-07 [2] Bioconductor
##  listenv                0.8.0    2019-12-05 [2] CRAN (R 4.1.2)
##  lmtest                 0.9-40   2022-03-21 [2] CRAN (R 4.1.2)
##  locfit                 1.5-9.6  2022-07-11 [2] CRAN (R 4.1.2)
##  logger                 0.2.2    2021-10-19 [2] CRAN (R 4.1.2)
##  lubridate              1.8.0    2021-10-07 [2] CRAN (R 4.1.2)
##  magrittr             * 2.0.3    2022-03-30 [2] CRAN (R 4.1.3)
##  MASS                   7.3-58   2022-07-14 [2] CRAN (R 4.1.2)
##  Matrix                 1.5-3    2022-11-11 [2] CRAN (R 4.1.2)
##  MatrixGenerics         1.6.0    2021-10-26 [2] Bioconductor
##  matrixStats            0.62.0   2022-04-19 [2] CRAN (R 4.1.2)
##  memoise                2.0.1    2021-11-26 [2] CRAN (R 4.1.2)
##  metapod                1.2.0    2021-10-26 [2] Bioconductor
##  mgcv                   1.8-40   2022-03-29 [2] CRAN (R 4.1.2)
##  mime                   0.12     2021-09-28 [2] CRAN (R 4.1.2)
##  miniUI                 0.1.1.1  2018-05-18 [2] CRAN (R 4.1.2)
##  modelr                 0.1.8    2020-05-19 [2] CRAN (R 4.1.2)
##  munsell                0.5.0    2018-06-12 [2] CRAN (R 4.1.2)
##  nlme                   3.1-158  2022-06-15 [2] CRAN (R 4.1.2)
##  OmnipathR            * 3.7.2    2023-02-19 [2] Github (saezlab/OmnipathR@c5f63b4)
##  parallelly             1.32.1   2022-07-21 [2] CRAN (R 4.1.2)
##  patchwork              1.1.1    2020-12-17 [2] CRAN (R 4.1.2)
##  pbapply                1.5-0    2021-09-16 [2] CRAN (R 4.1.2)
##  pillar                 1.8.0    2022-07-18 [2] CRAN (R 4.1.2)
##  pkgconfig              2.0.3    2019-09-22 [2] CRAN (R 4.1.0)
##  pkgdown                2.0.6    2022-07-16 [2] CRAN (R 4.1.2)
##  plotly                 4.10.0   2021-10-09 [2] CRAN (R 4.1.2)
##  plyr                   1.8.7    2022-03-24 [2] CRAN (R 4.1.2)
##  png                    0.1-7    2013-12-03 [2] CRAN (R 4.1.0)
##  polyclip               1.10-0   2019-03-14 [2] CRAN (R 4.1.2)
##  prettyunits            1.1.1    2020-01-24 [2] CRAN (R 4.1.2)
##  progress               1.2.2    2019-05-16 [2] CRAN (R 4.1.2)
##  progressr              0.10.1   2022-06-03 [2] CRAN (R 4.1.2)
##  promises               1.2.0.1  2021-02-11 [2] CRAN (R 4.1.2)
##  purrr                * 0.3.4    2020-04-17 [2] CRAN (R 4.1.0)
##  R6                     2.5.1    2021-08-19 [2] CRAN (R 4.1.2)
##  ragg                   1.2.2    2022-02-21 [2] CRAN (R 4.1.2)
##  RANN                   2.6.1    2019-01-08 [2] CRAN (R 4.1.2)
##  rappdirs               0.3.3    2021-01-31 [2] CRAN (R 4.1.2)
##  RColorBrewer           1.1-3    2022-04-03 [2] CRAN (R 4.1.2)
##  Rcpp                   1.0.8.3  2022-03-17 [2] CRAN (R 4.1.2)
##  RcppAnnoy              0.0.19   2021-07-30 [2] CRAN (R 4.1.2)
##  RCurl                  1.98-1.7 2022-06-09 [2] CRAN (R 4.1.2)
##  readr                * 2.1.2    2022-01-30 [2] CRAN (R 4.1.2)
##  readxl                 1.4.0    2022-03-28 [2] CRAN (R 4.1.2)
##  reprex                 2.0.1    2021-08-05 [2] CRAN (R 4.1.2)
##  reshape2               1.4.4    2020-04-09 [2] CRAN (R 4.1.2)
##  reticulate             1.25     2022-05-11 [2] CRAN (R 4.1.2)
##  rgeos                  0.5-9    2021-12-15 [2] CRAN (R 4.1.2)
##  rjson                  0.2.21   2022-01-09 [2] CRAN (R 4.1.2)
##  rlang                  1.0.6    2022-09-24 [2] CRAN (R 4.1.2)
##  rmarkdown              2.14     2022-04-25 [2] CRAN (R 4.1.2)
##  ROCR                   1.0-11   2020-05-02 [2] CRAN (R 4.1.2)
##  rpart                  4.1.16   2022-01-24 [2] CRAN (R 4.1.2)
##  rprojroot              2.0.3    2022-04-02 [2] CRAN (R 4.1.2)
##  rstudioapi             0.13     2020-11-12 [2] CRAN (R 4.1.2)
##  rsvd                   1.0.5    2021-04-16 [2] CRAN (R 4.1.2)
##  Rtsne                  0.16     2022-04-17 [2] CRAN (R 4.1.2)
##  rvest                  1.0.2    2021-10-16 [2] CRAN (R 4.1.2)
##  S4Vectors              0.32.4   2022-03-24 [2] Bioconductor
##  sass                   0.4.2    2022-07-16 [2] CRAN (R 4.1.2)
##  ScaledMatrix           1.2.0    2021-10-26 [2] Bioconductor
##  scales                 1.2.0    2022-04-13 [2] CRAN (R 4.1.2)
##  scater                 1.22.0   2021-10-26 [2] Bioconductor
##  scattermore            0.8      2022-02-14 [2] CRAN (R 4.1.2)
##  scran                  1.22.1   2021-11-14 [2] Bioconductor
##  sctransform            0.3.3    2022-01-13 [2] CRAN (R 4.1.2)
##  scuttle                1.4.0    2021-10-26 [2] Bioconductor
##  sessioninfo            1.2.2    2021-12-06 [2] CRAN (R 4.1.2)
##  Seurat                 4.1.1    2022-05-02 [2] CRAN (R 4.1.2)
##  SeuratObject           4.1.0    2022-05-01 [2] CRAN (R 4.1.2)
##  shape                  1.4.6    2021-05-19 [2] CRAN (R 4.1.2)
##  shiny                  1.7.2    2022-07-19 [2] CRAN (R 4.1.2)
##  SingleCellExperiment   1.16.0   2021-10-26 [2] Bioconductor
##  sp                     1.5-0    2022-06-05 [2] CRAN (R 4.1.3)
##  sparseMatrixStats      1.6.0    2021-10-26 [2] Bioconductor
##  spatstat.core          2.4-4    2022-05-18 [2] CRAN (R 4.1.2)
##  spatstat.data          3.0-0    2022-10-21 [2] CRAN (R 4.1.2)
##  spatstat.geom          3.0-3    2022-10-25 [2] CRAN (R 4.1.2)
##  spatstat.random        3.0-1    2022-11-03 [2] CRAN (R 4.1.2)
##  spatstat.sparse        3.0-0    2022-10-21 [2] CRAN (R 4.1.2)
##  spatstat.utils         3.0-1    2022-10-19 [2] CRAN (R 4.1.2)
##  statmod                1.4.36   2021-05-10 [2] CRAN (R 4.1.2)
##  stringi                1.7.6    2021-11-29 [2] CRAN (R 4.1.1)
##  stringr              * 1.4.0    2019-02-10 [2] CRAN (R 4.1.0)
##  SummarizedExperiment   1.24.0   2021-10-26 [2] Bioconductor
##  survival               3.3-1    2022-03-03 [2] CRAN (R 4.1.2)
##  systemfonts            1.0.4    2022-02-11 [2] CRAN (R 4.1.2)
##  tensor                 1.5      2012-05-05 [2] CRAN (R 4.1.2)
##  textshaping            0.3.6    2021-10-13 [2] CRAN (R 4.1.2)
##  tibble               * 3.1.8    2022-07-22 [2] CRAN (R 4.1.2)
##  tidyr                * 1.2.0    2022-02-01 [2] CRAN (R 4.1.2)
##  tidyselect             1.2.0    2022-10-10 [2] CRAN (R 4.1.2)
##  tidyverse            * 1.3.2    2022-07-18 [2] CRAN (R 4.1.2)
##  tzdb                   0.3.0    2022-03-28 [2] CRAN (R 4.1.2)
##  utf8                   1.2.2    2021-07-24 [2] CRAN (R 4.1.2)
##  uwot                   0.1.11   2021-12-02 [2] CRAN (R 4.1.2)
##  vctrs                  0.4.1    2022-04-13 [2] CRAN (R 4.1.2)
##  vipor                  0.4.5    2017-03-22 [2] CRAN (R 4.1.2)
##  viridis                0.6.2    2021-10-13 [2] CRAN (R 4.1.2)
##  viridisLite            0.4.0    2021-04-13 [2] CRAN (R 4.1.2)
##  vroom                  1.5.7    2021-11-30 [2] CRAN (R 4.1.2)
##  withr                  2.5.0    2022-03-03 [2] CRAN (R 4.1.2)
##  xfun                   0.31     2022-05-10 [2] CRAN (R 4.1.2)
##  xml2                   1.3.3    2021-11-30 [2] CRAN (R 4.1.2)
##  xtable                 1.8-4    2019-04-21 [2] CRAN (R 4.1.2)
##  XVector                0.34.0   2021-10-26 [2] Bioconductor
##  yaml                   2.3.5    2022-02-21 [2] CRAN (R 4.1.2)
##  zlibbioc               1.40.0   2021-10-26 [2] Bioconductor
##  zoo                    1.8-10   2022-04-15 [2] CRAN (R 4.1.2)
## 
##  [1] /tmp/RtmpxcdOYQ/temp_libpath7149c6a489cd4
##  [2] /home/dbdimitrov/anaconda3/envs/liana4.1/lib/R/library
## 
## ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────