Hello all,
I was running
kept <- calculateAverage(counts(sce_filtered))
lost <- calculateAverage(counts(sce_rejected))
Works fine for kept cells, but lost throw me the following error
Error in h(simpleError(msg, call)) :
erreur d'�valuation de l'argument 'x' lors de la s�lection d'une m�thode pour la fonction 'rowMeans' : size factors should be positive
My guess is that in calculateAverage() we do
exprs <- normalizeCounts(x, size.factors=scaling, center.size.factors=FALSE, log=FALSE)
ave.cell <- rowMeans(exprs) * mean(scaling) # equivalent to calculateAverage().
but why does normalizeCounts() introduce non-positive terms
I've constructed sce_filtered and sce_rejected as follow
sce <- SingleCellExperiment(assays = list(counts = counts_matrix),
colData = full_coldata,
rowData = gene_annot )
qc.df <- perCellQCMetrics(sce, subsets=list(Mito=mito_genes))
qc.lib <- isOutlier(qc.df$sum, log = TRUE, type ="lower") # Determine which values are outliers based on the median absolute deviation (MAD)
qc.expr <- isOutlier(qc.df$detected, log = TRUE, type = "lower")
qc.mito <- isOutlier(qc.df$subsets_Mito_percent, type = "higher")
#Discared cells
discard <- qc.lib | qc.expr | qc.mito # Cells to discard
rejected_cell <- sce$Cell_ID[which(sce$discard)]
idx_rejected <- which(colnames(counts_matrix) %in% rejected_cell)
counts_rejected <- counts_matrix[ , ..idx_rejected]
full_coldata_rejected <- full_coldata[which(full_coldata$Cell_ID %in% rejected_cell) , ]
sce_rejected <- SingleCellExperiment(assays = list(counts = counts_rejected),
colData = full_coldata_rejected,
rowData = gene_annot)
#only kepts cells
filtered_cell <- sce$Cell_ID[which(!sce$discard)]
idx_filtered <- which(colnames(counts_matrix) %in% filtered_cell)
counts_filtered <- counts_matrix[ , ..idx_filtered]
full_coldata_filtered <- full_coldata[which(full_coldata$Cell_ID %in% filtered_cell) , ]
sce_filtered <- SingleCellExperiment(assays = list(counts = counts_filtered),
colData = full_coldata_filtered,
rowData = gene_annot)
If you need any additionnal informations let me know :)
Thanks in advance for your answer
Hello all,
I was running
kept <- calculateAverage(counts(sce_filtered))
lost <- calculateAverage(counts(sce_rejected))
Works fine for kept cells, but lost throw me the following error
Error in h(simpleError(msg, call)) :
erreur d'�valuation de l'argument 'x' lors de la s�lection d'une m�thode pour la fonction 'rowMeans' : size factors should be positive
My guess is that in calculateAverage() we do
exprs <- normalizeCounts(x, size.factors=scaling, center.size.factors=FALSE, log=FALSE)
ave.cell <- rowMeans(exprs) * mean(scaling) # equivalent to calculateAverage().
but why does normalizeCounts() introduce non-positive terms
I've constructed sce_filtered and sce_rejected as follow
sce <- SingleCellExperiment(assays = list(counts = counts_matrix),
colData = full_coldata,
rowData = gene_annot )
qc.df <- perCellQCMetrics(sce, subsets=list(Mito=mito_genes))
qc.lib <- isOutlier(qc.df$sum, log = TRUE, type ="lower") # Determine which values are outliers based on the median absolute deviation (MAD)
qc.expr <- isOutlier(qc.df$detected, log = TRUE, type = "lower")
qc.mito <- isOutlier(qc.df$subsets_Mito_percent, type = "higher")
#Discared cells
discard <- qc.lib | qc.expr | qc.mito # Cells to discard
rejected_cell <- sce$Cell_ID[which(sce$discard)]
idx_rejected <- which(colnames(counts_matrix) %in% rejected_cell)
counts_rejected <- counts_matrix[ , ..idx_rejected]
full_coldata_rejected <- full_coldata[which(full_coldata$Cell_ID %in% rejected_cell) , ]
sce_rejected <- SingleCellExperiment(assays = list(counts = counts_rejected),
colData = full_coldata_rejected,
rowData = gene_annot)
#only kepts cells
filtered_cell <- sce$Cell_ID[which(!sce$discard)]
idx_filtered <- which(colnames(counts_matrix) %in% filtered_cell)
counts_filtered <- counts_matrix[ , ..idx_filtered]
full_coldata_filtered <- full_coldata[which(full_coldata$Cell_ID %in% filtered_cell) , ]
sce_filtered <- SingleCellExperiment(assays = list(counts = counts_filtered),
colData = full_coldata_filtered,
rowData = gene_annot)
If you need any additionnal informations let me know :)
Thanks in advance for your answer