Changes in version 1.28.0 o Use a more stable algorithm for identifying the knee point in barcodeRanks(). The new algorithm is based on maximizing the distance from a line between the plateau and the inflection point. Previously, we tried to minimize the signed curvature but this was susceptible to many local minima due to the instability of the empirical second derivative, even after smoothing. o Set alpha=Inf as the default for testEmptyDrops(). This is motivated by the realization that an underestimated alpha can still yield anticonservative p-values and is not universally safer than alpha=Inf. Defaulting alpha=Inf is preferable as it is at least correct in the expected case of multinomial sampling. Changes in version 1.18.0 o Added an intersect.genes= option to read10xCounts() for samples with inconsistent gene information. Automatically fix empty chromosome names for mitochondrial genes in certain Cellranger outputs. Changes in version 1.12.0 o Added BPPARAM= to read10xCounts() for parallelized reading of multiple samples. o Gave all the *Ambience() functions better names, and soft-deprecated the current versions. o Added ambientContribSparse() to estimate the ambient contribution under sparsity assumptions. o Added cleanTagCounts() to remove undesirable barcodes from tag count matrices. o Converted all matrix-accepting functions to S4 generics to support SummarizedExperiment inputs. o emptyDrops() will now coerce all DelayedArray inputs into wrapped SparseArraySeeds. o Setting test.ambient=TRUE in emptyDrops() will no longer alter the FDRs compared to test.ambient=FALSE. Added test.ambient=NA to retain back-compatible behavior. o Bugfix for correct use of redefined lower when by.rank= is set in emptyDrops(). o Added a constant.ambient=TRUE option to hashedDrops() to better support experiments with very few HTOs. Changes in version 1.10.0 o Migrated downsampleMatrix() to scuttle with a re-export. o Added features= to downsampleReads() for per-feature-set downsampling. o Added matrix support for y= and ambient= in maximumAmbience(). o Added controlAmbience() for easy estimation of ambient contamination with control features. o Added removeAmbience() function to remove the ambient solution from a count matrix, mostly for aesthetics. o Report library index and feature type in output of read10xMolInfo(). o Support subsetting by library index/type in functions that use the molecule information file, such as swappedDrops() and chimericDrops(). o Added by.rank= option to estimateAmbience() and emptyDrops(), for estimation of the ambient profile by excluding barcodes with the largest totals. o Added exclude.from= option to barcodeRanks(), to avoid problems with instability at low ranks for knee/inflection calculations (contributed by Stefano Mangiola). o Minor bugfix in barcodeRanks() calculation of the knee point. Note that this affects the default choice of retain= in emptyDrops(). o Split off HTO ambience inferences into a separate inferAmbience() function. o Added support for combinatorial barcodes in hashedDrops(). Changes in version 1.8.0 o Added the downsampleBatches() function for convenient downsampling of batches. o Preliminary support for using the output of write10xCounts() back in Cellranger. o Support reading in 10X output files via prefixes in read10xCounts(). Automatic detection of whether a file is Gzipped or not. o Added chimericDrops() to remove chimeric molecules due to within-sample re-priming. o Added hashedDrops() to demultiplex cell hashing experiments. o Added maximumAmbience() to estimate the maximum contribution of the ambient profile. Changes in version 1.6.0 o Switched emptyDrops() to use Boost's discrete_distribution for weighted sampling. This results in some minor stochastic changes to the Monte Carlo p-values. Automatically round non-integer count matrices. Changes in version 1.4.0 o Removed read10xMatrix(). o Supported CellRanger v3 output files in read10xMolInfo(), read10xCounts(), write10xCounts(). o Modified barcodeRanks() to return a DataFrame with knee/inflection estimates in metadata. o Slight change to random number generation in emptyDrops() to be agnostic to number of cores. Changes in version 1.2.0 o Added removeSwappedDrops() for removing swapping in other types of droplet-based data. o Added alpha= argument to testEmptyDrops() to support overdispersion during sampling. Returned arguments and estimates in metadata of testEmptyDrops(), emptyDrops(). o Added encodeSequences() for convenient 2-bit encoding of sequences. o Added get10xMolInfoStats() function to compute per-cell statistics from a molecule info file. o Deprecated read10xMatrix(), as it does not add much practical value over Matrix::readMM(). o Support the 10X sparse HDF5 format in read10xCounts(). o Support the 10X sparse HDF5 format in write10xCounts(). Changes in version 1.0.0 o New package DropletUtils, for handling droplet-based single-cell RNA sequencing data.