Changes in version 1.7.28: o Modified decomposeVar() to return statistics (but not p-values) for spike-ins when get.spikes=NA. Added block= argument for mean/variance calculations within each level of a blocking factor, followed by reporting of weighted averages (using Fisher's method for p-values). Automatically record global statistics in the metadata of the output for use in combineVar(). Switched output to a DataFrame object for consistency with other functions. o Fixed testVar() to report a p-value of 1 when both the observed and null variances are zero. o Allowed passing of arguments to irlba() in denoisePCA() to assist convergence. Reported low-rank approximations for all genes, regardless of whether they were used in the SVD. Deprecated design= argument in favour of manual external correction of confounding effects. Supported use of a vector or DataFrame in technical= instead of a function. o Allowed passing of arguments to prcomp_irlba() in buildSNNGraph() to assist convergence. Allowed passing of arguments to get.knn(), switched default algorithm back to a kd-tree. o Added the buildKNNGraph() function to construct a simple k-nearest-neighbours graph. o Fixed a number of bugs in mnnCorrect(), migrated code to C++ and parallelized functions. Added variance shift adjustment, calculation of angles with the biological subspace. o Modified trend specification arguments in trendVar() for greater flexibility. Switched from ns() to robustSmoothSpline() to avoid bugs with unloaded predict.ns(). Added block= argument for mean/variance calculations within each level of a blocking factor. o Added option to avoid normalization in the SingleCellExperiment method for improvedCV2(). Switched from ns() to smooth.spline() or robustSmoothSpline() to avoid bugs. o Replaced zoo functions with runmed() for calculating the median trend in DM(). o Added block= argument to correlatePairs() to calculate correlations within each level of a blocking factor. Deprecated the use of residuals=FALSE for one-way layouts in design=. Preserve input order of paired genes in the gene1/gene2 output when pairings!=NULL. o Added block= argument to overlapExprs() to calculate overlaps within each level of a blocking factor. Deprecated the use of residuals=FALSE for one-way layouts in design=. Switched to automatic ranking of genes based on ability to discriminate between groups. Added rank.type= and direction= arguments to control ranking of genes. o Modified combineVar() so that it is aware of the global stats recorded in decomposeVar(). Absence of global statistics in the input DataFrames now results in an error. Added option to method= to use Stouffer's method with residual d.f.-weighted Z-scores. Added weighted= argument to allow weighting to be turned off for equal batch representation. o Modified the behaviour of min.mean= in computeSumFactors() when clusters!=NULL. Abundance filtering is now performed within each cluster and for pairs of clusters, rather than globally. o Switched to pairwise t-tests in findMarkers(), rather than fitting a global linear model. Added block= argument for within-block t-tests, the results of which are combined across blocks via Stouffer's method. Added lfc= argument for testing against a log-fold change threshold. Added log.p= argument to return log-transformed p-values/FDRs. Removed empirical Bayes shrinkage as well as the min.mean= argument. o Added the makeTechTrend() function for generating a mean-variance trend under Poisson technical noise. o Added the multiBlockVar() function for convenient fitting of multiple mean-variance trends per level of a blocking factor. o Added the clusterModularity() function for assessing the cluster-wise modularity after graph-based clustering. o Added the parallelPCA() function for performing parallel analysis to choose the number of PCs. o Modified convertT() to return raw counts and size factors for CellDataSet output. o Deprecated exploreData(), selectorPlot() in favour of iSEE(). Changes in version 1.6.0: o Supported parallelization in buildSNNGraph(), overlapExprs() with BPPARAM options. o Forced zero-derived residuals to a constant value in correlatePairs(), overlapExprs(). o Allowed findMarkers() to return IUT p-values, to identify uniquely expressed genes in each cluster. Added options to specify the direction of the log-fold changes, to focus on upregulated genes in each cluster. o Fixed bug in correlatePairs() when per.gene=TRUE and no spike-ins are available. Added block.size argument to control caching. o Switched all C++ code to use the beachmat API. Modified several functions to accept ANY matrix-like object, rather than only base matrix objects. o quickCluster() with method="igraph" will now merge based on modularity to satisfy min.size requirements. Added max.size option to restrict the size of the output clusters. o Updated the trendVar() interface with parametric, method arguments. Deprecated the trend="semiloess" option in favour of parametric=TRUE and method="loess". Modified the NLS equation to guarantee non-negative coefficients of the parametric trend. Slightly modified the estimation of NLS starting parameters. Second d.f. of the fitted F-distribution is now reported as df2 in the output. o Modified decomposeVar() to automatically use the second d.f. when test="f". o Added option in denoisePCA() to return the number of components or the low-rank approximation. The proportion of variance explained is also stored as an attribute in all return values. o Fixed a variety of bugs in mnnCorrect(). Changes in version 1.4.0: o Switched default BPPARAM to SerialParam() in all functions. o Added run argument to selectorPlot(). Bug fix to avoid adding an empty list. o Added exploreData() function for visualization of scRNA-seq data. o Minor bug fix to DM() when extrapolation is required. o Added check for centred size factors in trendVar(), decomposeVar() methods. Refactored trendVar() to include automatic start point estimation, location rescaling and df2 estimation. o Moved spike-in specification to the scater package. o Deprecated isSpike<- to avoid confusion over input/output types. o Generalized sandbag(), cyclone() to work for other classification problems. o Added test="f" option in testVar() to account for additional scatter. o Added per.gene=FALSE option in correlatePairs(), expanded accepted value types for subset.row. Fixed an integer overflow in correlatePairs(). Also added information on whether the permutation p-value reaches its lower bound. o Added the combineVar() function to combine results from separate decomposeVar() calls. o Added protection against all-zero rows in technicalCV2(). o Added the improvedCV2() function as a more stable alternative to technicalCV2(). o Added the denoisePCA() function to remove technical noise via selection of early principal components. o Removed warning requiring at least twice the max size in computeSumFactors(). Elaborated on the circumstances surrounding negative size factors. Increased the default number of window sizes to be examined. Refactored C++ code for increased speed. o Allowed quickCluster() to return a matrix of ranks for use in other clustering methods. Added method="igraph" option to perform graph-based clustering for large numbers of cells. o Added the findMarkers() function to automatically identify potential markers for cell clusters. o Added the overlapExprs() function to compute the overlap in expression distributions between groups. o Added the buildSNNGraph() function to build a SNN graph for cells from their expression profiles. o Added the correctMNN() function to perform batch correction based on mutual nearest neighbors. o Streamlined examples when mocking up data sets. Changes in version 1.2.0: o Transformed correlations to a metric distance in quickCluster(). o Removed normalize() in favour of scater's normalize(). o Switched isSpike()<- to accept a character vector rather than a logical vector, to enforce naming of spike-in sets. Also added warning code when the specified spike-in sets overlap. o Allowed compute*Factors() functions to directly return the size factors. o Added selectorPlot() function for interactive plotting. o Switched to a group-based weighted correlation for one-way layouts in correlatePairs() and correlateNull(), and to a correlation of residuals for more complex design matrices. o Added phase assignments to the cyclone() output. o Implemented Brennecke et al.'s method in the technicalCV2() function. o Updated convertTo() to store spike-in-specific size factors as offsets. o Moved code and subsetting into C++ to improve memory efficiency. o Switched to loess-based trend fitting as the default in trendVar(), replaced polynomial with semi-loess fitting. o Added significance statistics to output of decomposeVar(), with only the p-values replaced by NAs for spike-ins. o Updated documentation and tests. Changes in version 1.0.0: o New package scran, for low-level analyses of single-cell RNA sequencing data.