--- title: "BulkSignalR :
Inference of ligand-receptor interactions from bulk data or spatial transcriptomics" author: - name: Jean-Philippe Villemin affiliation: - Institut de Recherche en Cancérologie de Montpellier, Inserm, Montpellier, France email: jean-philippe.villemin@inserm.fr - name: Jacques Colinge affiliation: - Institut de Recherche en Cancérologie de Montpellier, Inserm, Montpellier, France email: jacques.colinge@inserm.fr date: "`r format(Sys.Date(), '%m/%d/%Y')`" output: rmarkdown::html_vignette: self_contained: true toc: true toc_depth: 4 highlight: pygments fig_height: 3 fig_width: 3 fig_caption: no code_folding: show package: BulkSignalR vignette: > %\VignetteIndexEntry{BulkSignalR-Differential} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::knit_hooks$set(optipng = knitr::hook_optipng) options(rmarkdown.html_vignette.check_title = FALSE) ``` ```{r load-libs, message = FALSE, warning = FALSE, results = FALSE} library(BulkSignalR) ``` ## Cluster-based differential analysis By default, `BulkSignalR` inference of L-R interactions relies on correlation analysis across all the samples. That is, a putative L-R interaction is assessed for coherent expression of the ligand, the receptor, and target genes in a pathway below receptor across all the samples. Alternatively, it is possible to define sample clusters based on an independent analysis (outside of `BulkSignalR`) to group similar samples. Based on cluster definitions, it is for instance possible to assess whether L-R interactions are significantly stronger in a cluster compared to all the samples, to all the samples but the chosen cluster, or in comparison with another cluster. In practice, the user must simply provide a table of differential gene or protein expression analysis that is relevant for the selected comparison. In this mode, L-R interactions are inferred based on gene or protein regulation-associated P-values instead of P-values resulting from the correlation analysis in the default mode. As already stated, differential P-value estimations are left to the user to compute. With bulk data, commonly used libraries such as `DESeq2`, `EdgeR`, or `limma` constitute obvious options. In the next chunk of code, we illustrate the differential mode using Salivary Duct Carcinoma (SDC) samples where we compare two clusters of patients. We first create a **BSRDataModelComp** object as follows: ```{r diffmode1,eval=TRUE} data(sdc, package = "BulkSignalR") normal <- grep("^N", names(sdc)) bsrdm.comp <- BSRDataModelComp(sdc[, -normal]) ``` To make a very small example we generate random values, but user should provide his own logFC and associated pvalues from DGE ouputs. ```{r diffmode2,eval=TRUE} colA <- as.integer(1:3) colB <- as.integer(12:15) n <- nrow(ncounts(bsrdm.comp)) stats <- data.frame(pval = runif(n), logFC = rnorm(n, 0, 2), expr = runif(n, 0, 10)) rownames(stats) <- rownames(ncounts(bsrdm.comp)) ``` We define the cluster comparison and add it. ```{r diffmode3,eval=TRUE} bsrcc <- BSRClusterComp(bsrdm.comp, colA, colB, stats) bsrdm.comp <- addClusterComp(bsrdm.comp, bsrcc, "random.example") ``` Finally we infer ligand-receptor interactions from the comparison. We use a subset of the reference to speed up inference in the context of the vignette. ```{r diffmode4,eval=TRUE} subset <- c("REACTOME_BASIGIN_INTERACTIONS", "REACTOME_SYNDECAN_INTERACTIONS", "REACTOME_ECM_PROTEOGLYCANS", "REACTOME_CELL_JUNCTION_ORGANIZATION") reactSubset <- BulkSignalR:::.SignalR$BulkSignalR_Reactome[ BulkSignalR:::.SignalR$BulkSignalR_Reactome$`Reactome name` %in% subset,] resetPathways(dataframe = reactSubset, resourceName = "Reactome") bsrinf.comp <- BSRInferenceComp(bsrdm.comp, reference="REACTOME", max.pval = 1, "random.example") head(LRinter(bsrinf.comp)) ``` \ ## Technical notes The three basic `BulkSignalR` S4 classes BSRDataModel, BSRInference, and BSRSignature were derived into new classes to add the functionalities required by the differential mode: * **BSRDataModelComp**, denoted here as `bsrdm.comp` is a daughter class of **BSRDataModel**, previously denoted `bsrdm` * **BSRInferenceComp**, denoted here as `bsrinf.comp` is a daughter class of **BSRInference**, previously denoted `bsrinf` * **BSRSignatureComp**, denoted here as `bsrsig.comp` is a daughter class of **BSRSignature**, previously denoted `bsrsig` The new S4 class **BSRClusterComp** is meant to represent the comparison between two clusters of samples. It primarily contains the results of the user-provided differential analysis in a table containing gene/protein names, P-values, and log-fold-changes (logFC). Usually, we recommend instantiating a `BSRDataModel` object to contain the expression matrix underlying the differential analysis. Then, it is promoted into a `BSRDataModelComp` object such that cluster definitions and comparisons can be added to it. This can be for instance done with ``as(bsrdm, "BSRDataModelComp")``. The `addClusterComp` method of a `BSRDataModelComp` object allows adding one or several comparisons between clusters, each added comparison being defined in a `BSRClusterComp` object. \ Thank you for reading this guide and for using `BulkSignalR`. \ ## Session Information ```{r session-info} sessionInfo() ```