diff --git a/DESCRIPTION b/DESCRIPTION index 25fda37bb..e30bbb3a8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: Seurat -Version: 5.2.0 +Version: 5.2.1 Title: Tools for Single Cell Genomics Description: A toolkit for quality control, analysis, and exploration of single cell RNA sequencing data. 'Seurat' aims to enable users to identify and interpret sources of heterogeneity from single cell transcriptomic measurements, and to integrate diverse types of single cell data. See Satija R, Farrell J, Gennert D, et al (2015) , Macosko E, Basu A, Satija R, et al (2015) , Stuart T, Butler A, et al (2019) , and Hao, Hao, et al (2020) for more details. Authors@R: c( diff --git a/NEWS.md b/NEWS.md index b7d6e9359..c0269fdf8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# Seurat 5.2.1 (2025-01-23) + +## Changes +- Fixed `test_find_clusters.R` to accommodate variability in label assignments given by `FindClusters` across different systems ([#9641](https://github.com/satijalab/seurat/pull/9641)) + # Seurat 5.2.0 (2024-12-20) ## Changes @@ -9,6 +14,7 @@ - Updated `RunPCA` to use the `BPCells`-provided SVD solver on `BPCells` matrices; updated `JackStraw` to support `BPCells` matrices ([#8271](https://github.com/satijalab/seurat/pull/8271)) - Fixed `RunPCA` to avoid converting `BPCells` matrices into dense matrices - significantly reduces the function's memory usage when running on `BPCells` matrices ([#8966](https://github.com/satijalab/seurat/pull/8966)) - Updated `RunSLSI` to support `BPCells` matrices +- Fixed `DietSeurat` so that the `layers` parameter is respected ([#8197](https://github.com/satijalab/seurat/pull/8197)) - Updated `RunUMAP` to support `umap-learn` version >= 0.5.0 ([#9559](https://github.com/satijalab/seurat/pull/9559)) - Updated `LoadXenium` and `ReadXenium` to accommodate the output from `XOA` v3.0; updated `LoadXenium` to provide more fine-grained control over the datatypes parsed in, including nucleus segmentation masks, segmentation methods, and other experimental metadata; updated `ReadXenium` to load cell_feature_matrix.h5 when present in favor of the MEX format files; updated `ReadXenium` to load .parquet files using `arrow` instead of .csv.gz files to support XOA 3.0 ([#8604](https://github.com/satijalab/seurat/pull/8605)) - Fixed `LoadXenium` to accommodate datasets without "Blank Codeword" or "Unassigned Codeword" matrices([#9135](https://github.com/satijalab/seurat/pull/9135)) diff --git a/cran-comments.md b/cran-comments.md index fed512508..371508a27 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,34 +1,28 @@ -# Seurat v5.2.0 +# Seurat v5.2.1 +This update is a small patch release to address failing M1mac checks ahead of the deadline on 2025-01-28. ## Test environments -* local ubuntu 20.04 install, R 4.4.2 -* win-builder (oldrelease, release, devel) -* mac-builder (devel) - -We were unable to test on r-release on mac-builder because the portal seemed to point to the wrong version. +* macOS 14.6.1 (Apple M3, arm64, local install): R-release +* Ubuntu 22.04 (Docker container): R-release +* [win-builder](https://win-builder.r-project.org/): R-oldrelease, R-release, R-devel +* [macOS builder](https://mac.r-project.org/macbuilder/submit.html): R-release, R-devel ## R CMD check results +There were no ERRORs or WARNINGs but there was one NOTE. -There were no ERRORs or WARNINGs - -There was one NOTE - -❯ checking CRAN incoming feasibility ... [12s/61s] NOTE +``` +❯ checking CRAN incoming feasibility ... [15s/92s] NOTE Maintainer: ‘Rahul Satija ’ Suggests or Enhances not in mainstream repositories: BPCells, enrichR, presto Availability using Additional_repositories specification: BPCells yes https://bnprks.r-universe.dev - enrichR yes https://cran.r-universe.dev + enrichR yes https://satijalab.r-universe.dev presto yes https://satijalab.r-universe.dev +``` -BPCells, enrichR, and presto are hosted on R-universe and used conditionally in Seurat. - -## Downstream dependencies - -There are 3 packages that depend on Seurat: CACIMAR, scCustomize, and SCdeconR; this update does not impact their functionality. - -There are 34 packages that import Seurat: AnanseSeurat, APackOfTheClones, bbknnR, CAESAR.Suite, CAMML, DR.SC, DWLS, GeneNMF, ggsector, mixhvg, nebula, Platypus, PoweREST, PRECAST, ProFAST, rPanglaoDB, scAnnotate, scaper, sccca, scDiffCom, scGate, scGOclust, SCIntRuler, scMappR, scperturbR, scpoisson, SCRIP, scRNAstat, SignacX, SoupX, SpaCCI, SPECK, STREAK, and tidyseurat; this update does not impact their functionality. +`BPCells`, `enrichR`, and `presto` are hosted on R-universe and used conditionally in `Seurat`. -There are 27 packages that suggest Seurat: BisqueRNA, Canek, cellpypes, CIARA, ClustAssess, clustree, combiroc, conos, countland, CRMetrics, CytoSimplex, DIscBIO, dyngen, easybio, grandR, harmony, laminr, mxfda, RESET, rliger, SCORPIUS, SCpubr, scregclust, Signac, SuperCell, treefit, and VAM; this update does not impact their functionality. +## Reverse dependency check results +We checked 65 reverse dependencies, comparing `R CMD check` results across the CRAN and dev versions of this package, and saw no new problems. diff --git a/tests/testthat/test_find_clusters.R b/tests/testthat/test_find_clusters.R index 0da9eb587..8e101a9cf 100644 --- a/tests/testthat/test_find_clusters.R +++ b/tests/testthat/test_find_clusters.R @@ -34,13 +34,17 @@ context("FindClusters") test_that("Smoke test for `FindClusters`", { test_case <- get_test_data() - # Spot check cluster assignments with using defaults. + # Validate cluster assignments using default parameters. results <- FindClusters(test_case)$seurat_clusters - expect_equal(results[[1]], factor(3, levels=0:5)) - expect_equal(results[[15]], factor(4, levels=0:5)) - expect_equal(results[[24]], factor(0, levels=0:5)) - expect_equal(results[[72]], factor(5, levels=0:5)) - expect_equal(results[[length(results)]], factor(2, levels=0:5)) + # Check that every cell was assigned to a cluster label. + expect_false(any(is.na(results))) + # Check that the expected cluster labels were assigned. + expect_equal(as.numeric(levels(results)), c(0, 1, 2, 3, 4, 5)) + # Check that the cluster sizes match the expected distribution. + expect_equal( + as.numeric(sort(table(results))), + c(9, 10, 10, 11, 20, 20) + ) # Check that every clustering algorithm can be run without errors. expect_no_error(FindClusters(test_case, algorithm = 1))