Source: https://github.com/markziemann/SurveyEnrichmentMethods
Here we are performing the analysis that is described in Figure 3 of the manuscript. This involves calculating an analysis score for a 1500 articles from 2019. We then identify the best/worst journals, and correlate analysis scores with journal and article level metrics.
knitr::opts_chunk$set(fig.width=7, fig.height=5)
library("wordcloud")
library("vioplot")
x <- read.table("../data/PMC_2019-analysis.tsv",header=TRUE,fill=TRUE,sep="\t")
y <- read.table("../data/QC-analysis2.tsv",header=TRUE,fill=TRUE,sep="\t")
y <- y[,1:16]
x <- x[which(! x$Pubmed.Central.ID %in% y$Pubmed.Central.ID),]
x <- rbind(x,y)
head(x)
## Pubmed.Central.ID Article.number Allocated Journal
## 2 PMC6317219 2 Mark J Transl Med
## 4 PMC6318897 4 Mark BMC Genomics
## 5 PMC6322516 5 Mark Cancer Manag Res
## 6 PMC6323737 6 Mark BMC Plant Biol
## 8 PMC6325784 8 Mark Respir Res
## 9 PMC6325795 9 Mark BMC Cancer
## Omics.type Organism Gene.set.library
## 2 Gene expression array Homo sapiens GO, KEGG
## 4 RNA-seq Gymnocypris przewalskii KEGG
## 5 Gene expression array Homo sapiens Ingenuity Knowledge Base
## 6 Gene expression array Arabidopsis GO
## 8 Gene expression array Homo sapiens KEGG
## 9 miRNA-seq Homo sapiens KEGG
## GS.version Statistical.test.used FDR.Correction App.used
## 2 No Not stated No DAVID
## 4 No Not stated Yes KOBAS
## 5 No Not stated No Ingenuity Pathway Analysis
## 6 Yes Not stated No topGO
## 8 No Hypergeometric Yes GeneAnswers
## 9 No Fisher No DIANA-miRPath
## App.Version Code.availability Background.gene.set Assumptions.violated
## 2 No <NA> Not stated Background, FDR
## 4 No <NA> Not stated Background
## 5 No <NA> Not stated Background, FDR
## 6 Yes No Not stated Background, FDR
## 8 No No Not stated Background
## 9 Yes <NA> Not stated Background
## Gene.lists.provided
## 2 No
## 4 Yes
## 5 No
## 6 Yes
## 8 Yes
## 9 Yes
colnames(x)
## [1] "Pubmed.Central.ID" "Article.number" "Allocated"
## [4] "Journal" "Omics.type" "Organism"
## [7] "Gene.set.library" "GS.version" "Statistical.test.used"
## [10] "FDR.Correction" "App.used" "App.Version"
## [13] "Code.availability" "Background.gene.set" "Assumptions.violated"
## [16] "Gene.lists.provided"
dim(x)
## [1] 1766 16
exclude <- subset(x,x$GS.version=="EXCLUDE")
nrow(exclude)
## [1] 132
length(unique(exclude$Pubmed.Central.ID))
## [1] 132
x <- subset(x,x$GS.version!="EXCLUDE")
nrow(x)
## [1] 1630
length(unique(x$Pubmed.Central.ID))
## [1] 1365
write.table(x,file="TableS2.tsv",quote=FALSE,sep="\t",col.names = TRUE,row.names = FALSE)
Here I am proposing a scoring scheme. If there is information missing from the article, or basic mistakes are made, then a point is deducted. If the article goes over and above the basic reproducibility, then they are awarded a point.
Gene set library origin not stated = -1
Gene set library version not stated = -1
Stat test not stated = -1
No stat test conducted = -1
No FDR correction conducted = -1
App used not stated = -1
App version not stated = -1
Background list not defined = -1
Inappropriate background list used = -1
Code availability = +1
Gene lists provided = +1
score <- function(r){
r[is.na(r)] <- 0
SCORE=0
# gene set lib
if(r["Gene.set.library"]=="Not stated"){
SCORE=SCORE-1
}
# GS version
if(r["GS.version"]=="No"){
SCORE=SCORE-1
}
# stat test
if(r["Statistical.test.used"]=="No test"){
SCORE=SCORE-1
}
if(r["Statistical.test.used"]=="Not stated"){
SCORE=SCORE-1
}
# FDR
if(r["FDR.Correction"]!="Yes"){
SCORE=SCORE-1
}
# app used
if(r["App.used"]=="Not stated"){
SCORE=SCORE-1
}
# App version
if(r["App.Version"]=="No"){
SCORE=SCORE-1
}
# Code availability
if(r["Code.availability"]=="Yes"){
SCORE=SCORE+1
}
# Background
if(r["Background.gene.set"]=="Not stated"){
SCORE=SCORE-1
}
if(r["Background.gene.set"]=="No"){
SCORE=SCORE-1
}
if(r["Background.gene.set"]=="Stated, but incorrect"){
SCORE=SCORE-1
}
# gene list
if(r["Gene.lists.provided"]=="Yes"){
SCORE=SCORE+1
}
return(SCORE)
}
scores <- apply(X = x,MARGIN = 1, FUN = score)
barplot(table(scores), xlab="analysis score",ylab="frequency")
x$scores <- scores
length(which(scores>0))
## [1] 2
mean(x$scores)
## [1] -3.529448
sd(x$scores)
## [1] 1.361599
median(x$scores)
## [1] -4
length(scores)
## [1] 1630
which(scores>0)
## 349 5910
## 278 1450
table(scores)
## scores
## -7 -6 -5 -4 -3 -2 -1 0 1
## 1 67 351 492 360 216 111 30 2
dir.create("images")
## Warning in dir.create("images"): 'images' already exists
png("images/hist1.png",width=300,height=200)
par(mar=c(5,5,2,1))
barplot(table(scores), xlab="analysis score",ylab="frequency",ylim=c(0,600))
text(x= 1:length(table(scores))* 1.2 -0.5, y = table(scores), label = table(scores), pos = 3, cex = 1, col = "black")
dev.off()
## png
## 2
pdf("images/hist1.pdf",width=5,height=4)
par(mar=c(5,5,2,1))
barplot(table(scores), xlab="analysis score",ylab="frequency",ylim=c(0,600))
text(x= 1:length(table(scores))* 1.2 -0.5, y = table(scores), label = table(scores), pos = 3, cex = 1, col = "black")
dev.off()
## png
## 2
scores2 <- round(table(scores)/sum(table(scores))*100,1)
scores2
## scores
## -7 -6 -5 -4 -3 -2 -1 0 1
## 0.1 4.1 21.5 30.2 22.1 13.3 6.8 1.8 0.1
png("images/hist2.png",width=300,height=200)
par(mar=c(5,5,2,1))
barplot(scores2, xlab="analysis score",ylab="frequency",ylim=c(0,50))
text(x= 1:length(scores2)* 1.2 -0.5, y = scores2, label = scores2, pos = 3, cex = 0.9, col = "black")
dev.off()
## png
## 2
pdf("images/hist2.pdf",width=5,height=4)
par(mar=c(5,5,2,1))
barplot(scores2, xlab="analysis score",ylab="frequency",ylim=c(0,40))
text(x= 1:length(scores2)* 1.2 -0.5, y = scores2, label = scores2, pos = 3, cex = 0.9, col = "black")
dev.off()
## png
## 2
jmetrics <- read.table("../data/scimagojr_2020.csv",sep=";",header=TRUE,dec = ",")
jmetrics$Title <- toupper(jmetrics$Title)
head(jmetrics,3)
## Rank Sourceid Title Type
## 1 1 28773 CA-A CANCER JOURNAL FOR CLINICIANS journal
## 2 2 19434 MMWR RECOMMENDATIONS AND REPORTS journal
## 3 3 20315 NATURE REVIEWS MOLECULAR CELL BIOLOGY journal
## Issn SJR SJR.Best.Quartile H.index Total.Docs...2020.
## 1 15424863, 00079235 62.937 Q1 168 47
## 2 10575987, 15458601 40.949 Q1 143 10
## 3 14710072, 14710080 37.461 Q1 431 115
## Total.Docs...3years. Total.Refs. Total.Cites..3years. Citable.Docs...3years.
## 1 119 3452 15499 80
## 2 9 1292 492 9
## 3 338 8439 10844 167
## Cites...Doc...2years. Ref....Doc. Country Region
## 1 126.34 73.45 United States Northern America
## 2 50.00 129.20 United States Northern America
## 3 32.83 73.38 United Kingdom Western Europe
## Publisher Coverage
## 1 Wiley-Blackwell 1950-2020
## 2 Centers for Disease Control and Prevention (CDC) 1990-2020
## 3 Nature Publishing Group 2000-2020
## Categories
## 1 Hematology (Q1); Oncology (Q1)
## 2 Epidemiology (Q1); Health Information Management (Q1); Health (social science) (Q1); Health, Toxicology and Mutagenesis (Q1); Medicine (miscellaneous) (Q1)
## 3 Cell Biology (Q1); Molecular Biology (Q1)
dim(jmetrics)
## [1] 32952 20
nlmcat <- readLines("../data/nlmcatalog_result.txt")
journaltitle <- nlmcat[grep("Title\\(s\\):",nlmcat)]
journaltitle <- gsub("Title\\(s\\): ","",journaltitle)
journaltitle <- gsub("\\.$","",journaltitle)
journaltitle <- toupper(journaltitle)
journalabbrev <- nlmcat[grep("Title Abbreviation:",nlmcat)]
journalabbrev <- sapply(strsplit(journalabbrev,":"),"[[",2)
journalabbrev <- gsub(" $","",journalabbrev)
journalabbrev <- gsub("^ ","",journalabbrev)
jdf <- data.frame(journalabbrev,journaltitle)
mjdf <- merge(jdf,jmetrics,by.x="journaltitle",by.y="Title")
xm <- merge(x,mjdf,by.x="Journal",by.y="journalabbrev",all.x = TRUE)
tail(xm$Journal)
## [1] "World J Gastroenterol" "World J Gastrointest Oncol"
## [3] "World J Gastrointest Oncol" "World J Surg Oncol"
## [5] "World J Surg Oncol" "World J Surg Oncol"
hist(xm$SJR,xlab="SJR",main="SJR distribution")
mylm1 <- lm (xm$scores ~ xm$SJR)
plot(xm$SJR,xm$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2), pch=19, bty="n",
xlab="SJR",ylab="score",main="Analysis scores vs. journal metrics")
abline(mylm1,col="red")
cor.test(xm$scores,xm$SJR,method="pearson")
##
## Pearson's product-moment correlation
##
## data: xm$scores and xm$SJR
## t = 1.335, df = 1196, p-value = 0.1821
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.01810308 0.09500263
## sample estimates:
## cor
## 0.03857333
cor.test(xm$scores,xm$SJR,method="spearman")
## Warning in cor.test.default(xm$scores, xm$SJR, method = "spearman"): Cannot
## compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: xm$scores and xm$SJR
## S = 278554962, p-value = 0.3339
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.0279424
png("images/score_sjr1.png",width=350,height=300)
par(mar=c(5,5,3,1))
plot(xm$SJR,xm$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2), pch=19,bty="n",
xlab="SJR",ylab="score",main="Analysis scores vs. journal metrics")
abline(mylm1,col="red")
grid()
dev.off()
## png
## 2
pdf("images/score_sjr1.pdf",width=4,height=3)
par(mar=c(4,4,3,2))
plot(xm$SJR,xm$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2), pch=19,bty="n",
xlab="SJR",ylab="score",main="Analysis scores vs. journal metrics")
abline(mylm1,col="red")
grid()
dev.off()
## png
## 2
Minimum of 5 analyses.
xmm <-xm[,c("Journal","scores")]
tab <- table(xmm$Journal)
tab <- tab[which(tab>=5)]
xmm <- xmm[which(xmm$Journal %in% names(tab)),]
dim(xmm)
## [1] 1236 2
jres <- aggregate(. ~ Journal, xmm ,mean)
jsd <- aggregate(. ~ Journal, xmm ,sd)
jres$sd <- jsd$scores
jres <- jres[order(jres$scores),]
dim(jres)
## [1] 70 3
head(jres)
## Journal scores sd
## 65 RNA Biol -5.000000 1.0954451
## 53 Mol Med Rep -4.275000 0.9867715
## 15 Cancer Med -4.272727 0.9045340
## 70 World J Gastroenterol -4.250000 1.3887301
## 18 Cell Death Discov -4.200000 1.3038405
## 39 Int J Med Sci -4.200000 1.3038405
par(mar=c(5,12,3,1))
barplot(tail(jres$scores,20),names.arg = tail(jres$Journal,20),horiz=TRUE,las=1,cex.names = 0.7, xlab="mean score",
main = "Highest scoring",xlim=c(-4,0))
grid()
png("images/score_highest1.png",width=300,height=350)
par(mar=c(5,12,3,1))
barplot(tail(jres$scores,20),names.arg = tail(jres$Journal,20),horiz=TRUE,las=1,cex.names = 0.7, xlab="mean score",
main = "Highest scoring",xlim=c(-4,0))
grid()
dev.off()
## png
## 2
par(mar=c(5,12,3,1))
barplot(head(jres$scores,20),names.arg = head(jres$Journal,20),horiz=TRUE,las=1,cex.names = 0.7, xlab="mean score",
main = "Lowest scoring journals",xlim=c(-5,0))
grid()
png("images/score_lowest1.png",width=300,height=350)
par(mar=c(5,12,3,1))
barplot(head(jres$scores,20),names.arg = head(jres$Journal,20),horiz=TRUE,las=1,cex.names = 0.7, xlab="mean score",
main = "Lowest scoring",xlim=c(-5,0))
grid()
dev.off()
## png
## 2
pdf("images/score_highest1.pdf",width=3,height=4.5)
par(mar=c(5,8,3,1))
barplot(tail(jres$scores,20),names.arg = tail(jres$Journal,20),horiz=TRUE,las=1,cex.names = 0.7, xlab="mean score",
main = "Highest scoring",xlim=c(-4,0))
grid()
dev.off()
## png
## 2
pdf("images/score_lowest1.pdf",width=3,height=4.5)
par(mar=c(5,8,3,1))
barplot(head(jres$scores,20),names.arg = head(jres$Journal,20),horiz=TRUE,las=1,cex.names = 0.7, xlab="mean score",
main = "Lowest scoring",xlim=c(-5,0))
grid()
dev.off()
## png
## 2
j <- unique(xmm$Journal)
jscores <- sapply(j,function(jj) {
xmm[which(xmm$Journal == jj ),2]
})
jscores <- jscores[order(unlist(lapply(jscores,mean)))]
par(mar=c(5,12,3,1))
vioplot(tail(jscores,20),horizontal = TRUE,las=1,cex.axis=0.75,main="Highest scoring journals")
par(mar=c(5,12,3,1))
vioplot(head(jscores,20),horizontal = TRUE,las=1,cex.axis=0.75,main="Lowest scoring journals")
jjres <- merge(jres,mjdf,by.x="Journal",by.y="journalabbrev",all.x = TRUE)
mylm2 <- lm (jjres$scores ~ jjres$SJR)
plot(jjres$SJR,jjres$scores,col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="SJR",ylab="mean score",main="Mean analysis score vs. journal metrics")
abline(mylm2,col="red")
png("images/mean_sjr1.png",width=350,height=300)
par(mar=c(5,5,3,1))
plot(jjres$SJR,jjres$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="SJR",ylab="mean score",main="Mean analysis score vs. journal metrics")
abline(mylm2,col="red")
dev.off()
## png
## 2
cor.test(jjres$scores,jjres$SJR,method="pearson")
##
## Pearson's product-moment correlation
##
## data: jjres$scores and jjres$SJR
## t = -0.051925, df = 54, p-value = 0.9588
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2694658 0.2563108
## sample estimates:
## cor
## -0.007065863
cor.test(jjres$scores,jjres$SJR,method="spearman")
## Warning in cor.test.default(jjres$scores, jjres$SJR, method = "spearman"):
## Cannot compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: jjres$scores and jjres$SJR
## S = 31981, p-value = 0.4954
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.09299186
pdf("images/mean_sjr1.pdf",width=3.5,height=3)
par(mar=c(5,5,3,1))
plot(jjres$SJR,jjres$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="SJR",ylab="mean score",main="Mean analysis score vs. journal metrics")
abline(mylm2,col="red")
dev.off()
## png
## 2
Get the number of citations per article.
if (file.exists("../data/cites_data.rds") ) {
cites <- readRDS("../data/cites_data.rds")
} else {
stop("citation data not found. Please run 'citation_fetching.Rmd' to obtain updated citation info")
}
cites$PMID <- gsub("^","PMID",cites$PMID)
xm <- merge(x,cites,by.x="Pubmed.Central.ID",by.y="PMCID")
dim(xm)
## [1] 1630 20
head(xm)
## Pubmed.Central.ID Article.number Allocated Journal
## 1 PMC6317205 1 - J Transl Med
## 2 PMC6317219 2 Mark J Transl Med
## 3 PMC6318854 3 - BMC Med Genomics
## 4 PMC6318897 4 Mark BMC Genomics
## 5 PMC6322516 5 Mark Cancer Manag Res
## 6 PMC6323737 6 Mark BMC Plant Biol
## Omics.type Organism Gene.set.library
## 1 PCR Array Homo sapiens Not stated
## 2 Gene expression array Homo sapiens GO, KEGG
## 3 DNA methylation array Homo sapiens GO
## 4 RNA-seq Gymnocypris przewalskii KEGG
## 5 Gene expression array Homo sapiens Ingenuity Knowledge Base
## 6 Gene expression array Arabidopsis GO
## GS.version Statistical.test.used FDR.Correction App.used
## 1 No No test No test DAVID
## 2 No Not stated No DAVID
## 3 No No test No test PANTHER
## 4 No Not stated Yes KOBAS
## 5 No Not stated No Ingenuity Pathway Analysis
## 6 Yes Not stated No topGO
## App.Version Code.availability Background.gene.set
## 1 No <NA> Not stated
## 2 No <NA> Not stated
## 3 Yes <NA> Not stated
## 4 No <NA> Not stated
## 5 No <NA> Not stated
## 6 Yes No Not stated
## Assumptions.violated Gene.lists.provided scores PMID
## 1 Inference without test, Background Yes -5 PMID30602372
## 2 Background, FDR No -5 PMID30602391
## 3 Inference without test, Background No -4 PMID30606219
## 4 Background Yes -3 PMID30606119
## 5 Background, FDR No -5 PMID30655694
## 6 Background, FDR Yes -2 PMID30616516
## NumCites Pubdate
## 1 7 2019-01-03
## 2 39 2019-01-03
## 3 10 2019-01-03
## 4 6 2019-01-03
## 5 1 2019-01-03
## 6 4 2019-01-07
Plot the number of citations against analysis scores
mylm2 <- lm (xm$scores ~ xm$NumCites)
plot(xm$NumCites,xm$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="Num cites",ylab="score",main="Association of analysis scores with number of citations")
abline(mylm2,col="red")
cor.test(xm$scores , xm$NumCites, method="pearson")
##
## Pearson's product-moment correlation
##
## data: xm$scores and xm$NumCites
## t = 1.8129, df = 1628, p-value = 0.07003
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.003674239 0.093235822
## sample estimates:
## cor
## 0.04488639
cor.test(xm$scores , xm$NumCites, method="spearman")
## Warning in cor.test.default(xm$scores, xm$NumCites, method = "spearman"): Cannot
## compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: xm$scores and xm$NumCites
## S = 714237246, p-value = 0.6729
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.01046515
mylm2 <- lm (xm$scores ~ log2(xm$NumCites+1))
plot(log2(xm$NumCites),xm$scores, col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="log2(citations)",ylab="score",main="Analysis scores vs. log2(citations)")
abline(mylm2,col="red")
png("images/cites1.png",width=350,height=300)
par(mar=c(5,5,3,1))
plot(log2(xm$NumCites),xm$scores,col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="log2(citations)",ylab="score",main="Analysis scores vs. log2(citations)")
abline(mylm2,col="red")
dev.off()
## png
## 2
cor.test(xm$scores , xm$NumCites, method="pearson")
##
## Pearson's product-moment correlation
##
## data: xm$scores and xm$NumCites
## t = 1.8129, df = 1628, p-value = 0.07003
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.003674239 0.093235822
## sample estimates:
## cor
## 0.04488639
cor.test(xm$scores , xm$NumCites, method="spearman")
## Warning in cor.test.default(xm$scores, xm$NumCites, method = "spearman"): Cannot
## compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: xm$scores and xm$NumCites
## S = 714237246, p-value = 0.6729
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.01046515
pdf("images/cites1.pdf",width=3.5,height=3)
par(mar=c(5,5,3,1))
plot(log2(xm$NumCites),xm$scores,col = rgb(red=0,blue=0,green=0,alpha=0.2) , pch=19,bty="n",
xlab="log2(citations)",ylab="score",main="Analysis scores vs. log2(citations)")
abline(mylm2,col="red")
dev.off()
## png
## 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: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/liblapack.so.3
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [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] parallel stats4 stats graphics grDevices utils datasets
## [8] methods base
##
## other attached packages:
## [1] rmdformats_1.0.3 beeswarm_0.4.0
## [3] eulerr_6.1.1 mitch_1.5.1
## [5] clusterProfiler_4.0.5 DESeq2_1.32.0
## [7] SummarizedExperiment_1.22.0 Biobase_2.52.0
## [9] MatrixGenerics_1.4.3 matrixStats_0.61.0
## [11] GenomicRanges_1.44.0 GenomeInfoDb_1.28.4
## [13] IRanges_2.26.0 S4Vectors_0.30.0
## [15] BiocGenerics_0.38.0 getDEE2_1.2.0
## [17] anytime_0.3.9 kableExtra_1.3.4
## [19] XML_3.99-0.8 reutils_0.2.3
## [21] vioplot_0.3.7 zoo_1.8-9
## [23] sm_2.2-5.7 wordcloud_2.6
## [25] RColorBrewer_1.1-2 rsvg_2.1.2
## [27] DiagrammeRsvg_0.1 DiagrammeR_1.0.6.1
## [29] forcats_0.5.1 stringr_1.4.0
## [31] dplyr_1.0.7 purrr_0.3.4
## [33] readr_2.0.2 tidyr_1.1.4
## [35] tibble_3.1.5 ggplot2_3.3.5
## [37] tidyverse_1.3.1
##
## loaded via a namespace (and not attached):
## [1] utf8_1.2.2 tidyselect_1.1.1 RSQLite_2.2.8
## [4] AnnotationDbi_1.54.1 htmlwidgets_1.5.4 grid_4.1.2
## [7] BiocParallel_1.26.2 scatterpie_0.1.7 munsell_0.5.0
## [10] withr_2.4.2 colorspace_2.0-2 GOSemSim_2.18.1
## [13] highr_0.9 knitr_1.36 rstudioapi_0.13
## [16] DOSE_3.18.3 GenomeInfoDbData_1.2.6 polyclip_1.10-0
## [19] bit64_4.0.5 farver_2.1.0 downloader_0.4
## [22] vctrs_0.3.8 treeio_1.16.2 generics_0.1.0
## [25] xfun_0.26 R6_2.5.1 graphlayouts_0.7.2
## [28] locfit_1.5-9.4 bitops_1.0-7 cachem_1.0.6
## [31] reshape_0.8.8 fgsea_1.18.0 gridGraphics_0.5-1
## [34] DelayedArray_0.18.0 assertthat_0.2.1 promises_1.2.0.1
## [37] scales_1.1.1 ggraph_2.0.5 enrichplot_1.12.3
## [40] gtable_0.3.0 tidygraph_1.2.0 rlang_0.4.11
## [43] genefilter_1.74.0 systemfonts_1.0.2 splines_4.1.2
## [46] lazyeval_0.2.2 htm2txt_2.1.1 broom_0.7.9
## [49] yaml_2.2.1 reshape2_1.4.4 modelr_0.1.8
## [52] backports_1.2.1 httpuv_1.6.3 qvalue_2.24.0
## [55] tools_4.1.2 bookdown_0.24 ggplotify_0.1.0
## [58] gplots_3.1.1 ellipsis_0.3.2 jquerylib_0.1.4
## [61] Rcpp_1.0.7 plyr_1.8.6 visNetwork_2.1.0
## [64] zlibbioc_1.38.0 RCurl_1.98-1.5 viridis_0.6.1
## [67] cowplot_1.1.1 haven_2.4.3 ggrepel_0.9.1
## [70] fs_1.5.0 magrittr_2.0.1 data.table_1.14.2
## [73] DO.db_2.9 reprex_2.0.1 hms_1.1.1
## [76] patchwork_1.1.1 mime_0.12 evaluate_0.14
## [79] xtable_1.8-4 readxl_1.3.1 gridExtra_2.3
## [82] compiler_4.1.2 KernSmooth_2.23-20 V8_3.6.0
## [85] crayon_1.4.1 shadowtext_0.0.9 htmltools_0.5.2
## [88] ggfun_0.0.4 later_1.3.0 tzdb_0.1.2
## [91] geneplotter_1.70.0 aplot_0.1.1 lubridate_1.8.0
## [94] DBI_1.1.1 tweenr_1.0.2 dbplyr_2.1.1
## [97] MASS_7.3-54 Matrix_1.3-4 cli_3.0.1
## [100] igraph_1.2.6 pkgconfig_2.0.3 xml2_1.3.2
## [103] ggtree_3.0.4 svglite_2.0.0 annotate_1.70.0
## [106] bslib_0.3.1 webshot_0.5.2 XVector_0.32.0
## [109] rvest_1.0.1 yulab.utils_0.0.4 digest_0.6.28
## [112] Biostrings_2.60.2 rmarkdown_2.11 cellranger_1.1.0
## [115] fastmatch_1.1-3 tidytree_0.3.6 curl_4.3.2
## [118] gtools_3.9.2 shiny_1.7.1 lifecycle_1.0.1
## [121] nlme_3.1-153 jsonlite_1.7.2 echarts4r_0.4.2
## [124] viridisLite_0.4.0 fansi_0.5.0 pillar_1.6.3
## [127] lattice_0.20-45 GGally_2.1.2 KEGGREST_1.32.0
## [130] fastmap_1.1.0 httr_1.4.2 survival_3.2-13
## [133] GO.db_3.13.0 glue_1.4.2 png_0.1-7
## [136] bit_4.0.4 ggforce_0.3.3 stringi_1.7.5
## [139] sass_0.4.0 blob_1.2.2 caTools_1.18.2
## [142] memoise_2.0.0 ape_5.5