Last updated: 2023-08-09
Checks: 7 0
Knit directory: mecfs-dge-analysis/
This reproducible R Markdown analysis was created with workflowr (version 1.7.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20230618) was run prior to running
the code in the R Markdown file. Setting a seed ensures that any results
that rely on randomness, e.g. subsampling or permutations, are
reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 7c88da0. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish or
wflow_git_commit). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
Ignored: .DS_Store
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: output/batch-correction-limma/
Untracked files:
Untracked: data/RNAseq Variants of Interest List_V2.csv
Unstaged changes:
Deleted: data/7548-EW_RIN_7548-EW-1-12_WellTable.csv
Deleted: data/8289-EW_RIN_8289-EW-1__4__7_WellTable.csv
Deleted: data/8921-EW_MA_CHIP_1_Eukaryote_Total_RNA_Pico_8921-EW-1-7.pdf
Modified: data/MECFS_RNAseq_metadata_2023_06_23.csv
Modified: data/RNAseq Variants of Interest List_V2.xlsx
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/analysis.Rmd) and HTML
(docs/analysis.html) files. If you’ve configured a remote
Git repository (see ?wflow_git_remote), click on the
hyperlinks in the table below to view the files as they were in that
past version.
| File | Version | Author | Date | Message |
|---|---|---|---|---|
| Rmd | 7c88da0 | sdhutchins | 2023-08-09 | wflow_publish("analysis/analysis.Rmd") |
| html | 567a375 | sdhutchins | 2023-08-09 | Build site. |
| Rmd | 24519ae | sdhutchins | 2023-08-09 | wflow_publish("analysis/analysis.Rmd") |
| html | 482a8a9 | sdhutchins | 2023-08-09 | Build site. |
| Rmd | 46c00ad | sdhutchins | 2023-08-09 | wflow_publish("analysis/*") |
| html | 752cbf3 | sdhutchins | 2023-07-27 | Update metadata. |
| html | a3635c9 | sdhutchins | 2023-07-25 | Build site. |
| Rmd | d685548 | sdhutchins | 2023-07-25 | Fixed error in function. |
| html | 81e7d95 | sdhutchins | 2023-07-24 | Build site. |
| html | e555cb2 | sdhutchins | 2023-07-24 | Build site. |
| html | 0b76a23 | sdhutchins | 2023-07-12 | Build site. |
| Rmd | f6e6036 | sdhutchins | 2023-07-12 | wflow_publish("analysis/*") |
| html | fad56f5 | sdhutchins | 2023-07-06 | Build site. |
| Rmd | 41b1c38 | sdhutchins | 2023-07-06 | wflow_publish("analysis/*") |
| html | ae8df0e | sdhutchins | 2023-07-06 | Build site. |
| Rmd | 091a513 | sdhutchins | 2023-07-06 | wflow_publish("analysis/*") |
| html | 53d12da | sdhutchins | 2023-07-06 | Build site. |
| Rmd | bbdd7e3 | sdhutchins | 2023-07-06 | wflow_publish("analysis/*") |
| html | ad9ce58 | sdhutchins | 2023-07-01 | Build site. |
| Rmd | b5cecfb | sdhutchins | 2023-07-01 | wflow_publish("analysis/*") |
| html | 597034d | sdhutchins | 2023-06-28 | Build site. |
| html | 08f6320 | sdhutchins | 2023-06-28 | Build site. |
| Rmd | 8895f16 | sdhutchins | 2023-06-28 | Add code block for package install. |
| html | 37ab164 | sdhutchins | 2023-06-28 | Build site. |
| Rmd | 3009016 | sdhutchins | 2023-06-28 | Add gprofiler. |
| Rmd | dbea49f | sdhutchins | 2023-06-27 | Add analysis and update site |
| html | dbea49f | sdhutchins | 2023-06-27 | Add analysis and update site |
| html | 19c181e | sdhutchins | 2023-06-23 | Build site. |
| Rmd | 13c1acc | sdhutchins | 2023-06-23 | wflow_publish("analysis/") |
| html | 6133d80 | sdhutchins | 2023-06-23 | Build site. |
| Rmd | df39c69 | sdhutchins | 2023-06-23 | wflow_publish("analysis/") |
Ensure you have all necessary libraries installed and load the helper code.
At a later date, renv will be integrated to ensure
reproducibility of this analysis.
Use the below code to install these packages:
# Install packages from CRAN
install.packages(c("tidyverse", "RColorBrewer", "pheatmap", "gprofiler2", "plotly"))
# Install packages from Bioconductor
install.packages("BiocManager")
BiocManager::install(c("DESeq2", "genefilter", "limma", "biomaRt"))
library(tidyverse) # Available via CRAN
library(DESeq2) # Available via Bioconductor
library(RColorBrewer) # Available via CRAN
library(pheatmap) # Available via CRAN
library(genefilter) # Available via Bioconductor
library(limma) # Available via Bioconductor
library(gprofiler2) # Available via CRAN
library(biomaRt) # Available via Bioconductor
library(plotly) # Available via CRAN
library(ggpubr)
library(rmarkdown)
We will be importing counts data from the star-salmon pipeline and our metadata for the project which is hosted on Box. This also ensures data is properly ordered by sample id.
counts <- read_tsv("data/star-salmon/salmon.merged.gene_counts_length_scaled.tsv")
# Import variants of interest
vars_of_interest <- read_csv("data/RNAseq Variants of Interest List_V2.csv")
genes_of_interest <- unique(vars_of_interest$Gene)
genes_of_interest <- genes_of_interest[!is.na(genes_of_interest)]
# Use first column (gene_id) for row names
counts <- data.frame(counts, row.names = 1)
counts$Ensembl_ID <- row.names(counts)
drop <- c("Ensembl_ID", "gene_name")
gene_info <- counts[, drop]
counts <- counts[, !(names(counts) %in% drop)] # remove both columns
# Import metadata
sample_metadata <- read_csv("data/MECFS_RNAseq_metadata_2023_06_23.csv")
row.names(sample_metadata) <- sample_metadata$RNA_Samples_id
# Check that data is ordered properly
sample_metadata <- check_order(sample_metadata = sample_metadata, counts = counts)
genes_biomart <- retrieve_gene_info(values = gene_info$Ensembl_ID, filters = "ensembl_gene_id_version")
sample_metadata$Family <- factor(sample_metadata$Family)
sample_metadata$Affected <- factor(sample_metadata$Affected)
sample_metadata$Batch <- factor(sample_metadata$Batch)
sample_metadata$Gender <- factor(sample_metadata$Gender)
# Account for Family later but batch is accounted for
dds <- DESeqDataSetFromMatrix(countData = round(counts), colData = sample_metadata, design = ~ Batch + Affected)
# Pre-filtering: Keep only rows that have atleast 10 reads total
keep <- rowSums(counts(dds)) >= 10
dds <- dds[keep, ]
# Run DESeq function
dds <- DESeq(dds)
head(counts(dds, normalized = TRUE))
LW001974 LW001975 LW001976 LW001977
ENSG00000000003.15 6.283344 2.05296 7.223942 4.264822
ENSG00000000419.14 921.557182 1043.92997 850.017210 859.361676
ENSG00000000457.14 1114.246411 746.25082 829.549373 916.936776
ENSG00000000460.17 234.578192 189.89876 193.842452 328.391311
ENSG00000000938.13 12201.207645 11118.82929 15551.943765 17490.035904
ENSG00000000971.17 83.777926 130.36294 167.354663 197.248027
LW001978 LW001979 LW001980 LW001981
ENSG00000000003.15 3.565091 14.47998 4.573315 10.46587
ENSG00000000419.14 910.286661 866.16626 868.015180 1118.80153
ENSG00000000457.14 1100.424867 971.47523 1048.203789 1003.67696
ENSG00000000460.17 294.714219 276.43604 185.676587 252.22747
ENSG00000000938.13 10116.540921 10099.13001 18749.676681 21708.30816
ENSG00000000971.17 553.777525 143.48347 222.263107 216.64352
LW001982 LW001983 LW001984 LW001985
ENSG00000000003.15 17.45822 6.161279 5.718447 9.434676
ENSG00000000419.14 979.40627 1059.740056 924.754609 919.356806
ENSG00000000457.14 1104.23256 635.844033 901.880820 939.274457
ENSG00000000460.17 374.47887 144.173938 303.894624 263.122644
ENSG00000000938.13 19973.95218 23219.397520 19682.078435 13836.477178
ENSG00000000971.17 107.36807 27.109629 86.593629 116.361010
LW001986 LW001987 LW001988 LW001989 LW001990
ENSG00000000003.15 14.3010 8.261848 20.80204 11.32375 7.592455
ENSG00000000419.14 894.8338 840.642993 896.56804 949.93645 832.458476
ENSG00000000457.14 1046.6967 747.008720 897.60814 859.34649 1079.755586
ENSG00000000460.17 305.7689 232.708707 200.73971 223.95853 264.651294
ENSG00000000938.13 14919.3442 14147.037031 13752.23045 14215.07557 13223.345284
ENSG00000000971.17 222.6869 227.200809 160.17573 163.56522 143.172011
LW001991 LW001992 LW001993 LW001994
ENSG00000000003.15 5.130748 3.925784 7.688938 12.43332
ENSG00000000419.14 1002.206201 917.324885 997.639691 920.06541
ENSG00000000457.14 903.866855 1092.676575 897.683498 885.63469
ENSG00000000460.17 217.201685 378.183869 149.934289 273.53296
ENSG00000000938.13 14667.099624 8978.268242 13184.606244 15375.23032
ENSG00000000971.17 149.646830 294.433808 152.817641 124.33316
LW001995 LW001996 LW001997 LW001998 LW001999
ENSG00000000003.15 4.865262 13.74314 6.723075 11.82344 3.302019
ENSG00000000419.14 1119.010269 992.12394 808.113622 1212.74707 893.746405
ENSG00000000457.14 904.938740 897.23081 935.852048 728.83058 989.504949
ENSG00000000460.17 515.717776 293.84146 404.729118 143.57034 159.597572
ENSG00000000938.13 15497.481354 14288.28620 9146.071308 8941.89828 16707.114147
ENSG00000000971.17 229.478193 126.96045 208.415327 369.06021 184.913049
LW002000 LW002001 LW002080
ENSG00000000003.15 10.49324 9.01276 4.661212
ENSG00000000419.14 1437.57367 736.47124 918.258773
ENSG00000000457.14 1143.76299 987.54098 1041.780892
ENSG00000000460.17 339.71860 350.21010 205.093330
ENSG00000000938.13 8890.39630 10409.73770 12261.318282
ENSG00000000971.17 247.90276 133.90386 209.754542
resultsNames(dds)
[1] "Intercept" "Batch_B2_vs_B1" "Batch_B3_vs_B1"
[4] "Affected_Yes_vs_No"
# Normalize gene counts for differences in seq. depth/global differences
counts_norm <- counts(dds, normalized = TRUE)
Perform count data transformation by variance stabilizing transformation (vst) on normalized counts.
vsd <- vst(dds, blind = FALSE)
counts_vst <- assay(vsd)
write.csv(counts_vst, file = "output/counts_vst.csv")
mm <- model.matrix(~ Family + Affected, colData(vsd))
counts_vst_limma <- limma::removeBatchEffect(counts_vst, batch = vsd$Batch, design = mm)
Coefficients not estimable: batch2
write.csv(counts_vst_limma, file = "output/counts_vst_limma.csv")
vsd_limma <- vsd
assay(vsd_limma) <- counts_vst_limma
sampleDists <- dist(t(assay(vsd)))
sampleDistMatrix <- as.matrix(sampleDists)
rownames(sampleDistMatrix) <- paste(vsd_limma$Batch, vsd_limma$Family, sep = " | ")
colnames(sampleDistMatrix) <- paste(vsd_limma$RNA_Samples_id, vsd_limma$Family, sep = " | ")
colors <- colorRampPalette(rev(brewer.pal(9, "Blues")))(255)
pheatmap(sampleDistMatrix, clustering_distance_rows = sampleDists, clustering_distance_cols = sampleDists, col = colors)

pcaData <- plotPCA(vsd, intgroup = c("Batch", "Family", "Affected"), returnData = TRUE)
percentVar <- round(100 * attr(pcaData, "percentVar"))
ggplot(pcaData, aes(PC1, PC2, shape = factor(Batch), fill = factor(Affected), color = factor(Family))) +
geom_point(size = 5) +
geom_text(aes(label = name),
data = subset(pcaData, PC2 < -20),
vjust = -1, hjust = 0.5, size = 3
) +
xlab(paste0("PC1: ", percentVar[1], "% variance")) +
ylab(paste0("PC2: ", percentVar[2], "% variance")) +
coord_fixed()

ggplot(pcaData, aes(PC1, PC2, shape = factor(Batch), color = factor(Affected))) +
geom_point(size = 5) +
xlab(paste0("PC1: ", percentVar[1], "% variance")) +
ylab(paste0("PC2: ", percentVar[2], "% variance")) +
coord_fixed()

| Version | Author | Date |
|---|---|---|
| a3635c9 | sdhutchins | 2023-07-25 |
This is a heatmap for all genes across samples.
all_genes <- order(-rowVars(assay(vsd_limma)))
mat <- assay(vsd_limma)[all_genes, ]
mat <- mat - rowMeans(mat)
df <- as.data.frame(colData(vsd)[, c("Batch", "Affected", "Disease Type")])
pheatmap(mat, annotation_col = df, fontsize = 5)

This is a heatmap for 50 genes with the highest variance across samples.
topVarGenes <- head(order(-rowVars(assay(vsd_limma))), 50)
mat <- assay(vsd_limma)[topVarGenes, ]
mat <- mat - rowMeans(mat)
df <- as.data.frame(colData(vsd)[, c("Batch", "Affected", "Disease Type")])
pheatmap(mat, annotation_col = df, fontsize = 5)

This is a heatmap of the top 100 genes with the highest variance across samples.
topVarGenes <- head(order(-rowVars(assay(vsd_limma))), 100)
mat <- assay(vsd_limma)[topVarGenes, ]
mat <- mat - rowMeans(mat)
df <- as.data.frame(colData(vsd)[, c("Batch", "Family", "Affected")])
pheatmap(mat, annotation_col = df, fontsize = 6)

res_aff_vs_unaff <- results(dds, contrast = c("Affected", "Yes", "No"))
res_aff_vs_unaff <- res_aff_vs_unaff[order(res_aff_vs_unaff$padj), ]
summary(res_aff_vs_unaff)
out of 29624 with nonzero total read count
adjusted p-value < 0.1
LFC > 0 (up) : 34, 0.11%
LFC < 0 (down) : 30, 0.1%
outliers [1] : 162, 0.55%
low counts [2] : 6, 0.02%
(mean count < 0)
[1] see 'cooksCutoff' argument of ?results
[2] see 'independentFiltering' argument of ?results
write.csv(res_aff_vs_unaff, file = "output/res_aff_vs_unaff.csv")
res_aff_vs_unaff_df <- as.data.frame(res_aff_vs_unaff)
res_aff_vs_unaff_05 <- subset(res_aff_vs_unaff_df, padj < 0.05)
topgenes_byensemblid <- head(rownames(res_aff_vs_unaff_05), 50)
topgenes_aff_vs_unaff_05 <- assay(vsd_limma)[topgenes_byensemblid, ]
topgenes_aff_vs_unaff_05 <- topgenes_aff_vs_unaff_05 - rowMeans(topgenes_aff_vs_unaff_05)
# Convert ensemblids
ensemblids <- topgenes_byensemblid
ensemblids
[1] "ENSG00000254732.2" "ENSG00000288686.2" "ENSG00000288709.1"
[4] "ENSG00000259132.1" "ENSG00000275954.5" "ENSG00000269693.1"
[7] "ENSG00000142539.9" "ENSG00000284554.2" "ENSG00000285952.1"
[10] "ENSG00000285505.1" "ENSG00000289694.1" "ENSG00000206737.1"
[13] "ENSG00000174807.4" "ENSG00000206047.3" "ENSG00000224610.2"
[16] "ENSG00000102271.14" "ENSG00000211611.2" "ENSG00000185760.18"
[19] "ENSG00000207513.1" "ENSG00000117461.15" "ENSG00000186765.12"
[22] "ENSG00000243926.3" "ENSG00000133169.6" "ENSG00000175267.15"
[25] "ENSG00000176083.18" "ENSG00000177947.15" "ENSG00000173114.13"
[28] "ENSG00000172554.12" "ENSG00000171227.7" "ENSG00000273026.1"
[31] "ENSG00000144290.17" "ENSG00000175592.9" "ENSG00000182853.12"
[34] "ENSG00000066382.17" "ENSG00000260790.1" "ENSG00000266405.3"
[37] "ENSG00000265337.1" "ENSG00000105889.16" "ENSG00000075240.17"
rownames(topgenes_aff_vs_unaff_05) <- gene_info$gene_name[match(ensemblids, gene_info$Ensembl_ID)]
topgenes_aff_vs_unaff_05 <- topgenes_aff_vs_unaff_05[order(row.names(topgenes_aff_vs_unaff_05)), ]
df <- as.data.frame(colData(vsd_limma)[, c("Batch", "Affected", "Disease Type")])
pheatmap(topgenes_aff_vs_unaff_05, annotation_col = df, fontsize = 5)

gb_df <- genes_biomart[, c(1, ncol(genes_biomart))]
res_aff_vs_unaff_df_genename <- res_aff_vs_unaff_df
res_aff_vs_unaff_df_genename$Ensembl_ID <- row.names(res_aff_vs_unaff_df)
res_aff_vs_unaff_df_genename <- merge(x = res_aff_vs_unaff_df_genename, y = gene_info, by.x = "Ensembl_ID", by.y = "Ensembl_ID", all.x = T)
res_aff_vs_unaff_df_genename <- res_aff_vs_unaff_df_genename[, c(dim(res_aff_vs_unaff_df_genename)[2], 1:dim(res_aff_vs_unaff_df_genename)[2] - 1)]
res_aff_vs_unaff_df_genename <- res_aff_vs_unaff_df_genename[order(res_aff_vs_unaff_df_genename[, "padj"]), ]
write.csv(res_aff_vs_unaff_df_genename, file = "output/res_aff_vs_unaff_genename.csv")
res_aff_vs_unaff_df_genename_05 <- subset(res_aff_vs_unaff_df_genename, padj < 0.05)
res_aff_vs_unaff_df_genename_05 <- res_aff_vs_unaff_df_genename_05[order(res_aff_vs_unaff_df_genename_05$padj), ]
write.csv(res_aff_vs_unaff_df_genename_05, file = "output/res_aff_vs_unaff_df_genename_05.csv")
Below is a table of information about the top genes.
library(mygene)
genes <- res_aff_vs_unaff_df_genename_05$gene_name
data <- queryMany(genes, scopes = "symbol", fields = c("entrezgene", "symbol", "name", "summary", species = "human"))
Finished
Pass returnall=TRUE to return lists of duplicate or missing query terms.
paged_table(as.data.frame(data), options = list(rows.print = 15))
# Select specific genes to show
# set top = 0, then specify genes using label.select argument
maplot <- ggmaplot(res_aff_vs_unaff_df_genename,
main = "Affected vs Unaffected MA Plot",
fdr = .05, fc = 2, size = 0.4,
genenames = as.vector(res_aff_vs_unaff_df_genename$gene_name),
ggtheme = ggplot2::theme_minimal(),
legend = "top", top = 19, font.label = c("bold", 8), label.rectangle = TRUE,
font.legend = "bold", font.main = "bold"
)
maplot

significant_data <- subset(maplot$data, grepl("Up|Down", sig))
significant_data$sig <- ifelse(grepl("Up", significant_data$sig), "Up",
ifelse(grepl("Down", significant_data$sig), "Down", significant_data$sig)
)
paged_table(significant_data, options = list(rows.print = 20))
res <- gost(query = significant_data$name, organism = "hsapiens", significant = FALSE)
gostplot(res, capped = FALSE, interactive = TRUE)
publish_gosttable(res,
use_colors = TRUE,
show_columns = c("source", "term_name", "term_size", "intersection_size"),
filename = NULL
)

Below is a table of expression of the genes identified during our WGS analysis.
8 of the genes were not included using DESeq2’s count filtering method:
“DPEP1”, “RERGL”, “TDO2”, “CCDC178”, “ADRA1D”, “AVPR1B”, “LRCOL1”, “KCNJ18”
# Subset gene_info using genes of interest
subset_gene_info <- gene_info[gene_info$gene_name %in% genes_of_interest, ]
filtered_by_interest <- filter(res_aff_vs_unaff_df_genename, Ensembl_ID %in% subset_gene_info$Ensembl_ID)
# Filtering the dataframe by row names
filtered_counts <- counts[row.names(counts) %in% subset_gene_info$Ensembl_ID, ]
# Match and update row names
matching_indices <- match(rownames(filtered_counts), subset_gene_info$Ensembl_ID)
# Update row names based on matching_column values from metadata
rownames(filtered_counts) <- subset_gene_info$gene_name[matching_indices]
missing_genes <- setdiff(subset_gene_info$Ensembl_ID, filtered_by_interest$Ensembl_ID)
corresponding_gene_names <- subset_gene_info$gene_name[subset_gene_info$Ensembl_ID %in% missing_genes]
missing_gene_counts <- counts[row.names(counts) %in% missing_genes, ]
paged_table(filtered_by_interest, options = list(rows.print = 15))
paged_table(filtered_counts, options = list(rows.print = 15))
Below is a heatmap highlighting the expression of our genes of interest across batch, disease type, and affected status.
mat2 <- assay(vsd_limma)[filtered_by_interest$Ensembl_ID, ]
rownames(mat2) <- gene_info$gene_name[match(filtered_by_interest$Ensembl_ID, gene_info$Ensembl_ID)]
df <- as.data.frame(colData(vsd)[, c("Batch", "Affected", "Disease Type")])
pheatmap(mat2, annotation_col = df, fontsize = 5)

| Version | Author | Date |
|---|---|---|
| 482a8a9 | sdhutchins | 2023-08-09 |
sessionInfo()
R version 4.1.1 (2021-08-10)
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.1/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/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] stats4 stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] mygene_1.30.0 GenomicFeatures_1.46.5
[3] AnnotationDbi_1.56.2 rmarkdown_2.23
[5] ggpubr_0.6.0 plotly_4.10.2
[7] biomaRt_2.50.3 gprofiler2_0.2.2
[9] limma_3.50.3 genefilter_1.76.0
[11] pheatmap_1.0.12 RColorBrewer_1.1-3
[13] DESeq2_1.34.0 SummarizedExperiment_1.24.0
[15] Biobase_2.54.0 MatrixGenerics_1.6.0
[17] matrixStats_1.0.0 GenomicRanges_1.46.1
[19] GenomeInfoDb_1.30.1 IRanges_2.28.0
[21] S4Vectors_0.32.4 BiocGenerics_0.40.0
[23] lubridate_1.9.2 forcats_1.0.0
[25] stringr_1.5.0 dplyr_1.1.2
[27] purrr_1.0.1 readr_2.1.4
[29] tidyr_1.3.0 tibble_3.2.1
[31] ggplot2_3.4.2.9000 tidyverse_2.0.0
[33] workflowr_1.7.0
loaded via a namespace (and not attached):
[1] backports_1.4.1 Hmisc_5.1-0 BiocFileCache_2.2.1
[4] plyr_1.8.8 lazyeval_0.2.2 splines_4.1.1
[7] crosstalk_1.2.0 BiocParallel_1.28.3 digest_0.6.33
[10] htmltools_0.5.5 fansi_1.0.4 checkmate_2.2.0
[13] magrittr_2.0.3 memoise_2.0.1 cluster_2.1.4
[16] tzdb_0.4.0 Biostrings_2.62.0 annotate_1.72.0
[19] vroom_1.6.3 timechange_0.2.0 prettyunits_1.1.1
[22] colorspace_2.1-0 ggrepel_0.9.3 blob_1.2.4
[25] rappdirs_0.3.3 xfun_0.39 callr_3.7.3
[28] crayon_1.5.2 RCurl_1.98-1.12 jsonlite_1.8.7
[31] survival_3.5-5 glue_1.6.2 gtable_0.3.3
[34] zlibbioc_1.40.0 XVector_0.34.0 DelayedArray_0.20.0
[37] car_3.1-2 abind_1.4-5 scales_1.2.1
[40] DBI_1.1.3 rstatix_0.7.2 Rcpp_1.0.11
[43] htmlTable_2.4.1 viridisLite_0.4.2 xtable_1.8-4
[46] progress_1.2.2 foreign_0.8-84 bit_4.0.5
[49] sqldf_0.4-11 Formula_1.2-5 htmlwidgets_1.6.2
[52] httr_1.4.6 ellipsis_0.3.2 pkgconfig_2.0.3
[55] XML_3.99-0.14 farver_2.1.1 nnet_7.3-19
[58] sass_0.4.7 dbplyr_2.3.3 locfit_1.5-9.8
[61] utf8_1.2.3 tidyselect_1.2.0 labeling_0.4.2
[64] rlang_1.1.1 later_1.3.1 munsell_0.5.0
[67] tools_4.1.1 cachem_1.0.8 cli_3.6.1
[70] gsubfn_0.7 generics_0.1.3 RSQLite_2.3.1
[73] broom_1.0.5 evaluate_0.21 fastmap_1.1.1
[76] yaml_2.3.7 processx_3.8.2 knitr_1.43
[79] bit64_4.0.5 fs_1.6.3 KEGGREST_1.34.0
[82] mime_0.12 whisker_0.4.1 xml2_1.3.5
[85] compiler_4.1.1 rstudioapi_0.15.0 filelock_1.0.2
[88] curl_5.0.1 png_0.1-8 ggsignif_0.6.4
[91] geneplotter_1.72.0 bslib_0.5.0 stringi_1.7.12
[94] highr_0.10 ps_1.7.5 lattice_0.21-8
[97] Matrix_1.6-0 vctrs_0.6.3 pillar_1.9.0
[100] lifecycle_1.0.3 jquerylib_0.1.4 data.table_1.14.8
[103] bitops_1.0-7 httpuv_1.6.11 rtracklayer_1.54.0
[106] R6_2.5.1 BiocIO_1.4.0 promises_1.2.0.1
[109] gridExtra_2.3 chron_2.3-61 proto_1.0.0
[112] rprojroot_2.0.3 rjson_0.2.21 withr_2.5.0
[115] GenomicAlignments_1.30.0 Rsamtools_2.10.0 GenomeInfoDbData_1.2.7
[118] parallel_4.1.1 hms_1.1.3 rpart_4.1.19
[121] grid_4.1.1 carData_3.0-5 git2r_0.32.0
[124] getPass_0.2-2 shiny_1.7.4.1 base64enc_0.1-3
[127] restfulr_0.0.15