Introduction

A key component of the PhosR package is to construct signalomes. The signalome construction is composed of two main steps: 1) kinase-substrate relationsip scoring and 2) signalome construction. This involves a sequential workflow where the outputs of the first step are used as inputs of the latter step.

In brief, our kinase-substrate relationship scoring method (kinaseSubstrateScore and kinaseSubstratePred) prioritises potential kinases that could be responsible for the phosphorylation change of phosphosite on the basis of kinase recognition motif and phosphoproteomic dynamics. Using the kinase-substrate relationships derived from the scoring methods, we reconstruct signalome networks present in the data (Signalomes) wherin we highlight kinase regulation of discrete modules.

Loading packages and data

First, we will load the PhosR package along with few other packages that we will be using in this section of the vignette.

We will also be needing data containing kinase-substrate annotations from PhosphoSitePlus, kinase recognition motifs from kinase motifs, and annotations of kinase families from kinase family.

data("KinaseMotifs")
data("KinaseFamily")

Setting up the data

As before, we will set up the data by cleaning up the phoshophosite labels and performing RUV normalisation. We will generate the ppe_RUV matrix as in batch_correction.

data("phospho_L6_ratio_pe")
data("SPSs")
data("PhosphoSitePlus")

##### Run batch correction
ppe <- phospho.L6.ratio.pe
sites = paste(sapply(ppe@GeneSymbol, function(x)x),";",
                 sapply(ppe@Residue, function(x)x),
                 sapply(ppe@Site, function(x)x),
                 ";", sep = "")
grps = gsub("_.+", "", colnames(ppe))
design = model.matrix(~ grps - 1)
ctl = which(sites %in% SPSs)
ppe = RUVphospho(ppe, M = design, k = 3, ctl = ctl)

phosphoL6 = ppe@assays@data$normalised

Generation of kinase-substrate relationship scores

Next, we will filtered for dynamically regulated phosphosites and then standardise the filtered matrix.

# filter for up-regulated phosphosites
phosphoL6.mean <- meanAbundance(phosphoL6, grps = gsub("_.+", "", colnames(phosphoL6)))
aov <- matANOVA(mat=phosphoL6, grps=gsub("_.+", "", colnames(phosphoL6)))
idx <- (aov < 0.05) & (rowSums(phosphoL6.mean > 0.5) > 0)
phosphoL6.reg <- phosphoL6[idx, ,drop = FALSE]

L6.phos.std <- standardise(phosphoL6.reg)
rownames(L6.phos.std) <- paste0(ppe@GeneSymbol, ";", ppe@Residue, ppe@Site, ";")[idx]

We next extract the kinase recognition motifs from each phosphosite.

L6.phos.seq <- ppe@Sequence[idx]

Now that we have all the inputs for kinaseSubstrateScore and kinaseSubstratePred ready, we can proceed to the generation of kinase-substrate relationship scores.

L6.matrices <- kinaseSubstrateScore(substrate.list = PhosphoSite.mouse, 
                                    mat = L6.phos.std, seqs = L6.phos.seq, 
                                    numMotif = 5, numSub = 1, verbose = FALSE)

set.seed(1)
L6.predMat <- kinaseSubstratePred(L6.matrices, top=30, verbose = FALSE) 

Signalome construction

The signalome construction uses the outputs of kinaseSubstrateScore and kinaseSubstratePred functions for the generation of a visualisation of the kinase regulation of discrete regulatory protein modules present in our phosphoproteomic data.

kinaseOI = c("PRKAA1", "AKT1")

Signalomes_results <- Signalomes(KSR=L6.matrices, 
                                predMatrix=L6.predMat, 
                                exprsMat=L6.phos.std, 
                                KOI=kinaseOI)

Generate signalome map

We can also visualise the relative contribution of each kinase towards the regulation of protein modules by plotting a balloon plot. In the balloon plot, the size of the balloons denote the percentage magnitude of kinase regulation in each module.

### generate palette
my_color_palette <- grDevices::colorRampPalette(RColorBrewer::brewer.pal(8, "Accent"))
kinase_all_color <- my_color_palette(ncol(L6.matrices$combinedScoreMatrix))
names(kinase_all_color) <- colnames(L6.matrices$combinedScoreMatrix)
kinase_signalome_color <- kinase_all_color[colnames(L6.predMat)]

plotSignalomeMap(signalomes = Signalomes_results, color = kinase_signalome_color)

Generate signalome network

Finally, we can also plot the signalome network that illustrates the connectivity between kinase signalome networks.

plotKinaseNetwork(KSR = L6.matrices, predMatrix = L6.predMat, threshold = 0.9, color = kinase_all_color)

SessionInfo

sessionInfo()
#> R version 4.2.2 (2022-10-31)
#> Platform: x86_64-apple-darwin17.0 (64-bit)
#> Running under: macOS Big Sur ... 10.16
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.2/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] network_1.18.0  calibrate_1.7.7 MASS_7.3-58.1   ggpubr_0.5.0   
#> [5] GGally_2.1.2    ggplot2_3.4.0   dplyr_1.0.10    PhosR_1.9.1    
#> 
#> loaded via a namespace (and not attached):
#>   [1] bitops_1.0-7                matrixStats_0.63.0         
#>   [3] fs_1.5.2                    RColorBrewer_1.1-3         
#>   [5] rprojroot_2.0.3             GenomeInfoDb_1.34.3        
#>   [7] tools_4.2.2                 backports_1.4.1            
#>   [9] bslib_0.4.1                 utf8_1.2.2                 
#>  [11] R6_2.5.1                    BiocGenerics_0.44.0        
#>  [13] colorspace_2.0-3            withr_2.5.0                
#>  [15] tidyselect_1.2.0            gridExtra_2.3              
#>  [17] preprocessCore_1.60.0       compiler_4.2.2             
#>  [19] textshaping_0.3.6           cli_3.4.1                  
#>  [21] Biobase_2.58.0              desc_1.4.2                 
#>  [23] DelayedArray_0.24.0         ggdendro_0.1.23            
#>  [25] labeling_0.4.2              sass_0.4.4                 
#>  [27] scales_1.2.1                proxy_0.4-27               
#>  [29] pkgdown_2.0.6               systemfonts_1.0.4          
#>  [31] stringr_1.4.1               digest_0.6.30              
#>  [33] rmarkdown_2.18              XVector_0.38.0             
#>  [35] pkgconfig_2.0.3             htmltools_0.5.3            
#>  [37] MatrixGenerics_1.10.0       highr_0.9                  
#>  [39] ruv_0.9.7.1                 limma_3.54.0               
#>  [41] fastmap_1.1.0               rlang_1.0.6                
#>  [43] GlobalOptions_0.1.2         farver_2.1.1               
#>  [45] shape_1.4.6                 jquerylib_0.1.4            
#>  [47] generics_0.1.3              jsonlite_1.8.3             
#>  [49] statnet.common_4.7.0        dendextend_1.16.0          
#>  [51] car_3.1-1                   RCurl_1.98-1.9             
#>  [53] magrittr_2.0.3              GenomeInfoDbData_1.2.9     
#>  [55] Matrix_1.5-1                Rcpp_1.0.9                 
#>  [57] munsell_0.5.0               S4Vectors_0.36.0           
#>  [59] fansi_1.0.3                 abind_1.4-5                
#>  [61] viridis_0.6.2               lifecycle_1.0.3            
#>  [63] stringi_1.7.8               yaml_2.3.6                 
#>  [65] carData_3.0-5               SummarizedExperiment_1.28.0
#>  [67] zlibbioc_1.44.0             plyr_1.8.8                 
#>  [69] grid_4.2.2                  lattice_0.20-45            
#>  [71] circlize_0.4.15             knitr_1.41                 
#>  [73] pillar_1.8.1                igraph_1.3.5               
#>  [75] GenomicRanges_1.50.1        ggsignif_0.6.4             
#>  [77] reshape2_1.4.4              stats4_4.2.2               
#>  [79] glue_1.6.2                  evaluate_0.18              
#>  [81] pcaMethods_1.90.0           BiocManager_1.30.19        
#>  [83] vctrs_0.5.1                 gtable_0.3.1               
#>  [85] purrr_0.3.5                 tidyr_1.2.1                
#>  [87] reshape_0.8.9               cachem_1.0.6               
#>  [89] xfun_0.35                   broom_1.0.1                
#>  [91] e1071_1.7-12                coda_0.19-4                
#>  [93] rstatix_0.7.1               ragg_1.2.4                 
#>  [95] class_7.3-20                viridisLite_0.4.1          
#>  [97] tibble_3.1.8                pheatmap_1.0.12            
#>  [99] memoise_2.0.1               IRanges_2.32.0             
#> [101] ellipsis_0.3.2              BiocStyle_2.26.0