Skip to content

Comments

Address lingering seed and variable use issues#25

Merged
PeteHaitch merged 7 commits intodevelfrom
alanocallaghan-patch-1
Nov 19, 2025
Merged

Address lingering seed and variable use issues#25
PeteHaitch merged 7 commits intodevelfrom
alanocallaghan-patch-1

Conversation

@alanocallaghan
Copy link
Collaborator

From #24

@alanocallaghan
Copy link
Collaborator Author

@PeteHaitch any ideas for the failing build with status 401? I'll get to it in the next week if you don't have any immediate ideas

@PeteHaitch
Copy link
Collaborator

Thanks, Alan.

I don't think the GHA builds for OSCA have worked for some time ...
I've haven't had time to look at them / hasn't been high enough priority for me.

I'll test the PR locally and report back.

@alanocallaghan
Copy link
Collaborator Author

Ah yeah, sounds about right. I'll try block some time but my cup doesn't exactly runneth over either.

Probably best to fix them or disable them anyways

@PeteHaitch
Copy link
Collaborator

The second sanity check fails when I tried on my machine.
Does it succeed for you?

> stopifnot(mean(vars_du) > mean(vars_tu))
Error: mean(vars_du) > mean(vars_tu) is not TRUE

> vars_du
[1] 0.2258 0.2745
> vars_tu
 UMAP1  UMAP2 
0.1803 0.6826

@alanocallaghan
Copy link
Collaborator Author

Works for me now on devel and release. PCAtools will probably need to be removed

@PeteHaitch
Copy link
Collaborator

Unfortunately one of the sanity checks from this PR still appear broken on macOS (arm64) and Linux (x86_64).
Below is a minimal version of the densvis-related code in this chapter showing the results using an up-to-date BioC 3.22 (release) on my MacBook Air M2 (arm64) and a server running Red Hat Linux (x86_64).
The two platforms also give numerically different results, which is something we're having to deal with elsewhere in OSCA for arm64 vs. x86_64, so any conclusions and sanity checks need to be robust to such differences.

Separately, there are discussions to remove PCAtools from the book.

macOS (arm64)

#--- loading ---#
suppressPackageStartupMessages(library(scRNAseq))
sce.zeisel <- ZeiselBrainData()
suppressPackageStartupMessages(library(scater))
sce.zeisel <- aggregateAcrossFeatures(sce.zeisel,
                                      id=sub("_loc[0-9]+$", "", rownames(sce.zeisel)))
#--- gene-annotation ---#
suppressPackageStartupMessages(library(org.Mm.eg.db))
rowData(sce.zeisel)$Ensembl <- mapIds(org.Mm.eg.db,
                                      keys=rownames(sce.zeisel), keytype="SYMBOL", column="ENSEMBL")
#> 'select()' returned 1:many mapping between keys and columns
#--- quality-control ---#
stats <- perCellQCMetrics(sce.zeisel, subsets=list(
  Mt=rowData(sce.zeisel)$featureType=="mito"))
qc <- quickPerCellQC(stats, percent_subsets=c("altexps_ERCC_percent",
                                              "subsets_Mt_percent"))
sce.zeisel <- sce.zeisel[,!qc$discard]
#--- normalization ---#
library(scran)
set.seed(1000)
clusters <- quickCluster(sce.zeisel)
sce.zeisel <- computeSumFactors(sce.zeisel, cluster=clusters)
sce.zeisel <- logNormCounts(sce.zeisel)
#--- variance-modelling ---#
dec.zeisel <- modelGeneVarWithSpikes(sce.zeisel, "ERCC")
top.hvgs <- getTopHVGs(dec.zeisel, prop=0.1)
library(scran)
top.zeisel <- getTopHVGs(dec.zeisel, n=2000)
set.seed(100)
sce.zeisel <- fixedPCA(sce.zeisel, subset.row=top.zeisel)

set.seed(123)
library(densvis)
dt <- densne(reducedDim(sce.zeisel, "PCA"), dens_frac = 0.4, dens_lambda = 0.4)
reducedDim(sce.zeisel, "dens-SNE") <- dt
dm <- densmap(reducedDim(sce.zeisel, "PCA"), dens_frac = 0.4, dens_lambda = 0.4)
reducedDim(sce.zeisel, "densMAP") <- dm
sce.zeisel <- runUMAP(sce.zeisel) # for comparison
sce.zeisel <- runTSNE(sce.zeisel) # for comparison

ts <- reducedDim(sce.zeisel, "TSNE")
tu <- reducedDim(sce.zeisel, "UMAP")
ds <- scale(dt)
ts <- scale(ts)
du <- scale(dm)
tu <- scale(tu)

vars_ds <- colVars(ds[sce.zeisel$level1class == "astrocytes_ependymal", ])
vars_ts <- colVars(ts[sce.zeisel$level1class == "astrocytes_ependymal", ])
stopifnot(mean(vars_ds) > mean(vars_ts))
vars_ds
#> [1] 0.5256126 0.2784563
vars_ts
#>     TSNE1     TSNE2 
#> 0.5767240 0.1227339

vars_du <- colVars(du[sce.zeisel$level1class == "astrocytes_ependymal", ])
vars_tu <- colVars(tu[sce.zeisel$level1class == "astrocytes_ependymal", ])
stopifnot(mean(vars_du) > mean(vars_tu))
#> Error: mean(vars_du) > mean(vars_tu) is not TRUE
vars_du
#> [1] 0.1903438 0.1699268
vars_tu
#>     UMAP1     UMAP2 
#> 0.1802935 0.6826027

Session info

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.5.1 (2025-06-13)
#>  os       macOS Sequoia 15.7.1
#>  system   aarch64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Australia/Melbourne
#>  date     2025-11-07
#>  pandoc   3.6.3 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#>  quarto   1.7.32 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/quarto
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package              * version   date (UTC) lib source
#>  abind                  1.4-8     2024-09-12 [2] CRAN (R 4.5.0)
#>  alabaster.base         1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.matrix       1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.ranges       1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.sce          1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.schemas      1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.se           1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  AnnotationDbi        * 1.72.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  AnnotationFilter       1.34.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  AnnotationHub          4.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  assertthat             0.2.1     2019-03-21 [1] CRAN (R 4.5.0)
#>  basilisk               1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  beachmat               2.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  beeswarm               0.4.0     2021-06-01 [2] CRAN (R 4.5.0)
#>  Biobase              * 2.70.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocFileCache          3.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocGenerics         * 0.56.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocIO                 1.20.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocManager            1.30.26   2025-06-05 [2] CRAN (R 4.5.0)
#>  BiocNeighbors          2.4.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocParallel           1.44.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocSingular           1.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocVersion            3.22.0    2025-04-27 [1] Bioconductor 3.22 (R 4.5.0)
#>  Biostrings             2.78.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  bit                    4.6.0     2025-03-06 [2] CRAN (R 4.5.0)
#>  bit64                  4.6.0-1   2025-01-16 [2] CRAN (R 4.5.0)
#>  bitops                 1.0-9     2024-10-03 [2] CRAN (R 4.5.0)
#>  blob                   1.2.4     2023-03-17 [2] CRAN (R 4.5.0)
#>  bluster                1.20.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  cachem                 1.1.0     2024-05-16 [2] CRAN (R 4.5.0)
#>  cigarillo              1.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  cli                    3.6.5     2025-04-23 [2] CRAN (R 4.5.0)
#>  cluster                2.1.8.1   2025-03-12 [2] CRAN (R 4.5.1)
#>  codetools              0.2-20    2024-03-31 [2] CRAN (R 4.5.1)
#>  crayon                 1.5.3     2024-06-20 [2] CRAN (R 4.5.0)
#>  curl                   7.0.0     2025-08-19 [2] CRAN (R 4.5.0)
#>  DBI                    1.2.3     2024-06-02 [2] CRAN (R 4.5.0)
#>  dbplyr                 2.5.1     2025-09-10 [2] CRAN (R 4.5.1)
#>  DelayedArray           0.36.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  densvis              * 1.20.1    2025-11-04 [1] Bioconductor 3.22 (R 4.5.1)
#>  dichromat              2.0-0.1   2022-05-02 [1] CRAN (R 4.5.0)
#>  digest                 0.6.37    2024-08-19 [2] CRAN (R 4.5.0)
#>  dir.expiry             1.18.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  dplyr                  1.1.4     2023-11-17 [2] CRAN (R 4.5.0)
#>  dqrng                  0.4.1     2024-05-28 [2] CRAN (R 4.5.0)
#>  edgeR                  4.8.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  ensembldb              2.34.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  evaluate               1.0.5     2025-08-27 [2] CRAN (R 4.5.0)
#>  ExperimentHub          3.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  farver                 2.1.2     2024-05-13 [2] CRAN (R 4.5.0)
#>  fastmap                1.2.0     2024-05-15 [2] CRAN (R 4.5.0)
#>  filelock               1.0.3     2023-12-11 [2] CRAN (R 4.5.0)
#>  FNN                    1.1.4.1   2024-09-22 [2] CRAN (R 4.5.0)
#>  fs                     1.6.6     2025-04-12 [2] CRAN (R 4.5.0)
#>  generics             * 0.1.4     2025-05-09 [2] CRAN (R 4.5.0)
#>  GenomeInfoDb           1.46.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  GenomicAlignments      1.46.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  GenomicFeatures        1.62.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  GenomicRanges        * 1.62.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  ggbeeswarm             0.7.2     2023-04-29 [2] CRAN (R 4.5.0)
#>  ggplot2              * 4.0.0     2025-09-11 [1] CRAN (R 4.5.1)
#>  ggrepel                0.9.6     2024-09-07 [2] CRAN (R 4.5.0)
#>  glue                   1.8.0     2024-09-30 [2] CRAN (R 4.5.0)
#>  gridExtra              2.3       2017-09-09 [2] CRAN (R 4.5.0)
#>  gtable                 0.3.6     2024-10-25 [2] CRAN (R 4.5.0)
#>  gypsum                 1.6.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  h5mread                1.2.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  HDF5Array              1.38.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  htmltools              0.5.8.1   2024-04-04 [1] CRAN (R 4.5.0)
#>  httr                   1.4.7     2023-08-15 [2] CRAN (R 4.5.0)
#>  httr2                  1.2.1     2025-07-22 [1] CRAN (R 4.5.1)
#>  igraph                 2.2.1     2025-10-27 [2] CRAN (R 4.5.0)
#>  IRanges              * 2.44.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  irlba                  2.3.5.1   2022-10-03 [2] CRAN (R 4.5.0)
#>  jsonlite               2.0.0     2025-03-27 [2] CRAN (R 4.5.0)
#>  KEGGREST               1.50.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  knitr                  1.50      2025-03-16 [1] CRAN (R 4.5.0)
#>  lattice                0.22-7    2025-04-02 [2] CRAN (R 4.5.1)
#>  lazyeval               0.2.2     2019-03-15 [1] CRAN (R 4.5.0)
#>  lifecycle              1.0.4     2023-11-07 [2] CRAN (R 4.5.0)
#>  limma                  3.66.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  locfit                 1.5-9.12  2025-03-05 [2] CRAN (R 4.5.0)
#>  magrittr               2.0.4     2025-09-12 [2] CRAN (R 4.5.1)
#>  Matrix                 1.7-4     2025-08-28 [2] CRAN (R 4.5.0)
#>  MatrixGenerics       * 1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  matrixStats          * 1.5.0     2025-01-07 [2] CRAN (R 4.5.0)
#>  memoise                2.0.1     2021-11-26 [2] CRAN (R 4.5.0)
#>  metapod                1.18.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  org.Mm.eg.db         * 3.22.0    2025-10-14 [2] Bioconductor
#>  pillar                 1.11.1    2025-09-17 [2] CRAN (R 4.5.1)
#>  pkgconfig              2.0.3     2019-09-22 [2] CRAN (R 4.5.0)
#>  png                    0.1-8     2022-11-29 [2] CRAN (R 4.5.0)
#>  ProtGenerics           1.42.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  R6                     2.6.1     2025-02-15 [2] CRAN (R 4.5.0)
#>  rappdirs               0.3.3     2021-01-31 [2] CRAN (R 4.5.0)
#>  RColorBrewer           1.1-3     2022-04-03 [2] CRAN (R 4.5.0)
#>  Rcpp                   1.1.0     2025-07-02 [1] CRAN (R 4.5.1)
#>  RCurl                  1.98-1.17 2025-03-22 [2] CRAN (R 4.5.0)
#>  reprex                 2.1.1     2024-07-06 [1] CRAN (R 4.5.0)
#>  restfulr               0.0.16    2025-06-27 [1] CRAN (R 4.5.1)
#>  reticulate             1.44.0    2025-10-25 [1] CRAN (R 4.5.0)
#>  rhdf5                  2.54.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  rhdf5filters           1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  Rhdf5lib               1.32.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  rjson                  0.2.23    2024-09-16 [2] CRAN (R 4.5.0)
#>  rlang                  1.1.6     2025-04-11 [2] CRAN (R 4.5.0)
#>  rmarkdown              2.30      2025-09-28 [1] CRAN (R 4.5.1)
#>  Rsamtools              2.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  RSQLite                2.4.3     2025-08-20 [1] CRAN (R 4.5.1)
#>  rstudioapi             0.17.1    2024-10-22 [1] CRAN (R 4.5.0)
#>  rsvd                   1.0.5     2021-04-16 [2] CRAN (R 4.5.0)
#>  rtracklayer            1.70.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  Rtsne                  0.17      2023-12-07 [2] CRAN (R 4.5.0)
#>  S4Arrays               1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  S4Vectors            * 0.48.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  S7                     0.2.0     2024-11-07 [1] CRAN (R 4.5.0)
#>  ScaledMatrix           1.18.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  scales                 1.4.0     2025-04-24 [2] CRAN (R 4.5.0)
#>  scater               * 1.38.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  scran                * 1.38.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  scRNAseq             * 2.24.0    2025-11-04 [1] Bioconductor 3.22 (R 4.5.1)
#>  scuttle              * 1.20.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  Seqinfo              * 1.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  sessioninfo            1.2.3     2025-02-05 [1] CRAN (R 4.5.0)
#>  SingleCellExperiment * 1.32.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  SparseArray            1.10.1    2025-10-31 [1] Bioconductor 3.22 (R 4.5.1)
#>  statmod                1.5.1     2025-10-09 [2] CRAN (R 4.5.0)
#>  SummarizedExperiment * 1.40.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  tibble                 3.3.0     2025-06-08 [2] CRAN (R 4.5.0)
#>  tidyselect             1.2.1     2024-03-11 [2] CRAN (R 4.5.0)
#>  UCSC.utils             1.6.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  uwot                   0.2.3     2025-02-24 [2] CRAN (R 4.5.0)
#>  vctrs                  0.6.5     2023-12-01 [2] CRAN (R 4.5.0)
#>  vipor                  0.4.7     2023-12-18 [2] CRAN (R 4.5.0)
#>  viridis                0.6.5     2024-01-29 [2] CRAN (R 4.5.0)
#>  viridisLite            0.4.2     2023-05-02 [2] CRAN (R 4.5.0)
#>  withr                  3.0.2     2024-10-28 [2] CRAN (R 4.5.0)
#>  xfun                   0.54      2025-10-30 [1] CRAN (R 4.5.1)
#>  XML                    3.99-0.19 2025-08-22 [1] CRAN (R 4.5.1)
#>  XVector                0.50.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  yaml                   2.3.10    2024-07-26 [2] CRAN (R 4.5.0)
#> 
#>  [1] /Users/hickey/Library/R/arm64/4.5/library
#>  [2] /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library
#>  * ── Packages attached to the search path.
#> 
#> ─ Python configuration ───────────────────────────────────────────────────────
#>  python:         /Users/hickey/Library/Caches/org.R-project.R/R/basilisk/1.22.0/densvis/1.20.1/densvis/bin/python
#>  libpython:      /Users/hickey/.pyenv/versions/3.12.10/lib/libpython3.12.dylib
#>  pythonhome:     /Users/hickey/Library/Caches/org.R-project.R/R/basilisk/1.22.0/densvis/1.20.1/densvis:/Users/hickey/Library/Caches/org.R-project.R/R/basilisk/1.22.0/densvis/1.20.1/densvis
#>  version:        3.12.10 (main, Nov  6 2025, 12:41:29) [Clang 17.0.0 (clang-1700.0.13.5)]
#>  numpy:          /Users/hickey/Library/Caches/org.R-project.R/R/basilisk/1.22.0/densvis/1.20.1/densvis/lib/python3.12/site-packages/numpy
#>  numpy_version:  2.3.4
#>  
#>  NOTE: Python version was forced by use_python() function
#> 
#> ──────────────────────────────────────────────────────────────────────────────

Linux (x86_64)

#--- loading ---#
suppressPackageStartupMessages(library(scRNAseq))
sce.zeisel <- ZeiselBrainData()
suppressPackageStartupMessages(library(scater))
sce.zeisel <- aggregateAcrossFeatures(sce.zeisel,
                                      id=sub("_loc[0-9]+$", "", rownames(sce.zeisel)))
#--- gene-annotation ---#
suppressPackageStartupMessages(library(org.Mm.eg.db))
rowData(sce.zeisel)$Ensembl <- mapIds(org.Mm.eg.db,
                                      keys=rownames(sce.zeisel), keytype="SYMBOL", column="ENSEMBL")
#> 'select()' returned 1:many mapping between keys and columns
#--- quality-control ---#
stats <- perCellQCMetrics(sce.zeisel, subsets=list(
  Mt=rowData(sce.zeisel)$featureType=="mito"))
qc <- quickPerCellQC(stats, percent_subsets=c("altexps_ERCC_percent",
                                              "subsets_Mt_percent"))
sce.zeisel <- sce.zeisel[,!qc$discard]
#--- normalization ---#
library(scran)
set.seed(1000)
clusters <- quickCluster(sce.zeisel)
sce.zeisel <- computeSumFactors(sce.zeisel, cluster=clusters)
sce.zeisel <- logNormCounts(sce.zeisel)
#--- variance-modelling ---#
dec.zeisel <- modelGeneVarWithSpikes(sce.zeisel, "ERCC")
top.hvgs <- getTopHVGs(dec.zeisel, prop=0.1)
library(scran)
top.zeisel <- getTopHVGs(dec.zeisel, n=2000)
set.seed(100)
sce.zeisel <- fixedPCA(sce.zeisel, subset.row=top.zeisel)

set.seed(123)
library(densvis)
dt <- densne(reducedDim(sce.zeisel, "PCA"), dens_frac = 0.4, dens_lambda = 0.4)
reducedDim(sce.zeisel, "dens-SNE") <- dt
dm <- densmap(reducedDim(sce.zeisel, "PCA"), dens_frac = 0.4, dens_lambda = 0.4)
reducedDim(sce.zeisel, "densMAP") <- dm
sce.zeisel <- runUMAP(sce.zeisel) # for comparison
sce.zeisel <- runTSNE(sce.zeisel) # for comparison

ts <- reducedDim(sce.zeisel, "TSNE")
tu <- reducedDim(sce.zeisel, "UMAP")
ds <- scale(dt)
ts <- scale(ts)
du <- scale(dm)
tu <- scale(tu)

vars_ds <- colVars(ds[sce.zeisel$level1class == "astrocytes_ependymal", ])
vars_ts <- colVars(ts[sce.zeisel$level1class == "astrocytes_ependymal", ])
stopifnot(mean(vars_ds) > mean(vars_ts))
vars_ds
#> [1] 0.5667786 0.2703578
vars_ts
#>     TSNE1     TSNE2 
#> 0.5781887 0.1228506

vars_du <- colVars(du[sce.zeisel$level1class == "astrocytes_ependymal", ])
vars_tu <- colVars(tu[sce.zeisel$level1class == "astrocytes_ependymal", ])
stopifnot(mean(vars_du) > mean(vars_tu))
#> Error: mean(vars_du) > mean(vars_tu) is not TRUE
vars_du
#> [1] 0.1654369 0.2237998
vars_tu
#>     UMAP1     UMAP2 
#> 0.2775908 0.5723159

Session info

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.5.2 (2025-10-31)
#>  os       Red Hat Enterprise Linux 9.3 (Plow)
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Australia/Melbourne
#>  date     2025-11-07
#>  pandoc   3.6.3 @ /usr/lib/rstudio-server/bin/quarto/bin/tools/x86_64/ (via rmarkdown)
#>  quarto   1.7.32 @ /usr/lib/rstudio-server/bin/quarto/bin/quarto
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package              * version   date (UTC) lib source
#>  abind                  1.4-8     2024-09-12 [1] CRAN (R 4.5.0)
#>  alabaster.base         1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.matrix       1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.ranges       1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.sce          1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.2)
#>  alabaster.schemas      1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  alabaster.se           1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  AnnotationDbi        * 1.72.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  AnnotationFilter       1.34.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  AnnotationHub          4.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  assertthat             0.2.1     2019-03-21 [1] CRAN (R 4.5.0)
#>  basilisk               1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  beachmat               2.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  beeswarm               0.4.0     2021-06-01 [1] CRAN (R 4.5.0)
#>  Biobase              * 2.70.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocFileCache          3.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocGenerics         * 0.56.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocIO                 1.20.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocManager            1.30.26   2025-06-05 [1] CRAN (R 4.5.0)
#>  BiocNeighbors          2.4.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocParallel           1.44.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocSingular           1.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  BiocVersion            3.22.0    2025-10-07 [1] Bioconductor 3.22 (R 4.5.1)
#>  Biostrings             2.78.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  bit                    4.6.0     2025-03-06 [1] CRAN (R 4.5.0)
#>  bit64                  4.6.0-1   2025-01-16 [1] CRAN (R 4.5.0)
#>  bitops                 1.0-9     2024-10-03 [1] CRAN (R 4.5.0)
#>  blob                   1.2.4     2023-03-17 [1] CRAN (R 4.5.0)
#>  bluster                1.20.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  cachem                 1.1.0     2024-05-16 [1] CRAN (R 4.5.0)
#>  cigarillo              1.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  cli                    3.6.5     2025-04-23 [1] CRAN (R 4.5.0)
#>  cluster                2.1.8.1   2025-03-12 [2] CRAN (R 4.5.2)
#>  codetools              0.2-20    2024-03-31 [2] CRAN (R 4.5.2)
#>  crayon                 1.5.3     2024-06-20 [1] CRAN (R 4.5.0)
#>  curl                   7.0.0     2025-08-19 [1] CRAN (R 4.5.1)
#>  DBI                    1.2.3     2024-06-02 [1] CRAN (R 4.5.0)
#>  dbplyr                 2.5.1     2025-09-10 [1] CRAN (R 4.5.1)
#>  DelayedArray           0.36.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  densvis              * 1.20.1    2025-11-04 [1] Bioconductor 3.22 (R 4.5.2)
#>  digest                 0.6.37    2024-08-19 [1] CRAN (R 4.5.0)
#>  dir.expiry             1.18.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  dplyr                  1.1.4     2023-11-17 [1] CRAN (R 4.5.0)
#>  dqrng                  0.4.1     2024-05-28 [1] CRAN (R 4.5.0)
#>  edgeR                  4.8.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  ensembldb              2.34.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  evaluate               1.0.5     2025-08-27 [1] CRAN (R 4.5.1)
#>  ExperimentHub          3.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  farver                 2.1.2     2024-05-13 [1] CRAN (R 4.5.0)
#>  fastmap                1.2.0     2024-05-15 [1] CRAN (R 4.5.0)
#>  filelock               1.0.3     2023-12-11 [1] CRAN (R 4.5.0)
#>  FNN                    1.1.4.1   2024-09-22 [1] CRAN (R 4.5.0)
#>  fs                     1.6.6     2025-04-12 [1] CRAN (R 4.5.0)
#>  generics             * 0.1.4     2025-05-09 [1] CRAN (R 4.5.0)
#>  GenomeInfoDb           1.46.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  GenomicAlignments      1.46.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  GenomicFeatures        1.62.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  GenomicRanges        * 1.62.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  ggbeeswarm             0.7.2     2023-04-29 [1] CRAN (R 4.5.0)
#>  ggplot2              * 4.0.0     2025-09-11 [1] CRAN (R 4.5.1)
#>  ggrepel                0.9.6     2024-09-07 [1] CRAN (R 4.5.0)
#>  glue                   1.8.0     2024-09-30 [1] CRAN (R 4.5.0)
#>  gridExtra              2.3       2017-09-09 [1] CRAN (R 4.5.0)
#>  gtable                 0.3.6     2024-10-25 [1] CRAN (R 4.5.0)
#>  gypsum                 1.6.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  h5mread                1.2.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  HDF5Array              1.38.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  htmltools              0.5.8.1   2024-04-04 [1] CRAN (R 4.5.0)
#>  httr                   1.4.7     2023-08-15 [1] CRAN (R 4.5.0)
#>  httr2                  1.2.1     2025-07-22 [1] CRAN (R 4.5.1)
#>  igraph                 2.2.1     2025-10-27 [1] CRAN (R 4.5.1)
#>  IRanges              * 2.44.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  irlba                  2.3.5.1   2022-10-03 [1] CRAN (R 4.5.0)
#>  jsonlite               2.0.0     2025-03-27 [1] CRAN (R 4.5.0)
#>  KEGGREST               1.50.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  knitr                  1.50      2025-03-16 [1] CRAN (R 4.5.0)
#>  lattice                0.22-7    2025-04-02 [2] CRAN (R 4.5.2)
#>  lazyeval               0.2.2     2019-03-15 [1] CRAN (R 4.5.0)
#>  lifecycle              1.0.4     2023-11-07 [1] CRAN (R 4.5.0)
#>  limma                  3.66.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  locfit                 1.5-9.12  2025-03-05 [1] CRAN (R 4.5.0)
#>  magrittr               2.0.4     2025-09-12 [1] CRAN (R 4.5.1)
#>  Matrix                 1.7-4     2025-08-28 [1] CRAN (R 4.5.1)
#>  MatrixGenerics       * 1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  matrixStats          * 1.5.0     2025-01-07 [1] CRAN (R 4.5.0)
#>  memoise                2.0.1     2021-11-26 [1] CRAN (R 4.5.0)
#>  metapod                1.18.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  org.Mm.eg.db         * 3.22.0    2025-10-30 [1] Bioconductor
#>  pillar                 1.11.1    2025-09-17 [1] CRAN (R 4.5.1)
#>  pkgconfig              2.0.3     2019-09-22 [1] CRAN (R 4.5.0)
#>  png                    0.1-8     2022-11-29 [1] CRAN (R 4.5.0)
#>  ProtGenerics           1.42.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  R6                     2.6.1     2025-02-15 [1] CRAN (R 4.5.0)
#>  rappdirs               0.3.3     2021-01-31 [1] CRAN (R 4.5.0)
#>  RColorBrewer           1.1-3     2022-04-03 [1] CRAN (R 4.5.0)
#>  Rcpp                   1.1.0     2025-07-02 [1] CRAN (R 4.5.0)
#>  RCurl                  1.98-1.17 2025-03-22 [1] CRAN (R 4.5.0)
#>  reprex                 2.1.1     2024-07-06 [1] CRAN (R 4.5.0)
#>  restfulr               0.0.16    2025-06-27 [1] CRAN (R 4.5.0)
#>  reticulate             1.44.0    2025-10-25 [1] CRAN (R 4.5.1)
#>  rhdf5                  2.54.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  rhdf5filters           1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  Rhdf5lib               1.32.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  rjson                  0.2.23    2024-09-16 [1] CRAN (R 4.5.0)
#>  rlang                  1.1.6     2025-04-11 [1] CRAN (R 4.5.0)
#>  rmarkdown              2.30      2025-09-28 [1] CRAN (R 4.5.1)
#>  Rsamtools              2.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  RSQLite                2.4.3     2025-08-20 [1] CRAN (R 4.5.1)
#>  rstudioapi             0.17.1    2024-10-22 [1] CRAN (R 4.5.0)
#>  rsvd                   1.0.5     2021-04-16 [1] CRAN (R 4.5.0)
#>  rtracklayer            1.70.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  Rtsne                  0.17      2023-12-07 [1] CRAN (R 4.5.0)
#>  S4Arrays               1.10.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  S4Vectors            * 0.48.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  S7                     0.2.0     2024-11-07 [1] CRAN (R 4.5.1)
#>  ScaledMatrix           1.18.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  scales                 1.4.0     2025-04-24 [1] CRAN (R 4.5.0)
#>  scater               * 1.38.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  scran                * 1.38.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  scRNAseq             * 2.24.0    2025-11-04 [1] Bioconductor 3.22 (R 4.5.2)
#>  scuttle              * 1.20.0    2025-10-30 [1] Bioconductor 3.22 (R 4.5.2)
#>  Seqinfo              * 1.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  sessioninfo            1.2.3     2025-02-05 [1] CRAN (R 4.5.0)
#>  SingleCellExperiment * 1.32.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  SparseArray            1.10.1    2025-10-31 [1] Bioconductor 3.22 (R 4.5.2)
#>  statmod                1.5.1     2025-10-09 [1] CRAN (R 4.5.1)
#>  SummarizedExperiment * 1.40.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  tibble                 3.3.0     2025-06-08 [1] CRAN (R 4.5.0)
#>  tidyselect             1.2.1     2024-03-11 [1] CRAN (R 4.5.0)
#>  UCSC.utils             1.6.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  uwot                   0.2.3     2025-02-24 [1] CRAN (R 4.5.0)
#>  vctrs                  0.6.5     2023-12-01 [1] CRAN (R 4.5.0)
#>  vipor                  0.4.7     2023-12-18 [1] CRAN (R 4.5.0)
#>  viridis                0.6.5     2024-01-29 [1] CRAN (R 4.5.0)
#>  viridisLite            0.4.2     2023-05-02 [1] CRAN (R 4.5.0)
#>  withr                  3.0.2     2024-10-28 [1] CRAN (R 4.5.0)
#>  xfun                   0.54      2025-10-30 [1] CRAN (R 4.5.1)
#>  XML                    3.99-0.19 2025-08-22 [1] CRAN (R 4.5.1)
#>  XVector                0.50.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
#>  yaml                   2.3.10    2024-07-26 [1] CRAN (R 4.5.0)
#> 
#>  [1] /home/users/allstaff/hickey/R/x86_64-pc-linux-gnu-library/4.5
#>  [2] /stornext/System/data/software/rhel/9/base/tools/R/4.5.2/lib64/R/library
#>  * ── Packages attached to the search path.
#> 
#> ─ Python configuration ───────────────────────────────────────────────────────
#>  python:         /home/users/allstaff/hickey/.cache/R/basilisk/1.22.0/densvis/1.20.1/densvis/bin/python
#>  libpython:      /home/users/allstaff/hickey/.pyenv/versions/3.12.10/lib/libpython3.12.so
#>  pythonhome:     /home/users/allstaff/hickey/.cache/R/basilisk/1.22.0/densvis/1.20.1/densvis:/home/users/allstaff/hickey/.cache/R/basilisk/1.22.0/densvis/1.20.1/densvis
#>  version:        3.12.10 (main, Nov  7 2025, 09:53:35) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)]
#>  numpy:          /home/users/allstaff/hickey/.cache/R/basilisk/1.22.0/densvis/1.20.1/densvis/lib/python3.12/site-packages/numpy
#>  numpy_version:  2.3.4
#>  
#>  NOTE: Python version was forced by use_python() function
#> 
#> ──────────────────────────────────────────────────────────────────────────────

@alanocallaghan
Copy link
Collaborator Author

alanocallaghan commented Nov 6, 2025

Hm that's disconcerting as I should have had up-to-date devel and release installs on Linux that both passed fine.

The difference between platforms is also a bit worrying, seemingly for all 4 methods? (t-SNE and UMAP with and without density weighting).

I will set this up on github actions so I can test across platforms rather than relying just on my local build, that might be relying on some errant caching...

@alanocallaghan
Copy link
Collaborator Author

Righto, I changed the checks and disabled UMAP as that seems to be the one suffering from platform inconsistency.

You've alluded to discussions elsewhere a few times; is this something I should be aware of? I've not seen anything on Zulip

@PeteHaitch
Copy link
Collaborator

PeteHaitch commented Nov 19, 2025

Thanks, Alan, it seems to be working for me now on arm64 (now using BioC 3.23).

You've alluded to discussions elsewhere a few times; is this something I should be aware of? I've not seen anything on Zulip

Sorry, I now see you weren't on the email from Lori and Vince.
I'm not sure why it was not done on Zulip.
In short, PCAtools depends on ggalt which was removed from CRAN and PCAtools has been failing on Bioconductor for some time, according to Vince.

@PeteHaitch PeteHaitch merged commit 03d4cfc into devel Nov 19, 2025
1 check failed
PeteHaitch added a commit that referenced this pull request Nov 19, 2025
@alanocallaghan alanocallaghan deleted the alanocallaghan-patch-1 branch November 19, 2025 05:22
@alanocallaghan
Copy link
Collaborator Author

Cheers, no worries re emails just wanted to be sure I hadn't snoozed something important. And yeah I came across pcatools failing on an unrelated project right before we move to publish 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants