I spent some time playing with cellranger and its various options for treating gex/atac and their combined datatypes. I think it is unlikely that more than ~ 100 cells are likely to be detected in any combination of options. I therefore thought it would be interesting to attempt treating the samples as separate expression/atac datasets and see if I can learn about the state of the experiment from them.
It might prove the case that downloading annotations from biomart does not work, I have been getting a large number of timeouts and failures recently.
rn_biomart <- load_biomart_annotations(species = "rnorvegicus", year = 2022, month = "oct",
symbol_columns = "external_gene_name", overwrite = TRUE)## Using mart: ENSEMBL_MART_ENSEMBL from host: oct2022.archive.ensembl.org.
## Successfully connected to the rnorvegicus_gene_ensembl database.
## Finished downloading ensembl gene annotations.
## Finished downloading ensembl structure annotations.
## Including symbols, there are 30560 vs the 54991 gene annotations.
## Not dropping haplotype chromosome annotations, set drop_haplotypes = TRUE if this is bad.
## Saving annotations to rnorvegicus_biomart_annotations.rda.
## Finished save().
## Returning a df with 26 columns and 1426516 rows.
My annotation collection tool is unaware of atac data. I think therefore I will try runing it and just see what happens.
sample_sheet <- "sample_sheets/all_samples.xlsx"
rn_meta <- gather_preprocessing_metadata(sample_sheet,
species = "rnorvegicus_7.2_107")## Did not find the condition column in the sample sheet.
## Filling it in as undefined.
## Did not find the batch column in the sample sheet.
## Filling it in as undefined.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## Writing new metadata to: sample_sheets/all_samples_modified.xlsx
## Deleting the file sample_sheets/all_samples_modified.xlsx before writing the tables.
It fails utterly.
rn_se <- create_se(sample_sheet, gene_info = rn_annot, file_column = "gex_count_table") %>%
set_conditions(fact = "treatment") %>%
set_batches(fact = "replicate")## Reading the sample metadata.
## Did not find the condition column in the sample sheet.
## Filling it in as undefined.
## Did not find the batch column in the sample sheet.
## Filling it in as undefined.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## The sample definitions comprises: 8 rows(samples) and 8 columns(metadata fields).
## Warning in create_se(sample_sheet, gene_info = rn_annot, file_column = "gex_count_table"): Some samples
## were removed when cross referencing the samples against the count data.
## Matched 23139 annotations and counts.
## The final summarized experiment has 23139 rows and 8 columns.
## The numbers of samples by condition are:
##
## oxycodone saline
## 2 2
## The number of samples by batch are:
##
## r1 r2
## 2 2
## png
## 2
## Library sizes of 4 samples,
## ranging from 31,404,515 to 59,790,154.
## Scale for colour is already present.
## Adding another scale for colour, which will replace the existing scale.
## Scale for fill is already present.
## Adding another scale for fill, which will replace the existing scale.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the hpgltools package.
## Please report the issue to the authors.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## png
## 2
## A non-zero genes plot of 4 samples.
## These samples have an average 43.89 CPM coverage and 16993 genes observed, ranging from 16121 to
## 17693.
## Removing 11208 low-count genes (11931 remaining).
## transform_counts: Found 277 values equal to 0, adding 1 to the matrix.
rn_disheat <- plot_disheat(rn_norm)
pp(file = "images/rn_disheat.png")
rn_disheat[["plot"]]
dev.off()## png
## 2
## A heatmap of pairwise sample distances ranging from:
## 86.762864144945 to 187.411008453202.
rn_corheat <- plot_corheat(rn_norm)
pp(file = "images/rn_corheat.png")
rn_corheat[["plot"]]
dev.off()## png
## 2
## A heatmap of pairwise sample correlations ranging from:
## 0.728550215536099 to 0.92793236561988.
## png
## 2
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by oxycodone, saline
## Shapes are defined by r1, r2.
## Removing 11208 low-count genes (11931 remaining).
## transform_counts: Found 318 values less than 0.
## transform_counts: Found 318 values equal to 0, adding 1 to the matrix.
## png
## 2
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by oxycodone, saline
## Shapes are defined by r1, r2.
pairs <- all_pairwise(rn_se, model_svs = "svaseq", force = TRUE,
model_fstring = "~ 0 + condition", filter = TRUE)## oxycodone saline
## 2 2
## Removing 11208 low-count genes (11931 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 1552 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into
## integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into
## integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into
## integers.
## conditions
## oxycodone saline
## 2 2
## conditions
## oxycodone saline
## 2 2
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into
## integers.
## conditions
## oxycodone saline
## 2 2
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
## sln_vs_xyc
## basic_vs_deseq 0.6590
## basic_vs_dream 0.7010
## basic_vs_ebseq 0.8425
## basic_vs_edger 0.6577
## basic_vs_noiseq 0.8905
## deseq_vs_dream 0.9106
## deseq_vs_ebseq 0.6616
## deseq_vs_edger 0.9996
## deseq_vs_noiseq 0.6794
## dream_vs_ebseq 0.6339
## dream_vs_edger 0.9091
## dream_vs_noiseq 0.7200
## ebseq_vs_edger 0.6615
## ebseq_vs_noiseq 0.8728
## edger_vs_noiseq 0.6788
## Deleting the file excel/pairs.xlsx before writing the tables.
## Looking for subscript invalid names, start of extract_keepers.
## Looking for subscript invalid names, end of extract_keepers.
## A set of combined differential expression results.
## table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 saline_vs_oxycodone 117 7 41 3 21 1
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the UpSetR package.
## Please report the issue to the authors.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the UpSetR package.
## Please report the issue to the authors.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## Plot describing unique/shared genes in a differential expression table.
## Deleting the file excel/sig.xlsx before writing the tables.
## A set of genes deemed significant according to limma.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
## limma_up limma_down
## saline_vs_oxycodone 21 1
## Warning in min(x): no non-missing arguments to min; returning Inf
## Warning in max(x): no non-missing arguments to max; returning -Inf
## Warning in min(x): no non-missing arguments to min; returning Inf
## Warning in max(x): no non-missing arguments to max; returning -Inf
## Error in `plot.window()`:
## ! need finite 'xlim' values
Limma volcano plot
In theory, the column ‘external_gene_name’ should provide reasonable genenames, but I am having some troubles extracting it from ensembl.
pp(file = "images/gex_volcano.png")
table[["plots"]][["saline_vs_oxycodone"]][["limma_vol_plots"]]
dev.off()## png
## 2
## [1] 21 72
## [1] 1 72
gp_up <- simple_gprofiler(ups, species = "rnorvegicus")
tt <- plot_enrichresult(gp_up[["REAC_enrich"]])## Warning in (function (model, data, ...) : Arguments in `...` must be used.
## ✖ Problematic argument:
## • by = "Count"
## ℹ Did you misspell an argument name?
Given my lack of experience with ATAC data, I am currently using
as a guide.
## Loading required package: BiocGenerics
## Loading required package: generics
##
## Attaching package: 'generics'
## The following objects are masked from 'package:base':
##
## as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, setequal, union
##
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:hpgltools':
##
## annotation<-, conditions, conditions<-, IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:stats':
##
## IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call,
## duplicated, eval, evalq, Filter, Find, get, grep, grepl, is.unsorted, lapply, Map, mapply,
## match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank, rbind, Reduce,
## rownames, sapply, saveRDS, table, tapply, unique, unsplit, which.max, which.min
## Loading required package: S4Vectors
## Loading required package: stats4
##
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:utils':
##
## findMatches
## The following objects are masked from 'package:base':
##
## expand.grid, I, unname
## Loading required package: BSgenome
## Loading required package: IRanges
##
## Attaching package: 'IRanges'
## The following object is masked from 'package:hpgltools':
##
## trim
## Loading required package: Seqinfo
## Loading required package: GenomicRanges
## Loading required package: Biostrings
## Loading required package: XVector
##
## Attaching package: 'Biostrings'
## The following object is masked from 'package:base':
##
## strsplit
## Loading required package: BiocIO
##
## Attaching package: 'BiocIO'
## The following object is masked from 'package:reticulate':
##
## import
## Loading required package: rtracklayer
## Loading required package: GenomicFeatures
## Loading required package: AnnotationDbi
## Loading required package: Biobase
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with 'browseVignettes()'. To cite
## Bioconductor, see 'citation("Biobase")', and for packages 'citation("pkgname")'.
##
## Attaching package: 'Biobase'
## The following object is masked from 'package:hpgltools':
##
## notes
library(ChIPpeakAnno)
library(Rsamtools)
bam_outputs <- c(
"preprocessing/1_saline_atac/outputs/40hisat_rnorvegicus_norway_grcr8/rnorvegicus_norway_grcr8_genome-paired.bam",
"preprocessing/2_oxycodone_atac/outputs/40hisat_rnorvegicus_norway_grcr8/rnorvegicus_norway_grcr8_genome-paired.bam",
"preprocessing/3_saline_atac/outputs/40hisat_rnorvegicus_norway_grcr8/rnorvegicus_norway_grcr8_genome-paired.bam",
"preprocessing/4_oxycodone_atac/outputs/40hisat_rnorvegicus_norway_grcr8/rnorvegicus_norway_grcr8_genome-paired.bam")
bam_qc <- bamQC(bam_outputs[1], outPath = NULL)
possibleTag <- combn(LETTERS, 2)
possibleTag <- c(paste0(possibleTag[1, ], possibleTag[2, ]),
paste0(possibleTag[2, ], possibleTag[1, ]))
## This seems a bit stupid? I already know what the primary sam tags are, should I not just
## have a list with their names and meanings?
bamTop100 <- scanBam(BamFile(bam_outputs[1], yieldSize = 100),
param = ScanBamParam(tag = possibleTag))[[1]]$tag
tags <- names(bamTop100)[lengths(bamTop100)>0]
tags## [1] "AS" "MD" "XG" "NH" "NM" "XM" "XN" "XO" "YS" "ZS" "YT"
gal = readBamFile(bam_outputs[1], tag = tags, asMates = TRUE, bigFile = TRUE)
out_dir <- "preprocessing/1_saline_atac/outputs/99atac_qc"
dir.create(out_dir, recursive = TRUE)## Warning in dir.create(out_dir, recursive = TRUE): 'preprocessing/1_saline_atac/outputs/99atac_qc' already
## exists
shifted_bam <- file.path(out_dir, "shifted.bam")
gal1 = shiftGAlignmentsList(gal, outbam = shifted_bam)## | | | 0% | |= | 1% | |== | 2% | |=== | 3% | |==== | 4% | |===== | 5% | |====== | 6% | |====== | 7% | |======= | 7% | |======== | 8% | |========= | 9% | |========= | 10% | |========== | 11% | |=========== | 11% | |============ | 12% | |============= | 13% | |============= | 14% | |============== | 15% | |=============== | 16% | |================ | 16% | |================= | 17% | |================= | 18% | |================== | 19% | |=================== | 20% | |==================== | 20% | |==================== | 21% | |===================== | 22% | |====================== | 23% | |======================= | 24% | |======================== | 25% | |========================= | 26% | |========================== | 27% | |=========================== | 28% | |============================ | 29% | |============================ | 30% | |============================= | 30% | |============================== | 31% | |=============================== | 32% | |=============================== | 33% | |================================ | 34% | |================================= | 34% | |================================== | 35% | |=================================== | 36% | |=================================== | 37% | |==================================== | 38% | |===================================== | 39% | |====================================== | 39% | |======================================= | 40% | |======================================= | 41% | |======================================== | 42% | |========================================= | 43% | |========================================== | 43% | |========================================== | 44% | |=========================================== | 45% | |============================================ | 46% | |============================================= | 47% | |============================================== | 48% | |=============================================== | 49% | |================================================ | 50% | |================================================= | 51% | |================================================== | 52% | |=================================================== | 53% | |==================================================== | 54% | |===================================================== | 55% | |====================================================== | 56% | |====================================================== | 57% | |======================================================= | 57% | |======================================================== | 58% | |========================================================= | 59% | |========================================================= | 60% | |========================================================== | 61% | |=========================================================== | 61% | |============================================================ | 62% | |============================================================= | 63% | |============================================================= | 64% | |============================================================== | 65% | |=============================================================== | 66% | |================================================================ | 66% | |================================================================= | 67% | |================================================================= | 68% | |================================================================== | 69% | |=================================================================== | 70% | |==================================================================== | 70% | |==================================================================== | 71% | |===================================================================== | 72% | |====================================================================== | 73% | |======================================================================= | 74% | |======================================================================== | 75% | |========================================================================= | 76% | |========================================================================== | 77% | |=========================================================================== | 78% | |============================================================================ | 79% | |============================================================================ | 80% | |============================================================================= | 80% | |============================================================================== | 81% | |=============================================================================== | 82% | |=============================================================================== | 83% | |================================================================================ | 84% | |================================================================================= | 84% | |================================================================================== | 85% | |=================================================================================== | 86% | |=================================================================================== | 87% | |==================================================================================== | 88% | |===================================================================================== | 89% | |====================================================================================== | 89% | |======================================================================================= | 90% | |======================================================================================= | 91% | |======================================================================================== | 92% | |========================================================================================= | 93% | |========================================================================================== | 93% | |========================================================================================== | 94% | |=========================================================================================== | 95% | |============================================================================================ | 96% | |============================================================================================= | 97% | |============================================================================================== | 98% | |=============================================================================================== | 99% | |================================================================================================| 100%
R version 4.5.1 (2025-06-13)
Platform: x86_64-pc-linux-gnu
locale: LC_CTYPE=en_US.UTF-8, LC_NUMERIC=C, LC_TIME=en_US.UTF-8, LC_COLLATE=en_US.UTF-8, LC_MONETARY=en_US.UTF-8, LC_MESSAGES=en_US.UTF-8, LC_PAPER=en_US.UTF-8, LC_NAME=C, LC_ADDRESS=C, LC_TELEPHONE=C, LC_MEASUREMENT=en_US.UTF-8 and LC_IDENTIFICATION=C
attached base packages: stats4, stats, graphics, grDevices, utils, datasets, methods and base
other attached packages: Rsamtools(v.2.26.0), ChIPpeakAnno(v.3.44.0), TxDb.Rnorvegicus.UCSC.rn7.refGene(v.3.15.0), GenomicFeatures(v.1.62.0), AnnotationDbi(v.1.72.0), Biobase(v.2.70.0), BSgenome.Rnorvegicus.UCSC.rn7(v.1.4.3), BSgenome(v.1.78.0), rtracklayer(v.1.70.1), BiocIO(v.1.20.0), Biostrings(v.2.78.0), XVector(v.0.50.0), GenomicRanges(v.1.62.1), Seqinfo(v.1.0.0), IRanges(v.2.44.0), ATACseqQC(v.1.34.0), S4Vectors(v.0.48.1), BiocGenerics(v.0.56.0), generics(v.0.1.4), edgeR(v.4.8.2), ruv(v.0.9.7.1), hpgltools(v.2026.03), testthat(v.3.3.2) and reticulate(v.1.45.0)
loaded via a namespace (and not attached): R.methodsS3(v.1.8.2), dichromat(v.2.0-0.1), GSEABase(v.1.72.0), progress(v.1.2.3), PROPER(v.1.42.0), HDF5Array(v.1.38.0), restez(v.2.1.5), vctrs(v.0.7.2), ggtangle(v.0.1.1), digest(v.0.6.39), png(v.0.1-9), corpcor(v.1.6.10), ggrepel(v.0.9.8), MASS(v.7.3-65), fontLiberation(v.0.1.0), reshape2(v.1.4.5), httpuv(v.1.6.17), foreach(v.1.5.2), qvalue(v.2.42.0), withr(v.3.0.2), xfun(v.0.57), ggfun(v.0.2.0), ellipsis(v.0.3.3), survival(v.3.8-6), memoise(v.2.0.1), clusterProfiler(v.4.18.4), gson(v.0.1.0), systemfonts(v.1.3.2), tidytree(v.0.4.7), gtools(v.3.9.5), R.oo(v.1.27.1), DEoptimR(v.1.1-4), prettyunits(v.1.2.0), KEGGREST(v.1.50.0), promises(v.1.5.0), otel(v.0.2.0), httr(v.1.4.8), restfulr(v.0.0.16), rhdf5filters(v.1.22.0), rhdf5(v.2.55.13), rstudioapi(v.0.18.0), UCSC.utils(v.1.6.1), DOSE(v.4.4.0), curl(v.7.0.0), h5mread(v.1.2.1), randomForest(v.4.7-1.2), polyclip(v.1.10-7), SparseArray(v.1.10.10), RBGL(v.1.86.0), RcppEigen(v.0.3.4.0.2), ade4(v.1.7-24), xtable(v.1.8-8), stringr(v.1.6.0), desc(v.1.4.3), evaluate(v.1.0.5), S4Arrays(v.1.10.1), BiocFileCache(v.3.0.0), preprocessCore(v.1.72.0), hms(v.1.1.4), filelock(v.1.0.3), polynom(v.1.4-1), VennDiagram(v.1.8.2), magrittr(v.2.0.5), later(v.1.4.8), ggtree(v.4.0.5), lattice(v.0.22-9), genefilter(v.1.92.0), robustbase(v.0.99-7), XML(v.3.99-0.23), cowplot(v.1.2.0), matrixStats(v.1.5.0), ggupset(v.0.4.1), pillar(v.1.11.1), nlme(v.3.1-169), pwalign(v.1.6.0), iterators(v.1.0.14), caTools(v.1.18.3), compiler(v.4.5.1), stringi(v.1.8.7), minqa(v.1.2.8), SummarizedExperiment(v.1.40.0), devtools(v.2.5.0), GenomicAlignments(v.1.46.0), plyr(v.1.8.9), crayon(v.1.5.3), abind(v.1.4-8), gridGraphics(v.0.5-1), locfit(v.1.5-9.12), bit(v.4.6.0), UpSetR(v.1.4.0), dplyr(v.1.2.1), fastmatch(v.1.1-8), fastcluster(v.1.3.0), codetools(v.0.2-20), crosstalk(v.1.2.2), bslib(v.0.10.0), plotly(v.4.12.0), multtest(v.2.66.0), remaCor(v.0.0.20), mime(v.0.13), splines(v.4.5.1), Rcpp(v.1.1.1), tidydr(v.0.0.6), dbplyr(v.2.5.2), knitr(v.1.51), blob(v.1.3.0), seqLogo(v.1.76.0), BiocVersion(v.3.22.0), AnnotationFilter(v.1.34.0), lme4(v.2.0-1), fs(v.2.0.1), Rdpack(v.2.6.6), EBSeq(v.2.8.0), pkgbuild(v.1.4.8), openxlsx(v.4.2.8.1), ggplotify(v.0.1.3), tibble(v.3.3.1), Matrix(v.1.7-5), statmod(v.1.5.1), fANCOVA(v.0.6-1), tweenr(v.2.0.3), pkgconfig(v.2.0.3), tools(v.4.5.1), cachem(v.1.1.0), RhpcBLASctl(v.0.23-42), rbibutils(v.2.4.1), cigarillo(v.1.0.0), RSQLite(v.2.4.6), viridisLite(v.0.4.3), DBI(v.1.3.0), numDeriv(v.2016.8-1.1), fastmap(v.1.2.0), rmarkdown(v.2.31), scales(v.1.4.0), grid(v.4.5.1), usethis(v.3.2.1), gprofiler2(v.0.2.4), AnnotationHub(v.4.0.0), broom(v.1.0.12), sass(v.0.4.10), patchwork(v.1.3.2), BiocManager(v.1.30.27), graph(v.1.88.1), varhandle(v.2.0.6), farver(v.2.1.2), reformulas(v.0.4.4), aod(v.1.3.3), scatterpie(v.0.2.6), mgcv(v.1.9-4), yaml(v.2.3.12), MatrixGenerics(v.1.22.0), cli(v.3.6.5), purrr(v.1.2.1), lifecycle(v.1.0.5), mvtnorm(v.1.3-6), lambda.r(v.1.2.4), sessioninfo(v.1.2.3), backports(v.1.5.1), Vennerable(v.3.1.0.9000), BiocParallel(v.1.44.0), annotate(v.1.88.0), gtable(v.0.3.6), rjson(v.0.2.23), parallel(v.4.5.1), ape(v.5.8-1), limma(v.3.66.0), jsonlite(v.2.0.0), TFBSTools(v.1.48.0), bitops(v.1.0-9), ggplot2(v.4.0.2), NOISeq(v.2.54.0), bit64(v.4.6.0-1), brio(v.1.1.5), yulab.utils(v.0.2.4), zip(v.2.3.3), futile.options(v.1.0.1), jquerylib(v.0.1.4), GOSemSim(v.2.36.0), R.utils(v.2.13.0), pbkrtest(v.0.5.5), lazyeval(v.0.2.3), pander(v.0.6.6), shiny(v.1.13.0), htmltools(v.0.5.9), enrichplot(v.1.30.5), GO.db(v.3.22.0), formatR(v.1.14), rappdirs(v.0.3.4), blockmodeling(v.1.1.8), ensembldb(v.2.34.0), glue(v.1.8.0), TFMPvalue(v.1.0.0), GenomicScores(v.2.22.0), httr2(v.1.2.2), gdtools(v.0.5.0), RCurl(v.1.98-1.18), InteractionSet(v.1.38.0), rprojroot(v.2.1.1), treeio(v.1.34.0), motifStack(v.1.54.0), futile.logger(v.1.4.9), gridExtra(v.2.3), EnvStats(v.3.1.0), boot(v.1.3-32), preseqR(v.4.0.0), universalmotif(v.1.28.0), igraph(v.2.2.3), variancePartition(v.1.40.2), R6(v.2.6.1), sva(v.3.58.0), tidyr(v.1.3.2), DESeq2(v.1.50.2), ggiraph(v.0.9.6), gplots(v.3.3.0), labeling(v.0.4.3), cluster(v.2.1.8.2), Rhdf5lib(v.1.32.0), regioneR(v.1.42.0), pkgload(v.1.5.1), aplot(v.0.2.9), GenomeInfoDb(v.1.46.2), DirichletMultinomial(v.1.52.0), nloptr(v.2.2.1), ProtGenerics(v.1.42.0), DelayedArray(v.0.36.1), tidyselect(v.1.2.1), ggforce(v.0.5.0), xml2(v.1.5.2), fontBitstreamVera(v.0.1.1), KernSmooth(v.2.23-26), S7(v.0.2.1), fontquiver(v.0.2.1), data.table(v.1.18.2.1), htmlwidgets(v.1.6.4), fgsea(v.1.36.2), RColorBrewer(v.1.1-3), biomaRt(v.2.66.2), rlang(v.1.2.0), lmerTest(v.3.2-1) and ggnewscale(v.0.5.2)
## If you wish to reproduce this exact build of hpgltools, invoke the following:
## > git clone http://github.com/abelew/hpgltools.git
## > git reset 03a4e43defdc53e7038116087cb006b05404d424
## This is hpgltools commit: Tue Apr 7 15:44:04 2026 -0400: 03a4e43defdc53e7038116087cb006b05404d424
this_save <- paste0(gsub(pattern = "\\.Rmd", replace = "", x = rmd_file), "-v", ver, ".rda.xz")
message("Saving to ", this_save)## Saving to index-v20260408.rda.xz