In this vignette, the easy use of broadSeq to identify differentially expressed(DE) genes with several R packages has been shown. All these packages use different input and output formats. Whereas with broadSeq, only SummarizedExperiment
format will be enough for input. And the results will be returned as data.frame
object which will make downstream analysis easier. No need to learn new data formats for evaluating different packages.
In this example we will use RNA-seq expression data from developing mouse molar tissue. First we read the data as a SummarizedExperiment
object.
se <- readRDS(system.file("extdata","rat_vole_mouseSE_salmon.rds", package = "broadSeq"))
# To reduce the run time, subset of the data used here
se <- se[,colData(se)$species == "Mouse"]
The gene ids are in ensemble format. For easy readability, information about genes can be fetched through biomaRt
package as shown below.
require(biomaRt)
ensembl_ms_mart <- useMart(biomart="ENSEMBL_MART_ENSEMBL",
dataset="mmusculus_gene_ensembl", host="www.ensembl.org")
gene_attributes<- c("ensembl_gene_id", "mgi_symbol",
"start_position", "chromosome_name","gene_biotype")
gene_location_sample <- getBM(attributes=gene_attributes, filters = "ensembl_gene_id",
values = rownames(se),uniqueRows = TRUE,
mart=ensembl_ms_mart,verbose = FALSE,useCache = TRUE)
# remove rows with duplicate ensembl_gene_id
gene_location_sample <- gene_location_sample[!duplicated(gene_location_sample$ensembl_gene_id),]
# some ensembl_gene_id may not be found in biomart
# remove those ensembl_gene_id s
se <- se[gene_location_sample$ensembl_gene_id,]
rownames(gene_location_sample) <- gene_location_sample$ensembl_gene_id
rowData(se) <- gene_location_sample[rownames(se),]
Finally the gene information is stored and can be accessed through rowData funtion
The sample metadata
head(colData(se))
#> DataFrame with 6 rows and 4 columns
#> day info stage species
#> <factor> <character> <factor> <factor>
#> ME16-E3M1L E16 ME16-E3M1L Bell Mouse
#> ME16-E5M1L E16 ME16-E5M1L Bell Mouse
#> ME16-E6M1R E16 ME16-E6M1R Bell Mouse
#> ME16-E6M1L E16 ME16-E6M1L Bell Mouse
#> ME16-E7M1R E16 ME16-E7M1R Bell Mouse
#> ME16-E8M1R E16 ME16-E8M1R Bell Mouse
table(colData(se)$stage)
#>
#> Bud Cap Late Cap Bell
#> 7 7 7 7
There are four developmental time points; Bud, Cap, Late Cap and Bell (from embryonic days 13 to 16) with seven replicates each. Here, in this example, DE genes between Bud and Cap stages will be identified.
In broadSeq, the names of DE method has similar pattern like “use_”+“method name”. All these method has same signature of input arguments.
Here we will see use_NOIseq()
method to apply NOISeq::noiseqbio()
function.
result_Noiseq <-
use_NOIseq(se = se,
colData_id = "stage", control = "Bud", treatment = "Cap",
rank = TRUE,
r = 10) # r is an argument of NOISeq::noiseqbio
#> Computing Z values...
#> Filtering out low count features...
#> 4654 features are to be kept for differential expression analysis with filtering method 1
#> [1] "r = 1"
#> [1] "r = 2"
#> [1] "r = 3"
#> [1] "r = 4"
#> [1] "r = 5"
#> [1] "r = 6"
#> [1] "r = 7"
#> [1] "r = 8"
#> [1] "r = 9"
#> [1] "r = 10"
#> Computing probability of differential expression...
#> p0 = 0.3809764779521
#> Probability
#> Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
#> 0.0000 0.3169 0.7234 0.6102 0.9102 1.0000 1124
head(result_Noiseq)
#> Bud_mean Cap_mean theta prob log2FC rank
#> Dlx2 888.94171 375.731990 4.449016 1 1.242385 1
#> Irf6 511.38324 215.511591 4.491907 1 1.246639 2
#> Ptch2 358.98412 151.233857 3.525978 1 1.247139 3
#> Spp1 43.80853 1.627490 3.780321 1 4.750491 4
#> Fgf3 92.59420 1.270972 4.002669 1 6.186918 5
#> Sostdc1 993.75851 448.122284 4.155289 1 1.149003 6
# boxplot of top four DE genes with their mgi_symbol
# broadSeq::genes_plot function internally converts SummarizedExperiment to use
# ggpubr::ggboxplot
pg <- broadSeq::genes_plot(se, x = "stage", assayName = "counts",
features = result_Noiseq %>% dplyr::filter(rank <5) %>% rownames(),
fill="stage", facet.by = "symbol",
palette="jco", add = "dotplot")+rotate_x_text()
pg_sc <- ggscatter(result_Noiseq, x="Bud_mean", y="Cap_mean",color = "prob")+
scale_x_log10()+scale_y_log10()
pg+pg_sc
Following implementations of popular methods are available here.
# limma
?use_limma_trend(se, colData_id, control, treatment, rank = FALSE, ...)
?use_limma_voom(se, colData_id, control, treatment, rank = FALSE, ...)
# edgeR
?use_edgeR_exact(se, colData_id, control, treatment, rank = FALSE, ...)
?use_edgeR_GLM(se, colData_id, control, treatment, rank = FALSE, ...)
# deseq2
?use_deseq2(se, colData_id, control, treatment, rank = FALSE, ...)
# DELocal
?use_DELocal(se, colData_id, control, treatment, rank = FALSE, ...)
# noiseq
?use_NOIseq(se, colData_id, control, treatment, rank = FALSE, ...)
# EBSeq
?use_EBSeq(se, colData_id, control, treatment, rank = FALSE, ...)
# samseq
?use_SAMseq(se, colData_id, control, treatment, rank = FALSE, ...)
Advanced users can pass package specific arguments through ‘…’ .
It is possible to execute all DE methods together and get aggregated results in a data.frame. broadSeq::use_multDE()
should be used for it.
# First define a named list of functions
funs <- list(limma_trend = use_limma_trend, limma_voom = use_limma_voom,
edgeR_exact = use_edgeR_exact, edgeR_glm = use_edgeR_GLM,
deseq2 = use_deseq2,
DELocal = use_DELocal, noiseq = use_NOIseq,
EBSeq = use_EBSeq)
multi_result <- broadSeq::use_multDE(
se = se,
deFun_list = funs, return.df = TRUE,
colData_id = "stage", control = "Bud", treatment = "Cap",
rank = TRUE)
#> Now executing >> limma_trend
#> ####
#> Now executing >> limma_voom
#> ####
#> Now executing >> edgeR_exact
#> ####
#> Now executing >> edgeR_glm
#> ####
#> Now executing >> deseq2
#> ####
#> factor levels were dropped which had no samples
#> estimating size factors
#> using 'avgTxLength' from assays(dds), correcting for library size
#> estimating dispersions
#> gene-wise dispersion estimates
#> mean-dispersion relationship
#> final dispersion estimates
#> fitting model and testing
#> -- replacing outliers and refitting for 22 genes
#> -- DESeq argument 'minReplicatesForReplace' = 7
#> -- original counts are preserved in counts(dds)
#> estimating dispersions
#> fitting model and testing
#> Now executing >> DELocal
#> ####
#> Default 1Mb neighborhood will be used
#> factor levels were dropped which had no samples
#> using 'avgTxLength' from assays(dds), correcting for library size
#> Now executing >> noiseq
#> ####
#> Now executing >> EBSeq
#> ####
The column names of the resultant data.frame are prefixed with corresponding function names.
head(multi_result)
#> limma_trend_logFC limma_trend_AveExpr limma_trend_t
#> 1110008P14Rik 0.54405160 4.8117022 3.6578280
#> 1110032A03Rik -0.13874330 5.3785105 -1.1189797
#> 1110032F04Rik 1.49491410 3.0666526 7.0648546
#> 1110051M20Rik -0.08607705 6.8048345 -1.8949926
#> 1110059G10Rik 0.11686705 5.4687249 0.9131006
#> 1300017J02Rik -1.75373449 0.3862759 -3.1448352
#> limma_trend_P.Value limma_trend_adj.P.Val limma_trend_B
#> 1110008P14Rik 2.797602e-03 0.0130149310 -2.410387
#> 1110032A03Rik 2.829681e-01 0.4526549814 -6.717686
#> 1110032F04Rik 7.519122e-06 0.0001281578 3.676603
#> 1110051M20Rik 8.005768e-02 0.1777077549 -5.657093
#> 1110059G10Rik 3.774584e-01 0.5365202649 -6.925361
#> 1300017J02Rik 7.568554e-03 0.0283599915 -3.404915
#> limma_trend_rank limma_voom_logFC limma_voom_AveExpr limma_voom_t
#> 1110008P14Rik 1242 0.55012790 4.7963921 3.4912966
#> 1110032A03Rik 3612 -0.13598068 5.3683453 -1.0766122
#> 1110032F04Rik 339 1.52521100 3.0082492 5.5457607
#> 1110051M20Rik 2603 -0.08377041 6.8010984 -1.5379391
#> 1110059G10Rik 4065 0.12743802 5.4591759 0.9788081
#> 1300017J02Rik 1542 -2.79755481 -0.4115494 -3.3164034
#> limma_voom_P.Value limma_voom_adj.P.Val limma_voom_B
#> 1110008P14Rik 3.185938e-03 0.0140952159 -2.450562
#> 1110032A03Rik 2.982906e-01 0.4602197395 -6.781351
#> 1110032F04Rik 5.160299e-05 0.0005491014 2.094132
#> 1110051M20Rik 1.444281e-01 0.2758695513 -6.580324
#> 1110059G10Rik 3.428565e-01 0.5101789153 -6.904758
#> 1300017J02Rik 4.577596e-03 0.0189053550 -1.996826
#> limma_voom_rank edgeR_exact_logFC edgeR_exact_logCPM
#> 1110008P14Rik 1306 0.56742197 4.8655704
#> 1110032A03Rik 3745 -0.11220434 5.3968467
#> 1110032F04Rik 543 1.62986496 3.3283271
#> 1110051M20Rik 3025 -0.08359159 6.8073364
#> 1110059G10Rik 3883 0.13179863 5.4882085
#> 1300017J02Rik 1399 -2.12756839 0.8642446
#> edgeR_exact_PValue edgeR_exact_FDR edgeR_exact_rank
#> 1110008P14Rik 1.000530e-03 5.231732e-03 1105
#> 1110032A03Rik 4.437472e-01 6.609702e-01 3878
#> 1110032F04Rik 2.602324e-09 4.409451e-08 341
#> 1110051M20Rik 3.282945e-01 5.379710e-01 3526
#> 1110059G10Rik 3.735760e-01 5.881532e-01 3670
#> 1300017J02Rik 8.116018e-03 3.044647e-02 1540
#> edgeR_glm_logFC edgeR_glm_logCPM edgeR_glm_LR edgeR_glm_PValue
#> 1110008P14Rik 0.56740347 4.8655850 11.7410747 6.113571e-04
#> 1110032A03Rik -0.11219402 5.3968485 0.6026420 4.375717e-01
#> 1110032F04Rik 1.62985892 3.3283632 35.7072150 2.293132e-09
#> 1110051M20Rik -0.08358111 6.8073360 0.9752985 3.233623e-01
#> 1110059G10Rik 0.13181500 5.4882097 0.8224682 3.644595e-01
#> 1300017J02Rik -2.12795630 0.8641698 6.5759873 1.033637e-02
#> edgeR_glm_FDR edgeR_glm_rank deseq2_baseMean
#> 1110008P14Rik 3.429535e-03 1030 147.18768
#> 1110032A03Rik 6.195270e-01 4081 218.60073
#> 1110032F04Rik 3.840497e-08 345 49.16736
#> 1110051M20Rik 5.007092e-01 3731 595.51100
#> 1110059G10Rik 5.431548e-01 3877 232.78793
#> 1300017J02Rik 3.670776e-02 1627 12.81403
#> deseq2_log2FoldChange deseq2_lfcSE deseq2_stat deseq2_pvalue
#> 1110008P14Rik 0.50451366 0.1657664 3.0435219 2.338264e-03
#> 1110032A03Rik 0.19082266 0.1940145 0.9835483 3.253377e-01
#> 1110032F04Rik 1.58701594 0.2811161 5.6454104 1.647877e-08
#> 1110051M20Rik 0.43358853 0.1816105 2.3874642 1.696506e-02
#> 1110059G10Rik 0.08091388 0.1977231 0.4092283 6.823722e-01
#> 1300017J02Rik -2.81096557 1.0793250 -2.6043737 9.204233e-03
#> deseq2_padj deseq2_rank DELocal_relative.logFC DELocal_P.Value
#> 1110008P14Rik 1.108404e-02 1055 17.83827 0.2729166121
#> 1110032A03Rik 4.972536e-01 3272 42.92129 0.1221318350
#> 1110032F04Rik 3.225187e-07 255 48.05240 0.0007963788
#> 1110051M20Rik 5.449085e-02 1557 88.53803 0.1739847417
#> 1110059G10Rik 8.038971e-01 4245 11.50263 0.7104000042
#> 1300017J02Rik 3.336348e-02 1380 -17.16339 0.0080219554
#> DELocal_adj.P.Val DELocal_B DELocal_rank noiseq_Bud_mean
#> 1110008P14Rik 0.62788658 -4.658483 2740 33.8722312
#> 1110032A03Rik 0.41032892 -4.279768 1972 39.6798287
#> 1110032F04Rik 0.01675251 -1.976905 1891 14.3689100
#> 1110051M20Rik 0.49469006 -4.450382 1367 107.2818570
#> 1110059G10Rik 0.95442262 -5.011704 3056 45.9373517
#> 1300017J02Rik 0.07509916 -2.959888 2777 0.6001355
#> noiseq_Cap_mean noiseq_theta noiseq_prob noiseq_log2FC
#> 1110008P14Rik 23.331126 0.6555759 0.8852864 0.53784711
#> 1110032A03Rik 43.774221 -0.1974162 0.4118575 -0.14167571
#> 1110032F04Rik 4.693828 1.3985890 0.9774037 1.61411366
#> 1110051M20Rik 115.980525 -0.2726831 0.5827917 -0.11247646
#> 1110059G10Rik 42.887052 0.1415338 0.1180432 0.09912552
#> 1300017J02Rik 2.506642 -0.9268528 0.9510382 -2.06239542
#> noiseq_rank EBSeq_PPEE EBSeq_PPDE EBSeq_Status EBSeq_Direction
#> 1110008P14Rik 1872 0.0315029178 0.96849708 DE Bud Over Cap
#> 1110032A03Rik 3472 0.9747575436 0.02524246 EE Bud Over Cap
#> 1110032F04Rik 505 0.0001226596 0.99987734 DE Bud Over Cap
#> 1110051M20Rik 3056 0.9830170118 0.01698299 EE Bud Over Cap
#> 1110059G10Rik 4102 0.9690535947 0.03094641 EE Bud Over Cap
#> 1300017J02Rik 1040 0.0220131318 0.97798687 DE Bud Over Cap
#> EBSeq_rank mouse_gene_id symbol Class chromosome_name
#> 1110008P14Rik 1219 ENSMUSG00000039195 1110008P14Rik Other 2
#> 1110032A03Rik 4261 ENSMUSG00000037971 1110032A03Rik Other 9
#> 1110032F04Rik 744 ENSMUSG00000046999 1110032F04Rik Other 3
#> 1110051M20Rik 4582 ENSMUSG00000040591 1110051M20Rik Other 2
#> 1110059G10Rik 4093 ENSMUSG00000032551 1110059G10Rik Other 9
#> 1300017J02Rik 1186 ENSMUSG00000033688 1300017J02Rik Other 9
#> start_position gene_biotype vole_gene_id
#> 1110008P14Rik 32267109 protein_coding Mglareolus_00032142
#> 1110032A03Rik 50674128 protein_coding Mglareolus_00020124
#> 1110032F04Rik 68776919 protein_coding Mglareolus_00010961
#> 1110051M20Rik 91105413 protein_coding Mglareolus_00006101
#> 1110059G10Rik 122774154 protein_coding Mglareolus_00025510
#> 1300017J02Rik 103127720 protein_coding Mglareolus_00023537
#> Rnor_gene_id
#> 1110008P14Rik ENSRNOG00000022681
#> 1110032A03Rik ENSRNOG00000030962
#> 1110032F04Rik ENSRNOG00000009803
#> 1110051M20Rik ENSRNOG00000014798
#> 1110059G10Rik ENSRNOG00000004135
#> 1300017J02Rik ENSRNOG00000009434
# nrow(multi_result) == nrow(se)
colnames(multi_result)
#> [1] "limma_trend_logFC" "limma_trend_AveExpr" "limma_trend_t"
#> [4] "limma_trend_P.Value" "limma_trend_adj.P.Val" "limma_trend_B"
#> [7] "limma_trend_rank" "limma_voom_logFC" "limma_voom_AveExpr"
#> [10] "limma_voom_t" "limma_voom_P.Value" "limma_voom_adj.P.Val"
#> [13] "limma_voom_B" "limma_voom_rank" "edgeR_exact_logFC"
#> [16] "edgeR_exact_logCPM" "edgeR_exact_PValue" "edgeR_exact_FDR"
#> [19] "edgeR_exact_rank" "edgeR_glm_logFC" "edgeR_glm_logCPM"
#> [22] "edgeR_glm_LR" "edgeR_glm_PValue" "edgeR_glm_FDR"
#> [25] "edgeR_glm_rank" "deseq2_baseMean" "deseq2_log2FoldChange"
#> [28] "deseq2_lfcSE" "deseq2_stat" "deseq2_pvalue"
#> [31] "deseq2_padj" "deseq2_rank" "DELocal_relative.logFC"
#> [34] "DELocal_P.Value" "DELocal_adj.P.Val" "DELocal_B"
#> [37] "DELocal_rank" "noiseq_Bud_mean" "noiseq_Cap_mean"
#> [40] "noiseq_theta" "noiseq_prob" "noiseq_log2FC"
#> [43] "noiseq_rank" "EBSeq_PPEE" "EBSeq_PPDE"
#> [46] "EBSeq_Status" "EBSeq_Direction" "EBSeq_rank"
#> [49] "mouse_gene_id" "symbol" "Class"
#> [52] "chromosome_name" "start_position" "gene_biotype"
#> [55] "vole_gene_id" "Rnor_gene_id"
Up regulated genes should be red or hot colors
multi_result %>% broadSeq::volcanoPlot(
pValName = "deseq2_padj",
lFCName = "deseq2_log2FoldChange",
labelName = "symbol",
palette = "lancet" ,
selectedLabel =
multi_result %>% dplyr::arrange(deseq2_padj) %>% pull(symbol) %>% head()
)
multi_result %>% broadSeq::volcanoPlot(
pValName = "deseq2_padj",
lFCName = "deseq2_log2FoldChange",
labelName = "symbol",
palette = c("purple","orange","grey"),
selectedLabel = list(criteria = "(`x` > 5 | `x` < -2) & (`y` > 10)")
) +xlim(-7.5,7.5)
sessionInfo
#> R Under development (unstable) (2024-03-18 r86148)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 22.04.4 LTS
#>
#> Matrix products: default
#> BLAS: /home/biocbuild/bbs-3.19-bioc/R/lib/libRblas.so
#> LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
#>
#> 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
#>
#> time zone: America/New_York
#> tzcode source: system (glibc)
#>
#> attached base packages:
#> [1] stats4 stats graphics grDevices utils datasets methods
#> [8] base
#>
#> other attached packages:
#> [1] vsn_3.71.1 broadSeq_0.99.0
#> [3] SummarizedExperiment_1.33.3 Biobase_2.63.1
#> [5] GenomicRanges_1.55.4 GenomeInfoDb_1.39.11
#> [7] IRanges_2.37.1 S4Vectors_0.41.5
#> [9] BiocGenerics_0.49.1 MatrixGenerics_1.15.0
#> [11] matrixStats_1.2.0 ggpubr_0.6.0
#> [13] ggplot2_3.5.0 dplyr_1.1.4
#>
#> loaded via a namespace (and not attached):
#> [1] splines_4.4.0 bitops_1.0-7 ggplotify_0.1.2
#> [4] tibble_3.2.1 polyclip_1.10-6 preprocessCore_1.65.0
#> [7] XML_3.99-0.16.1 lifecycle_1.0.4 rstatix_0.7.2
#> [10] rprojroot_2.0.4 edgeR_4.1.19 doParallel_1.0.17
#> [13] lattice_0.22-6 MASS_7.3-60.2 NOISeq_2.47.0
#> [16] backports_1.4.1 magrittr_2.0.3 limma_3.59.6
#> [19] sass_0.4.9 rmarkdown_2.26 jquerylib_0.1.4
#> [22] yaml_2.3.8 cowplot_1.1.3 DBI_1.2.2
#> [25] RColorBrewer_1.1-3 pkgload_1.3.4 abind_1.4-5
#> [28] zlibbioc_1.49.3 Rtsne_0.17 purrr_1.0.2
#> [31] ggraph_2.2.1 yulab.utils_0.1.4 tweenr_2.0.3
#> [34] circlize_0.4.16 seriation_1.5.4 GenomeInfoDbData_1.2.12
#> [37] enrichplot_1.23.1 ggrepel_0.9.5 tidytree_0.4.6
#> [40] testthat_3.2.1 genefilter_1.85.1 pheatmap_1.0.12
#> [43] annotate_1.81.2 codetools_0.2-20 DelayedArray_0.29.9
#> [46] DOSE_3.29.2 ggforce_0.4.2 tidyselect_1.2.1
#> [49] shape_1.4.6.1 aplot_0.2.2 farver_2.1.1
#> [52] viridis_0.6.5 TSP_1.2-4 jsonlite_1.8.8
#> [55] GetoptLong_1.0.5 tidygraph_1.3.1 randomcoloR_1.1.0.1
#> [58] survival_3.5-8 iterators_1.0.14 foreach_1.5.2
#> [61] tools_4.4.0 treeio_1.27.0 sechm_1.11.0
#> [64] Rcpp_1.0.12 glue_1.7.0 gridExtra_2.3
#> [67] SparseArray_1.3.4 xfun_0.43 DESeq2_1.43.4
#> [70] qvalue_2.35.0 ca_0.71.1 withr_3.0.0
#> [73] BiocManager_1.30.22 fastmap_1.1.1 fansi_1.0.6
#> [76] caTools_1.18.2 digest_0.6.35 DELocal_1.3.1
#> [79] R6_2.5.1 gridGraphics_0.5-1 colorspace_2.1-0
#> [82] GO.db_3.19.0 gtools_3.9.5 RSQLite_2.3.6
#> [85] ggsci_3.0.3 hexbin_1.28.3 utf8_1.2.4
#> [88] tidyr_1.3.1 generics_0.1.3 data.table_1.15.4
#> [91] graphlayouts_1.1.1 httr_1.4.7 S4Arrays_1.3.6
#> [94] scatterpie_0.2.2 pkgconfig_2.0.3 gtable_0.3.4
#> [97] blob_1.2.4 registry_0.5-1 ComplexHeatmap_2.19.0
#> [100] XVector_0.43.1 brio_1.1.4 clusterProfiler_4.11.0
#> [103] shadowtext_0.1.3 htmltools_0.5.8 carData_3.0-5
#> [106] fgsea_1.29.0 clue_0.3-65 blockmodeling_1.1.5
#> [109] scales_1.3.0 png_0.1-8 EBSeq_2.1.0
#> [112] ggfun_0.1.4 knitr_1.45 reshape2_1.4.4
#> [115] rjson_0.2.21 nlme_3.1-164 curl_5.2.1
#> [118] cachem_1.0.8 GlobalOptions_0.1.2 stringr_1.5.1
#> [121] KernSmooth_2.23-22 parallel_4.4.0 HDO.db_0.99.1
#> [124] AnnotationDbi_1.65.2 desc_1.4.3 pillar_1.9.0
#> [127] grid_4.4.0 vctrs_0.6.5 gplots_3.1.3.1
#> [130] car_3.1-2 xtable_1.8-4 cluster_2.1.6
#> [133] evaluate_0.23 cli_3.6.2 locfit_1.5-9.9
#> [136] compiler_4.4.0 rlang_1.1.3 crayon_1.5.2
#> [139] ggsignif_0.6.4 labeling_0.4.3 forcats_1.0.0
#> [142] affy_1.81.0 plyr_1.8.9 fs_1.6.3
#> [145] stringi_1.8.3 viridisLite_0.4.2 BiocParallel_1.37.1
#> [148] munsell_0.5.1 Biostrings_2.71.5 lazyeval_0.2.2
#> [151] V8_4.4.2 GOSemSim_2.29.1 Matrix_1.7-0
#> [154] RcppEigen_0.3.4.0.0 patchwork_1.2.0 bit64_4.0.5
#> [157] KEGGREST_1.43.0 statmod_1.5.0 highr_0.10
#> [160] igraph_2.0.3 broom_1.0.5 memoise_2.0.1
#> [163] affyio_1.73.0 bslib_0.7.0 ggtree_3.11.1
#> [166] fastmatch_1.1-4 bit_4.0.5 ape_5.7-1
#> [169] gson_0.1.0