This release includes major updates to the Signac package, including new functionality, performance improvements, and new data structures.
The entire package has been updated to use the new ChromatinAssay class for the storage of single-cell chromatin data. This is an extension of the standard Seurat Assay that adds additional slots needed for the analysis of chromatin data, including genomic ranges, genome information, fragment file information, motifs, gene annotations, and genomic links.
In addition, we have defined a new Fragment class to store information relating to a fragment file. This makes use of the fragment files within Signac more robust, as checks are now performed to verify that the expected cells are present in the fragment file, and that the fragment file or index are not modified on disk.
Key new functionality:
http or ftp.Footprint() and PlotFootprint() functions for TF footprinting analysis.granges(), findOverlaps(), seqinfo(), and other Bioconductor generic functions directly on the ChromatinAssay or Seurat object.CoveragePlot() function.CoverageBrowser() function.Other changes:
NucleosomeSignal(): we have greatly improved the scalability of NucleosomeSignal(), and fixed a bug present in previous versions. The score computed by NucleosomeSignal() in 1.0.0 will be different to that computed by previous versions of Signac.CountFragments() function: a fast, memory-efficient function implemented in C++ that counts the total number of fragments for each cell barcode present in a fragment file.fast option in the TSSEnrichment() function. Setting this to TRUE will compute the TSS enrichment score per cell without storing the entire cell by TSS position matrix. This can significantly reduce memory requirements for large datasets, but does not allow subsequent plotting of the TSS signal for different groups of cells.TilePlot() function and tile parameter for CoveragePlot() to plot Tn5 integration events in a genomic region for individual cells.FeatureMatrix(), CoveragePlot(), and TSSEnrichment()blacklist_hg38_unified object.FRiP() function to use total fragment counts per cell stored in object metadata.DepthCor function to compute the correlation between sequencing depth and reduced dimension components.RunTFIDF.ClosestFeatures and CoveragePlot. Use GRanges instead.ucsc parameter from CoveragePlot.nchunk was greater than the number of features used.CoveragePlot that would prevent plotting multiple regions when using GRanges.CoveragePlot that would prevent plotting when a different assay was active.SubsetMatrix function to subset a matrix based on number of non-zero elements in the rows or columns.seed.use parameter from RunSVD.UnifyPeaks function to create a merged set of peaks from multiple samples.RunSVD: previously, scaling was applied to each cell rather than each component. Now, mean centering and SD scaling are applied to the cell embeddings within a component.scale.embeddings option to RunSVD to control whether embeddings are scaled and centered.irlba.work parameter to RunSVD.SingleCoveragePlot from exported functionsRunSVDCoveragePlotCoveragePlotPeriodPlot to FragmentHistogramneighbors and reductions slots from motif classmotif.names slot to motif classCoveragePlotGRanges objectCoveragePlotFilterFragmentsGetCellsInRegionTSSEnrichment and TSSPlot functions for TSS enrichment scoringInsertionBias functionCoveragePlot for scaling tracksCoveragePlotCoveragePlot: now plots a Tn5 integration score per base, rather than the whole fragment.GetIntersectingFeatures function to find overlapping peaks between objectsMergeWithRegions function to perform region-aware Seurat object mergingRunChromVAR function to run chromVAR through SignacRegionStats function to add statistics about peak sequences to the feature metadataFindMotifs: now selects a set of background peaks matching the sequence characteristics of the inputIntersectMatrixChunkGRanges