New features:

Other changes:

Bug fixes:

Other changes:

Bug fixes:

Other changes:

  • Add support for SeuratObject v5

Bug fixes:

  • Fix error when supplying genome string to AddMotifs() function (#1437)
  • Fix error in quantification with multiple fragment files (#1474)

Other changes:

  • Added region_extension parameter to TSSEnrichment() function to enable changing the size of the region used to compute TSS enrichment scores (#1444; @twmcart)
  • Allow fragment files with a CSI index (#1494)

New functionality:

Bug fixes:

  • Fixed error in GetReadsInRegion() when no fragments present that overlap the region (@nrockweiler; #1348)
  • Make motif names unique to avoid errors in motif-related functions (#1311)
  • Ignore missing seqnames when constructing a Motif object (#1381)
  • Fixed error in BigwigTrack() (#1389)
  • Fixed bug in RegionMatrix() where regions on minus strand were not handled correctly (#1368)

Other changes:

Bug fixes:

  • Fixed Motif object subsetting when using only one feature (#1266)
  • Avoid error in chromVAR when matrix contains NA values (#1254)
  • Fixed error in CoveragePlot() when setting show.bulk=TRUE (#1294)

Other changes:

Bug fixes:

  • Fixed bug in Motif object subsetting (#1162)
  • Fixed bug in FeatureMatrix() where cell names would not be converted correctly when running with cells=NULL (#1198)
  • Fixed bug causing crash when fragment file line lengths are very large (#723)

Other changes:

  • Improved fold change calculation (#1174)
  • Added subset() method for Fragment-class objects
  • Set random seed within CoverageTrack to enable reproducible coverage plots (#1206)
  • Add ability to plot region using gene name in PeakPlot(), LinkPlot(), and AnnotationPlot() (#919)
  • Change Motif class definition to allow any CsparseMatrix in the data slot

New functionality:

  • Added method parameter to LinkPeaks() (@saketkc; #1030)
  • Added ability to plot transcript isoforms (set annotation="transcript" in CoveragePlot())
  • Added multiple testing correction to FindMotifs(), and new p.adjust column in output dataframe
  • Added p.adjust.method parameter to FindMotifs() to control multiple testing correction method used

Bug fixes:

Other changes:

  • Improved error message when no fragment file is supplied in CallPeaks() (#1062)
  • Moved Seurat, ggforce, ggrepel, ggseqlogo, lsa, qlcMatrix to suggested packages
  • Added progress bar to GetGRangesFromEnsDb()

New functionality:

Bug fixes:

Other changes:

Bug fixes:

Other changes:

New functionality:

  • Added ability to display multiple assays in CoveragePlot(). The assay parameter can now be a list of assays to plot data from, with signal colored by assay of origin.

Bug fixes:

  • Fixed bug in FindMotifs() when using only one region as input (#732)
  • Add check for correct number of columns in fragment file (#748)
  • Fixed gene lookup when annotations contain NA values (#771)
  • Fixed error in ClosestFeature() when query contained regions on contigs not present in gene annotation (#758)
  • Fixed bug in TSSEnrichment() when using multiple fragment files (#783)
  • Fixed bug in CallPeaks() when multiple fragment files used as input
  • Fixed bug in CallPeaks() to account for 0-based starts in called peaks
  • Fixed bug in gene name lookup when gene names contain - characters (#759)

Other changes:

Bug fixes:

  • Fixed LinkPeaks() function when running on a single gene (#629)
  • Added fragment.tempdir parameter to CallPeaks() to enable setting directory that split fragment files are written to during peak calling (#579)
  • Fixed error in FeatureMatrix() when setting sep parameter (#626)
  • Fixed peak calling error when group names contain special characters
  • Fixed issue with RenameCells() when cell information not present in Fragment object (#704)

Other changes:

New functionality:

  • Added head() method for Fragment-class objects.

Bug fixes:

  • Fixed bug in ChromatinAssay merging (#596)

Other changes:

  • Added support for fragment files containing headers (cellranger-atac v2; #609)

New functionality:

Bug fixes:

Other changes:

  • Improved speed of ChromatinAssay merging
  • Improved error message for TSSEnrichment() (#485)
  • Improved error messages when trying to run ChromatinAssay-specific functions on non-ChromatinAssay assays
  • Performance improvements
  • Changed default value for n in NucleosomeSignal()
  • Enabled parallization in TSSEnrichment() when fast=TRUE
  • Added early error checking in LinkPeaks() (#550)
  • Change to sparse matrix correlation in LinkPeaks() (#550)
  • Moved biovizBase and Biostrings to suggested packages
  • Removed ggbio dependency
  • Re-implemented AnnotationPlot()

New functionality:

  • Added group.by parameter to PeakPlot() to allow coloring plotted genomic ranges by metadata variables.
  • Added peaks.group.by and ranges.group.by parameters to CoveragePlot() to allow coloring plotted genomic ranges in CoveragePlot() to be colored by metadata variables.

Bug fixes:

  • Update meta feature information (overall peak accessibility) when subsetting objects to avoid counts becoming inaccurate (#332)
  • Prevent dropping features when creating a merged ChromatinAssay (#340)
  • Fix compilation error when using g++ version <5 (#326)
  • Retain motif positions during subset (#364)
  • Fix assay parameter in CoveragePlot()
  • Fix error when merging ChromatinAssay object (#355)
  • Add more informative error message when all features or cells removed by parameter choices in CreateChromatinAssay() (#387)
  • Fix bug in CreateChromatinAssay() when setting both min.cells and min.features arguments (#390)
  • Improved support for remote fragment files
  • Fixed bug in PlotFootprint() when only one cell in an identity class (#406)

Other changes:

  • Added citation information to the package
  • Added SeuratObject dependency

New functionality:

  • Added CallPeaks() function to call peaks using MACS2. Peaks can be called for different groups of cells separately by setting the group.by parameter
  • Added LinkPeaks() function to link peaks to correlated genes.
  • Added AddMotifs() function to add motif information to a Seurat object or ChromatinAssay.
  • Added AggregateTiles() function to combine adjacent genome tiles
  • Added ranges parameter to CoveragePlot() to plot addition sets of genomic ranges
  • Added show.bulk parameter to CoveragePlot() to plot accessibility of all cells combined
  • Added ability to remove Fragment objects and modify the file path for existing fragment objects (#206)

Bug fixes:

Other changes:

  • Improved feature matching in MatchRegionStats() function when matching distribution of multiple features (eg, GC content and overall accessibility)
  • Changed parameter names in MatchRegionStats()

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:

  • Store multiple fragment files: you can now store as many fragment files as needed in a single object, and all functions that use the fragment file will pull data from each of the files. Cell barcodes in the fragment files do not need to match the cell barcodes in the object.
  • Use remote fragment files: you can now use all the same functionality with fragment files hosted on remote servers accessible through http or ftp.
  • Transcription factor footprinting: New Footprint() and PlotFootprint() functions for TF footprinting analysis.
  • Bioconductor methods: call granges(), findOverlaps(), seqinfo(), and other Bioconductor generic functions directly on the ChromatinAssay or Seurat object.
  • New multi-modal visualization methods: Jointly visualize RNA expression and chromatin accessibility using the CoveragePlot() function.
  • New interactive visualizations: Interactively browse the genome using the CoverageBrowser() function.
  • Mitochondrial lineage tracing: New functions to identify informative mitochondrial alleles, find clonotypes, and predict cell lineage relationships using mitochondrial mutations.

Other changes:

  • Updates to 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.
  • New 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.
  • New 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.
  • New TilePlot() function and tile parameter for CoveragePlot() to plot Tn5 integration events in a genomic region for individual cells.
  • Performance improvements for FeatureMatrix(), CoveragePlot(), and TSSEnrichment()
  • Added the manually curated hg38 genomic blacklist regions curated by Anshul Kundaje and Anna Shcherbina. These are available as the blacklist_hg38_unified object.
  • Updated the FRiP() function to use total fragment counts per cell stored in object metadata.
  • New DepthCor function to compute the correlation between sequencing depth and reduced dimension components.
  • Performance improvements for RunTFIDF.
  • Removed option to use EnsDb object in ClosestFeatures and CoveragePlot. Use GRanges instead.
  • Removed ucsc parameter from CoveragePlot.
  • Fixed bug in FeatureMatrix that would cause fragments to be counted multiple times if nchunk was greater than the number of features used.
  • Fixed bug in CoveragePlot that would prevent plotting multiple regions when using GRanges.
  • Fixed bug in CoveragePlot that would prevent plotting when a different assay was active.
  • Removed dependencies: GenomicFeatures
  • Moved dependencies to suggests: Biostrings, BSgenome
  • Removed from suggests: BSgenome.Hsapiens.UCSC.hg19, EnsDb.Hsapiens.v75, JASPAR2018
  • First CRAN release.
  • New SubsetMatrix function to subset a matrix based on number of non-zero elements in the rows or columns.
  • Removed seed.use parameter from RunSVD.
  • New UnifyPeaks function to create a merged set of peaks from multiple samples.
  • Bug fix for 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.
  • Added scale.embeddings option to RunSVD to control whether embeddings are scaled and centered.
  • Added irlba.work parameter to RunSVD.
  • Update to allow comment characters in fragment file cell names
  • Removed SingleCoveragePlot from exported functions
  • Added executable examples for all functions
  • Store raw SVD output in DimReduc misc slot in RunSVD
  • Fixed strand orientation for gene plot in CoveragePlot
  • Fix missing x-axis when plotting peaks but not genes in CoveragePlot
  • Removed dependency on TFBSTools, motifmatchr, AnnotationDbi, ggbio, AnnotationFilter
  • Renamed PeriodPlot to FragmentHistogram
  • Removed motif dimension reduction functions
  • Removed motif clustering functions
  • Removed neighbors and reductions slots from motif class
  • Added motif.names slot to motif class
  • Added ability to plot peak ranges in CoveragePlot
  • Added ability to plot gene annotations from GRanges object
  • Changed gene plot style in CoveragePlot
  • Allow passing additional arguments to FilterFragments
  • Add inst/extdata
  • Change DESCRIPTION file so that Bioconductor dependencies are automatically installed
  • Bug fix for GetCellsInRegion
  • Improve documentation
  • New TSSEnrichment and TSSPlot functions for TSS enrichment scoring
  • New InsertionBias function
  • New options in CoveragePlot for scaling tracks
  • Major speed improvements for CoveragePlot
  • Improved documentation (added examples)
  • Updates to CoveragePlot: now plots a Tn5 integration score per base, rather than the whole fragment.
  • New GetIntersectingFeatures function to find overlapping peaks between objects
  • New MergeWithRegions function to perform region-aware Seurat object merging
  • New RunChromVAR function to run chromVAR through Signac
  • New RegionStats function to add statistics about peak sequences to the feature metadata
  • Improvements to FindMotifs: now selects a set of background peaks matching the sequence characteristics of the input
  • Added IntersectMatrix
  • Added unit tests
  • Bug fixes for ChunkGRanges
  • This is the first release of Signac!