Changes in version 1.22 o Improved the efficiency of the downsampling algorithm in downsampleMatrix(), which will change the results slightly. In addition, new options are added to control the output type (integer/double) and class (dense matrix or SVT_SparseMatrix). o Removed "median" from the default statistics= in summarizeAssayByGroup(). This enables default use of the fast code path for improved performance. o Deprecate all functions that have more efficient counterparts in other packages, mostly scrapper. Specifically: • addPerCellQcMetrics() is replaced by scrapper::quickRnaQc.se(). • aggregateAcrossCells() is replaced by scrapper::aggregateAcrossCells.se(). • aggregateAcrossFeatures() is replaced by scrapper::aggregateAcrossFeatures.se(). • cleanSizeFactors() is replaced by scrapper::sanitizeSizeFactors(). • geometricSizeFactors() is replaced by scrapper::computeClrm1Factors(). • librarySizeFactors() is replaced by scrapper::centerSizeFactors(). • logNormCounts() is replaced by scrapper::normalizeRnaCounts.se(). • normalizeCounts() is replaced by scrapper::normalizeCounts(). • numDetectedAcrossCells() is replaced by scrapper::computeRnaQcMetrics(). • perCellQCFilters() is replaced by scrapper::suggestRnaQcThresholds(). • perCellQCMetrics() is replaced by scrapper::computeRnaQcMetrics(). • quickPerCellQC() is replaced by scrapper::quickRnaQc.se(). • sumCountsAcrossCells() is replaced by scrapper::aggregateAcrossCells(). • sumCountsAcrossFeatures() is replaced by scrapper::aggregateAcrossFeatures(). • summarizeAssayByGroup() is replaced by scrapper::aggregateAcrossCells() or beachmat::tatami.sums.by.group(). • uniquifyDataFrameByGroup() is replaced by scrapper::aggregateColData(). • readSparseCounts() is replaced by SparseArray::readSparseCSV(). Changes in version 1.16 o addPerCellQCMetrics() will (optionally) add the feature subset identities to the row data of the SingleCellExperiment. o Added uniquifyDataFrameByGroup() to collapse grouped rows in a DataFrame into their unique values. Changes in version 1.10 o .subset2index now converts factor inputs to character vectors, rather than treating them as integers. Changes in version 1.8.0 o Removed support for use.altexps= in aggregateAcrossCells() and logNormCounts(). o Added swap.rownames= option to makePerCellDF() to allow easy access by rowData aliases. Also moved the extracted features to the end of the data frame for consistency. Changes in version 1.2.0 o Migrated whichNonZero() to beachmat. o Bugfixes for factor-based colData aggregation in aggregateAcrossCells(). Added proper support for Vectors. o Bugfix for correct response to use.altexps= in perCellQCMetrics(), perFeatureQCMetrics(). o Added a normalize.all= option to normalizeCounts(). Removed unnecessary warning when down.target= is not specified. Exposed the default size.factors= in the SingleCellExperiment method. o Modified the SingleCellExperiment method of logNormCounts() so that manually specified size factors do not apply to alternative Experiments. Only relevant if size.factors= and use.altexps= are specified. o Deprecated use.altexps= in favor of applySCE() in logNormCounts() and aggregateAcrossCells(). o Renamed addPerCellQC() and addPerFeatureQC() to addPerCellQCMetrics() and addPerCellFeatureMetrics(), for consistency. Soft-deprecated the old functions. o Moved most of quickPerCellQC() functionality into the new perCellQCFilters() function. Repurposed the former to directly return a filtered SummarizedExperiment object. o Migrated scran's normalization-related functions into this package. Added pooledSizeFactors(), computePooledFactors(), cleanSizeFactors() and computeSpikeFactors(). o Added transform="asinh" to normalizeCounts() and logNormCounts() for inverse hyperbolic transformations of CITE-seq data. o Modified isOutlier() to now return outlier.filter objects. These are simply logical vectors that preseve the "thresholds" attribute upon subsetting. o Migrated correctGroupSummary() from scater, to compute corrected versions of group-level summary statistics. Changes in version 1.0.0 o Split off scuttle from scater by migrating all non-visualization code from the latter. o Began transition to dot-separate argument names from original snake case format. o Added a geometricSizeFactors() function, deprecated geometric=TRUE in librarySizeFactors(). o Single-object downsampling in downsampleBatches() now behaves more consistently with multi-object downsampling.