scuttle
Provides basic utility functions for performing single-cell analyses, focusing on simple normalization, quality control and data transformations. Also provides some helper functions to assist development of other packages.
Dependencies & Environment
Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.
- Version: 1.22.0 · Bioconductor: 3.23 · R: ≥ 4.6
- Depends: SingleCellExperiment
- Imports: Matrix, Rcpp, BiocGenerics, S4Vectors, BiocParallel, GenomicRanges, SummarizedExperiment, S4Arrays, MatrixGenerics, SparseArray, DelayedArray, beachmat
- System requirements: C++17
- Install:
BiocManager::install("scuttle")
When to Use
- Quality Control Metrics: When you need to compute basic feature-level statistics (mean counts, detection rates) using
perFeatureQCMetrics or calculateAverage.
- Gene Identifier Conversion: When you need to replace stable Ensembl identifiers with unique, non-missing gene symbols using
uniquifyFeatureNames.
- Data Extraction for Visualization: When you need to extract expression profiles and metadata into a standard
data.frame for ggplot or model.matrix using makePerCellDF or makePerFeatureDF.
- Scaling Normalization: When removing composition biases using median-based normalization (
medianSizeFactors), pooling normalization (computePooledFactors), or spike-in normalization (computeSpikeFactors).
When NOT to Use
- For state-of-the-art single-cell pipelines: Use
scran instead because many of scuttle's low-level utilities are legacy functions that have been superseded by more efficient implementations in other packages.
- For complex clustering: Use
quickCluster from scran instead because scuttle relies on external packages for the clustering step required prior to pooled normalization.
Data Requirements
- Input Format: A
SingleCellExperiment object.
- Data Type: Raw count matrices (e.g.,
assay.type="counts").
- Annotations: Row names should ideally be stable identifiers (like Ensembl IDs) that can be mapped to symbols.
Key Parameters
- subsets (
list(Empty=1:10)): Used in perFeatureQCMetrics to define control sets (e.g., empty wells) for calculating ratio metrics.
- assay.type (
"counts"): Specifies which assay to extract data from in makePerCellDF and makePerFeatureDF.
- features (
"Tspan12"): Specifies the specific genes to extract expression data for in makePerCellDF.
- cells (
c(...)): Specifies the specific cells to extract expression profiles for in makePerFeatureDF.
- clusters (
clusters): Used in computePooledFactors to apply normalization within predefined clusters before adjusting across clusters.
Best Practices
- Publish unfiltered count matrices with stable identifiers (e.g., Ensembl IDs) rather than filtered matrices with gene symbols, as filtered features cannot be recovered for data integration.
- Use
uniquifyFeatureNames to safely convert Ensembl IDs to gene symbols for interactive analysis, ensuring duplicates are appended with identifiers and missing symbols are replaced.
- Perform a rough clustering (e.g., using
scran::quickCluster) prior to running computePooledFactors on heterogeneous populations to avoid violating the assumption that most genes are non-DE.
Common Pitfalls
- Negative size factor estimates: Low-quality cells with very few expressed genes can produce negative size factors during normalization; fix this by performing strict quality control to remove damaged cells before running
computePooledFactors.
- Duplicated row names: Blindly replacing stable IDs with gene symbols can create duplicate row names; fix this by wrapping the replacement in
uniquifyFeatureNames.
- Violating non-DE assumptions: Running
computePooledFactors globally on a highly heterogeneous dataset can distort scaling factors; fix this by supplying a clusters argument to normalize within subpopulations first.
Alternatives
- scran: Provides more advanced and actively maintained implementations of single-cell utilities, including the
quickCluster function required for pooled normalization.
- DESeq2: Provides the original median ratio normalization approach that
medianSizeFactors adapts for single-cell data.
Citations
- McCarthy, D. J., Campbell, K. R., Lun, A. T., & Wills, Q. F. (2017). Scater: pre-processing, quality control, normalization and visualization of single-cell RNA-seq data in R. Bioinformatics, 33(8), 1179-1186.
References
Run this on BioMate
This skill is the knowledge layer — when, why, and how to use scuttle. To run this analysis on your own data with managed compute, automated QC, and reproducible outputs, use BioMate — free to start.
▶ Open scuttle on BioMate →
1---2name: bioconductor-scuttle3description: Provides basic utility functions for performing single-cell analyses, focusing on simple normalization, quality control and data transformations. Also provides some helper functions to assist development of other packages.4---56# scuttle78Provides basic utility functions for performing single-cell analyses, focusing on simple normalization, quality control and data transformations. Also provides some helper functions to assist development of other packages.910## Dependencies & Environment1112> Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.1314- **Version:** 1.22.0 · **Bioconductor:** 3.23 · **R:** ≥ 4.615- **Depends:** SingleCellExperiment16- **Imports:** Matrix, Rcpp, BiocGenerics, S4Vectors, BiocParallel, GenomicRanges, SummarizedExperiment, S4Arrays, MatrixGenerics, SparseArray, DelayedArray, beachmat17- **System requirements:** C++1718- **Install:** `BiocManager::install("scuttle")`1920## When to Use21- **Quality Control Metrics**: When you need to compute basic feature-level statistics (mean counts, detection rates) using `perFeatureQCMetrics` or `calculateAverage`.22- **Gene Identifier Conversion**: When you need to replace stable Ensembl identifiers with unique, non-missing gene symbols using `uniquifyFeatureNames`.23- **Data Extraction for Visualization**: When you need to extract expression profiles and metadata into a standard `data.frame` for `ggplot` or `model.matrix` using `makePerCellDF` or `makePerFeatureDF`.24- **Scaling Normalization**: When removing composition biases using median-based normalization (`medianSizeFactors`), pooling normalization (`computePooledFactors`), or spike-in normalization (`computeSpikeFactors`).2526## When NOT to Use27- **For state-of-the-art single-cell pipelines**: Use `scran` instead because many of `scuttle`'s low-level utilities are legacy functions that have been superseded by more efficient implementations in other packages.28- **For complex clustering**: Use `quickCluster` from `scran` instead because `scuttle` relies on external packages for the clustering step required prior to pooled normalization.2930## Data Requirements31- **Input Format**: A `SingleCellExperiment` object.32- **Data Type**: Raw count matrices (e.g., `assay.type="counts"`).33- **Annotations**: Row names should ideally be stable identifiers (like Ensembl IDs) that can be mapped to symbols.3435## Key Parameters36- **subsets** (`list(Empty=1:10)`): Used in `perFeatureQCMetrics` to define control sets (e.g., empty wells) for calculating ratio metrics.37- **assay.type** (`"counts"`): Specifies which assay to extract data from in `makePerCellDF` and `makePerFeatureDF`.38- **features** (`"Tspan12"`): Specifies the specific genes to extract expression data for in `makePerCellDF`.39- **cells** (`c(...)`): Specifies the specific cells to extract expression profiles for in `makePerFeatureDF`.40- **clusters** (`clusters`): Used in `computePooledFactors` to apply normalization within predefined clusters before adjusting across clusters.4142## Best Practices43- Publish unfiltered count matrices with stable identifiers (e.g., Ensembl IDs) rather than filtered matrices with gene symbols, as filtered features cannot be recovered for data integration.44- Use `uniquifyFeatureNames` to safely convert Ensembl IDs to gene symbols for interactive analysis, ensuring duplicates are appended with identifiers and missing symbols are replaced.45- Perform a rough clustering (e.g., using `scran::quickCluster`) prior to running `computePooledFactors` on heterogeneous populations to avoid violating the assumption that most genes are non-DE.4647## Common Pitfalls48- **Negative size factor estimates**: Low-quality cells with very few expressed genes can produce negative size factors during normalization; fix this by performing strict quality control to remove damaged cells before running `computePooledFactors`.49- **Duplicated row names**: Blindly replacing stable IDs with gene symbols can create duplicate row names; fix this by wrapping the replacement in `uniquifyFeatureNames`.50- **Violating non-DE assumptions**: Running `computePooledFactors` globally on a highly heterogeneous dataset can distort scaling factors; fix this by supplying a `clusters` argument to normalize within subpopulations first.5152## Alternatives53- **scran**: Provides more advanced and actively maintained implementations of single-cell utilities, including the `quickCluster` function required for pooled normalization.54- **DESeq2**: Provides the original median ratio normalization approach that `medianSizeFactors` adapts for single-cell data.5556## Citations57- McCarthy, D. J., Campbell, K. R., Lun, A. T., & Wills, Q. F. (2017). Scater: pre-processing, quality control, normalization and visualization of single-cell RNA-seq data in R. *Bioinformatics*, 33(8), 1179-1186.5859## References60- Homepage: https://bioconductor.org/packages/scuttle61- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/scuttle/inst/doc/QC.html6263<!-- biomate-cta -->64---6566## Run this on BioMate6768This skill is the **knowledge layer** — when, why, and how to use `scuttle`. To **run this analysis on your own data** with managed compute, automated QC, and reproducible outputs, use **[BioMate](https://www.biomate.ai?ref=kb&pkg=scuttle)** — free to start.6970▶ **[Open `scuttle` on BioMate →](https://www.biomate.ai?ref=kb&pkg=scuttle)**