MicroRNAs (miRNAs) are small non-coding RNAs (~22 nt) that control a wide range of biological processes including cancers via regulating target genes [1-5]. Therefore, it is important to uncover miRNA functions and regulatory mechanisms in cancers.
The emergence of competing endogenous RNA (ceRNA) hypothesis [6] has challenged the traditional knowledge that coding RNAs only act as targets of miRNAs. Actually, a pool of coding and non-coding RNAs that shares common miRNA biding sites competes with each other, thus act as ceRNAs to release coding RNAs from miRNAs control. These ceRNAs are also known as miRNA sponges or miRNA decoys, and include long non-coding RNAs (lncRNAs), pseudogenes, circular RNAs (circRNAs) and messenger RNAs (mRNAs), etc [7-10]. Recent studies [11, 12] have shown that miRNA sponge network and module can help to reveal the biological mechanism in cancer.
To accelerate the research of miRNA sponge, we develop an R package ‘miRspongeR’ to implement popular methods in the identification and analysis of miRNA sponge network and module.
In ‘spongeMethod’ function, We implement seven popular methods (miRHomology [13, 14], pc [15, 16], sppc [17], ppc [11], hermes [18], muTaME [19], and cernia [20]) to identify miRNA sponge interactions. The seven methods should meet a basic condition: the significance of sharing of miRNAs by each RNA-RNA pair (e.g. adjusted p-value < 0.01). Each method has its own merit due to different evaluating indicators. Thus, we present an integrate method to combine predicted miRNA sponge interactions from different methods.
We implement miRHomology method based on the homology of sharing miRNAs.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
miRHomologyceRInt <- spongeMethod(miRTarget, method = "miRHomology")
head(miRHomologyceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "NFIA" "31" "1.61969028532605e-05"
## [2,] "QKI" "TCF4" "20" "0.00164001938044806"
## [3,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [4,] "QKI" "PTEN" "31" "0.00172299770543381"
## [5,] "QKI" "KLF6" "25" "1.61969028532605e-05"
## [6,] "SOX5" "RB1" "11" "0.00313418502601189"
The pc function considers expression data based on miRHomology method. Significantly positive miRNA sponge interaction pairs are regarded as output.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
pcceRInt <- spongeMethod(miRTarget, ExpData, method = "pc")
head(pcceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "NFIA" "31" "1.61969028532605e-05"
## [2,] "QKI" "TCF4" "20" "0.00164001938044806"
## [3,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [4,] "QKI" "PTEN" "31" "0.00172299770543381"
## [5,] "QKI" "KLF6" "25" "1.61969028532605e-05"
## [6,] "SOX5" "RB1" "11" "0.00313418502601189"
## correlation p.adjusted_value of positive correlation
## [1,] "0.491729673394525" "1.31981734203614e-09"
## [2,] "0.732930517949784" "2.7017217087929e-24"
## [3,] "0.397085235409979" "1.57216583466138e-06"
## [4,] "0.554784433631471" "2.2899877573925e-12"
## [5,] "0.605337991455224" "5.23010520014821e-15"
## [6,] "0.239965818711153" "0.00427058208653246"
We implement sppc method based on sensitivity correlation (difference between the Pearson and partial correlation coefficients).
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
sppcceRInt <- spongeMethod(miRTarget, ExpData, senscorcutoff = 0.1, method = "sppc")
head(sppcceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "NFIA" "31" "1.61969028532605e-05"
## [2,] "QKI" "TCF4" "20" "0.00164001938044806"
## [3,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [4,] "QKI" "PTEN" "31" "0.00172299770543381"
## [5,] "QKI" "KLF6" "25" "1.61969028532605e-05"
## [6,] "SOX5" "RB1" "11" "0.00313418502601189"
## correlation p.adjusted_value of positive correlation
## [1,] "0.491729673394525" "1.31981734203614e-09"
## [2,] "0.732930517949784" "2.7017217087929e-24"
## [3,] "0.397085235409979" "1.57216583466138e-06"
## [4,] "0.554784433631471" "2.2899877573925e-12"
## [5,] "0.605337991455224" "5.23010520014821e-15"
## [6,] "0.239965818711153" "0.00427058208653246"
## sensitivity correlation
## [1,] "0.307037199068782"
## [2,] "0.316438618435417"
## [3,] "0.138436130309623"
## [4,] "0.346274495026087"
## [5,] "0.354300353701363"
## [6,] "0.188537090552444"
The hermes method predicts competing endogenous RNAs via evidence for competition for miRNA regulation based on conditional mutual information.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
hermesceRInt <- spongeMethod(miRTarget, ExpData, num_perm = 10, method = "hermes")
head(hermesceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [2,] "RB1" "PTEN" "21" "0.00334325253854548"
## [3,] "NFIA" "TCF4" "21" "1.81490295278364e-05"
## [4,] "NFIA" "PTEN" "29" "0.000182921588755158"
## [5,] "TCF4" "PTEN" "23" "2.77533469138317e-05"
## [6,] "TNKS2" "PTEN" "27" "0.0023042979609089"
## p.adjusted_value of RNA competition
## [1,] "0.00414185647437065"
## [2,] "0.000512408851563194"
## [3,] "0.00390866540191439"
## [4,] "2.786496788423e-05"
## [5,] "0.00390866540191439"
## [6,] "5.44056278071303e-05"
Parameter ‘num_perm’ is used to set the number of permutations of input expression data. The larger the number is, the slower the calculation is.
The ppc method is a variant of the hermes method. However, it predicts competing endogenous RNAs via evidence for competition for miRNA regulation based on Partial Pearson Correlation.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
ppcceRInt <- spongeMethod(miRTarget, ExpData, num_perm = 10, method = "ppc")
head(ppcceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "NFIA" "31" "1.61969028532605e-05"
## [2,] "QKI" "TCF4" "20" "0.00164001938044806"
## [3,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [4,] "QKI" "PTEN" "31" "0.00172299770543381"
## [5,] "QKI" "KLF6" "25" "1.61969028532605e-05"
## [6,] "SOX5" "RB1" "11" "0.00313418502601189"
## p.adjusted_value of RNA competition
## [1,] "3.24863700780279e-10"
## [2,] "2.77892977932344e-07"
## [3,] "7.89711981766528e-09"
## [4,] "4.23392739007837e-10"
## [5,] "1.44241210312241e-09"
## [6,] "0.000394559721806423"
Parameter ‘num_perm’ is used to set the number of permutations of input expression data. The larger the number is, the slower the calculation is.
We implement the muTaME method based on the logarithm of four scores: (1) the fraction of common miRNAs, (2) the density of the MREs for all shared miRNAs, (3) the distribution of MREs of the putative RNA-RNA pairs and (4) the relation between the overall number of MREs for a putative miRNA sponge compared with the number of miRNAs that yield these MREs. There is no reason to decide which score has more contribution than the rest. Thus, we calculate a combined score by adding these four scores. To evaluate the strength of each RNA-RNA pair, we further normalize the combined scores to obtain normalized scores with interval [0 1].
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
MREs <- system.file("extdata", "MREs.csv", package="miRspongeR")
mres <- read.csv(MREs, header=TRUE, sep=",")
muTaMEceRInt <- spongeMethod(miRTarget, mres = mres, method = "muTaME")
head(muTaMEceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "NFIA" "31" "1.61969028532605e-05"
## [2,] "QKI" "TCF4" "20" "0.00164001938044806"
## [3,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [4,] "QKI" "PTEN" "31" "0.00172299770543381"
## [5,] "QKI" "KLF6" "25" "1.61969028532605e-05"
## [6,] "NFIA" "PTEN" "29" "0.000182921588755158"
## Score 1 Score 2 Score 3
## [1,] "-0.437213806422745" "-165.610621988223" "257.7778713546"
## [2,] "-0.470003629245736" "-100.765642874738" "155.515558123873"
## [3,] "-0.559615787935423" "-152.637669361688" "228.018475194044"
## [4,] "-0.626455806061273" "-172.33389579933" "256.339724121501"
## [5,] "-0.336472236621213" "-134.332311526516" "203.667092432857"
## [6,] "-0.503905180921417" "-126.210306682534" "179.441855213251"
## Score 4 Combined score Normalized score
## [1,] "-0.0201046632956751" "91.7099308966585" "1"
## [2,] "-0.0188882845202057" "54.2610233353697" "0.638676224274825"
## [3,] "-0.0226424767497598" "74.7985475676708" "0.836831425131288"
## [4,] "-0.0192015809668538" "83.3601709351436" "0.919437788919319"
## [5,] "-0.0209431738452431" "68.9773654958742" "0.780666062178499"
## [6,] "-0.0470453636900539" "52.6805979861055" "0.623427575071551"
We implement the cernia method based on the logarithm of seven scores: (1) the fraction of common miRNAs, (2) the density of the MREs for all shared miRNAs, (3) the distribution of MREs of the putative RNA-RNA pairs, (4) the relation between the overall number of MREs for a putative miRNA sponge compared with the number of miRNAs that yield these MREs, (5) the density of the hybridization energies related to MREs for all shared miRNAs, (6) the DT-Hybrid recommendation scores and (7) the pairwise Pearson correlation between putative RNA-RNA pair expression data. There is no reason to decide which score has more contribution than the rest. Thus, we calculate a combined score by adding these seven scores. To evaluate the strength of each RNA-RNA pair, we further normalize the combined scores to obtain normalized scores with interval [0 1].
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
MREs <- system.file("extdata", "MREs.csv", package="miRspongeR")
mres <- read.csv(MREs, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
cerniaceRInt <- spongeMethod(miRTarget, ExpData, mres, method = "cernia")
head(cerniaceRInt)
## sponge_1 sponge_2 #shared miRNAs p.adjusted_value of shared miRNAs
## [1,] "QKI" "NFIA" "31" "1.61969028532605e-05"
## [2,] "QKI" "TCF4" "20" "0.00164001938044806"
## [3,] "QKI" "TNKS2" "28" "0.00098462411218998"
## [4,] "QKI" "PTEN" "31" "0.00172299770543381"
## [5,] "QKI" "KLF6" "25" "1.61969028532605e-05"
## [6,] "SOX5" "RB1" "11" "0.00313418502601189"
## Score 1 Score 2 Score 3
## [1,] "-0.437213806422745" "-165.610621988223" "257.7778713546"
## [2,] "-0.470003629245736" "-100.765642874738" "155.515558123873"
## [3,] "-0.559615787935423" "-152.637669361688" "228.018475194044"
## [4,] "-0.626455806061273" "-172.33389579933" "256.339724121501"
## [5,] "-0.336472236621213" "-134.332311526516" "203.667092432857"
## [6,] "-0.693147180559945" "-48.1031359789178" "59.3153148480852"
## Score 4 Score 5 Score 6
## [1,] "-0.0201046632956751" "-92.2247034012848" "0.106465490518013"
## [2,] "-0.0188882845202057" "-56.2215260182082" "0.093724938445459"
## [3,] "-0.0226424767497598" "-84.6432209105312" "0.105901597149822"
## [4,] "-0.0192015809668538" "-92.9082256214383" "0.111354127972192"
## [5,] "-0.0209431738452431" "-73.2294093715465" "0.0969028171707324"
## [6,] "-0.0224308469881821" "-20.3501801808809" "0.075154823978529"
## Score 7 Combined score Normalized score
## [1,] "-0.709826157809743" "-1.11813317191805" "0.756556965720048"
## [2,] "-0.310704372925734" "-2.17748211731878" "0.737120534653221"
## [3,] "-0.923604322573739" "-10.6623760682843" "0.581443732308459"
## [4,] "-0.589175648556801" "-10.0258762068793" "0.593121929312341"
## [5,] "-0.501968313383334" "-4.65710937188486" "0.691625512060294"
## [6,] "-1.42725878781999" "-11.205683303103" "0.57147538933374"
To obtain a list of high-confidence miRNA sponge interactions, we implement ‘integrateMethod’ function to integrate results of different methods.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
miRHomologyceRInt <- spongeMethod(miRTarget, method = "miRHomology")
pcceRInt <- spongeMethod(miRTarget, ExpData, method = "pc")
sppcceRInt <- spongeMethod(miRTarget, ExpData, method = "sppc")
Interlist <- list(miRHomologyceRInt[, 1:2], pcceRInt[, 1:2], sppcceRInt[, 1:2])
IntegrateceRInt <- integrateMethod(Interlist, Intersect_num = 2)
head(IntegrateceRInt)
## sponge_1 sponge_2
## [1,] "QKI" "NFIA"
## [2,] "QKI" "TCF4"
## [3,] "QKI" "TNKS2"
## [4,] "QKI" "PTEN"
## [5,] "QKI" "KLF6"
## [6,] "SOX5" "RB1"
Parameter ‘Intersect_num’ is used to set the least number of methods intersected for integration. That is to say, we only reserve those miRNA sponge interactions predicted by at least ‘Intersect_num’ methods.
To validate the predicted miRNA sponge interactions, we implement ‘spongeValidate’ function. The groundtruth of miRNA sponge interactions are from miRSponge (http://www.bio-bigdata.net/miRSponge/) and the experimentally validated miRNA sponge interactions of related literatures.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
miRHomologyceRInt <- spongeMethod(miRTarget, method = "miRHomology")
Groundtruthcsv <- system.file("extdata", "Groundtruth.csv", package="miRspongeR")
Groundtruth <- read.csv(Groundtruthcsv, header=TRUE, sep=",")
spongenetwork_validated <- spongeValidate(miRHomologyceRInt[, 1:2], directed = FALSE, Groundtruth)
spongenetwork_validated
## sponge_1 sponge_2
## 1 PTEN KLF6
## 2 TNKS2 PTEN
## 3 RB1 PTEN
To further understand the module-level properties of miRNA sponges in cancer, we implement ‘netModule’ function to identify miRNA sponge modules. Users can choose FN [21], MCL [22], LINKCOMM [23] and MCODE [24] for module identification.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
miRHomologyceRInt <- spongeMethod(miRTarget, method = "miRHomology")
spongenetwork_Cluster <- netModule(miRHomologyceRInt[, 1:2], modulesize = 2)
spongenetwork_Cluster
## [[1]]
## [1] "SOX5" "RB1"
##
## [[2]]
## [1] "QKI" "NFIA" "TCF4" "TNKS2" "PTEN" "KLF6"
We implement ‘moduleDEA’ function to make disease enrichment analysis of modules. The disease databases used include DO: Disease Ontology database (http://disease-ontology.org/), DGN: DisGeNET database (http://www.disgenet.org/) and NCG: Network of Cancer Genes database (http://ncg.kcl.ac.uk/). Moreover, ‘moduleFEA’ function is implemented to conduct functional GO, KEGG and Reactome enrichment analysis of modules. The ontology databases used contain GO: Gene Ontology database (http://www.geneontology.org/), KEGG: Kyoto Encyclopedia of Genes and Genomes Pathway Database (http://www.genome.jp/kegg/), and Reactome: Reactome Pathway Database (http://reactome.org/).
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
miRHomologyceRInt <- spongeMethod(miRTarget, method = "miRHomology")
spongenetwork_Cluster <- netModule(miRHomologyceRInt[, 1:2], modulesize = 2)
sponge_Module_DEA <- moduleDEA(spongenetwork_Cluster)
sponge_Module_FEA <- moduleFEA(spongenetwork_Cluster)
To make survival analysis of miRNA sponge modules, we implement ‘moduleSurvival’ function.
miR2Target <- system.file("extdata", "miR2Target.csv", package="miRspongeR")
miRTarget <- read.csv(miR2Target, header=TRUE, sep=",")
ExpDatacsv <- system.file("extdata", "ExpData.csv", package="miRspongeR")
ExpData <- read.csv(ExpDatacsv, header=FALSE, sep=",", stringsAsFactors = TRUE)
SurvDatacsv <- system.file("extdata", "SurvData.csv", package="miRspongeR")
SurvData <- read.csv(SurvDatacsv, header=TRUE, sep=",")
pcceRInt <- spongeMethod(miRTarget, ExpData, method = "pc")
spongenetwork_Cluster <- netModule(pcceRInt[, 1:2], modulesize = 2)
sponge_Module_Survival <- moduleSurvival(spongenetwork_Cluster,
ExpData, SurvData, devidePercentage=.5)
sponge_Module_Survival
## Chi-square p-value HR HRlow95 HRup95
## Module 1 2.0610023 0.1511107 1.269461 0.9062752 1.778192
## Module 2 0.5682278 0.4509640 1.134920 0.8109446 1.588325
Parameter ‘devidePercentage’ is used to set the percentage of high risk group.
miRspongeR provides several functions to study miRNA sponge (also called ceRNA or miRNA decoy), including popular methods for identifying miRNA sponge interactions, and the integrative method to integrate miRNA sponge interactions from different methods, as well as the functions to validate miRNA sponge interactions, and infer miRNA sponge modules, conduct enrichment analysis of modules, and conduct survival analysis of modules. It could provide a useful tool for the research of miRNA sponges.
[1] Ambros V. microRNAs: tiny regulators with great potential. Cell, 2001, 107:823–6.
[2] Bartel DP. MicroRNAs: genomics, biogenesis, mechanism, and function. Cell, 2004, 116:281–97.
[3] Du T, Zamore PD. Beginning to understand microRNA function. Cell Research, 2007, 17:661–3.
[4] Esquela-Kerscher A, Slack FJ. Oncomirs—microRNAs with a role in cancer. Nature Reviews Cancer, 2006, 6:259–69.
[5] Lin S, Gregory RI. MicroRNA biogenesis pathways in cancer. Nature Reviews Cancer, 2015, 15:321–33.
[6] Salmena L, Poliseno L, Tay Y, et al. A ceRNA hypothesis: the Rosetta Stone of a hidden RNA language? Cell, 2011, 146(3):353-8.
[7] Cesana M, Cacchiarelli D, Legnini I, et al. A long noncoding RNA controls muscle differentiation by functioning as a competing endogenous RNA. Cell, 2011, 147:358–69.
[8] Poliseno L, Salmena L, Zhang J, et al. A coding-independent function of gene and pseudogene mRNAs regulates tumour biology. Nature, 2010, 465:1033–8.
[9] Hansen TB, Jensen TI, Clausen BH, et al. Natural RNA circles function as efficient microRNA sponges. Nature, 2013, 495:384–8.
[10] Memczak S, Jens M, Elefsinioti A, et al. Circular RNAs are a large class of animal RNAs with regulatory potency. Nature, 2013, 495:333–8.
[11] Le TD, Zhang J, Liu L, et al. Computational methods for identifying miRNA sponge interactions. Brief Bioinform., 2017, 18(4):577-590.
[12] Tay Y, Rinn J, Pandolfi PP. The multilayered complexity of ceRNA crosstalk and competition. Nature, 2014, 505:344–52.
[13] Li JH, Liu S, Zhou H, et al. starBase v2.0: decoding miRNA-ceRNA, miRNA-ncRNA and protein-RNA interaction networks from large-scale CLIP-Seq data. Nucleic Acids Res., 2014, 42(Database issue):D92-7.
[14] Sarver AL, Subramanian S. Competing endogenous RNA database. Bioinformation, 2012, 8(15):731-3.
[15] Zhou X, Liu J, Wang W, Construction and investigation of breast-cancer-specific ceRNA network based on the mRNA and miRNA expression data. IET Syst Biol., 2014, 8(3):96-103.
[16] Xu J, Li Y, Lu J, et al. The mRNA related ceRNA-ceRNA landscape and significance across 20 major cancer types. Nucleic Acids Res., 2015, 43(17):8169-82.
[17] Paci P, Colombo T, Farina L, Computational analysis identifies a sponge interaction network between long non-coding RNAs and messenger RNAs in human breast cancer. BMC Syst Biol., 2014, 8:83.
[18] Sumazin P, Yang X, Chiu HS, et al. An extensive microRNA-mediated network of RNA-RNA interactions regulates established oncogenic pathways in glioblastoma. Cell, 2011, 147(2):370-81.
[19] Tay Y, Kats L, Salmena L, et al. Coding-independent regulation of the tumor suppressor PTEN by competing endogenous mRNAs. Cell, 2011, 147(2):344-57.
[20] Sardina DS, Alaimo S, Ferro A, et al. A novel computational method for inferring competing endogenous interactions. Brief Bioinform., 2017, 18(6):1071-1081.
[21] Clauset A, Newman ME, Moore C. Finding community structure in very large networks. Phys Rev E Stat Nonlin Soft Matter Phys., 2004, 70(6 Pt 2):066111.
[22] Enright AJ, Van Dongen S, Ouzounis CA. An efficient algorithm for large-scale detection of protein families. Nucleic Acids Res., 2002, 30(7):1575-84.
[23] Kalinka AT, Tomancak P. linkcomm: an R package for the generation, visualization, and analysis of link communities in networks of arbitrary size and type. Bioinformatics, 2011, 27(14):2011-2.
[24] Bader GD, Hogue CW. An automated method for finding molecular complexes in large protein interaction networks. BMC Bioinformatics, 2003, 4:2.
sessionInfo()
## R version 4.1.2 (2021-11-01)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.3 LTS
##
## Matrix products: default
## BLAS: /home/biocbuild/bbs-3.14-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.14-bioc/R/lib/libRlapack.so
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_GB LC_COLLATE=C
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] miRspongeR_1.20.1 BiocStyle_2.22.0
##
## loaded via a namespace (and not attached):
## [1] fgsea_1.20.0 colorspace_2.0-2 ggtree_3.2.1
## [4] ellipsis_0.3.2 dynamicTreeCut_1.63-1 linkcomm_1.0-14
## [7] qvalue_2.26.0 corpcor_1.6.10 XVector_0.34.0
## [10] aplot_0.1.2 farver_2.1.0 graphlayouts_0.8.0
## [13] ggrepel_0.9.1 bit64_4.0.5 scatterpie_0.1.7
## [16] AnnotationDbi_1.56.2 fansi_1.0.2 splines_4.1.2
## [19] cachem_1.0.6 GOSemSim_2.20.0 knitr_1.37
## [22] polyclip_1.10-0 varhandle_2.0.5 jsonlite_1.7.3
## [25] GO.db_3.14.0 png_0.1-7 graph_1.72.0
## [28] graphite_1.40.0 ggforce_0.3.3 BiocManager_1.30.16
## [31] compiler_4.1.2 httr_1.4.2 backports_1.4.1
## [34] assertthat_0.2.1 Matrix_1.4-0 fastmap_1.1.0
## [37] lazyeval_0.2.2 cli_3.1.1 tweenr_1.0.2
## [40] htmltools_0.5.2 tools_4.1.2 igraph_1.2.11
## [43] gtable_0.3.0 glue_1.6.1 GenomeInfoDbData_1.2.7
## [46] reshape2_1.4.4 DO.db_2.9 dplyr_1.0.8
## [49] rappdirs_0.3.3 fastmatch_1.1-3 Rcpp_1.0.8
## [52] enrichplot_1.14.1 Biobase_2.54.0 jquerylib_0.1.4
## [55] vctrs_0.3.8 Biostrings_2.62.0 ape_5.6-1
## [58] nlme_3.1-155 ggraph_2.0.5 xfun_0.29
## [61] stringr_1.4.0 lifecycle_1.0.1 clusterProfiler_4.2.2
## [64] DOSE_3.20.1 org.Hs.eg.db_3.14.0 zlibbioc_1.40.0
## [67] MASS_7.3-55 scales_1.1.1 tidygraph_1.2.0
## [70] reactome.db_1.77.0 parallel_4.1.2 expm_0.999-6
## [73] RColorBrewer_1.1-2 yaml_2.2.2 memoise_2.0.1
## [76] gridExtra_2.3 ggplot2_3.3.5 downloader_0.4
## [79] ggfun_0.0.5 yulab.utils_0.0.4 sass_0.4.0
## [82] stringi_1.7.6 RSQLite_2.2.9 S4Vectors_0.32.3
## [85] checkmate_2.0.0 ReactomePA_1.38.0 tidytree_0.3.7
## [88] BiocGenerics_0.40.0 BiocParallel_1.28.3 GenomeInfoDb_1.30.1
## [91] rlang_1.0.1 pkgconfig_2.0.3 bitops_1.0-7
## [94] evaluate_0.14 lattice_0.20-45 purrr_0.3.4
## [97] treeio_1.18.1 patchwork_1.1.1 shadowtext_0.1.1
## [100] bit_4.0.4 tidyselect_1.1.1 plyr_1.8.6
## [103] magrittr_2.0.2 bookdown_0.24 R6_2.5.1
## [106] IRanges_2.28.0 generics_0.1.2 DBI_1.1.2
## [109] pillar_1.7.0 MCL_1.0 survival_3.2-13
## [112] KEGGREST_1.34.0 RCurl_1.98-1.6 tibble_3.1.6
## [115] crayon_1.4.2 utf8_1.2.2 rmarkdown_2.11
## [118] viridis_0.6.2 grid_4.1.2 data.table_1.14.2
## [121] blob_1.2.2 digest_0.6.29 tidyr_1.2.0
## [124] gridGraphics_0.5-1 stats4_4.1.2 munsell_0.5.0
## [127] viridisLite_0.4.0 ggplotify_0.1.0 bslib_0.3.1