library(SingleCellExperiment)
library(ggplot2)
library(Matrix)
library(pheatmap)
library(ComplexHeatmap)
library(circlize)
library(scConvexNMF)
#' Function to return object for ggplot2 plotting
#' @param size_text Size of the text to use for plotting
#' @param leg_pos Position of legend
#' @return ggplot theme object
theme_plot <- function(size_text=15,
leg_pos="right",
size_text_titles=NULL,
classic=FALSE,
line_size=0.85,
line_size_color="black",
axis_ticks_length=0.25,
axis_ticks_color="black",
rotate_x_axis=TRUE
){
require(ggplot2)
if( is.null(size_text_titles) ){
size_text_titles<- size_text + 2
}
if( classic ){
gg.plots<- theme_classic()
}else{
gg.plots<- theme_bw()
}
gg.plots <- gg.plots +
theme(axis.line=element_line(linewidth=line_size, colour=line_size_color),
axis.ticks=element_line(colour=axis_ticks_color, linewidth=line_size),
axis.ticks.length=unit(axis_ticks_length, "cm"),
axis.title.x=element_text(size=size_text_titles),
legend.position=leg_pos,
plot.title=element_text(hjust=0.5, size=size_text),
axis.text.y=element_text(size=size_text, color="black"),
axis.title.y=element_text(size=size_text_titles) )
if( rotate_x_axis) {
gg.plots<- gg.plots +
theme(axis.text.x=element_text(size=size_text, angle=45, hjust=1, color=line_size_color) )
}else{
gg.plots<- gg.plots +
theme(axis.text.x = element_text(size=size_text, angle = 90, vjust = 0.5, hjust=1, color=line_size_color))
}
}
The gene expression data can be found at the GEO GSE328575.
# Reading SCE object
sce<- readRDS("sce.rds")
meta<- data.frame(colData(sce))
Read scConvexNMF model for malignant cells, with can be found at Zenodo.
# Reading SCE object
model<- readRDS("scConvexNMF_model_malignant.rds")
length(model$aux$cellIDs)
## [1] 44739
length(intersect(meta$Barcode_Sample, model$aux$cellIDs))
## [1] 44739
meta<- meta[model$aux$cellIDs,]
Read genesets
# all pathways
pathways<- readRDS("gene_sets.rds")
# hallmark
path_hall<- pathways[,1:50]
path_hall<- path_hall[rowSums(path_hall)>0,]
# hallmark + hypoxia + cancer states
path_hall_hyp<- pathways[,c(1:52, 55:70)]
path_hall_hyp<- path_hall_hyp[rowSums(path_hall_hyp) >0,]
WGH <- getWGH_scCNMF(model)
W<- WGH$W
W<- W[, colnames(W) != "LV19"]
W_use<- t(scale(W))
W_use<- t(W)
## Get LVs clustered
ph<- pheatmap(
cor(t(W_use)),
color=colorRampPalette(c("darkblue","lightblue","white","orange","darkred"))(255),
clustering_method="average",
breaks=seq(-1,1,length.out=256) )
ro_1 <- row_order(ph)
## Warning: The heatmap has not been initialized. You might have different results
## if you repeatedly execute this function, e.g. when row_km/column_km was
## set. It is more suggested to do as `ht = draw(ht); row_order(ht)`.
vec_lvs<- rownames(W_use)[ro_1]
W_use<- t(scale(W[, vec_lvs]))
# For each cell identify the LV with the maximum activity
max_lv<- apply(W_use, 2, function(X) names(which(X == max(X) ) ))
lis_order_cells<- list()
for(lv in rownames(W_use) ){
cells_lv<- names(max_lv[max_lv == lv])
lis_order_cells[[lv]]<- sort( W_use[lv,cells_lv], decreasing=T)
}
names(lis_order_cells)<- NULL
order_cells<- do.call(c, lis_order_cells)
W_use<- W_use[,names(order_cells)]
ht<- Heatmap(W_use,
cluster_columns=FALSE,
cluster_rows=FALSE,
show_column_names = FALSE,
clustering_distance_rows = "pearson",
clustering_distance_columns = "pearson",
clustering_method_row="average",
clustering_method_col="average",
)
## The automatically generated colors map from the minus and plus 99^th of
## the absolute values in the matrix. There are outliers in the matrix
## whose patterns might be hidden by this color mapping. You can manually
## set the color to `col` argument.
##
## Use `suppressMessages()` to turn off this message.
## `use_raster` is automatically set to TRUE for a matrix with more than
## 2000 columns You can control `use_raster` argument by explicitly
## setting TRUE/FALSE to it.
##
## Set `ht_opt$message = FALSE` to turn off this message.
draw(ht)
## Overlap with hallmark pathways
set.seed(21)
wJ_G <- weightedJaccard_G(model,path_hall,nullSamples=1000)
wJ_G_plot <- visualize_jaccard(wJ_G, vec_lvs=rev(vec_lvs), filterGeneSets=F, cutoff_padj = 0.05, cluster_rows=T, cluster_columns=F, fontsize_row=7, fontsize_col=7, cells_highlight_lwd=1)
draw(wJ_G_plot$heatmap)
set.seed(71)
wJ_G <- weightedJaccard_G(model,path_hall_hyp,nullSamples=1000)
wJ_G_plot <- visualize_jaccard(wJ_G, vec_lvs=c("LV22","LV49", "LV60", "LV57"), filterGeneSets=T, cutoff_padj = 0.05, cluster_rows=T, cluster_columns=F, fontsize_row=7, fontsize_col=7)
draw(wJ_G_plot$heatmap)
set.seed(43)
wJ_G <- weightedJaccard_G(model,pathways,nullSamples=1000)
wJ_G_plot <- visualize_jaccard(wJ_G, vec_lvs=c("LV22","LV49", "LV60", "LV57"), filterGeneSets=F, cutoff_padj = 0.05, select_paths=c("HIF1a_A498", "HIF2a_A498"),cluster_rows=F, cluster_columns=F, fontsize_row=7, fontsize_col=7)
draw(wJ_G_plot$heatmap)
ht<- visualize_Yp(model, vec_lvs=c("LV60","LV49", "LV22", "LV57"), n_genes=15)
draw(ht)
lis_spatial_Soupir<- readRDS("lis_spatial_Soupir.rds")
names(lis_spatial_Soupir)
## [1] "meta" "df_coords" "res_malignant" "res_macrophage"
meta<- lis_spatial_Soupir$meta
df_coords<- lis_spatial_Soupir$df_coords
res_malignant<- lis_spatial_Soupir$res_malignant
lis_all<- list()
vec_samples<- names(res_malignant)
# Summary of spatial analysis
for( sample_name in vec_samples ){
res<- res_malignant[[sample_name]]
res$stats <- res$stats[order(res$stats$p.value,res$stats$fdr),]
res$stats$Sample<- sample_name
res$stats$Comparison<- paste0(res$stats$x, "__", res$stats$y)
# Calculate confidence intervals
z <- atanh(res$stats$cor)
res$stats$SE_z <- 1 / sqrt(res$stats$effective_n - 3)
# 95% confidence interval on z scale
z_lower <- z - 1.96 * res$stats$SE_z
z_upper <- z + 1.96 * res$stats$SE_z
# Convert back to r scale
res$stats$r_lower_95 <- tanh(z_lower)
res$stats$r_upper_95 <- tanh(z_upper)
res$stats$signed_neg_log_fdr<- sign(res$stats$cor) * -log10(res$stats$fdr)
lis_all[[sample_name]]<- res$stats
}
res_all<- do.call(rbind, lis_all)
Comparison<- "Malignant_density__Malignant___LV49"
ggdat<- res_all[res_all$Comparison == Comparison,]
ggdat<- ggdat[ggdat$k == 3,]
lim <- stats::quantile(abs(ggdat$signed_neg_log_fdr),0.99, na.rm=T)
# Correlation plot
ggplot( ggdat, aes(y=Sample, x=cor, color=signed_neg_log_fdr ) ) +
geom_point(size=1) +
geom_errorbar(aes(xmin = r_lower_95, xmax = r_upper_95), width = 0.2) + # CI error bars
geom_vline(xintercept=0, linetype="dashed", color = "red") +
scale_color_gradientn( limits=c(-lim,lim), colours=c("blue","grey","red"), oob=scales::squish ) +
facet_wrap(~k) +
labs(title=Comparison) +
theme_plot(classic=T, size_text=10)
Comparison<- "Malignant_density__Malignant___LV60"
ggdat<- res_all[res_all$Comparison == Comparison,]
ggdat<- ggdat[ggdat$k == 3,]
lim <- stats::quantile(abs(ggdat$signed_neg_log_fdr),0.99, na.rm=T)
# Correlation plot
ggplot( ggdat, aes(y=Sample, x=cor, color=signed_neg_log_fdr ) ) +
geom_point(size=1) +
geom_errorbar(aes(xmin = r_lower_95, xmax = r_upper_95), width = 0.2) + # CI error bars
geom_vline(xintercept=0, linetype="dashed", color = "red") +
scale_color_gradientn( limits=c(-lim,lim), colours=c("blue","grey","red"), oob=scales::squish ) +
facet_wrap(~k) +
labs(title=Comparison) +
theme_plot(classic=T, size_text=10)
Meta-analysis
library(psychmeta)
## ----------------------------------------------------- psychmeta version 2.7.0 --
##
## Please report any bugs to github.com/psychmeta/psychmeta/issues
## or issues@psychmeta.com
##
## We work hard to produce these open-source tools for the R community.
## Please cite psychmeta when you use it in your research:
## Dahlke, J. A., & Wiernik, B. M. (2019). psychmeta: An R package for
## psychometric meta-analysis. Applied Psychological Measurement, 43(5), 415-416.
## https://doi.org/10.1177/0146621618795933
##
## --------------------------------------------------------------- Version check --
## ✔ Yay! Your copy of psychmeta is up to date!
########################################
# Meta analysis
########################################
lis_meta_res<- list()
for( k in sort(unique( res_all$k )) ){
res<- res_all[res_all$k == k,]
ma_res <- ma_r(rxyi = cor,
n = effective_n,
construct_x = x,
construct_y = y,
sample_id = Sample,
data = res
)
meta_res<- data.frame( get_metatab(ma_res) )
meta_res$k<- k
lis_meta_res[[k]]<- meta_res
}
## **** Running ma_r: Meta-analysis of correlations ****
##
## Computing meta-analyses [>----------------------] 5% est. time remaining: 14s Computing meta-analyses [=>---------------------] 8% est. time remaining: 10s Computing meta-analyses [=>---------------------] 10% est. time remaining: 7s Computing meta-analyses [==>--------------------] 12% est. time remaining: 6s Computing meta-analyses [==>--------------------] 15% est. time remaining: 5s Computing meta-analyses [===>-------------------] 18% est. time remaining: 4s Computing meta-analyses [====>------------------] 20% est. time remaining: 4s Computing meta-analyses [====>------------------] 22% est. time remaining: 3s Computing meta-analyses [=====>-----------------] 25% est. time remaining: 3s Computing meta-analyses [=====>-----------------] 28% est. time remaining: 3s Computing meta-analyses [======>----------------] 30% est. time remaining: 3s Computing meta-analyses [======>----------------] 32% est. time remaining: 2s Computing meta-analyses [=======>---------------] 35% est. time remaining: 2s Computing meta-analyses [========>--------------] 38% est. time remaining: 2s Computing meta-analyses [========>--------------] 40% est. time remaining: 2s Computing meta-analyses [=========>-------------] 42% est. time remaining: 2s Computing meta-analyses [=========>-------------] 45% est. time remaining: 2s Computing meta-analyses [==========>------------] 48% est. time remaining: 1s Computing meta-analyses [===========>-----------] 50% est. time remaining: 1s Computing meta-analyses [===========>-----------] 52% est. time remaining: 1s Computing meta-analyses [============>----------] 55% est. time remaining: 1s Computing meta-analyses [============>----------] 57% est. time remaining: 1s Computing meta-analyses [=============>---------] 60% est. time remaining: 1s Computing meta-analyses [=============>---------] 62% est. time remaining: 1s Computing meta-analyses [==============>--------] 65% est. time remaining: 1s Computing meta-analyses [===============>-------] 68% est. time remaining: 1s Computing meta-analyses [===============>-------] 70% est. time remaining: 1s Computing meta-analyses [================>------] 72% est. time remaining: 1s Computing meta-analyses [================>------] 75% est. time remaining: 1s Computing meta-analyses [=================>-----] 78% est. time remaining: 1s Computing meta-analyses [=================>-----] 80% est. time remaining: 0s Computing meta-analyses [==================>----] 82% est. time remaining: 0s Computing meta-analyses [===================>---] 85% est. time remaining: 0s Computing meta-analyses [===================>---] 88% est. time remaining: 0s Computing meta-analyses [====================>--] 90% est. time remaining: 0s Computing meta-analyses [====================>--] 92% est. time remaining: 0s Computing meta-analyses [=====================>-] 95% est. time remaining: 0s Computing meta-analyses [=====================>-] 98% est. time remaining: 0s Computing meta-analyses [=======================] 100% est. time remaining: 0s
## **** Running ma_r: Meta-analysis of correlations ****
## Computing meta-analyses [===>-------------------] 18% est. time remaining: 1s Computing meta-analyses [====>------------------] 20% est. time remaining: 1s Computing meta-analyses [====>------------------] 22% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 25% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 28% est. time remaining: 1s Computing meta-analyses [======>----------------] 30% est. time remaining: 1s Computing meta-analyses [======>----------------] 32% est. time remaining: 1s Computing meta-analyses [=======>---------------] 35% est. time remaining: 1s Computing meta-analyses [========>--------------] 38% est. time remaining: 1s Computing meta-analyses [========>--------------] 40% est. time remaining: 1s Computing meta-analyses [=========>-------------] 42% est. time remaining: 1s Computing meta-analyses [=========>-------------] 45% est. time remaining: 1s Computing meta-analyses [==========>------------] 48% est. time remaining: 1s Computing meta-analyses [===========>-----------] 50% est. time remaining: 1s Computing meta-analyses [===========>-----------] 52% est. time remaining: 1s Computing meta-analyses [============>----------] 55% est. time remaining: 1s Computing meta-analyses [============>----------] 57% est. time remaining: 1s Computing meta-analyses [=============>---------] 60% est. time remaining: 1s Computing meta-analyses [=============>---------] 62% est. time remaining: 1s Computing meta-analyses [==============>--------] 65% est. time remaining: 0s Computing meta-analyses [===============>-------] 68% est. time remaining: 0s Computing meta-analyses [===============>-------] 70% est. time remaining: 0s Computing meta-analyses [================>------] 72% est. time remaining: 0s Computing meta-analyses [================>------] 75% est. time remaining: 0s Computing meta-analyses [=================>-----] 78% est. time remaining: 0s Computing meta-analyses [=================>-----] 80% est. time remaining: 0s Computing meta-analyses [==================>----] 82% est. time remaining: 0s Computing meta-analyses [===================>---] 85% est. time remaining: 0s Computing meta-analyses [===================>---] 88% est. time remaining: 0s Computing meta-analyses [====================>--] 90% est. time remaining: 0s Computing meta-analyses [====================>--] 92% est. time remaining: 0s Computing meta-analyses [=====================>-] 95% est. time remaining: 0s Computing meta-analyses [=====================>-] 98% est. time remaining: 0s Computing meta-analyses [=======================] 100% est. time remaining: 0s
## **** Running ma_r: Meta-analysis of correlations ****
## Computing meta-analyses [===>-------------------] 18% est. time remaining: 1s Computing meta-analyses [====>------------------] 20% est. time remaining: 1s Computing meta-analyses [====>------------------] 22% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 25% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 28% est. time remaining: 1s Computing meta-analyses [======>----------------] 30% est. time remaining: 1s Computing meta-analyses [======>----------------] 32% est. time remaining: 1s Computing meta-analyses [=======>---------------] 35% est. time remaining: 1s Computing meta-analyses [========>--------------] 38% est. time remaining: 1s Computing meta-analyses [========>--------------] 40% est. time remaining: 1s Computing meta-analyses [=========>-------------] 42% est. time remaining: 1s Computing meta-analyses [=========>-------------] 45% est. time remaining: 1s Computing meta-analyses [==========>------------] 48% est. time remaining: 1s Computing meta-analyses [===========>-----------] 50% est. time remaining: 1s Computing meta-analyses [===========>-----------] 52% est. time remaining: 1s Computing meta-analyses [============>----------] 55% est. time remaining: 1s Computing meta-analyses [============>----------] 57% est. time remaining: 1s Computing meta-analyses [=============>---------] 60% est. time remaining: 1s Computing meta-analyses [=============>---------] 62% est. time remaining: 1s Computing meta-analyses [==============>--------] 65% est. time remaining: 0s Computing meta-analyses [===============>-------] 68% est. time remaining: 0s Computing meta-analyses [===============>-------] 70% est. time remaining: 0s Computing meta-analyses [================>------] 72% est. time remaining: 0s Computing meta-analyses [================>------] 75% est. time remaining: 0s Computing meta-analyses [=================>-----] 78% est. time remaining: 0s Computing meta-analyses [=================>-----] 80% est. time remaining: 0s Computing meta-analyses [==================>----] 82% est. time remaining: 0s Computing meta-analyses [===================>---] 85% est. time remaining: 0s Computing meta-analyses [===================>---] 88% est. time remaining: 0s Computing meta-analyses [====================>--] 90% est. time remaining: 0s Computing meta-analyses [====================>--] 92% est. time remaining: 0s Computing meta-analyses [=====================>-] 95% est. time remaining: 0s Computing meta-analyses [=====================>-] 98% est. time remaining: 0s Computing meta-analyses [=======================] 100% est. time remaining: 0s
## **** Running ma_r: Meta-analysis of correlations ****
## Computing meta-analyses [===>-------------------] 18% est. time remaining: 1s Computing meta-analyses [====>------------------] 20% est. time remaining: 1s Computing meta-analyses [====>------------------] 22% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 25% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 28% est. time remaining: 1s Computing meta-analyses [======>----------------] 30% est. time remaining: 1s Computing meta-analyses [======>----------------] 32% est. time remaining: 1s Computing meta-analyses [=======>---------------] 35% est. time remaining: 1s Computing meta-analyses [========>--------------] 38% est. time remaining: 1s Computing meta-analyses [========>--------------] 40% est. time remaining: 1s Computing meta-analyses [=========>-------------] 42% est. time remaining: 1s Computing meta-analyses [=========>-------------] 45% est. time remaining: 1s Computing meta-analyses [==========>------------] 48% est. time remaining: 1s Computing meta-analyses [===========>-----------] 50% est. time remaining: 1s Computing meta-analyses [===========>-----------] 52% est. time remaining: 1s Computing meta-analyses [============>----------] 55% est. time remaining: 1s Computing meta-analyses [============>----------] 57% est. time remaining: 1s Computing meta-analyses [=============>---------] 60% est. time remaining: 1s Computing meta-analyses [=============>---------] 62% est. time remaining: 1s Computing meta-analyses [==============>--------] 65% est. time remaining: 0s Computing meta-analyses [===============>-------] 68% est. time remaining: 0s Computing meta-analyses [===============>-------] 70% est. time remaining: 0s Computing meta-analyses [================>------] 72% est. time remaining: 0s Computing meta-analyses [================>------] 75% est. time remaining: 0s Computing meta-analyses [=================>-----] 78% est. time remaining: 0s Computing meta-analyses [=================>-----] 80% est. time remaining: 0s Computing meta-analyses [==================>----] 82% est. time remaining: 0s Computing meta-analyses [===================>---] 85% est. time remaining: 0s Computing meta-analyses [===================>---] 88% est. time remaining: 0s Computing meta-analyses [====================>--] 90% est. time remaining: 0s Computing meta-analyses [====================>--] 92% est. time remaining: 0s Computing meta-analyses [=====================>-] 95% est. time remaining: 0s Computing meta-analyses [=====================>-] 98% est. time remaining: 0s Computing meta-analyses [=======================] 100% est. time remaining: 0s
## **** Running ma_r: Meta-analysis of correlations ****
## Computing meta-analyses [===>-------------------] 18% est. time remaining: 1s Computing meta-analyses [====>------------------] 20% est. time remaining: 1s Computing meta-analyses [====>------------------] 22% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 25% est. time remaining: 1s Computing meta-analyses [=====>-----------------] 28% est. time remaining: 1s Computing meta-analyses [======>----------------] 30% est. time remaining: 1s Computing meta-analyses [======>----------------] 32% est. time remaining: 1s Computing meta-analyses [=======>---------------] 35% est. time remaining: 1s Computing meta-analyses [========>--------------] 38% est. time remaining: 1s Computing meta-analyses [========>--------------] 40% est. time remaining: 1s Computing meta-analyses [=========>-------------] 42% est. time remaining: 1s Computing meta-analyses [=========>-------------] 45% est. time remaining: 1s Computing meta-analyses [==========>------------] 48% est. time remaining: 1s Computing meta-analyses [===========>-----------] 50% est. time remaining: 1s Computing meta-analyses [===========>-----------] 52% est. time remaining: 1s Computing meta-analyses [============>----------] 55% est. time remaining: 1s Computing meta-analyses [============>----------] 57% est. time remaining: 1s Computing meta-analyses [=============>---------] 60% est. time remaining: 1s Computing meta-analyses [=============>---------] 62% est. time remaining: 1s Computing meta-analyses [==============>--------] 65% est. time remaining: 0s Computing meta-analyses [===============>-------] 68% est. time remaining: 0s Computing meta-analyses [===============>-------] 70% est. time remaining: 0s Computing meta-analyses [================>------] 72% est. time remaining: 0s Computing meta-analyses [================>------] 75% est. time remaining: 0s Computing meta-analyses [=================>-----] 78% est. time remaining: 0s Computing meta-analyses [=================>-----] 80% est. time remaining: 0s Computing meta-analyses [==================>----] 82% est. time remaining: 0s Computing meta-analyses [===================>---] 85% est. time remaining: 0s Computing meta-analyses [===================>---] 88% est. time remaining: 0s Computing meta-analyses [====================>--] 90% est. time remaining: 0s Computing meta-analyses [====================>--] 92% est. time remaining: 0s Computing meta-analyses [=====================>-] 95% est. time remaining: 0s Computing meta-analyses [=====================>-] 98% est. time remaining: 0s Computing meta-analyses [=======================] 100% est. time remaining: 0s
meta_res<- do.call(rbind, lis_meta_res)
# Calculate p-value
meta_res$Z <- meta_res$mean_r / meta_res$se_r
meta_res$p <- 2 * pnorm(-abs(meta_res$Z))
meta_res$fdr <- p.adjust(meta_res$p,method="fdr")
meta_res$signed_neg_log_fdr<- sign(meta_res$mean_r) * -log10(meta_res$fdr)
meta_res <- meta_res[order(-meta_res$p),]
Figure meta analysis
order_lvs<- sub("Malignant___", "", unique(meta_res$construct_y))
df_dat<- meta_res[meta_res$k == 3,]
df_dat<- df_dat[df_dat$construct_y %in% c("Malignant___LV60", "Malignant___LV49"),]
df_dat$construct_y<- sub("Malignant___", "", df_dat$construct_y)
lim <- stats::quantile(abs(df_dat$signed_neg_log_fdr),0.99, na.rm=T)
df_dat$construct_y<- factor(df_dat$construct_y, levels=order_lvs)
# Main plot
ggplot(df_dat, aes( mean_r, construct_y, color=signed_neg_log_fdr) ) +
geom_point(size=1) +
geom_errorbar(aes(xmin = CI_LL_95, xmax = CI_UL_95), width = 0.2) + # CI error bars
geom_vline(xintercept=0, linetype="dashed", color = "red") +
scale_color_gradientn( limits=c(-lim,lim), colours=c("blue","grey","red"), oob=scales::squish ) +
theme_plot(classic=T, size_text=9, rotate_x_axis=F, leg_pos="right")
## Plot for specific samples
## Program 49 -- RCC 4_5
sample_name<- "RCC4_5"
Comparison<- "Malignant_density__Malignant___LV49"
obj<- res_malignant[[sample_name]]
meta_sample<- cbind(meta[rownames(obj$Y),], df_coords[rownames(obj$Y),])
obj$stats <- obj$stats[order(obj$stats$p.value,obj$stats$fdr),]
obj$stats$Comparison<- paste0(obj$stats$x, "__", obj$stats$y)
idx_plot<- which( obj$stats$Comparison == Comparison & obj$stats$k == 3)[1]
k<- obj$stats$k[idx_plot]
var1<- obj$stats$x[idx_plot]
var2<- obj$stats$y[idx_plot]
# Celltypes
ggplot(meta_sample,aes(x=x,y=y,color=lasso_final_curated)) +
geom_point() +
theme_plot(leg_pos="none")
# Activities
ggplot(data.frame(x=meta_sample$x,y=meta_sample$y,LV=obj$Y[,var2],weights=obj$weights[,k])) +
geom_point(aes(x=x,y=y,color=LV,alpha=(!is.na(LV))*1)) +
scale_color_gradient2(low="blue",mid="lightgrey",high="red") +
ggtitle(var2) +
theme_plot()
# Scatterplot
ggplot(data.frame(x=obj$smoothed_X[[k]][,var1],y=obj$smoothed_Y[[k]][,var2],weights=obj$weights[,k])) +
geom_point(aes(x=x,y=y,alpha=weights)) +
scale_alpha(range=c(0,1)) +
theme_plot()
## Warning: Removed 904 rows containing missing values or values outside the scale
## range (`geom_point()`).
## Program 49 -- RCC 3_15
sample_name<- "RCC3_15"
Comparison<- "Malignant_density__Malignant___LV49"
obj<- res_malignant[[sample_name]]
meta_sample<- cbind(meta[rownames(obj$Y),], df_coords[rownames(obj$Y),])
obj$stats <- obj$stats[order(obj$stats$p.value,obj$stats$fdr),]
obj$stats$Comparison<- paste0(obj$stats$x, "__", obj$stats$y)
idx_plot<- which( obj$stats$Comparison == Comparison & obj$stats$k == 3)[1]
k<- obj$stats$k[idx_plot]
var1<- obj$stats$x[idx_plot]
var2<- obj$stats$y[idx_plot]
# Celltypes
ggplot(meta_sample,aes(x=x,y=y,color=lasso_final_curated)) +
geom_point() +
theme_plot(leg_pos="none")
# Activities
ggplot(data.frame(x=meta_sample$x,y=meta_sample$y,LV=obj$Y[,var2],weights=obj$weights[,k])) +
geom_point(aes(x=x,y=y,color=LV,alpha=(!is.na(LV))*1)) +
scale_color_gradient2(low="blue",mid="lightgrey",high="red") +
ggtitle(var2) +
theme_plot()
# Scatterplot
ggplot(data.frame(x=obj$smoothed_X[[k]][,var1],y=obj$smoothed_Y[[k]][,var2],weights=obj$weights[,k])) +
geom_point(aes(x=x,y=y,alpha=weights)) +
scale_alpha(range=c(0,1)) +
theme_plot()
## Warning: Removed 5 rows containing missing values or values outside the scale
## range (`geom_point()`).
sessionInfo()
## R version 4.3.1 (2023-06-16)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: AlmaLinux 9.6 (Sage Margay)
##
## Matrix products: default
## BLAS/LAPACK: FlexiBLAS IMKL; LAPACK version 3.11.0
##
## locale:
## [1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
## [5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8
## [7] LC_PAPER=en_CA.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Canada/Eastern
## tzcode source: system (glibc)
##
## attached base packages:
## [1] grid stats4 stats graphics grDevices utils datasets
## [8] methods base
##
## other attached packages:
## [1] psychmeta_2.7.0 scConvexNMF_0.0.0.9000
## [3] circlize_0.4.15 ComplexHeatmap_2.18.0
## [5] pheatmap_1.0.12 Matrix_1.6-4
## [7] ggplot2_3.5.2 SingleCellExperiment_1.24.0
## [9] SummarizedExperiment_1.32.0 Biobase_2.62.0
## [11] GenomicRanges_1.54.1 GenomeInfoDb_1.38.5
## [13] IRanges_2.36.0 S4Vectors_0.40.2
## [15] BiocGenerics_0.48.1 MatrixGenerics_1.14.0
## [17] matrixStats_1.2.0
##
## loaded via a namespace (and not attached):
## [1] tidyselect_1.2.0 dplyr_1.1.4 farver_2.1.1
## [4] bitops_1.0-7 fastmap_1.1.1 RCurl_1.98-1.14
## [7] digest_0.6.33 lifecycle_1.0.4 cluster_2.1.6
## [10] Cairo_1.6-2 magrittr_2.0.3 compiler_4.3.1
## [13] rlang_1.1.6 sass_0.4.8 progress_1.2.3
## [16] tools_4.3.1 utf8_1.2.4 yaml_2.3.8
## [19] knitr_1.45 prettyunits_1.2.0 S4Arrays_1.2.0
## [22] labeling_0.4.3 curl_6.2.3 DelayedArray_0.28.0
## [25] RColorBrewer_1.1-3 abind_1.4-5 withr_2.5.2
## [28] purrr_1.0.2 fansi_1.0.6 colorspace_2.1-0
## [31] scales_1.3.0 iterators_1.0.14 cli_3.6.2
## [34] rmarkdown_2.29 crayon_1.5.2 generics_0.1.3
## [37] rjson_0.2.21 cachem_1.0.8 zlibbioc_1.48.0
## [40] parallel_4.3.1 XVector_0.42.0 vctrs_0.6.5
## [43] boot_1.3-28.1 jsonlite_1.8.8 GetoptLong_1.0.5
## [46] hms_1.1.3 clue_0.3-65 magick_2.9.0
## [49] foreach_1.5.2 tidyr_1.3.0 jquerylib_0.1.4
## [52] glue_1.7.0 codetools_0.2-19 gtable_0.3.4
## [55] shape_1.4.6 munsell_0.5.0 tibble_3.2.1
## [58] pillar_1.9.0 htmltools_0.5.7 GenomeInfoDbData_1.2.11
## [61] R6_2.5.1 doParallel_1.0.17 evaluate_0.23
## [64] lattice_0.22-5 highr_0.10 png_0.1-8
## [67] bslib_0.6.1 Rcpp_1.0.12 SparseArray_1.2.3
## [70] xfun_0.41 pkgconfig_2.0.3 GlobalOptions_0.1.2