diff --git a/NEWS.md b/NEWS.md index 8af2018..290cb23 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,8 @@ # dreamlet 1.1.17 - - bug fix in `plotPCA()` + - new functionality in `plotPCA()` and `outlierByAssay()` + - works on any `list`, not just `dreamletProcessedData` + - allows outlier analysis on residuals # dreamlet 1.1.16 - Feb 8, 2024 diff --git a/R/dreamletProcessedData.R b/R/dreamletProcessedData.R index 913e870..146bcbd 100644 --- a/R/dreamletProcessedData.R +++ b/R/dreamletProcessedData.R @@ -448,3 +448,4 @@ setMethod( list(assayLevel = df, geneLevel = df2) } ) + diff --git a/R/outlier.R b/R/outlier.R index 4fd8e18..9966f2a 100644 --- a/R/outlier.R +++ b/R/outlier.R @@ -92,11 +92,16 @@ outlier <- function(data, robust = FALSE, ...) { #' @export outlierByAssay = function(object, assays = assayNames(object), nPC=2, robust = FALSE, ...){ - stopifnot(is(object, "dreamletProcessedData")) + stopifnot(is(object, "list")) df = lapply(assays, function(id){ # get normalized expression - Y <- assay(object, id)$E + # Y <- assay(object, id)$E + if( is(object[[id]], "EList") ){ + Y <- object[[id]]$E + }else{ + Y <- object[[id]] + } # PCA # dcmp <- prcomp(scale(t(Y))) diff --git a/R/plotPCA.R b/R/plotPCA.R index 08e6d35..c62971e 100644 --- a/R/plotPCA.R +++ b/R/plotPCA.R @@ -8,7 +8,7 @@ setGeneric("plotPCA", BiocGenerics::plotPCA) #' #' Compute PCA of gene expression for an assay, and plot samples coloring by outlier score #' -#' @param object \code{dreamletProcessedData} from \code{processAssays()} +#' @param object \code{dreamletProcessedData} from \code{processAssays()} or a \code{list} from \code{residuals()} #' @param assays assays / cell types to analyze #' @param nPC number of PCs to uses for outlier score with \code{outlier()} #' @param robust use robust covariance method, defaults to \code{FALSE} @@ -20,7 +20,7 @@ setGeneric("plotPCA", BiocGenerics::plotPCA) #' #' @name plotPCA #' @rdname plotPCA -#' @aliases plotPCA plotPCA,dreamletProcessedData-method +#' @aliases plotPCA plotPCA,list-method #' @examples #' library(muscat) #' library(SingleCellExperiment) @@ -39,13 +39,26 @@ setGeneric("plotPCA", BiocGenerics::plotPCA) #' res.proc <- processAssays(pb, ~group_id) #' #' # PCA to identify outliers -#' plotPCA( res.proc, "CD14+ Monocytes") +#' # from normalized expression +#' plotPCA( res.proc, c("B cells", "CD14+ Monocytes")) +#' +#' # Run on regression residuals +#' #----------------------------- +#' +#' # Regression analysis +#' fit = dreamlet(res.proc, ~ group_id) +#' +#' # Extract regression residuals +#' residsObj = residuals(fit) +#' +#' # PCA on residuals +#' plotPCA( residsObj, c("B cells", "CD14+ Monocytes")) # #' @seealso \code{outlierByAssay()} #' @export -setMethod("plotPCA", signature(object="dreamletProcessedData"), function(object, assays = assayNames(object), nPC=2, robust = FALSE, ..., maxOutlierZ=20, nrow=2, size=2, fdr.cutoff=0.05){ +setMethod("plotPCA", signature(object="list"), function(object, assays = names(object), nPC=2, robust = FALSE, ..., maxOutlierZ=20, nrow=2, size=2, fdr.cutoff=0.05){ - stopifnot(all(assays %in% assayNames(object))) + stopifnot(all(assays %in% names(object))) PC1 <- PC2 <- z <- pValue <- FDR <- NULL @@ -64,3 +77,10 @@ setMethod("plotPCA", signature(object="dreamletProcessedData"), function(object, }) + + + + + + + diff --git a/docs/404.html b/docs/404.html index d073ab9..6812b2a 100644 --- a/docs/404.html +++ b/docs/404.html @@ -31,7 +31,7 @@ dreamlet - 1.1.16 + 1.1.17 diff --git a/docs/authors.html b/docs/authors.html index 5229bcd..aa6ef21 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -10,7 +10,7 @@ dreamlet - 1.1.16 + 1.1.17 diff --git a/docs/index.html b/docs/index.html index 3d6a0c1..3057d73 100644 --- a/docs/index.html +++ b/docs/index.html @@ -33,7 +33,7 @@ dreamlet - 1.1.16 + 1.1.17 diff --git a/docs/news/index.html b/docs/news/index.html index 1402d6c..37b9f58 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -59,8 +59,11 @@ dreamlet 1.1.17 -bug fix in plotPCA() +new functionality in plotPCA() and outlierByAssay() +works on any list, not just dreamletProcessedData + +allows outlier analysis on residuals dreamlet 1.1.16 diff --git a/docs/reference/Rplot001.png b/docs/reference/Rplot001.png index 1a313ef..613ae94 100644 Binary files a/docs/reference/Rplot001.png and b/docs/reference/Rplot001.png differ diff --git a/docs/reference/Rplot002.png b/docs/reference/Rplot002.png index e61adff..42b8f00 100644 Binary files a/docs/reference/Rplot002.png and b/docs/reference/Rplot002.png differ diff --git a/docs/reference/index.html b/docs/reference/index.html index 46c369c..71d6022 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -279,7 +279,7 @@ All functionsplotPCA(<dreamletProcessedData>) + plotPCA(<list>) Plot PCA of gene expression for an assay diff --git a/docs/reference/plotPCA-1.png b/docs/reference/plotPCA-1.png index 6b72b86..ebfa36c 100644 Binary files a/docs/reference/plotPCA-1.png and b/docs/reference/plotPCA-1.png differ diff --git a/docs/reference/plotPCA-2.png b/docs/reference/plotPCA-2.png new file mode 100644 index 0000000..60abd8c Binary files /dev/null and b/docs/reference/plotPCA-2.png differ diff --git a/docs/reference/plotPCA.html b/docs/reference/plotPCA.html index 166fef0..cb83e51 100644 --- a/docs/reference/plotPCA.html +++ b/docs/reference/plotPCA.html @@ -64,10 +64,10 @@ Usage - # S4 method for dreamletProcessedData + # S4 method for list plotPCA( object, - assays = assayNames(object), + assays = names(object), nPC = 2, robust = FALSE, ..., @@ -81,7 +81,7 @@ Usage Arguments object -dreamletProcessedData from processAssays() +dreamletProcessedData from processAssays() or a list from residuals() assays @@ -139,19 +139,43 @@ Examples# voom-style normalization res.proc <- processAssays(pb, ~group_id) #> B cells... -#> 0.24 secs +#> 0.36 secs #> CD14+ Monocytes... -#> 0.38 secs +#> 0.41 secs #> CD4 T cells... -#> 0.25 secs +#> 0.28 secs #> CD8 T cells... -#> 0.13 secs +#> 0.18 secs #> FCGR3A+ Monocytes... -#> 0.3 secs +#> 0.33 secs # PCA to identify outliers -plotPCA( res.proc, "CD14+ Monocytes") +# from normalized expression +plotPCA( res.proc, c("B cells", "CD14+ Monocytes")) + +# Run on regression residuals +#----------------------------- + +# Regression analysis +fit = dreamlet(res.proc, ~ group_id) +#> B cells... +#> 0.18 secs +#> CD14+ Monocytes... +#> 0.24 secs +#> CD4 T cells... +#> 0.21 secs +#> CD8 T cells... +#> 0.11 secs +#> FCGR3A+ Monocytes... +#> 0.22 secs + +# Extract regression residuals +residsObj = residuals(fit) + +# PCA on residuals +plotPCA( residsObj, c("B cells", "CD14+ Monocytes")) +
plotPCA()
outlierByAssay()
list
dreamletProcessedData
plotPCA(<list>)
# S4 method for dreamletProcessedData + # S4 method for list plotPCA( object, - assays = assayNames(object), + assays = names(object), nPC = 2, robust = FALSE, ..., @@ -81,7 +81,7 @@ Usage Arguments object -dreamletProcessedData from processAssays() +dreamletProcessedData from processAssays() or a list from residuals() assays @@ -139,19 +139,43 @@ Examples# voom-style normalization res.proc <- processAssays(pb, ~group_id) #> B cells... -#> 0.24 secs +#> 0.36 secs #> CD14+ Monocytes... -#> 0.38 secs +#> 0.41 secs #> CD4 T cells... -#> 0.25 secs +#> 0.28 secs #> CD8 T cells... -#> 0.13 secs +#> 0.18 secs #> FCGR3A+ Monocytes... -#> 0.3 secs +#> 0.33 secs # PCA to identify outliers -plotPCA( res.proc, "CD14+ Monocytes") +# from normalized expression +plotPCA( res.proc, c("B cells", "CD14+ Monocytes")) + +# Run on regression residuals +#----------------------------- + +# Regression analysis +fit = dreamlet(res.proc, ~ group_id) +#> B cells... +#> 0.18 secs +#> CD14+ Monocytes... +#> 0.24 secs +#> CD4 T cells... +#> 0.21 secs +#> CD8 T cells... +#> 0.11 secs +#> FCGR3A+ Monocytes... +#> 0.22 secs + +# Extract regression residuals +residsObj = residuals(fit) + +# PCA on residuals +plotPCA( residsObj, c("B cells", "CD14+ Monocytes")) +
# S4 method for list plotPCA( object, - assays = assayNames(object), + assays = names(object), nPC = 2, robust = FALSE, ..., @@ -81,7 +81,7 @@ Usage Arguments object -dreamletProcessedData from processAssays() +dreamletProcessedData from processAssays() or a list from residuals() assays @@ -139,19 +139,43 @@ Examples# voom-style normalization res.proc <- processAssays(pb, ~group_id) #> B cells... -#> 0.24 secs +#> 0.36 secs #> CD14+ Monocytes... -#> 0.38 secs +#> 0.41 secs #> CD4 T cells... -#> 0.25 secs +#> 0.28 secs #> CD8 T cells... -#> 0.13 secs +#> 0.18 secs #> FCGR3A+ Monocytes... -#> 0.3 secs +#> 0.33 secs # PCA to identify outliers -plotPCA( res.proc, "CD14+ Monocytes") +# from normalized expression +plotPCA( res.proc, c("B cells", "CD14+ Monocytes")) + +# Run on regression residuals +#----------------------------- + +# Regression analysis +fit = dreamlet(res.proc, ~ group_id) +#> B cells... +#> 0.18 secs +#> CD14+ Monocytes... +#> 0.24 secs +#> CD4 T cells... +#> 0.21 secs +#> CD8 T cells... +#> 0.11 secs +#> FCGR3A+ Monocytes... +#> 0.22 secs + +# Extract regression residuals +residsObj = residuals(fit) + +# PCA on residuals +plotPCA( residsObj, c("B cells", "CD14+ Monocytes")) +
dreamletProcessedData from processAssays()
processAssays()
dreamletProcessedData from processAssays() or a list from residuals()
residuals()