## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", warning = FALSE, message = FALSE ) ## ----eval = FALSE------------------------------------------------------------- # if (!requireNamespace("BiocManager", quietly = TRUE)) { # install.packages("BiocManager") # } # if (!requireNamespace("DESeq2", quietly = TRUE)) { # BiocManager::install("DESeq2") # } ## ----eval = FALSE------------------------------------------------------------- # if (!requireNamespace("QRscore", quietly = TRUE)) { # BiocManager::install("QRscore") # } ## ----eval = FALSE------------------------------------------------------------- # if (!requireNamespace("devtools", quietly = TRUE)) { # install.packages("devtools") # } # devtools::install_github("Fanding-Zhou/QRscore") ## ----------------------------------------------------------------------------- library(QRscore) library(DESeq2) ## ----------------------------------------------------------------------------- data("example_dataset_raw_3000_genes") ## ----------------------------------------------------------------------------- bulk_sparse_mat <- example_dataset_raw_3000_genes$COUNTS ages <- example_dataset_raw_3000_genes$METADATA$AGE ages[ages %in% c("20-29", "30-39")] <- "20-39" ages[ages %in% c("40-49", "50-59")] <- "40-59" ages[ages %in% c("60-69", "70-79")] <- "60-79" ## ----message=FALSE, warning=FALSE--------------------------------------------- col_means <- colMeans(bulk_sparse_mat, na.rm = TRUE) col_zeros <- colMeans(bulk_sparse_mat == 0, na.rm = TRUE) # The following threshold can be modified col_ids <- which(col_means > 5 & col_zeros < 0.2) bulk_df <- bulk_sparse_mat[, col_ids] bulk_df_inv <- t(bulk_df) coldata <- data.frame(age = ages) dds <- DESeqDataSetFromMatrix( countData = bulk_df_inv, colData = coldata, design = ~age ) dds <- estimateSizeFactors(dds) normalized_mat <- counts(dds, normalized = TRUE) ## ----------------------------------------------------------------------------- print("Number of kept genes after prefiltering:") print(length(col_ids)) ## ----------------------------------------------------------------------------- ## define age groups and subset dataset kept_samples <- coldata$age %in% c("20-39", "60-79") normalized_mat_1 <- normalized_mat[, kept_samples] coldata_1 <- coldata[kept_samples, ] ## ----------------------------------------------------------------------------- results_2_sample <- QRscoreGenetest(normalized_mat_1, coldata_1, pairwise_test = TRUE, pairwise_logFC = TRUE, test_mean = TRUE, test_dispersion = TRUE, num_cores = 2, approx = "asymptotic" ) ## ----------------------------------------------------------------------------- results_2_sample_mean <- results_2_sample$mean_test results_2_sample_DEG <- results_2_sample_mean[ results_2_sample_mean$QRscore_Mean_adj_p_value < 0.05, ] head(results_2_sample_DEG) ## ----------------------------------------------------------------------------- results_2_sample_var <- results_2_sample$var_test results_2_sample_DDG <- results_2_sample_var[results_2_sample_var$QRscore_Var_adj_p_value < 0.05, ] head(results_2_sample_DDG) ## ----------------------------------------------------------------------------- results_3_sample <- QRscoreGenetest(normalized_mat, coldata$age, pairwise_test = FALSE, pairwise_logFC = TRUE, test_mean = TRUE, test_dispersion = TRUE, num_cores = 2, approx = "asymptotic" ) ## ----------------------------------------------------------------------------- ### DEGs results_3_sample_mean <- results_3_sample$mean_test results_3_sample_DEG <- results_3_sample_mean[ results_3_sample_mean$QRscore_Mean_adj_p_value < 0.05, ] head(results_3_sample_DEG) ## ----------------------------------------------------------------------------- ### DDGs results_3_sample_var <- results_3_sample$var_test results_3_sample_DDG <- results_3_sample_var[results_3_sample_var$QRscore_Var_adj_p_value < 0.05, ] head(results_3_sample_DDG) ## ----------------------------------------------------------------------------- sessionInfo()