From 538f4a485f6151669795ed9553ee0174cd5c1f01 Mon Sep 17 00:00:00 2001 From: spriyansh Date: Thu, 22 Feb 2024 19:11:36 +0100 Subject: [PATCH 1/2] Added Scaling plot feature --- R/plotTrend.R | 7 +- R/sc.squeeze.R | 23 +-- test_dev/Annotated_limits.png | Bin 0 -> 95192 bytes test_dev/Working-functions.R | 28 ++++ test_dev/gene_9_study_MJ_offsets.R | 258 +++++++++++++++++++++++++++++ test_dev/gene_9_test_priyansh.R | 163 ++++++++++++++++++ test_dev/testing_sum.R | 2 + 7 files changed, 466 insertions(+), 15 deletions(-) create mode 100644 test_dev/Annotated_limits.png create mode 100644 test_dev/Working-functions.R create mode 100644 test_dev/gene_9_study_MJ_offsets.R create mode 100644 test_dev/gene_9_test_priyansh.R create mode 100644 test_dev/testing_sum.R diff --git a/R/plotTrend.R b/R/plotTrend.R index 4a49903..091f492 100644 --- a/R/plotTrend.R +++ b/R/plotTrend.R @@ -15,6 +15,7 @@ #' @param logs Whether to log transform counts. (Default is TRUE) #' @param logType How to log transform the values. Available options 'log', #' 'log2', 'log10'. (Default is 'log') +#' @param scale Whether to scale the expression values. (Default is TRUE) #' @param pseudoCount Add a pseudo-count before taking the log. (Default is 1) #' @param significant Plot gene only if the models are significant based on #' \code{scMaSigPro::sc.filter()}. (Default is TRUE) @@ -31,6 +32,7 @@ plotTrend <- function(scmpObj, xlab = "Pooled Pseudotime", ylab = "Pseudobulk Expression", smoothness = 0.01, + scale = TRUE, logs = TRUE, logType = "log", pseudoCount = 1, @@ -174,10 +176,13 @@ plotTrend <- function(scmpObj, summarize(pb.counts = median(pb.counts), .groups = "drop") } + # Correct with offset + points.df["pb.counts"] <- log(points.df["pb.counts"] / exp(scmp.ob@Design@offset)) + # Plot p <- ggplot() + geom_point(data = points.df, aes(x = pooled.time, y = pb.counts, color = path), fill = "#102C57", alpha = 0.5, size = 2, stroke = 1, shape = 21) + - geom_line(data = line.df, aes(x = pooled.time, y = .data$pb.counts, color = path), linetype = "solid", linewidth = 1, alpha = 0.7) + + geom_line(data = points.df, aes(x = pooled.time, y = pb.counts, color = path), linetype = "solid", linewidth = 1, alpha = 0.7) + geom_line(data = curve.df, aes(x = x, y = y, color = path), linetype = "dashed", linewidth = 1, alpha = 0.7) + ggtitle( paste("Feature Id:", feature_id), diff --git a/R/sc.squeeze.R b/R/sc.squeeze.R index 7e9a999..cea04c7 100644 --- a/R/sc.squeeze.R +++ b/R/sc.squeeze.R @@ -76,6 +76,9 @@ sc.squeeze <- function(scmpObj, aggregate = "sum", fill_gaps = FALSE, additional_params = list(use_unique_time_points = FALSE)) { + suppressPackageStartupMessages(library(entropy)) + suppressPackageStartupMessages(library(assertthat)) + suppressPackageStartupMessages(library(SingleCellExperiment)) # Initiate Variable scmp_bin_lower_bound <- "scmp_l_bound" scmp_bin_upper_bound <- "scmp_u_bound" @@ -286,20 +289,12 @@ sc.squeeze <- function(scmpObj, # Increment the iteration counter it <- it + 1 } - } - - if (verbose) { - message(paste( - "Optimizing bin sizes, with maximum allowed bin size as", - max.allowed - )) - } - - if (verbose) { - message(paste( - "Finally, for", path, ",", length_n, "time points has been compressed to", - nrow(bin_table), "bins and the sum is ", sum(bin_table[[bin.size]]) - )) + if (verbose) { + message(paste( + "Finally, for", path, ",", length_n, "time points has been compressed to", + nrow(bin_table), "bins and the sum is ", sum(bin_table[[bin.size]]) + )) + } } rownames(bin_table) <- NULL diff --git a/test_dev/Annotated_limits.png b/test_dev/Annotated_limits.png new file mode 100644 index 0000000000000000000000000000000000000000..b350b6ea2823d8ef835ed29c5d019dfd023bd7b5 GIT binary patch literal 95192 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

$~H*9ZRgE+5>Kh^@H=0IuFTQMAq<=5H! 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 literal 0 HcmV?d00001 diff --git a/test_dev/Working-functions.R b/test_dev/Working-functions.R new file mode 100644 index 0000000..bec5a63 --- /dev/null +++ b/test_dev/Working-functions.R @@ -0,0 +1,28 @@ +# functions + +# log(0) +log.cond <- function(x) { + sol <- numeric(length(x)) + for (i in 1:length(x)) { + if (x[i] == 0) { + sol[i] <- 0 + } else { + sol[i] <- log(x[i]) + } + } + sol +} + +# R2 from deviance in glm +R2 <- function(model) { + (model$null.deviance - model$deviance) / model$null.deviance +} + +#--------------------------------------------------------------------------- +# plot-function to use several times: +plot.pred <- function(y, model, main, type = "response", ylab = "y") { + plot(Bin, y, col = as.numeric(Bpath) + 1, main = main, ylab = ylab) + pred <- predict(model, type = type) + lines(Bin[1:8], pred[1:8], col = 2) + lines(Bin[9:16], pred[9:16], col = 3) +} diff --git a/test_dev/gene_9_study_MJ_offsets.R b/test_dev/gene_9_study_MJ_offsets.R new file mode 100644 index 0000000..feb214d --- /dev/null +++ b/test_dev/gene_9_study_MJ_offsets.R @@ -0,0 +1,258 @@ +## Load Packages + +source("test_dev/Working-functions.R") +library(scMaSigPro) +library(MASS) +library(tidyverse) + +#---------------------------------------------------------------------- +## study of Gen9 +#---------------------------------------------------------------------- +data("scmp.ob", package = "scMaSigPro") +dim(eSparse(scmp.ob)) # eSparse es para data raw +dim(eDense(scmp.ob)) # eDense es para acumulados +data <- eSparse(scmp.ob) +Bdata <- eDense(scmp.ob) + +gen9 <- data[9, ] +Bgen9 <- Bdata[9, ] + +names(cSparse(scmp.ob)) +Pseudotime <- cSparse(scmp.ob)$Pseudotime +names(Pseudotime) <- rownames(cSparse(scmp.ob)) +BinnedPseudotime <- cSparse(scmp.ob)$scmp_binned_pseudotime +names(BinnedPseudotime) <- rownames(cSparse(scmp.ob)) +Path <- cSparse(scmp.ob)$Path + +# datos agrupados: +Bin <- cDense(scmp.ob)$scmp_binned_pseudotime +names(Bin) <- rownames(cDense(scmp.ob)) +Bpath <- rep(c(1:2), each = 8) + +table(BinnedPseudotime, Path) # cells in each bin-path +# check sums: +sum(gen9) == sum(Bgen9) +sum1 <- sum2 <- NULL +for (i in 1:8) +{ + sum1 <- c(sum1, sum(gen9[BinnedPseudotime == i])) + sum2 <- c(sum2, sum(Bgen9[Bin == i])) +} +sum1 +sum2 +#---------------------------------------------------------------------- +## QUESTION 1: Why sum1 is not equal to sum2? +#---------------------------------------------------------------------- + +# I checked in detail what is happening. The issue lies within the `eSparse()`. +# This function is a generic and it internally uses the `SummarizedExperiment:::assay()`. +# When we extract the counts using `eSparse()` it meses up the names of the cells. +# Maybe there is an update in the `SummarizedExperiment` package and they must have +# changed something with the indexing. I will check this in detail, for now I would +# depricate the eSparse() and eDense(). + +# I show the problem here + +# Extracting the data using the eSparse and eDense functions +data <- eSparse(scmp.ob) +Bdata <- eDense(scmp.ob) + +data_gen9 <- data[9, ] +Bdata_Bgen9 <- Bdata[9, ] + +# Extracting the data directly from the slot +slot_gen9 <- as.matrix(scmp.ob@Sparse@assays@data@listData$counts)[9, ] +slot_Bgen9 <- as.matrix(scmp.ob@Dense@assays@data@listData$bulk.counts)[9, ] + +# Check Whether the data is the same +all(data_gen9 == slot_gen9) +all(Bgen9 == slot_Bgen9) + +# Check Whether the name is same +all(names(data_gen9) == names(slot_gen9)) ## This is the problem +all(names(Bgen9) == names(slot_Bgen9)) + +# Now let's check using the slot functions +Pseudotime <- cSparse(scmp.ob)$Pseudotime +names(Pseudotime) <- rownames(cSparse(scmp.ob)) +BinnedPseudotime <- cSparse(scmp.ob)$scmp_binned_pseudotime +names(BinnedPseudotime) <- rownames(cSparse(scmp.ob)) +Path <- cSparse(scmp.ob)$Path + +# datos agrupados: +Bin <- cDense(scmp.ob)$scmp_binned_pseudotime +names(Bin) <- rownames(cDense(scmp.ob)) +Bpath <- rep(c(1:2), each = 8) + +table(BinnedPseudotime, Path) # cells in each bin-path +# check sums: +sum(slot_gen9) == sum(slot_Bgen9) +sum1_new <- sum2_new <- NULL +for (i in 1:8) { + cell_vector <- names(BinnedPseudotime[BinnedPseudotime == i]) + cell_count_vector <- slot_gen9[names(slot_gen9) %in% cell_vector] + sum1_new <- c(sum1_new, sum(cell_count_vector)) + + bin_vector <- names(Bin[Bin == i]) + bin_count_vector <- slot_Bgen9[names(Bin) %in% bin_vector] + sum2_new <- c(sum2_new, sum(bin_count_vector)) +} +all(sum1_new == sum2_new) +# This is TRUE + +# This is not an issue as within the package, as I always acess data directly from the slots. +# The eSparse and eDense are just for the user to access the data easily. + +####################################################################### +# study offsets +####################################################################### +MGeo <- function(x) { + exp(mean(log.cond(x))) +} +mGenes <- apply(Bdata, 1, MGeo) +apply(Bdata / mGenes, 2, median) + +# This is not your offset_values. I suppose for the glm we must apply -1: +computedOffset <- apply(Bdata / mGenes, 2, median) - 1 +offset_values <- scmp.ob@Design@offset +computedOffset - offset_values +#---------------------------------------------------------------------- +## QUESTION 2: Why they are not exactly the same? +#---------------------------------------------------------------------- + +# The difference is due to the fact that the offset values are calculated using the +# log(estimateSizeFactorsForMatrix(counts)) function. This function is approach is +# in the DESeq2 package. Here is the function +scmp_estimateSizeFactorsForMatrix <- function(counts, locfunc = stats::median, + geoMeans, controlGenes, + type = c("ratio", "poscounts")) { + type <- match.arg(type, c("ratio", "poscounts")) + if (missing(geoMeans)) { + incomingGeoMeans <- FALSE + if (type == "ratio") { + loggeomeans <- MatrixGenerics::rowMeans(log(counts)) + } else if (type == "poscounts") { + lc <- log(counts) + lc[!is.finite(lc)] <- 0 + loggeomeans <- MatrixGenerics::rowMeans(lc) + allZero <- MatrixGenerics::rowSums(counts) == 0 + loggeomeans[allZero] <- -Inf + } + } else { + incomingGeoMeans <- TRUE + if (length(geoMeans) != nrow(counts)) { + stop("geoMeans should be as long as the number of rows of counts") + } + loggeomeans <- log(geoMeans) + } + if (all(is.infinite(loggeomeans))) { + stop("every gene contains at least one zero, cannot compute log geometric means") + } + sf <- if (missing(controlGenes)) { + apply(counts, 2, function(cnts) { + exp(locfunc((log(cnts) - loggeomeans)[is.finite(loggeomeans) & cnts > 0])) + }) + } else { + if (!(is.numeric(controlGenes) | is.logical(controlGenes))) { + stop("controlGenes should be either a numeric or logical vector") + } + loggeomeansSub <- loggeomeans[controlGenes] + apply(counts[controlGenes, , drop = FALSE], 2, function(cnts) { + exp(locfunc((log(cnts) - loggeomeansSub)[is.finite(loggeomeansSub) & cnts > 0])) + }) + } + if (incomingGeoMeans) { + # stabilize size factors to have geometric mean of 1 + sf <- sf / exp(mean(log(sf))) + } + sf +} + +# Also the offset values you are comparing against they are not the same, because +# when the we run the tsetp function they are updated. The input then is basically +# the dense matrix with the significant non-flat profiles only. + +## Here is how to verify it + +# Get data +slot_Bdata <- scmp.ob@Dense@assays@data@listData$bulk.counts + +## Since the object is S4 we can easily update the slots +scmp.ob <- sc.p.vector(scmp.ob, offset = T, log_offset = T) + +## Get the offset values +offset_values_after_pvector <- as.numeric(scmp.ob@Design@offset) + +## Calculate the offset manually +offset_values_after_pvector_manual <- as.numeric(log(scmp_estimateSizeFactorsForMatrix( + counts = slot_Bdata + 1 +))) + +# Check +offset_values_after_pvector - offset_values_after_pvector_manual +# This is ~0 + +# I use testthat framework which is used CRAN nowadays +testthat::expect_equal( + expected = offset_values_after_pvector, + object = offset_values_after_pvector_manual +) + +###################################################################### +# 4 plots that summarize the process +par(mfrow = c(2, 2)) +plot(Pseudotime, gen9, col = as.numeric(Path) + 1) +title("Gen9 - row data") +plot(BinnedPseudotime, gen9, col = as.numeric(Path) + 1) +title("Gen9 - row data") +plot(Bin, Bgen9, col = Bpath + 1) +lines(Bin[1:8], Bgen9[1:8], col = 2) +lines(Bin[9:16], Bgen9[9:16], col = 3) +title("Gen9 - binned-data") + +plot(Bin, log(Bgen9), col = Bpath + 1) +lines(Bin[1:8], log(Bgen9[1:8]), col = 2) +lines(Bin[9:16], log(Bgen9[9:16]), col = 3) +title("Gen9 - log(binned-data)") + +###################################################################### +# Model without offsets (as I did before) +#--------------------------------------------------------------------- +mod0 <- glm(Bgen9 ~ Bin * as.factor(Bpath), family = negative.binomial(10)) +R2(mod0) +plot.pred(y = Bgen9, model = mod0, main = "Raw data,no offset. R2=0.2706") + + +#-------------------------------------------------------------- +# including offsets in the model you are normalizing data through the model. +# offset values are different for each data-point: +plot(offset_values, log(Bgen9)) +cor(offset_values, Bgen9) # high correlation + +# Comparing raw data with this a fitted model with offsets doesn't show reality +# high R2 indicates data is near the fitted values. It doesn't depends on the scale of the plot +# because is a relative measure + +#------------------------------------------------------------------------------ +# Model comparison with offsets (only first step, it is enough to show this) +#------------------------------------------------------------------------------ +mod1 <- glm(Bgen9 ~ Bin * as.factor(Bpath), family = negative.binomial(10), offset = offset_values) +summary(mod1) +R2(mod1) + +y <- Bgen9 / exp(offset_values) +mod2 <- glm(y ~ Bin * as.factor(Bpath), family = negative.binomial(10)) +summary(mod2) +R2(mod2) # they are not exactly the same, but very similar + +par(mfrow = c(2, 2)) +plot.pred(y = Bgen9, model = mod0, main = "Raw data,no offset. R2=0.2706") +plot.pred(y = Bgen9, model = mod1, main = "Raw data-model with offset.R2=0.9174") +plot.pred(y = y, model = mod2, main = "Corrected data.R2=0.9174") +plot.pred(y = log(y), model = mod2, type = "link", main = "Corrected log(data).R2=0.9174", ylab = "log(y)") + +# if you show high R2 with first graph is confusing. +plotTrend(scmp.ob, "Gene9", logs = T, logType = "log") +#---------------------------------------------------------------------- +## QUESTION 3: Don't you think graphs with corrected data will be more informative? +#---------------------------------------------------------------------- diff --git a/test_dev/gene_9_test_priyansh.R b/test_dev/gene_9_test_priyansh.R new file mode 100644 index 0000000..9d0fdca --- /dev/null +++ b/test_dev/gene_9_test_priyansh.R @@ -0,0 +1,163 @@ +## study of Gen9 + +## Load Packages +library(scMaSigPro) +library(MASS) + +data("scmp.ob", package = "scMaSigPro") +dim(eSparse(scmp.ob)) +dim(eDense(scmp.ob)) + +data <- eSparse(scmp.ob) +Bdata <- eDense(scmp.ob) +gen9 <- data[9, ] +Bgen9 <- Bdata[9, ] + +names(cSparse(scmp.ob)) +Pseudotime <- cSparse(scmp.ob)$Pseudotime +names(Pseudotime) <- rownames(cSparse(scmp.ob)) +BinnedPseudotime <- cDense(scmp.ob)$scmp_binned_pseudotime +names(BinnedPseudotime) <- rownames(cDense(scmp.ob)) +Path <- cSparse(scmp.ob)$Path + +par(mfrow = c(2, 2)) +plot(Pseudotime, gen9, col = as.numeric(Path) + 1) +title("Gen9 - row data") +plot(BinnedPseudotime, Bgen9, col = as.numeric(Path) + 1) +title("Gen9 - row data") + +Bin <- rep(c(1:8), 2) +Bpath <- rep(c(1:2), each = 8) +plot(Bin, Bgen9, col = Bpath + 1) +lines(Bin[1:8], Bgen9[1:8], col = 2) +lines(Bin[9:16], Bgen9[9:16], col = 3) +title("Gen9 - binned-data") + +plot(Bin, log(Bgen9), col = Bpath + 1) +lines(Bin[1:8], log(Bgen9[1:8]), col = 2) +lines(Bin[9:16], log(Bgen9[9:16]), col = 3) +title("Gen9 - log(binned-data). R2=0.2706") + +mod <- glm(Bgen9 ~ Bin * as.factor(Bpath), family = negative.binomial(10)) +summary(mod) +mod0 <- glm(Bgen9 ~ 1, family = negative.binomial(10)) +anova(mod0, mod, test = "Chisq") + + +R2 <- function(model) { + (model$null.deviance - model$deviance) / model$null.deviance +} +R2(mod) + +####################################################################### +# Computing the R2 with offset + +# Offsets are Stored in the object +# They are for the samples +offset_values <- scmp.ob@Design@offset +offset_values + +# Model with offset +mod_w_offset <- glm(Bgen9 ~ Bin * as.factor(Bpath), + family = negative.binomial(10), + offset = offset_values +) +summary(mod_w_offset) + +# Summary with and without +summary(mod_w_offset) +summary(mod) + +# AIC, difference is more than 2 units +AIC(mod_w_offset) +AIC(mod) + +# Compute Intercept model with offset +mod0_w_offset <- glm(Bgen9 ~ 1, + family = negative.binomial(10), + offset = offset_values +) + +# Is Model significant than intercept model? +anova(mod0_w_offset, mod_w_offset, test = "Chisq")$Pr[2] < 0.05 + +# Compute R2 +R2(mod) +R2(mod_w_offset) + +# Now why do we see the R2 as 0.897? + +# Let's first plot the model using scMaSigPro function +plotTrend(scmp.ob, "Gene9", logs = TRUE, logType = "log") + +# Now lets see what is modeled +showPoly(scmp.ob) +# "beta0 + beta1*Path2vsPath1 + beta2*scmp_binned_pseudotime + beta3*scmp_binned_pseudotimexPath2" + +# The data is stored in the predictor_matrix slot +predictor_matrix <- scmp.ob@Design@predictor_matrix %>% as.matrix() +print(predictor_matrix) + +# Now let's check which of the terms are significant for gene-9 +gene_9_sol <- showSol(scmp.ob) %>% + rownames_to_column("gene_id") %>% + rename(p_value = "p-value", r_squared = "R-squared") %>% + filter(gene_id == "Gene9") +print(gene_9_sol) + +# This means that the p.valor_scmp_binned_pseudotime and p.valor_scmp_binned_pseudotimexPath2 are significant +# Let's subset the predictor matrix to only include these two columns +predictor_matrix_subset <- predictor_matrix[, c("scmp_binned_pseudotime", "scmp_binned_pseudotimexPath2")] + +# Since we are using the offset, we will also add the offset here +predictor_matrix_subset <- cbind(predictor_matrix_subset, offset_values) %>% as.data.frame() +print(predictor_matrix_subset) + +# Now let's add the response +predictor_matrix_subset <- cbind(predictor_matrix_subset, Bgen9) %>% as.data.frame() + +# Model with offset +scmp_mod_g9 <- glm( + formula = Bgen9 ~ scmp_binned_pseudotime + scmp_binned_pseudotimexPath2, + family = negative.binomial(10), + data = predictor_matrix_subset, offset = predictor_matrix_subset$offset_values, + control = list(maxit = 100), epsilon = 1e-08 +) + +R2(scmp_mod_g9) +## And we get the value as 0.897 which is also shown in the plot. + +## Now Let's once again see the summary of "mod_w_offset" +summary(mod_w_offset) + +## The "as.factor(Bpath)2" is not significant, which means we can just remove it from the model +mod_w_offset_optimized <- glm(Bgen9 ~ Bin + Bin:as.factor(Bpath), + family = negative.binomial(10), + offset = offset_values +) + +# Plot Summary +summary(mod_w_offset_optimized) + +R2(mod_w_offset_optimized) + +# We have the same R2: 0.896407 + +## Another thing is the plot itself shows too much variance for Pseudotime 3 and 4 for path1, cosidering we have such an high r2 of 0.897 +## The reason for this is the limits of the y-axis, the plot is zoomed in. +## A simple approach is to just zoom out the y-axis. + +# Let's plot the data again +plotTrend(scmp.ob, "Gene9", logs = TRUE, logType = "log") + +# Since this a ggplot2 object we can scale/expand the limits easily, +# let's rescale the limits of the y-axis +plotTrend(scmp.ob, "Gene9", logs = TRUE, logType = "log") + + scale_y_continuous( + limits = c(5, 8), + breaks = seq(5, 8, 0.1) + ) + +## Now we see the difference at the y-axis is not that much, and the plot is more informative +## Now in this perspective, the R2 of 0.897 makes more sense +## The variability itself is not more than 1 unit. If we look at Path1 at Psesudotime 3 (y = 6.1) and 4 (7.3), the model line is at 6.6-6.7. diff --git a/test_dev/testing_sum.R b/test_dev/testing_sum.R new file mode 100644 index 0000000..082df65 --- /dev/null +++ b/test_dev/testing_sum.R @@ -0,0 +1,2 @@ +test <- scmp.ob +test <- sc.squeeze(test) From 7d55d0aa32d14722a0b8dff7c1e202155616ce74 Mon Sep 17 00:00:00 2001 From: spriyansh Date: Fri, 23 Feb 2024 00:04:10 +0100 Subject: [PATCH 2/2] Added Offset Scaling --- .gitignore | 3 +- DESCRIPTION | 2 +- R/plotTrend.R | 17 +- R/plotTrendCluster.R | 13 +- R/sc.squeeze.R | 6 +- test_dev/Annotated_limits.png | Bin 95192 -> 0 bytes test_dev/Working-functions.R | 28 ---- test_dev/gene_9_study_MJ_offsets.R | 258 ----------------------------- test_dev/gene_9_test_priyansh.R | 163 ------------------ test_dev/testing_sum.R | 2 - vignettes/Basic-Workflow.Rmd | 16 +- vignettes/scMaSigPro-maSigPro.Rmd | 2 +- 12 files changed, 45 insertions(+), 465 deletions(-) delete mode 100644 test_dev/Annotated_limits.png delete mode 100644 test_dev/Working-functions.R delete mode 100644 test_dev/gene_9_study_MJ_offsets.R delete mode 100644 test_dev/gene_9_test_priyansh.R delete mode 100644 test_dev/testing_sum.R diff --git a/.gitignore b/.gitignore index 902d254..c263a01 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ extdata/ inst/doc /doc/ /Meta/ -.Rbuildignore \ No newline at end of file +.Rbuildignore +test_dev \ No newline at end of file diff --git a/DESCRIPTION b/DESCRIPTION index ec42740..1902886 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: scMaSigPro Type: Package Title: Application of MaSigPro Bioconductor Package for scRNA Trajectory data -Version: 0.0.1 +Version: 0.0.2 Authors@R: c( person("Ana", "Conesa", role = c("aut"), email = "ana.conesa@csic.es"), person("Maria Jose", "Nueda", role = c("aut"), email = "mj.nueda@ua.es"), diff --git a/R/plotTrend.R b/R/plotTrend.R index 091f492..553cfd2 100644 --- a/R/plotTrend.R +++ b/R/plotTrend.R @@ -15,7 +15,6 @@ #' @param logs Whether to log transform counts. (Default is TRUE) #' @param logType How to log transform the values. Available options 'log', #' 'log2', 'log10'. (Default is 'log') -#' @param scale Whether to scale the expression values. (Default is TRUE) #' @param pseudoCount Add a pseudo-count before taking the log. (Default is 1) #' @param significant Plot gene only if the models are significant based on #' \code{scMaSigPro::sc.filter()}. (Default is TRUE) @@ -32,7 +31,6 @@ plotTrend <- function(scmpObj, xlab = "Pooled Pseudotime", ylab = "Pseudobulk Expression", smoothness = 0.01, - scale = TRUE, logs = TRUE, logType = "log", pseudoCount = 1, @@ -43,6 +41,9 @@ plotTrend <- function(scmpObj, pooled.time <- "pooled.time" path <- "path" + # Offset + offset_vector <- scmpObj@Design@offset + # Check summary_mode assert_that(any(summary_mode %in% c("median", "mean")), msg = paste( @@ -146,6 +147,11 @@ plotTrend <- function(scmpObj, data.sol <- showSol(scmpObj, view = FALSE, return = TRUE) data.sol <- data.sol[feature_id, , drop = FALSE] + # Correct by offset + if (sum(offset_vector) != 0) { + points.df["pb.counts"] <- points.df["pb.counts"] / exp(offset_vector) + } + # if log is requestion if (logs) { if (logType == "log2") { @@ -176,13 +182,14 @@ plotTrend <- function(scmpObj, summarize(pb.counts = median(pb.counts), .groups = "drop") } - # Correct with offset - points.df["pb.counts"] <- log(points.df["pb.counts"] / exp(scmp.ob@Design@offset)) + if (sum(offset_vector) != 0) { + line.df <- points.df + } # Plot p <- ggplot() + geom_point(data = points.df, aes(x = pooled.time, y = pb.counts, color = path), fill = "#102C57", alpha = 0.5, size = 2, stroke = 1, shape = 21) + - geom_line(data = points.df, aes(x = pooled.time, y = pb.counts, color = path), linetype = "solid", linewidth = 1, alpha = 0.7) + + geom_line(data = line.df, aes(x = pooled.time, y = pb.counts, color = path), linetype = "solid", linewidth = 1, alpha = 0.7) + geom_line(data = curve.df, aes(x = x, y = y, color = path), linetype = "dashed", linewidth = 1, alpha = 0.7) + ggtitle( paste("Feature Id:", feature_id), diff --git a/R/plotTrendCluster.R b/R/plotTrendCluster.R index 309145b..eed1381 100644 --- a/R/plotTrendCluster.R +++ b/R/plotTrendCluster.R @@ -48,6 +48,8 @@ plotTrendCluster <- function(scmpObj, # Global vars scmp_clusters <- "scmp_clusters" feature_id <- "feature_id" + # Offset + offset_vector <- scmpObj@Design@offset # Check assert_that(!isEmpty(scmpObj@Significant@clusters), @@ -103,7 +105,7 @@ plotTrendCluster <- function(scmpObj, logs = log, logType = log_type, pseudoCount = pCount, significant = sig, - summary_mode = summary + summary_mode = summary, ) return(plt) }, @@ -264,6 +266,15 @@ plotTrendCluster <- function(scmpObj, " (", curves_combined[["num"]], " Features)" ) + if (sum(offset_vector) != 0) { + lines_combined <- points_combined + } + + + # View(points_combined) + # View(curves_combined) + # View(lines_combined) + # Initiate plotting p <- ggplot() + geom_point( diff --git a/R/sc.squeeze.R b/R/sc.squeeze.R index cea04c7..8dbbf7d 100644 --- a/R/sc.squeeze.R +++ b/R/sc.squeeze.R @@ -76,9 +76,9 @@ sc.squeeze <- function(scmpObj, aggregate = "sum", fill_gaps = FALSE, additional_params = list(use_unique_time_points = FALSE)) { - suppressPackageStartupMessages(library(entropy)) - suppressPackageStartupMessages(library(assertthat)) - suppressPackageStartupMessages(library(SingleCellExperiment)) + # suppressPackageStartupMessages(library(entropy)) + # suppressPackageStartupMessages(library(assertthat)) + # suppressPackageStartupMessages(library(SingleCellExperiment)) # Initiate Variable scmp_bin_lower_bound <- "scmp_l_bound" scmp_bin_upper_bound <- "scmp_u_bound" diff --git a/test_dev/Annotated_limits.png b/test_dev/Annotated_limits.png deleted file mode 100644 index b350b6ea2823d8ef835ed29c5d019dfd023bd7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95192 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

$~H*9ZRgE+5>Kh^@H=0IuFTQMAq<=5H! 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 diff --git a/test_dev/Working-functions.R b/test_dev/Working-functions.R deleted file mode 100644 index bec5a63..0000000 --- a/test_dev/Working-functions.R +++ /dev/null @@ -1,28 +0,0 @@ -# functions - -# log(0) -log.cond <- function(x) { - sol <- numeric(length(x)) - for (i in 1:length(x)) { - if (x[i] == 0) { - sol[i] <- 0 - } else { - sol[i] <- log(x[i]) - } - } - sol -} - -# R2 from deviance in glm -R2 <- function(model) { - (model$null.deviance - model$deviance) / model$null.deviance -} - -#--------------------------------------------------------------------------- -# plot-function to use several times: -plot.pred <- function(y, model, main, type = "response", ylab = "y") { - plot(Bin, y, col = as.numeric(Bpath) + 1, main = main, ylab = ylab) - pred <- predict(model, type = type) - lines(Bin[1:8], pred[1:8], col = 2) - lines(Bin[9:16], pred[9:16], col = 3) -} diff --git a/test_dev/gene_9_study_MJ_offsets.R b/test_dev/gene_9_study_MJ_offsets.R deleted file mode 100644 index feb214d..0000000 --- a/test_dev/gene_9_study_MJ_offsets.R +++ /dev/null @@ -1,258 +0,0 @@ -## Load Packages - -source("test_dev/Working-functions.R") -library(scMaSigPro) -library(MASS) -library(tidyverse) - -#---------------------------------------------------------------------- -## study of Gen9 -#---------------------------------------------------------------------- -data("scmp.ob", package = "scMaSigPro") -dim(eSparse(scmp.ob)) # eSparse es para data raw -dim(eDense(scmp.ob)) # eDense es para acumulados -data <- eSparse(scmp.ob) -Bdata <- eDense(scmp.ob) - -gen9 <- data[9, ] -Bgen9 <- Bdata[9, ] - -names(cSparse(scmp.ob)) -Pseudotime <- cSparse(scmp.ob)$Pseudotime -names(Pseudotime) <- rownames(cSparse(scmp.ob)) -BinnedPseudotime <- cSparse(scmp.ob)$scmp_binned_pseudotime -names(BinnedPseudotime) <- rownames(cSparse(scmp.ob)) -Path <- cSparse(scmp.ob)$Path - -# datos agrupados: -Bin <- cDense(scmp.ob)$scmp_binned_pseudotime -names(Bin) <- rownames(cDense(scmp.ob)) -Bpath <- rep(c(1:2), each = 8) - -table(BinnedPseudotime, Path) # cells in each bin-path -# check sums: -sum(gen9) == sum(Bgen9) -sum1 <- sum2 <- NULL -for (i in 1:8) -{ - sum1 <- c(sum1, sum(gen9[BinnedPseudotime == i])) - sum2 <- c(sum2, sum(Bgen9[Bin == i])) -} -sum1 -sum2 -#---------------------------------------------------------------------- -## QUESTION 1: Why sum1 is not equal to sum2? -#---------------------------------------------------------------------- - -# I checked in detail what is happening. The issue lies within the `eSparse()`. -# This function is a generic and it internally uses the `SummarizedExperiment:::assay()`. -# When we extract the counts using `eSparse()` it meses up the names of the cells. -# Maybe there is an update in the `SummarizedExperiment` package and they must have -# changed something with the indexing. I will check this in detail, for now I would -# depricate the eSparse() and eDense(). - -# I show the problem here - -# Extracting the data using the eSparse and eDense functions -data <- eSparse(scmp.ob) -Bdata <- eDense(scmp.ob) - -data_gen9 <- data[9, ] -Bdata_Bgen9 <- Bdata[9, ] - -# Extracting the data directly from the slot -slot_gen9 <- as.matrix(scmp.ob@Sparse@assays@data@listData$counts)[9, ] -slot_Bgen9 <- as.matrix(scmp.ob@Dense@assays@data@listData$bulk.counts)[9, ] - -# Check Whether the data is the same -all(data_gen9 == slot_gen9) -all(Bgen9 == slot_Bgen9) - -# Check Whether the name is same -all(names(data_gen9) == names(slot_gen9)) ## This is the problem -all(names(Bgen9) == names(slot_Bgen9)) - -# Now let's check using the slot functions -Pseudotime <- cSparse(scmp.ob)$Pseudotime -names(Pseudotime) <- rownames(cSparse(scmp.ob)) -BinnedPseudotime <- cSparse(scmp.ob)$scmp_binned_pseudotime -names(BinnedPseudotime) <- rownames(cSparse(scmp.ob)) -Path <- cSparse(scmp.ob)$Path - -# datos agrupados: -Bin <- cDense(scmp.ob)$scmp_binned_pseudotime -names(Bin) <- rownames(cDense(scmp.ob)) -Bpath <- rep(c(1:2), each = 8) - -table(BinnedPseudotime, Path) # cells in each bin-path -# check sums: -sum(slot_gen9) == sum(slot_Bgen9) -sum1_new <- sum2_new <- NULL -for (i in 1:8) { - cell_vector <- names(BinnedPseudotime[BinnedPseudotime == i]) - cell_count_vector <- slot_gen9[names(slot_gen9) %in% cell_vector] - sum1_new <- c(sum1_new, sum(cell_count_vector)) - - bin_vector <- names(Bin[Bin == i]) - bin_count_vector <- slot_Bgen9[names(Bin) %in% bin_vector] - sum2_new <- c(sum2_new, sum(bin_count_vector)) -} -all(sum1_new == sum2_new) -# This is TRUE - -# This is not an issue as within the package, as I always acess data directly from the slots. -# The eSparse and eDense are just for the user to access the data easily. - -####################################################################### -# study offsets -####################################################################### -MGeo <- function(x) { - exp(mean(log.cond(x))) -} -mGenes <- apply(Bdata, 1, MGeo) -apply(Bdata / mGenes, 2, median) - -# This is not your offset_values. I suppose for the glm we must apply -1: -computedOffset <- apply(Bdata / mGenes, 2, median) - 1 -offset_values <- scmp.ob@Design@offset -computedOffset - offset_values -#---------------------------------------------------------------------- -## QUESTION 2: Why they are not exactly the same? -#---------------------------------------------------------------------- - -# The difference is due to the fact that the offset values are calculated using the -# log(estimateSizeFactorsForMatrix(counts)) function. This function is approach is -# in the DESeq2 package. Here is the function -scmp_estimateSizeFactorsForMatrix <- function(counts, locfunc = stats::median, - geoMeans, controlGenes, - type = c("ratio", "poscounts")) { - type <- match.arg(type, c("ratio", "poscounts")) - if (missing(geoMeans)) { - incomingGeoMeans <- FALSE - if (type == "ratio") { - loggeomeans <- MatrixGenerics::rowMeans(log(counts)) - } else if (type == "poscounts") { - lc <- log(counts) - lc[!is.finite(lc)] <- 0 - loggeomeans <- MatrixGenerics::rowMeans(lc) - allZero <- MatrixGenerics::rowSums(counts) == 0 - loggeomeans[allZero] <- -Inf - } - } else { - incomingGeoMeans <- TRUE - if (length(geoMeans) != nrow(counts)) { - stop("geoMeans should be as long as the number of rows of counts") - } - loggeomeans <- log(geoMeans) - } - if (all(is.infinite(loggeomeans))) { - stop("every gene contains at least one zero, cannot compute log geometric means") - } - sf <- if (missing(controlGenes)) { - apply(counts, 2, function(cnts) { - exp(locfunc((log(cnts) - loggeomeans)[is.finite(loggeomeans) & cnts > 0])) - }) - } else { - if (!(is.numeric(controlGenes) | is.logical(controlGenes))) { - stop("controlGenes should be either a numeric or logical vector") - } - loggeomeansSub <- loggeomeans[controlGenes] - apply(counts[controlGenes, , drop = FALSE], 2, function(cnts) { - exp(locfunc((log(cnts) - loggeomeansSub)[is.finite(loggeomeansSub) & cnts > 0])) - }) - } - if (incomingGeoMeans) { - # stabilize size factors to have geometric mean of 1 - sf <- sf / exp(mean(log(sf))) - } - sf -} - -# Also the offset values you are comparing against they are not the same, because -# when the we run the tsetp function they are updated. The input then is basically -# the dense matrix with the significant non-flat profiles only. - -## Here is how to verify it - -# Get data -slot_Bdata <- scmp.ob@Dense@assays@data@listData$bulk.counts - -## Since the object is S4 we can easily update the slots -scmp.ob <- sc.p.vector(scmp.ob, offset = T, log_offset = T) - -## Get the offset values -offset_values_after_pvector <- as.numeric(scmp.ob@Design@offset) - -## Calculate the offset manually -offset_values_after_pvector_manual <- as.numeric(log(scmp_estimateSizeFactorsForMatrix( - counts = slot_Bdata + 1 -))) - -# Check -offset_values_after_pvector - offset_values_after_pvector_manual -# This is ~0 - -# I use testthat framework which is used CRAN nowadays -testthat::expect_equal( - expected = offset_values_after_pvector, - object = offset_values_after_pvector_manual -) - -###################################################################### -# 4 plots that summarize the process -par(mfrow = c(2, 2)) -plot(Pseudotime, gen9, col = as.numeric(Path) + 1) -title("Gen9 - row data") -plot(BinnedPseudotime, gen9, col = as.numeric(Path) + 1) -title("Gen9 - row data") -plot(Bin, Bgen9, col = Bpath + 1) -lines(Bin[1:8], Bgen9[1:8], col = 2) -lines(Bin[9:16], Bgen9[9:16], col = 3) -title("Gen9 - binned-data") - -plot(Bin, log(Bgen9), col = Bpath + 1) -lines(Bin[1:8], log(Bgen9[1:8]), col = 2) -lines(Bin[9:16], log(Bgen9[9:16]), col = 3) -title("Gen9 - log(binned-data)") - -###################################################################### -# Model without offsets (as I did before) -#--------------------------------------------------------------------- -mod0 <- glm(Bgen9 ~ Bin * as.factor(Bpath), family = negative.binomial(10)) -R2(mod0) -plot.pred(y = Bgen9, model = mod0, main = "Raw data,no offset. R2=0.2706") - - -#-------------------------------------------------------------- -# including offsets in the model you are normalizing data through the model. -# offset values are different for each data-point: -plot(offset_values, log(Bgen9)) -cor(offset_values, Bgen9) # high correlation - -# Comparing raw data with this a fitted model with offsets doesn't show reality -# high R2 indicates data is near the fitted values. It doesn't depends on the scale of the plot -# because is a relative measure - -#------------------------------------------------------------------------------ -# Model comparison with offsets (only first step, it is enough to show this) -#------------------------------------------------------------------------------ -mod1 <- glm(Bgen9 ~ Bin * as.factor(Bpath), family = negative.binomial(10), offset = offset_values) -summary(mod1) -R2(mod1) - -y <- Bgen9 / exp(offset_values) -mod2 <- glm(y ~ Bin * as.factor(Bpath), family = negative.binomial(10)) -summary(mod2) -R2(mod2) # they are not exactly the same, but very similar - -par(mfrow = c(2, 2)) -plot.pred(y = Bgen9, model = mod0, main = "Raw data,no offset. R2=0.2706") -plot.pred(y = Bgen9, model = mod1, main = "Raw data-model with offset.R2=0.9174") -plot.pred(y = y, model = mod2, main = "Corrected data.R2=0.9174") -plot.pred(y = log(y), model = mod2, type = "link", main = "Corrected log(data).R2=0.9174", ylab = "log(y)") - -# if you show high R2 with first graph is confusing. -plotTrend(scmp.ob, "Gene9", logs = T, logType = "log") -#---------------------------------------------------------------------- -## QUESTION 3: Don't you think graphs with corrected data will be more informative? -#---------------------------------------------------------------------- diff --git a/test_dev/gene_9_test_priyansh.R b/test_dev/gene_9_test_priyansh.R deleted file mode 100644 index 9d0fdca..0000000 --- a/test_dev/gene_9_test_priyansh.R +++ /dev/null @@ -1,163 +0,0 @@ -## study of Gen9 - -## Load Packages -library(scMaSigPro) -library(MASS) - -data("scmp.ob", package = "scMaSigPro") -dim(eSparse(scmp.ob)) -dim(eDense(scmp.ob)) - -data <- eSparse(scmp.ob) -Bdata <- eDense(scmp.ob) -gen9 <- data[9, ] -Bgen9 <- Bdata[9, ] - -names(cSparse(scmp.ob)) -Pseudotime <- cSparse(scmp.ob)$Pseudotime -names(Pseudotime) <- rownames(cSparse(scmp.ob)) -BinnedPseudotime <- cDense(scmp.ob)$scmp_binned_pseudotime -names(BinnedPseudotime) <- rownames(cDense(scmp.ob)) -Path <- cSparse(scmp.ob)$Path - -par(mfrow = c(2, 2)) -plot(Pseudotime, gen9, col = as.numeric(Path) + 1) -title("Gen9 - row data") -plot(BinnedPseudotime, Bgen9, col = as.numeric(Path) + 1) -title("Gen9 - row data") - -Bin <- rep(c(1:8), 2) -Bpath <- rep(c(1:2), each = 8) -plot(Bin, Bgen9, col = Bpath + 1) -lines(Bin[1:8], Bgen9[1:8], col = 2) -lines(Bin[9:16], Bgen9[9:16], col = 3) -title("Gen9 - binned-data") - -plot(Bin, log(Bgen9), col = Bpath + 1) -lines(Bin[1:8], log(Bgen9[1:8]), col = 2) -lines(Bin[9:16], log(Bgen9[9:16]), col = 3) -title("Gen9 - log(binned-data). R2=0.2706") - -mod <- glm(Bgen9 ~ Bin * as.factor(Bpath), family = negative.binomial(10)) -summary(mod) -mod0 <- glm(Bgen9 ~ 1, family = negative.binomial(10)) -anova(mod0, mod, test = "Chisq") - - -R2 <- function(model) { - (model$null.deviance - model$deviance) / model$null.deviance -} -R2(mod) - -####################################################################### -# Computing the R2 with offset - -# Offsets are Stored in the object -# They are for the samples -offset_values <- scmp.ob@Design@offset -offset_values - -# Model with offset -mod_w_offset <- glm(Bgen9 ~ Bin * as.factor(Bpath), - family = negative.binomial(10), - offset = offset_values -) -summary(mod_w_offset) - -# Summary with and without -summary(mod_w_offset) -summary(mod) - -# AIC, difference is more than 2 units -AIC(mod_w_offset) -AIC(mod) - -# Compute Intercept model with offset -mod0_w_offset <- glm(Bgen9 ~ 1, - family = negative.binomial(10), - offset = offset_values -) - -# Is Model significant than intercept model? -anova(mod0_w_offset, mod_w_offset, test = "Chisq")$Pr[2] < 0.05 - -# Compute R2 -R2(mod) -R2(mod_w_offset) - -# Now why do we see the R2 as 0.897? - -# Let's first plot the model using scMaSigPro function -plotTrend(scmp.ob, "Gene9", logs = TRUE, logType = "log") - -# Now lets see what is modeled -showPoly(scmp.ob) -# "beta0 + beta1*Path2vsPath1 + beta2*scmp_binned_pseudotime + beta3*scmp_binned_pseudotimexPath2" - -# The data is stored in the predictor_matrix slot -predictor_matrix <- scmp.ob@Design@predictor_matrix %>% as.matrix() -print(predictor_matrix) - -# Now let's check which of the terms are significant for gene-9 -gene_9_sol <- showSol(scmp.ob) %>% - rownames_to_column("gene_id") %>% - rename(p_value = "p-value", r_squared = "R-squared") %>% - filter(gene_id == "Gene9") -print(gene_9_sol) - -# This means that the p.valor_scmp_binned_pseudotime and p.valor_scmp_binned_pseudotimexPath2 are significant -# Let's subset the predictor matrix to only include these two columns -predictor_matrix_subset <- predictor_matrix[, c("scmp_binned_pseudotime", "scmp_binned_pseudotimexPath2")] - -# Since we are using the offset, we will also add the offset here -predictor_matrix_subset <- cbind(predictor_matrix_subset, offset_values) %>% as.data.frame() -print(predictor_matrix_subset) - -# Now let's add the response -predictor_matrix_subset <- cbind(predictor_matrix_subset, Bgen9) %>% as.data.frame() - -# Model with offset -scmp_mod_g9 <- glm( - formula = Bgen9 ~ scmp_binned_pseudotime + scmp_binned_pseudotimexPath2, - family = negative.binomial(10), - data = predictor_matrix_subset, offset = predictor_matrix_subset$offset_values, - control = list(maxit = 100), epsilon = 1e-08 -) - -R2(scmp_mod_g9) -## And we get the value as 0.897 which is also shown in the plot. - -## Now Let's once again see the summary of "mod_w_offset" -summary(mod_w_offset) - -## The "as.factor(Bpath)2" is not significant, which means we can just remove it from the model -mod_w_offset_optimized <- glm(Bgen9 ~ Bin + Bin:as.factor(Bpath), - family = negative.binomial(10), - offset = offset_values -) - -# Plot Summary -summary(mod_w_offset_optimized) - -R2(mod_w_offset_optimized) - -# We have the same R2: 0.896407 - -## Another thing is the plot itself shows too much variance for Pseudotime 3 and 4 for path1, cosidering we have such an high r2 of 0.897 -## The reason for this is the limits of the y-axis, the plot is zoomed in. -## A simple approach is to just zoom out the y-axis. - -# Let's plot the data again -plotTrend(scmp.ob, "Gene9", logs = TRUE, logType = "log") - -# Since this a ggplot2 object we can scale/expand the limits easily, -# let's rescale the limits of the y-axis -plotTrend(scmp.ob, "Gene9", logs = TRUE, logType = "log") + - scale_y_continuous( - limits = c(5, 8), - breaks = seq(5, 8, 0.1) - ) - -## Now we see the difference at the y-axis is not that much, and the plot is more informative -## Now in this perspective, the R2 of 0.897 makes more sense -## The variability itself is not more than 1 unit. If we look at Path1 at Psesudotime 3 (y = 6.1) and 4 (7.3), the model line is at 6.6-6.7. diff --git a/test_dev/testing_sum.R b/test_dev/testing_sum.R deleted file mode 100644 index 082df65..0000000 --- a/test_dev/testing_sum.R +++ /dev/null @@ -1,2 +0,0 @@ -test <- scmp.ob -test <- sc.squeeze(test) diff --git a/vignettes/Basic-Workflow.Rmd b/vignettes/Basic-Workflow.Rmd index 8737940..01d8850 100644 --- a/vignettes/Basic-Workflow.Rmd +++ b/vignettes/Basic-Workflow.Rmd @@ -327,7 +327,7 @@ different expression between the two paths. Additionally, there are 10 genes uniquely associated with Path2vsPath1. This implies that Path2 has 10 genes that are significantly differentially expressed over time, using Path1 genes as a reference. Let's explore a few of these genes: -```{r, "trend",eval=TRUE, echo=TRUE} +```{r, "trend",eval=TRUE, echo=TRUE, fig.width=7, fig.height=7} FigureA <- plotTrend(scmp_ob, "Gene9", logs = TRUE, logType = "log") FigureB <- plotTrend(scmp_ob, "Gene95", logs = TRUE, logType = "log") FigureC <- plotTrend(scmp_ob, "Gene10", logs = TRUE, logType = "log") @@ -339,7 +339,7 @@ These plots illustrate the gene expression trends for selected genes, providing insights into their behavior in different paths. Fortunately, since we are using simulated data, we can validate these trends by extracting gene-level metadata from our simulated object: -```{r, "ground truth",eval=TRUE, echo=TRUE} +```{r, "ground truth",eval=TRUE, echo=TRUE, fig.width=7, fig.height=7} groundTruth <- as.data.frame(splat.sim@rowRanges@elementMetadata) print(groundTruth[groundTruth$Gene %in% c("Gene9", "Gene95", "Gene10", "Gene92"), c(1, 2, 6, 8)]) ``` @@ -382,6 +382,18 @@ further biological interpretation. This concludes the basic usage quick start guide of `scMaSigPro`. Please refer to other vignettes for more in-depth analysis. +```{r, "Save and Reload", eval=TRUE, echo=FALSE, message=FALSE, warning=FALSE} +# Save the object + save(splat.sim, file = "../data/splat.sim.RData") + +# Save processed data for next tutorial +scmp.ob <- scmp_ob +save(scmp.ob, file = "../data/scmp.ob.RData") + +# Compress +tools::resaveRdaFiles(paths = "../data/") +``` + --- ### Session Info diff --git a/vignettes/scMaSigPro-maSigPro.Rmd b/vignettes/scMaSigPro-maSigPro.Rmd index f84a57d..70128ea 100644 --- a/vignettes/scMaSigPro-maSigPro.Rmd +++ b/vignettes/scMaSigPro-maSigPro.Rmd @@ -394,7 +394,7 @@ plotTrendCluster( scmpObj = scmp_ob, plot = "coeff", verbose = FALSE -) + ) ``` ---