From a55eb2fb1329f6ca6b3a2ff62b086dac27ed8f70 Mon Sep 17 00:00:00 2001 From: AustinHartman Date: Fri, 15 Sep 2023 20:27:29 -0400 Subject: [PATCH 1/8] update news, readme, desc --- DESCRIPTION | 4 ++-- NEWS.md | 2 +- README.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 12b6172af..f56d32af1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: Seurat -Version: 4.3.0.9013 -Date: 2023-07-21 +Version: 4.4.0 +Date: 2023-09-15 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 6a28c5159..94b32876f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# Unreleased +# Seurat 4.4.0 (2023-09-15) ## Added - Added parallelization support with speed improvements for `PrepSCTFindMarkers` diff --git a/README.md b/README.md index 427ab3a20..f9dc4e4d7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![CRAN Version](https://www.r-pkg.org/badges/version/Seurat)](https://cran.r-project.org/package=Seurat) [![CRAN Downloads](https://cranlogs.r-pkg.org/badges/Seurat)](https://cran.r-project.org/package=Seurat) -# Seurat v4.3.0 +# Seurat v4.4.0 Seurat is an R toolkit for single cell genomics, developed and maintained by the Satija Lab at NYGC. From cfd7eca179b314938ab83376a3d13f4ca96ab409 Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 16:29:39 -0400 Subject: [PATCH 2/8] Import purrr for imap --- R/preprocessing.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/preprocessing.R b/R/preprocessing.R index b17506ec3..d19876978 100644 --- a/R/preprocessing.R +++ b/R/preprocessing.R @@ -488,6 +488,7 @@ GetResidual <- function( #' @importFrom png readPNG #' @importFrom grid rasterGrob #' @importFrom jsonlite fromJSON +#' @importFrom purrr imap #' #' @export #' @concept preprocessing @@ -519,7 +520,7 @@ Load10X_Spatial <- function( if (to.upper) { data <- imap(data, ~{ - rownames(.x) <- toupper(rownames(.x)) + rownames(.x) <- toupper(x = rownames(.x)) .x }) } From 643a57d2e10eda962b7b8ae4d0e35b5f8a590b21 Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 16:30:12 -0400 Subject: [PATCH 3/8] Fix checks for rasterization messages Fixes https://github.com/satijalab/seurat/pull/7842 --- R/visualization.R | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/R/visualization.R b/R/visualization.R index c2e61c88c..d3edd0f4a 100644 --- a/R/visualization.R +++ b/R/visualization.R @@ -4009,7 +4009,7 @@ SpatialPlot <- function( } # Get feature max for individual feature - if (!(is.null(x = keep.scale)) && keep.scale == "feature" && class(x = data[, features[j]]) != "factor") { + if (!(is.null(x = keep.scale)) && keep.scale == "feature" && !inherits(x = data[, features[j]], what = "factor") ) { max.feature.value <- max(data[, features[j]]) } @@ -4085,7 +4085,7 @@ SpatialPlot <- function( } # Plot multiple images depending on keep.scale - if (!(is.null(x = keep.scale)) && class(x = data[, features[j]]) != "factor") { + if (!(is.null(x = keep.scale)) && !inherits(x = data[, features[j]], "factor")) { plot <- suppressMessages(plot & scale_fill_gradientn(colors = SpatialColors(n = 100), limits = c(NA, max.feature.value))) } @@ -4885,7 +4885,7 @@ AutoPointSize <- function(data, raster = NULL) { #' hexadecimal codes #' @param threshold Intensity threshold for light/dark cutoff; intensities #' greater than \code{theshold} yield \code{dark}, others yield \code{light} -#' @param w3c Use \href{http://www.w3.org/TR/WCAG20/}{W3C} formula for calculating +#' @param w3c Use \href{https://www.w3.org/TR/WCAG20/}{W3C} formula for calculating #' background text color; ignores \code{threshold} #' @param dark Color for dark text #' @param light Color for light text @@ -7802,7 +7802,7 @@ globalVariables(names = '..density..', package = 'Seurat') #' @param cols An optional vector of colors to use #' @param pt.size Point size for the plot #' @param smooth Make a smoothed scatter plot -#' @param rows.highight A vector of rows to highlight (like cells.highlight in +#' @param rows.highlight A vector of rows to highlight (like cells.highlight in #' \code{\link{SingleDimPlot}}) #' @param legend.title Optional legend title #' @param raster Convert points to raster format, default is \code{NULL} @@ -7842,7 +7842,7 @@ SingleCorPlot <- function( jitter = TRUE ) { pt.size <- pt.size %||% AutoPointSize(data = data, raster = raster) - if ((nrow(x = data) > 1e5) & !isFALSE(raster)){ + if ((nrow(x = data) > 1e5) & !is.null(x = raster)){ message("Rasterizing points since number of points exceeds 100,000.", "\nTo disable this behavior set `raster=FALSE`") } @@ -8051,7 +8051,7 @@ SingleDimPlot <- function( raster = NULL, raster.dpi = NULL ) { - if ((nrow(x = data) > 1e5) & !isFALSE(raster)){ + if ((nrow(x = data) > 1e5) & is.null(x = raster)){ message("Rasterizing points since number of points exceeds 100,000.", "\nTo disable this behavior set `raster=FALSE`") } @@ -8245,7 +8245,7 @@ SingleExIPlot <- function( if (PackageCheck('ggrastr', error = FALSE)) { # Set rasterization to true if ggrastr is installed and # number of points exceeds 100,000 - if ((nrow(x = data) > 1e5) & !isFALSE(raster)){ + if ((nrow(x = data) > 1e5) & is.null(x = raster)){ message("Rasterizing points since number of points exceeds 100,000.", "\nTo disable this behavior set `raster=FALSE`") # change raster to TRUE From e577c8f737c903f20ee68c292e5ea0586e24b96b Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 16:31:35 -0400 Subject: [PATCH 4/8] Updates for latest CRAN checks --- inst/CITATION | 106 ++++++++++++++++++++++++-------------------- src/Makevars | 2 +- src/integration.cpp | 34 +++++++++----- 3 files changed, 80 insertions(+), 62 deletions(-) diff --git a/inst/CITATION b/inst/CITATION index 4aaa4d01f..bcc1f5593 100644 --- a/inst/CITATION +++ b/inst/CITATION @@ -1,31 +1,33 @@ citHeader("To cite Seurat in publications, please use:") -citEntry(entry = "article", - author = personList(as.person("Yuhan Hao"), - as.person("Stephanie Hao"), - as.person("Erica Andersen-Nissen"), - as.person("William M. Mauck III"), - as.person("Shiwei Zheng"), - as.person("Andrew Butler"), - as.person("Maddie J. Lee"), - as.person("Aaron J. Wilk"), - as.person("Charlotte Darby"), - as.person("Michael Zagar"), - as.person("Paul Hoffman"), - as.person("Marlon Stoeckius"), - as.person("Efthymia Papalexi"), - as.person("Eleni P. Mimitou"), - as.person("Jaison Jain"), - as.person("Avi Srivastava"), - as.person("Tim Stuart"), - as.person("Lamar B. Fleming"), - as.person("Bertrand Yeung"), - as.person("Angela J. Rogers"), - as.person("Juliana M. McElrath"), - as.person("Catherine A. Blish"), - as.person("Raphael Gottardo"), - as.person("Peter Smibert"), - as.person("Rahul Satija")), +bibentry(bibtype = "article", + author = c( + as.person("Yuhan Hao"), + as.person("Stephanie Hao"), + as.person("Erica Andersen-Nissen"), + as.person("William M. Mauck III"), + as.person("Shiwei Zheng"), + as.person("Andrew Butler"), + as.person("Maddie J. Lee"), + as.person("Aaron J. Wilk"), + as.person("Charlotte Darby"), + as.person("Michael Zagar"), + as.person("Paul Hoffman"), + as.person("Marlon Stoeckius"), + as.person("Efthymia Papalexi"), + as.person("Eleni P. Mimitou"), + as.person("Jaison Jain"), + as.person("Avi Srivastava"), + as.person("Tim Stuart"), + as.person("Lamar B. Fleming"), + as.person("Bertrand Yeung"), + as.person("Angela J. Rogers"), + as.person("Juliana M. McElrath"), + as.person("Catherine A. Blish"), + as.person("Raphael Gottardo"), + as.person("Peter Smibert"), + as.person("Rahul Satija") + ), title = "Integrated analysis of multimodal single-cell data", journal = "Cell", year = "2021", @@ -34,17 +36,19 @@ citEntry(entry = "article", textVersion = "Hao and Hao et al. Integrated analysis of multimodal single-cell data. Cell (2021) [Seurat V4]" ) -citEntry(entry = "article", - author = personList(as.person("Tim Stuart"), - as.person("Andrew Butler"), - as.person("Paul Hoffman"), - as.person("Christoph Hafemeister"), - as.person("Efthymia Papalexi"), - as.person("William M Mauck III"), - as.person("Yuhan Hao"), - as.person("Marlon Stoeckius"), - as.person("Peter Smibert"), - as.person("Rahul Satija")), +bibentry(bibtype = "article", + author = c( + as.person("Tim Stuart"), + as.person("Andrew Butler"), + as.person("Paul Hoffman"), + as.person("Christoph Hafemeister"), + as.person("Efthymia Papalexi"), + as.person("William M Mauck III"), + as.person("Yuhan Hao"), + as.person("Marlon Stoeckius"), + as.person("Peter Smibert"), + as.person("Rahul Satija") + ), title = "Comprehensive Integration of Single-Cell Data", journal = "Cell", year = "2019", @@ -55,12 +59,14 @@ citEntry(entry = "article", textVersion = "Stuart and Butler et al. Comprehensive Integration of Single-Cell Data. Cell (2019) [Seurat V3]" ) -citEntry(entry = "article", - author = personList(as.person("Andrew Butler"), - as.person("Paul Hoffman"), - as.person("Peter Smibert"), - as.person("Efthymia Papalexi"), - as.person("Rahul Satija")), +bibentry(bibtype = "article", + author = c( + as.person("Andrew Butler"), + as.person("Paul Hoffman"), + as.person("Peter Smibert"), + as.person("Efthymia Papalexi"), + as.person("Rahul Satija") + ), title = "Integrating single-cell transcriptomic data across different conditions, technologies, and species", journal = "Nature Biotechnology", year = "2018", @@ -71,12 +77,14 @@ citEntry(entry = "article", textVersion = "Butler et al. Integrating single-cell transcriptomic data across different conditions, technologies, and species. Nat Biotechnol (2018) [Seurat V2]" ) -citEntry(entry = "article", - author = personList(as.person("Rahul Satija"), - as.person("Jeffrey A Farrell"), - as.person("David Gennert"), - as.person("Alexander F Schier"), - as.person("Aviv Regev")), +bibentry(bibtype = "article", + author = c( + as.person("Rahul Satija"), + as.person("Jeffrey A Farrell"), + as.person("David Gennert"), + as.person("Alexander F Schier"), + as.person("Aviv Regev") + ), title = "Spatial reconstruction of single-cell gene expression data", journal = "Nature Biotechnology", year = "2015", diff --git a/src/Makevars b/src/Makevars index a7f35101d..e9d976546 100644 --- a/src/Makevars +++ b/src/Makevars @@ -1 +1 @@ -CXX_STD = CXX11 +CXX_STD = CXX17 diff --git a/src/integration.cpp b/src/integration.cpp index 0b613b0be..0a2b59580 100644 --- a/src/integration.cpp +++ b/src/integration.cpp @@ -11,15 +11,15 @@ typedef Eigen::Triplet T; // [[Rcpp::export(rng = false)]] Eigen::SparseMatrix FindWeightsC( - NumericVector cells2, - Eigen::MatrixXd distances, - std::vector anchor_cells2, - std::vector integration_matrix_rownames, - Eigen::MatrixXd cell_index, - Eigen::VectorXd anchor_score, - double min_dist, - double sd, - bool display_progress + NumericVector cells2, + Eigen::MatrixXd distances, + std::vector anchor_cells2, + std::vector integration_matrix_rownames, + Eigen::MatrixXd cell_index, + Eigen::VectorXd anchor_score, + double min_dist, + double sd, + bool display_progress ) { std::vector tripletList; tripletList.reserve(anchor_cells2.size() * 10); @@ -87,14 +87,24 @@ Eigen::SparseMatrix FindWeightsC( // [[Rcpp::export(rng = false)]] Eigen::SparseMatrix IntegrateDataC( - Eigen::SparseMatrix integration_matrix, - Eigen::SparseMatrix weights, - Eigen::SparseMatrix expression_cells2 + Eigen::SparseMatrix integration_matrix, + Eigen::SparseMatrix weights, + Eigen::SparseMatrix expression_cells2 ) { Eigen::SparseMatrix corrected = expression_cells2 - weights.transpose() * integration_matrix; return(corrected); } +template +std::vector sort_indexes(const std::vector &v) { + // initialize original index locations + std::vector idx(v.size()); + std::iota(idx.begin(), idx.end(), 0); + std::stable_sort(idx.begin(), idx.end(), + [&v](size_t i1, size_t i2) {return v[i1] < v[i2];}); + return idx; +} + // [[Rcpp::export]] std::vector ScoreHelper( Eigen::SparseMatrix snn, From aab57dbe2264c0cd5db1aeece8b8a13233c96b94 Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 16:31:49 -0400 Subject: [PATCH 5/8] Documentation updates --- man/BGTextColor.Rd | 2 +- man/CreateSCTAssayObject.Rd | 4 ++-- man/STARmap-class.Rd | 5 ++++- man/SingleCorPlot.Rd | 6 +++--- man/SlideSeq-class.Rd | 5 ++++- man/reexports.Rd | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/man/BGTextColor.Rd b/man/BGTextColor.Rd index 99130d0dc..823f57dd1 100644 --- a/man/BGTextColor.Rd +++ b/man/BGTextColor.Rd @@ -22,7 +22,7 @@ hexadecimal codes} \item{threshold}{Intensity threshold for light/dark cutoff; intensities greater than \code{theshold} yield \code{dark}, others yield \code{light}} -\item{w3c}{Use \href{http://www.w3.org/TR/WCAG20/}{W3C} formula for calculating +\item{w3c}{Use \href{https://www.w3.org/TR/WCAG20/}{W3C} formula for calculating background text color; ignores \code{threshold}} \item{dark}{Color for dark text} diff --git a/man/CreateSCTAssayObject.Rd b/man/CreateSCTAssayObject.Rd index c3c1406c8..70f30f633 100644 --- a/man/CreateSCTAssayObject.Rd +++ b/man/CreateSCTAssayObject.Rd @@ -25,10 +25,10 @@ CreateSCTAssayObject( \item{min.cells}{Include features detected in at least this many cells. Will subset the counts matrix as well. To reintroduce excluded features, create a -new object with a lower cutoff.} +new object with a lower cutoff} \item{min.features}{Include cells where at least this many features are -detected.} +detected} \item{SCTModel.list}{list of SCTModels} } diff --git a/man/STARmap-class.Rd b/man/STARmap-class.Rd index 7984f21c3..30ab87d92 100644 --- a/man/STARmap-class.Rd +++ b/man/STARmap-class.Rd @@ -16,7 +16,10 @@ The STARmap class priority for visualization when the assay is set as the active/default assay in a \code{Seurat} object} -\item{\code{key}}{Key for the image} +\item{\code{key}}{A one-length character vector with the object's key; keys must +be one or more alphanumeric characters followed by an underscore +\dQuote{\code{_}} (regex pattern +\dQuote{\code{^[a-zA-Z][a-zA-Z0-9]*_$}})} } } diff --git a/man/SingleCorPlot.Rd b/man/SingleCorPlot.Rd index b250c32c6..7b45f430f 100644 --- a/man/SingleCorPlot.Rd +++ b/man/SingleCorPlot.Rd @@ -31,6 +31,9 @@ SingleCorPlot( \item{smooth}{Make a smoothed scatter plot} +\item{rows.highlight}{A vector of rows to highlight (like cells.highlight in +\code{\link{SingleDimPlot}})} + \item{legend.title}{Optional legend title} \item{raster}{Convert points to raster format, default is \code{NULL} @@ -43,9 +46,6 @@ Default is c(512, 512)} \item{plot.cor}{...} \item{jitter}{Jitter for easier visualization of crowded points} - -\item{rows.highight}{A vector of rows to highlight (like cells.highlight in -\code{\link{SingleDimPlot}})} } \value{ A ggplot2 object diff --git a/man/SlideSeq-class.Rd b/man/SlideSeq-class.Rd index a81a02e3c..60cdb125f 100644 --- a/man/SlideSeq-class.Rd +++ b/man/SlideSeq-class.Rd @@ -22,7 +22,10 @@ The SlideSeq class represents spatial information from the Slide-seq platform priority for visualization when the assay is set as the active/default assay in a \code{Seurat} object} -\item{\code{key}}{Key for the image} +\item{\code{key}}{A one-length character vector with the object's key; keys must +be one or more alphanumeric characters followed by an underscore +\dQuote{\code{_}} (regex pattern +\dQuote{\code{^[a-zA-Z][a-zA-Z0-9]*_$}})} } } diff --git a/man/reexports.Rd b/man/reexports.Rd index ed66b98a1..edb9ab16d 100644 --- a/man/reexports.Rd +++ b/man/reexports.Rd @@ -70,6 +70,6 @@ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ - \item{SeuratObject}{\code{\link[SeuratObject:set-if-null]{\%iff\%}}, \code{\link[SeuratObject:set-if-null]{\%||\%}}, \code{\link[SeuratObject]{AddMetaData}}, \code{\link[SeuratObject:ObjectAccess]{Assays}}, \code{\link[SeuratObject]{Cells}}, \code{\link[SeuratObject]{CellsByIdentities}}, \code{\link[SeuratObject]{Command}}, \code{\link[SeuratObject]{CreateAssayObject}}, \code{\link[SeuratObject]{CreateDimReducObject}}, \code{\link[SeuratObject]{CreateSeuratObject}}, \code{\link[SeuratObject]{DefaultAssay}}, \code{\link[SeuratObject:DefaultAssay]{DefaultAssay<-}}, \code{\link[SeuratObject]{Distances}}, \code{\link[SeuratObject]{Embeddings}}, \code{\link[SeuratObject]{FetchData}}, \code{\link[SeuratObject:AssayData]{GetAssayData}}, \code{\link[SeuratObject]{GetImage}}, \code{\link[SeuratObject]{GetTissueCoordinates}}, \code{\link[SeuratObject:VariableFeatures]{HVFInfo}}, \code{\link[SeuratObject]{Idents}}, \code{\link[SeuratObject:Idents]{Idents<-}}, \code{\link[SeuratObject]{Images}}, \code{\link[SeuratObject]{Index}}, \code{\link[SeuratObject:Index]{Index<-}}, \code{\link[SeuratObject]{Indices}}, \code{\link[SeuratObject]{IsGlobal}}, \code{\link[SeuratObject]{JS}}, \code{\link[SeuratObject:JS]{JS<-}}, \code{\link[SeuratObject]{Key}}, \code{\link[SeuratObject:Key]{Key<-}}, \code{\link[SeuratObject]{Loadings}}, \code{\link[SeuratObject:Loadings]{Loadings<-}}, \code{\link[SeuratObject]{LogSeuratCommand}}, \code{\link[SeuratObject]{Misc}}, \code{\link[SeuratObject:Misc]{Misc<-}}, \code{\link[SeuratObject:ObjectAccess]{Neighbors}}, \code{\link[SeuratObject]{Project}}, \code{\link[SeuratObject:Project]{Project<-}}, \code{\link[SeuratObject]{Radius}}, \code{\link[SeuratObject:ObjectAccess]{Reductions}}, \code{\link[SeuratObject]{RenameCells}}, \code{\link[SeuratObject:Idents]{RenameIdents}}, \code{\link[SeuratObject:Idents]{ReorderIdent}}, \code{\link[SeuratObject]{RowMergeSparseMatrices}}, \code{\link[SeuratObject:VariableFeatures]{SVFInfo}}, \code{\link[SeuratObject:AssayData]{SetAssayData}}, \code{\link[SeuratObject:Idents]{SetIdent}}, \code{\link[SeuratObject:VariableFeatures]{SpatiallyVariableFeatures}}, \code{\link[SeuratObject:Idents]{StashIdent}}, \code{\link[SeuratObject]{Stdev}}, \code{\link[SeuratObject]{Tool}}, \code{\link[SeuratObject:Tool]{Tool<-}}, \code{\link[SeuratObject]{UpdateSeuratObject}}, \code{\link[SeuratObject]{VariableFeatures}}, \code{\link[SeuratObject:VariableFeatures]{VariableFeatures<-}}, \code{\link[SeuratObject]{WhichCells}}, \code{\link[SeuratObject]{as.Graph}}, \code{\link[SeuratObject]{as.Neighbor}}, \code{\link[SeuratObject]{as.Seurat}}, \code{\link[SeuratObject]{as.sparse}}} + \item{SeuratObject}{\code{\link[SeuratObject:set-if-null]{\%iff\%}}, \code{\link[SeuratObject:set-if-null]{\%||\%}}, \code{\link[SeuratObject]{AddMetaData}}, \code{\link[SeuratObject:ObjectAccess]{Assays}}, \code{\link[SeuratObject]{Cells}}, \code{\link[SeuratObject]{CellsByIdentities}}, \code{\link[SeuratObject]{Command}}, \code{\link[SeuratObject]{CreateAssayObject}}, \code{\link[SeuratObject]{CreateDimReducObject}}, \code{\link[SeuratObject]{CreateSeuratObject}}, \code{\link[SeuratObject]{DefaultAssay}}, \code{\link[SeuratObject:DefaultAssay]{DefaultAssay<-}}, \code{\link[SeuratObject]{Distances}}, \code{\link[SeuratObject]{Embeddings}}, \code{\link[SeuratObject]{FetchData}}, \code{\link[SeuratObject:AssayData]{GetAssayData}}, \code{\link[SeuratObject]{GetImage}}, \code{\link[SeuratObject]{GetTissueCoordinates}}, \code{\link[SeuratObject:VariableFeatures]{HVFInfo}}, \code{\link[SeuratObject]{Idents}}, \code{\link[SeuratObject:Idents]{Idents<-}}, \code{\link[SeuratObject]{Images}}, \code{\link[SeuratObject:NNIndex]{Index}}, \code{\link[SeuratObject:NNIndex]{Index<-}}, \code{\link[SeuratObject]{Indices}}, \code{\link[SeuratObject]{IsGlobal}}, \code{\link[SeuratObject]{JS}}, \code{\link[SeuratObject:JS]{JS<-}}, \code{\link[SeuratObject]{Key}}, \code{\link[SeuratObject:Key]{Key<-}}, \code{\link[SeuratObject]{Loadings}}, \code{\link[SeuratObject:Loadings]{Loadings<-}}, \code{\link[SeuratObject]{LogSeuratCommand}}, \code{\link[SeuratObject]{Misc}}, \code{\link[SeuratObject:Misc]{Misc<-}}, \code{\link[SeuratObject:ObjectAccess]{Neighbors}}, \code{\link[SeuratObject]{Project}}, \code{\link[SeuratObject:Project]{Project<-}}, \code{\link[SeuratObject]{Radius}}, \code{\link[SeuratObject:ObjectAccess]{Reductions}}, \code{\link[SeuratObject]{RenameCells}}, \code{\link[SeuratObject:Idents]{RenameIdents}}, \code{\link[SeuratObject:Idents]{ReorderIdent}}, \code{\link[SeuratObject]{RowMergeSparseMatrices}}, \code{\link[SeuratObject:VariableFeatures]{SVFInfo}}, \code{\link[SeuratObject:AssayData]{SetAssayData}}, \code{\link[SeuratObject:Idents]{SetIdent}}, \code{\link[SeuratObject:VariableFeatures]{SpatiallyVariableFeatures}}, \code{\link[SeuratObject:Idents]{StashIdent}}, \code{\link[SeuratObject]{Stdev}}, \code{\link[SeuratObject]{Tool}}, \code{\link[SeuratObject:Tool]{Tool<-}}, \code{\link[SeuratObject]{UpdateSeuratObject}}, \code{\link[SeuratObject]{VariableFeatures}}, \code{\link[SeuratObject:VariableFeatures]{VariableFeatures<-}}, \code{\link[SeuratObject]{WhichCells}}, \code{\link[SeuratObject]{as.Graph}}, \code{\link[SeuratObject]{as.Neighbor}}, \code{\link[SeuratObject]{as.Seurat}}, \code{\link[SeuratObject]{as.sparse}}} }} From ab5fc447f9070fa60338a4e4bc9d17c952fd63aa Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 16:32:00 -0400 Subject: [PATCH 6/8] Documentation updates --- NAMESPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/NAMESPACE b/NAMESPACE index 5792a4bf3..c89df3541 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -674,6 +674,7 @@ importFrom(plotly,plot_ly) importFrom(plotly,raster2uri) importFrom(png,readPNG) importFrom(progressr,progressor) +importFrom(purrr,imap) importFrom(reticulate,import) importFrom(reticulate,py_module_available) importFrom(reticulate,py_set_seed) From eab9e5a24925a744b5ad837fb67446bee2d1fe09 Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 17:48:18 -0400 Subject: [PATCH 7/8] Documentation updates --- man/CreateSCTAssayObject.Rd | 4 ++-- man/STARmap-class.Rd | 5 +---- man/SlideSeq-class.Rd | 5 +---- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/man/CreateSCTAssayObject.Rd b/man/CreateSCTAssayObject.Rd index 70f30f633..c3c1406c8 100644 --- a/man/CreateSCTAssayObject.Rd +++ b/man/CreateSCTAssayObject.Rd @@ -25,10 +25,10 @@ CreateSCTAssayObject( \item{min.cells}{Include features detected in at least this many cells. Will subset the counts matrix as well. To reintroduce excluded features, create a -new object with a lower cutoff} +new object with a lower cutoff.} \item{min.features}{Include cells where at least this many features are -detected} +detected.} \item{SCTModel.list}{list of SCTModels} } diff --git a/man/STARmap-class.Rd b/man/STARmap-class.Rd index 30ab87d92..7984f21c3 100644 --- a/man/STARmap-class.Rd +++ b/man/STARmap-class.Rd @@ -16,10 +16,7 @@ The STARmap class priority for visualization when the assay is set as the active/default assay in a \code{Seurat} object} -\item{\code{key}}{A one-length character vector with the object's key; keys must -be one or more alphanumeric characters followed by an underscore -\dQuote{\code{_}} (regex pattern -\dQuote{\code{^[a-zA-Z][a-zA-Z0-9]*_$}})} +\item{\code{key}}{Key for the image} } } diff --git a/man/SlideSeq-class.Rd b/man/SlideSeq-class.Rd index 60cdb125f..a81a02e3c 100644 --- a/man/SlideSeq-class.Rd +++ b/man/SlideSeq-class.Rd @@ -22,10 +22,7 @@ The SlideSeq class represents spatial information from the Slide-seq platform priority for visualization when the assay is set as the active/default assay in a \code{Seurat} object} -\item{\code{key}}{A one-length character vector with the object's key; keys must -be one or more alphanumeric characters followed by an underscore -\dQuote{\code{_}} (regex pattern -\dQuote{\code{^[a-zA-Z][a-zA-Z0-9]*_$}})} +\item{\code{key}}{Key for the image} } } From 820f29d99d42f1c6a86d33979f173169ea5f9b10 Mon Sep 17 00:00:00 2001 From: Saket Choudhary Date: Wed, 27 Sep 2023 17:48:44 -0400 Subject: [PATCH 8/8] Update news, bump version --- DESCRIPTION | 9 +++++---- NEWS.md | 7 ++++--- cran-comments.md | 24 +++++------------------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index f56d32af1..01f67ab52 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: Seurat Version: 4.4.0 -Date: 2023-09-15 +Date: 2023-09-26 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( @@ -58,6 +58,7 @@ Imports: plotly (>= 4.9.0), png, progressr, + purrr, RANN, RColorBrewer, Rcpp (>= 1.0.7), @@ -67,9 +68,9 @@ Imports: ROCR, Rtsne, scales, - scattermore (>= 0.7), - sctransform (>= 0.3.5), - SeuratObject (>= 4.1.3), + scattermore (>= 1.2), + sctransform (>= 0.4.0), + SeuratObject (>= 4.1.4), shiny, spatstat.explore, spatstat.geom, diff --git a/NEWS.md b/NEWS.md index 94b32876f..93bd03abd 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# Seurat 4.4.0 (2023-09-15) +# Seurat 4.4.0 (2023-09-27) ## Added - Added parallelization support with speed improvements for `PrepSCTFindMarkers` @@ -7,11 +7,12 @@ ## Changes - Fix bug in `as.Seurat.SingleCellExperiment()` ([#6692](https://github.com/satijalab/seurat/issues/6692)) - Support for Visium probe information introduced in Spaceranger 2.1 ([#7141](https://github.com/satijalab/seurat/pull/7141)) -- Add `LoadCurioSeeker` to load sequencing-based spatial datasets generated using the Curio Seeker ([#744](https://github.com/satijalab/seurat-private/pull/744)) -- Fix fold change calculation for assays ([#739](https://github.com/satijalab/seurat-private/pull/739)) +- Add `LoadCurioSeeker` to load sequencing-based spatial datasets generated using the Curio Seeker +- Fix fold change calculation for assays ([#7095](https://github.com/satijalab/seurat/issues/7095)) - Fix `pt.size` bug when rasterization is set to true ([#7379](https://github.com/satijalab/seurat/issues/7379)) - Fix `FoldChange` and `FindMarkers` to support all normalization approaches ([#7115](https://github.com/satijalab/seurat/pull/7115),[#7110](https://github.com/satijalab/seurat/issues/7110),[#7095](https://github.com/satijalab/seurat/issues/7095),[#6976](https://github.com/satijalab/seurat/issues/6976),[#6654](https://github.com/satijalab/seurat/issues/6654),[#6701](https://github.com/satijalab/seurat/issues/6701),[#6773](https://github.com/satijalab/seurat/issues/6773), [#7107](https://github.com/satijalab/seurat/issues/7107)) - Fix for handling newer ParseBio formats in `ReadParseBio` ([#7565](https://github.com/satijalab/seurat/pull/7565)) +- Fix for handling rasterization by default ([#7842](https://github.com/satijalab/seurat/pull/7842)) # Seurat 4.3.0 (2022-11-18) diff --git a/cran-comments.md b/cran-comments.md index 4da97cd64..1bea36b47 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,30 +1,16 @@ -# Seurat v4.2.1 +# Seurat v4.4.0 ## Test environments -* local Ubuntu 20.04 install, R 4.1.3 +* local Ubuntu 20.04 install, R 4.3.1 * win-builder (release, devel) ## R CMD check results -There were no ERRORs or WARNINGs - -There was one NOTE: - -* checking CRAN incoming feasibility ... NOTE -Maintainer: 'Paul Hoffman ' - -Found the following (possibly) invalid URLs: - URL: https://www.science.org/doi/abs/10.1126/science.aad0501 - From: man/cc.genes.Rd - man/cc.genes.updated.2019.Rd - Status: 503 - Message: Service Unavailable - -This URL is valid and the service still exists. When navigating to the URL either via the documentation or directly, you are taken to the correct article +There were no ERRORs or WARNINGs. ## Downstream dependencies There no packages that depend on Seurat -There are sixteen packages that import Seurat: CAMML, CIDER, DR.SC, DUBStepR, maple, Platypus, rPanglaoDB, scDiffCom, scMappR, SCRIP, scRNAstat, Signac, SignacX, SoupX, spruce, and tidyseurat; this update does not impact their functionality +There are forty-five packages that import Seurat: AnanseSeurat, APL, bbknnR, benchdamic, CAMML, CIDER, COTAN, CSCDRNA, Dino, DR.SC, DWLS, ggsector, gsdensity, infercnv, IRISFGM, mixhvg, Nebulosa, pipeComp, PRECAST, ProFAST, rPanglaoDB, scAnnotate, scBFA, scBubbletree, scCB2, scDataviz, scDiffCom, scFeatures, scGate, scMappR, scperturbR, scpoisson, SCRIP, scRNAseqApp, scRNAstat, scTreeViz, SignacX, singleCellTK, SoupX, Spaniel, SPECK, speckle, SpotClean, stJoincount, and STREAK; this update does not impact their functionality -There are twelve packages that suggest Seurat: BisqueRNA, CIARA, ClustAssess, clustree, conos, DIscBIO, dyngen, harmony, rliger, Rmagic, treefit, and VAM; this update does not impact their functionality. +There are fifty-one packages that suggest Seurat: ASURAT, BayesSpace, BisqueRNA, Canek, cellpypes, CIARA, ClustAssess, clustifyr, clustifyrdatahub, clustree, combiroc, conos, countland, CRMetrics, decoupleR, DIscBIO, dittoSeq, dorothea, dyngen, EasyCellType, EpiMix, escape, fcoex, FEAST, fgsea, GeomxTools, grandR, harmony, M3Drop, MOFA2, monocle, muscData, progeny, RESET, rliger, SCORPIUS, SCpubr, scRepertoire, scTensor, Signac, SimBenchData, SimBu, spatialHeatmap, SPOTlight, TAPseq, TCGAbiolinks, tidybulk, treefit, tricycle, UCell, and VAM; this update does not impact their functionality.