Reload important files recently saved:
main_path <- "~/Documents/main_files/AskExplain/Q4_2022/gcode/" # Please replace this path path_to_save <- paste(main_path,"./temp_save_dir/",sep="") load(file = paste(sep="",path_to_save,"all_genecoder.RData"))
Set up the test configuration for GeneCodeR
# Set up genecoder transform information genecoder.config <- GeneCodeR::extract_config_framework(F) genecoder.config$transform$from <- 1 genecoder.config$transform$to <- 2 genecoder.config$extract_spots$window_size <- 30
Set up validation functions to evaluate statistically significant differences via a t-test, and, cosine similarity.
# Testing functions # cosine metric for similarity between observations test_sample_and_genes <- function(a,b,non_zero_markers,test_type="cosine"){ if (test_type == "t.test"){ return( list( sample_wise = do.call('c',parallel::mclapply(c(1:dim(a)[1]),function(X){ t.test(as.numeric(a[X,non_zero_markers[X,]]),as.numeric(b[X,non_zero_markers[X,]]))$p.value },mc.cores = 8)), gene_wise = do.call('c',parallel::mclapply(c(1:dim(a)[2]),function(X){ t.test(as.numeric(a[non_zero_markers[,X],X]),as.numeric(b[non_zero_markers[,X],X]))$p.value },mc.cores = 8)) ) ) } if (test_type == "cosine"){ return( list( sample_wise = do.call('c',parallel::mclapply(c(1:dim(a)[1]),function(X){ lsa::cosine(as.numeric(a[X,non_zero_markers[X,]]),as.numeric(b[X,non_zero_markers[X,]])) },mc.cores = 8)), gene_wise = do.call('c',parallel::mclapply(c(1:dim(a)[2]),function(X){ lsa::cosine(as.numeric(a[non_zero_markers[,X],X]),as.numeric(b[non_zero_markers[,X],X])) },mc.cores = 8)) ) ) } }
Base validation is used to directly compare observed gene expression with transformed image spots representing gene expression via pattern matching and weight assignment. Cosine similarity is used to compare the observed and the transformed.
# Base testing # Extract test spot data base_test_spot_data <- GeneCodeR::prepare_spot(file_path_list = test_file_path_list,meta_info_list = meta_info_list,config = genecoder.config, gex_data = test_gex_data$gex) # Important non-zero markers (gene is expressed) non_zero_markers <- base_test_spot_data$gex>0 base_spot2gex <- GeneCodeR::genecoder(model=genecoder.model, x = base_test_spot_data$spot, config = genecoder.config, model_type = "gcode") base_spot2gex <- test_sample_and_genes(a = base_test_spot_data$gex, b = base_spot2gex,non_zero_markers = non_zero_markers, test_type = "cosine") save(base_spot2gex,file = paste(sep="",path_to_save,"base_spot2gex.RData"))
load(file = paste(sep="",path_to_save,"base_spot2gex.RData")) title_name = "base_cosine_similarity" tissue_name = "breast" sample_similarity = base_spot2gex$sample_wise feature_similarity = base_spot2gex$gene_wise library(ggplot2) lm <- rbind(c(1,2), c(1,2), c(1,2)) g1 <- ggplot(data.frame(Measure=sample_similarity,Metric="Predicted vs Observed \n Sample-wise Pearson Correlation"), aes(x=Metric,y=Measure)) + geom_violin() + ylim(-1,1) g2 <- ggplot(data.frame(Measure=feature_similarity,Metric="Predicted vs Observed \n Gene-wise Pearson Correlation"), aes(x=Metric,y=Measure)) + geom_violin() + ylim(-1,1) gg_plots <- list(g1,g2) library(grid) library(gridExtra) final_plots <- arrangeGrob( grobs = gg_plots, layout_matrix = lm ) plot(final_plots) ggsave(final_plots,filename = paste(path_to_save,"/jpeg_accuracy_gcode_",tissue_name,"_SPATIAL/",title_name,"_accuracy_",tissue_name,"_spatial.png",sep=""),width = 5,height=5) rm(list=ls()) gc()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.