Skip to content

aggregateAcrossCells() no longer works over multiple assays in SCE #17

@AnnaAMonaco

Description

@AnnaAMonaco

Hi,

I have been using the scuttle package functions quite some time now to analyse my scRNA-seq data (10x, aligned with salmon alevin), and at this point have a pretty streamlined code for what I need to do. In this specific case I am trying to make a new sce from subclustering my original sce, carrying over three specific assays to the new object.

Today all of a sudden my code for AggregateAcrossCells() -- which I have been using over and over again without modifications -- doesn't work anymore:

> sce
class: SingleCellExperiment 
dim: 9984 9466 
metadata(0):
assays(5): counts logcounts scaledata ratio mel_counts
rownames(9984): pHCl-1 CG9706 ... Nup93-1 CG17841
rowData names(0):
colnames(9466): CATCCACTCGTCAACA GGATCTAGTCGCTCGA ... ATCACAGGTTCAGGTT
  TGCTTGCTCAGCACCG
colData names(19): orig.ident nCount_RNA ... cell_type subclusters
reducedDimNames(2): PCA UMAP
mainExpName: RNA
altExpNames(1): ratio

> meta.sce <- aggregateAcrossCells(sce, ids=colData(sce)$subclusters, use.assay.type=c("counts", "logcounts", "mel_counts"))
Error in .use_names_to_integer_indices(use.assay.type, x = x, nameFUN = assayNames,  : 
  'use.assay.type' contains invalid values
In addition: Warning message:
'use.altexps=' is deprecated.
Use 'applySCE(x, aggregateAcrossCells)' instead.

I assumed there has been some update to the package, but now I cannot get the new sce that I need, which will contain all three above assays: counts, logcounts, and mel_counts. I tried looking into applySCE() and running it, but I can only get it to work for "counts".

> applySCE(sce, aggregateAcrossCells, ids=colData(sce)$subclusters)
class: SingleCellExperiment 
dim: 9984 89 
metadata(0):
assays(1): counts
rownames(9984): pHCl-1 CG9706 ... Nup93-1 CG17841
rowData names(0):
colnames(89): Amnioserosa Cardiac Primordium.1 ... Visceral Muscle.7
  Yolk Nuclei
colData names(21): orig.ident nCount_RNA ... ids ncells
reducedDimNames(2): PCA UMAP
mainExpName: RNA
altExpNames(1): ratio

I appended logcounts and mel_counts as alternative experiments, because that seems to be what the function now works with, but it still won't work.

> altExp(sce, "logcounts") <- SingleCellExperiment(assays=list(counts=assay(sce, "logcounts")))
> altExp(sce, "mel_counts") <- SingleCellExperiment(assays=list(counts=assay(sce, "mel_counts")))

> applySCE(sce, aggregateAcrossCells, ids=colData(sce)$subclusters, MAIN.ARGS=c("counts"), ALT.ARGS=c("logcounts", "mel_counts"))
Error in ALT.ARGS[[current]] : subscript out of bounds
In addition: Warning message:
'use.altexps=' is deprecated.
Use 'applySCE(x, aggregateAcrossCells)' instead.

# Alternatively
> applySCE(sce, aggregateAcrossCells, ids=colData(sce)$subclusters, MAIN.ARGS=c("counts"), WHICH=c("logcounts", "mel_counts"))
class: SingleCellExperiment 
dim: 9984 89 
metadata(0):
assays(1): counts
rownames(9984): pHCl-1 CG9706 ... Nup93-1 CG17841
rowData names(0):
colnames(89): Amnioserosa Cardiac Primordium.1 ... Visceral Muscle.7
  Yolk Nuclei
colData names(21): orig.ident nCount_RNA ... ids ncells
reducedDimNames(2): PCA UMAP
mainExpName: RNA
altExpNames(3): ratio logcounts mel_counts
Warning message:
'use.altexps=' is deprecated.
Use 'applySCE(x, aggregateAcrossCells)' instead.

I have currently resorted to just adding the altExps as assays after aggregating, but I would like to know if there is a more straightforward way of doing this.

assay(meta.sce, "logcounts", withDimnames=FALSE) <- altExp(meta.sce, "logcounts")
assay(meta.sce, "mel_counts", withDimnames=FALSE) <- altExp(meta.sce, "mel_counts")
meta.sce
class: SingleCellExperiment 
dim: 9984 89 
metadata(0):
assays(3): counts logcounts mel_counts
rownames(9984): pHCl-1 CG9706 ... Nup93-1 CG17841
rowData names(0):
colnames(89): Amnioserosa Cardiac Primordium.1 ... Visceral Muscle.7
  Yolk Nuclei
colData names(21): orig.ident nCount_RNA ... ids ncells
reducedDimNames(2): PCA UMAP
mainExpName: RNA
altExpNames(3): ratio logcounts mel_counts

Thank you in advance for your reply, and thank you for the super useful package in general :)

sessionInfo()
R version 4.2.0 (2022-04-22)
Platform: x86_64-conda-linux-gnu (64-bit)
Running under: Rocky Linux 8.5 (Green Obsidian)

Matrix products: default
BLAS/LAPACK: /fast/work/users/amonaco_m/miniconda3/envs/R4/lib/libopenblasp-r0.3.20.so

locale:
 [1] LC_CTYPE=C                 LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] tibble_3.1.7                dplyr_1.0.9                
 [3] scales_1.2.0                scater_1.24.0              
 [5] ggplot2_3.3.6               scran_1.24.0               
 [7] scuttle_1.6.2               SingleCellExperiment_1.18.0
 [9] SummarizedExperiment_1.26.1 Biobase_2.56.0             
[11] GenomicRanges_1.48.0        GenomeInfoDb_1.32.2        
[13] IRanges_2.30.0              S4Vectors_0.34.0           
[15] BiocGenerics_0.42.0         MatrixGenerics_1.8.1       
[17] matrixStats_0.62.0   

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions