Commit f69fe925 authored by Marco Monti's avatar Marco Monti
Browse files

I added the manuscript's scripts

parent 3bcab94a
library(Seurat)
##########################################################
####DOTPLOT WITH STATISTIC FROM LIVER####
# Create function
PlotStellare <- function(obs1=obs1, features1=features1, valueG="NewlablesG",
i="CD8 T cells", group.by0 ="Clonetype2.Group", controGroup="SIINFEKL", noCtrlvsAll=T){
obs1 <- SetIdent(obs1, value = valueG)
pa1 <- DotPlot(obs1, features = features1, idents = i, dot.scale=15, split.by = group.by0,
cols="RdBu", scale=T)+RotatedAxis()
df1 <- pa1$data
contro0<- paste0(i,"_",controGroup)
a1 <- sub(paste0(i,"_"),"",unique(df1$id))
dfcombo <- NULL
for (ix in a1){if(ix!=controGroup){
m.Combo <- FindMarkers(obs1, ident.1 = ix,ident.2=controGroup, group.by = group.by0,
subset.ident = i,features = features1,
min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
}else{
m.Combo <- FindMarkers(obs1, ident.1 = ix, group.by = group.by0,
subset.ident = i,features = features1,
min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
if(noCtrlvsAll){m.Combo$p_val_adj <- 1}
}
m.Combo <- m.Combo[match(features1,rownames(m.Combo)),]
m.Combo$ix <- ix
dfcombo <- rbind(dfcombo,m.Combo)}
df2 <- cbind(df1,dfcombo)
data.frame(df2$id,df2$ix)
df2$stars <- ifelse(df2$p_val_adj< 0.001,"***",
ifelse(df2$p_val_adj< 0.01,"**",
ifelse(df2$p_val_adj< 0.05,"*","")))
df2$id <- factor(x = df2$id, levels = paste0(i,"_",rev(a1)))
a <- ggplot(df2, aes(y=id, x=features.plot, size=pct.exp ,color=avg.exp.scaled)) +
geom_point() +
scale_size_area(max_size=15) +
scale_colour_gradient2(low="blue",mid="darkgrey",high="darkred") + #"#CCCCFF"
labs(y='',x='')+
geom_text(aes(label=stars,vjust=0.8),col="black",size=4)+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"))+
theme(axis.text.x = element_text(angle=45, hjust=1, color = "Black"))+
theme(axis.line.x=element_line(color="Black"))+
theme(axis.line.y=element_line(color="Black"))+
ggtitle(paste0(unique(obs1$Tissue),".",i," vs ",controGroup))
return(a)}
plotRadar <- function(i){
ploTData<- rbind(max1,min1,get(i))
id <- sub(".db","",i)
radarchart(ploTData, title = id, pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty = 1, cglwd=0.8)
} #function to plot radarplot
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(reshape2)
library(fgsea)
library(patchwork)
library(presto)
library(ggplot2)
library(matrixStats)
library(fmsb)
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-856756828_scRNAseq_Notaro/Analysis_MM3/results2"
wdir <- paste0(cluster_dir, "/Result2_MNOT")
ldir <- paste0(cluster_dir, "/Liver_APCs/")
pdir <- paste0(cluster_dir, "/Result2_MNOT/Plots")
# Custom functions
#PlotStellare <-readRDS(paste0(username,"Dropbox (HSR Global)/CancerGeneTherapy/Cancer Gene Therapy/MS/Notaro et al/Scripts/Functions/PlotStellare.rds"))
source(file = "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/last_scripts_MNOT/TAD018/plot_stellare_function.R")
#############################################################################
##########################LIVER MACS ANALYSIS################################
#############################################################################
apcs.liver <- readRDS(paste0(ldir, "Liver_APCs_final.rds"))
#assign groups
#name and order groups
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$PROP.Condition=="li.OVA"] <- "liOVA"
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$PROP.Condition=="li.OVA.Combo"] <- "OVA.Combo"
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$PROP.Condition=="li.Stop"] <- "SIINFEKL"
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$PROP.Condition=="li.Stop.Combo"] <- "SIINFEKL.Combo"
apcs.liver@meta.data$RNA_Group <- factor(x = apcs.liver@meta.data$RNA_Group, levels = c("liOVA", "OVA.Combo","SIINFEKL", "SIINFEKL.Combo"))
apcs.liver@meta.data$Tissue <- "Liver"
#######Figure S4L- PLOT STELLARE################
features1 <- c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2", #MHCI
"H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita", #MHCII
"Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g", #IFNa
"Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74", #IFNg
"Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1") #protumor
apcs.liver<-SetIdent(apcs.liver, value = "RNA_Group")
pdf(paste0(ldir, "/Dotplot_stellare_APCs_FigS4L.pdf"), width=13, height=3)
PlotStellare(obs1 = apcs.liver,features1 = features1, valueG = "NewlablesM_12_clu", i="CD8 cDC1", group.by0="RNA_Group" , noCtrlvsAll=T, controGroup="SIINFEKL")
dev.off()
#####################################################################
############Figure S4M - RADAR PLOT MACROCLASSES####################
#####################################################################
apcs.liver@meta.data$Shortlables<-apcs.liver@meta.data$NewlablesM_12_clu
#DCs<-c("CD8 cDC1","moDCs", "Ccr7 DCs","pDCs","pre DCs")
#apcs.liver@meta.data$Shortlables[apcs.liver@meta.data$NewlablesM_12_clu%in%DCs]<- "DCs"
#granu<-c("Neutrophils","Basophils")
#apcs.liver@meta.data$Shortlables[apcs.liver@meta.data$NewlablesM_12_clu%in%granu]<- "Granulocytes"
plotRadar <- function(i){
ploTData<- rbind(max1,min1,get(i))
id <- sub(".db","",i)
radarchart(ploTData, title = id, pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty = 1,cglwd=0.8)
} #function to plot radarplot
##############LIVER RADARPLOT##########################
MHCI_genes <- list(c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2"))
MHCII_genes <- list( c("H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita"))
Protumoral_genes <- list(c("Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1"))
IFNa_genes <- list(c("Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g"))
IFNg_genes <-list(c("Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74"))
apcs.liver <- AddModuleScore(apcs.liver, features = MHCI_genes, name = "MHCI_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = MHCII_genes, name = "MHCII_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = Protumoral_genes, name = "Protumoral_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = IFNa_genes, name = "IFNa_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
M1<-apcs.liver@meta.data[,c("Shortlables", "RNA_Group", "MHCI_genes1","MHCII_genes1","Protumoral_genes1","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(apcs.liver$RNA_Group)
CellType<-unique(M1$Shortlables)
for (i in CellType){
M2<-M1[M1$Shortlables%in%i,]
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
assign(paste0(i,".db"),x)}
lsCells <- grep(".db",ls(),value=T)
MinMax<-lapply(lsCells,get)
max1 <- rep(do.call("max", MinMax),5)
min1 <- rep(do.call("min", MinMax),5)
colors_border=c(rgb(0,0,1,0.9), rgb(0,0.8,0,0.9), rgb(0,0.5,0.5,0.9), rgb(0,0,0,0.9))
colors_in=c(rgb(0,0,0.6,0.1), rgb(0,0.6,0,0.1), rgb(0,0.1,0.1,0.1), rgb(0.1,0.1,0.1,0.1))
pdf(paste0(pdir, "/Radar_plot_liverAPCs_shorterlables_FigS4M_new2.pdf"), width=17, height=6)
par(mfrow=c(2,5))
for (i in 1:length(unique(apcs.liver$Shortlables))){
plotRadar(lsCells[i])
}
dev.off()
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(reshape2)
library(fgsea)
library(patchwork)
library(presto)
library(ggplot2)
library(matrixStats)
library(fmsb)
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-856756828_scRNAseq_Notaro/Analysis_MM3/results2"
wdir <- paste0(cluster_dir, "/Result2_MNOT")
ldir <- paste0(cluster_dir, "/Liver_TandNK/")
pdir <- paste0(cluster_dir, "/Result2_MNOT/Plots")
#############################################################################
##########################LIVER MACS ANALYSIS################################
#############################################################################
obs1 <- readRDS(paste0(ldir, "Liver_TandNK_final.rds"))
#assign groups
#name and order groups
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="li.OVA"] <- "liOVA"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="li.OVA.Combo"] <- "OVA.Combo"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="li.Stop"] <- "SIINFEKL"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="li.Stop.Combo"] <- "SIINFEKL.Combo"
obs1@meta.data$RNA_Group <- factor(x = obs1@meta.data$RNA_Group, levels = c("SIINFEKL.Combo","SIINFEKL", "OVA.Combo","liOVA"))
obs1@meta.data$Tissue <- "Liver"
obs1@meta.data$NewlablesM<-as.numeric(obs1@meta.data$RNA_snn_h.orig.ident_res.3.2)
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(1)] <- "Naive CD4"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(8,2)] <- "Naive CD8"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(27)] <- "Th17 CD4"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(20)] <- "CD4 Treg"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(13)] <- "IFNg CD4"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(4)] <- "Il4 CD4"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(7)] <- "gd T"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(23)] <- "Act gd T"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(11)] <- "CD8 Teff2"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(0,3,10)] <- "CD8 Teff3"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(14,28)] <- "Early CD8"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(16)] <- "CD8 Teff1"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(5)] <- "CD8 prol"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(17)] <- "Cytotoxic NK"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(18,21,22,24,25)] <- "ILC-like"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(6,9,15)] <- "ILCs"
obs1@meta.data$NewlablesM[obs1@meta.data$RNA_snn_h.orig.ident_res.3.2%in%c(12)] <- "NK"
#create lables for all CD8 and cd4 t cells
obs1@meta.data$NewlablesG <- obs1@meta.data$NewlablesM
obs1@meta.data$NewlablesG[grep("CD4",obs1@meta.data$NewlablesM) ] <- "CD4 T cells"
obs1@meta.data$NewlablesG[grep("CD8",obs1@meta.data$NewlablesM)] <- "CD8 T cells"
#create lables CD4 and CD8 clusters wothout naive
obs1@meta.data$NewlablesS <- obs1@meta.data$NewlablesM
indCd4<- grepl("CD4",obs1@meta.data$NewlablesM) & !grepl("Naive",obs1@meta.data$NewlablesM)
indCd8<- grepl("CD8",obs1@meta.data$NewlablesM) & !grepl("Naive",obs1@meta.data$NewlablesM)
obs1@meta.data$NewlablesS[indCd4] <- "CD4 T cells"
obs1@meta.data$NewlablesS[indCd8] <- "CD8 T cells"
obs1@meta.data$NewlablesST <- paste0(obs1@meta.data$Tissue,".",obs1@meta.data$NewlablesS)
################################################
###Calculating hyperexpanded T cels#############
################################################
obs1$aa3.Tube <- paste0(obs1$cdr3_aa2,".",obs1$RNA_Group)
obs1$aa3.Tube[is.na(obs1$cdr3_aa2)] <- NA
obs1@meta.data$ClonoFreq <- obs1@meta.data %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>%
as.data.frame() %>% select (count)
obs1@meta.data$ClonoFreq[is.na(obs1$cdr3_aa2),] <- NA
obs1@meta.data$Clonetype <- NA
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq==1] <- "unique"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 1 & obs1@meta.data$ClonoFreq <= 5] <- "small"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 5 & obs1@meta.data$ClonoFreq <= 30] <- "large"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 30] <- "hyperexpanded"
obs1$Clonetype <- factor(x = obs1$Clonetype, levels = c("unique", "small", "large", "hyperexpanded"))#order clonotype variable
obs1@meta.data$Clonetype2 <- "Expand"
obs1@meta.data$Clonetype2[obs1@meta.data$ClonoFreq==1] <- "Other"
obs1@meta.data$Clonetype2[is.na(obs1@meta.data$ClonoFreq)] <- "Other"
obs1@meta.data$Clonetype2.Group <- paste0(obs1@meta.data$Clonetype2,".",obs1@meta.data$RNA_Group)
obs1@meta.data$Clonetype2.Group[obs1@meta.data$RNA_Group=="liOVA"] <- "liOVA"
obs1@meta.data$Clonetype2.Group[obs1@meta.data$RNA_Group=="SIINFEKL"] <- "SIINFEKL"
obs1@meta.data$Clonetype2.Group <- factor(x = obs1@meta.data$Clonetype2.Group, levels = c("liOVA",
"SIINFEKL", "Unique.OVA.Combo",
"Unique.SIINFEKL.Combo","Expand.OVA.Combo",
"Expand.SIINFEKL.Combo" ))#order clonotype variable
obs1@meta.data$Clonetype2.cells <- paste0(obs1@meta.data$Clonetype2,".",obs1@meta.data$NewlablesG)
obs1@meta.data$New_division2 <- "Other"
ind<- grepl("Expand.CD4 T cells",obs1@meta.data$Clonetype2.cells)
obs1@meta.data$New_division2[ind] <- "Expanded CD4"
obs1@meta.data$New_division3<-paste0(obs1@meta.data$RNA_Group, ".",obs1@meta.data$New_division2)
obs1@meta.data$New_division3[obs1@meta.data$New_division3 =="liOVA.Expanded CD4"] <- "liOVA"
obs1@meta.data$New_division3[obs1@meta.data$New_division3 == "liOVA.Other"] <- "liOVA"
obs1@meta.data$New_division3[obs1@meta.data$New_division3 =="SIINFEKL.Expanded CD4"] <- "SIINFEKL"
obs1@meta.data$New_division3[obs1@meta.data$New_division3 =="SIINFEKL.Other"] <- "SIINFEKL"
unique(obs1@meta.data$New_division3)
############################################
######FINDING Tetramer reactive TCRs########
############################################
obs1@meta.data$TetramerT <- "Other"
obs1@meta.data$TetramerT[obs1@meta.data$ADT.Tetramer>315] <- "OVA.TCR"
df1 <- data.frame(obs1$cdr3_aa2, obs1$TetramerT,obs1$ClonoFreq,obs1$Tissue)
df1$aa3.OVA <- paste0(obs1$cdr3_aa2,".",obs1$TetramerT)
df1 <- na.omit(df1)
df1l <- df1[df1$obs1.Tissue=="Liver",]
df2 <- df1l %>% group_by(aa3.OVA) %>% mutate(count = n()) %>% ungroup() %>% as.data.frame()
df3 <- df2 %>% select(obs1.cdr3_aa2,obs1.TetramerT,obs1.ClonoFreq,count) %>% unique() %>%
pivot_wider(names_from = obs1.TetramerT, values_from = count) %>% as.data.frame()
df3[is.na(df3)] <- 0
OVA.TCRs <- df3$obs1.cdr3_aa2[df3[,4]/df3[,3]>1]
obs1$OVA.reactive <- ifelse(obs1$cdr3_aa2 %in% OVA.TCRs, "OVA", "Other")######Indicating Tetramer OVA in obs1
obs1@meta.data$Tetramer.CD8 <- ifelse(obs1$OVA.reactive == "OVA" & obs1$NewlablesG== "CD8 T cells", "OVA.TCR.CD8", "Other")
############DimPlot#######################
# Save UMAP plots
pdf(paste0(pdir, "/TAD12_TandNK_umap_FigS7I.pdf"), width=7, height=6) # Figure FigS7I
DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "NewlablesM", pt.size = 0.5, label = T, label.size = 3, repel = T)
dev.off()
pdf(paste0(pdir, "/TAD12_tetramer_umap_FigS7J.pdf"), width=7, height=6) # Figure FigS7J
DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "OVA.reactive", pt.size = 0.5, label = F, order = c("OVA","Other"), cols = c("lightgrey","blue"))
dev.off()
pdf(paste0(pdir, "/TAD12_CD4_expanded_umap_FigS7K.pdf"), width=7, height=6) # Figure FigS7K
DimPlot(obs1, reduction = "umap.harmony.orig.ident", group.by = "New_division2", pt.size = 0.5, label = F, order = c("Expanded CD4","Other"), cols = c("lightgrey","blue"))
dev.off()
# Export DimPlot as excel
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM","OVA.reactive","New_division2")
TandNK_df <- FetchData(obs1, vars = var_list)
TandNK_df$cell_ID <- rownames(TandNK_df)
write.xlsx(TandNK_df, file=paste0(pdir, "/TAD12_TandNK_umap_FigS7I_S7J_S7K.xlsx"), overwrite=T)
#############Dotplot stellare############
#load function
PlotStellare <- function(obs1=obs1,features1=features1,valueG="NewlablesG",
i="CD8 T cells",group.by0 ="Clonetype2.Group",controGroup="SIINFEKL",noCtrlvsAll=T){
obs1<-SetIdent(obs1, value = valueG)
pa1 <- DotPlot(obs1, features = features1,idents = i, dot.scale = 15,split.by = group.by0,
cols="RdBu")+RotatedAxis()
df1 <- pa1$data
contro0<- paste0(i,"_",controGroup)
a1<- sub(paste0(i,"_"),"",unique(df1$id))
dfcombo <- NULL
for (ix in a1){if(ix!=controGroup){
m.Combo <- FindMarkers(obs1, ident.1 = ix,ident.2=controGroup, group.by = group.by0,
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
}else{
m.Combo <- FindMarkers(obs1, ident.1 = ix, group.by = group.by0,
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
if(noCtrlvsAll){m.Combo$p_val_adj <- 1}
}
m.Combo <- m.Combo[match(features1,rownames(m.Combo)),]
m.Combo$ix <- ix
dfcombo <- rbind(dfcombo,m.Combo)}
df2 <- cbind(df1,dfcombo)
data.frame(df2$id,df2$ix)
df2$stars <- ifelse(df2$p_val_adj< 0.001,"***",
ifelse(df2$p_val_adj< 0.01,"**",
ifelse(df2$p_val_adj< 0.05,"*","")))
df2$id <- factor(x = df2$id, levels = paste0(i,"_",rev(a1)))
a <- ggplot(df2, aes(y=id, x=features.plot, size=pct.exp ,color=avg.exp.scaled)) +
geom_point() +
scale_size_area(max_size = 15) +
scale_colour_gradient2(low= "blue",mid = "darkgrey",high="darkred") + ####"#CCCCFF"
labs(y='',x='')+
geom_text(aes(label=stars,vjust=0.8),col="black",size = 4)+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"))+
theme(axis.text.x = element_text(angle = 45, hjust= 1, color = "Black"))+
theme(axis.line.x=element_line(color="Black"))+
theme(axis.line.y=element_line(color="Black"))+
ggtitle(paste0(unique(obs1$Tissue),".",i," vs ",controGroup))
return(a)}
featuresCD8<-c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3", #IFNa genes
"Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2", #IL12/IFNg genes
"Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell", #pex
"Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl",#effector
"Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox")#exhaustion
featuresCD4<-c("Ly6c2","Oas1a","Irf8","Ifitm3",#Ifna
"Il18rap","Il18r1","Il12rb1","Gbp2", #Ifng genes
"Ifng","Tbx21","Gzmk","Stat1","Tnf","Cxcr3","Il2", #Th1/effector genes
"Gata3","Il4","Il5","Lima1","Auh","Runx2","Smad2", #Th2
"Rorc","Il17a","Palld","Basp1","Tnfrsf8","Apoe") #Th17
############
#Figure 4I
pdf(file=paste0(pdir, "/TAD12.tetramer.dotplot_Fig4I.pdf"), width=13, height=3)
PlotStellare(obs1, featuresCD8, "Tetramer.CD8","OVA.TCR.CD8","RNA_Group",controGroup="SIINFEKL",noCtrlvsAll=T)
dev.off()
# Figure 4J
pdf(file=paste0(pdir, "/TAD12.CD4T.featuresCD4_Fig4J.pdf"), width=13, height=3)
PlotStellare(obs1,featuresCD4,"NewlablesG","CD4 T cells","RNA_Group",controGroup="SIINFEKL",noCtrlvsAll=T)
dev.off()
# Create subsets for further analysis
tetramer.t<-subset(obs1, subset = TetramerT== "OVA.TCR" &
NewlablesG =="CD8 T cells")
CD8<-subset(obs1, subset = NewlablesG =="CD8 T cells")
CD4<-subset(obs1, subset = NewlablesG =="CD4 T cells")
######################################################
##########Figure 4M, Clonotye by group CD4###########
#####################################################
table(CD4$RNA_Group, CD4$Clonetype)
#####RADAR PLOTS############################################
###############################################################
############Figure S4H- RADADR PLOT OVA SPECIFIC##############
################################################################
Effector <- list(c("Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl"))
Pex <- list(c("Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell"))
Exhaustion <- list(c("Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox"))
IFNa_genes <- list(c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes <- list(c("Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2"))
tetramer.t <- AddModuleScore(tetramer.t, features = Effector, name = "Effector")
tetramer.t <- AddModuleScore(tetramer.t, features = Pex, name = "Pex")
tetramer.t <- AddModuleScore(tetramer.t, features = Exhaustion, name = "Exhaustion")
tetramer.t <- AddModuleScore(tetramer.t, features = IFNa_genes, name = "IFNa_genes")
tetramer.t <- AddModuleScore(tetramer.t, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#41 is "NewlablesM_clu"
#42 is "RNA_Group"
#45:49 are the module scores
M1<-tetramer.t@meta.data[,c("NewlablesM", "RNA_Group", "Effector1","Pex1","Exhaustion1","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(tetramer.t$RNA_Group)
CellType<-unique(M1$NewlablesM_clu)
#with Median
#TAMs
#Groups are OVA.IL12 OVA.IFNa OVA Combo
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x),5)
min1 <- rep(do.call("min", x),5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0,0,1,0.9), rgb(0,0.8,0,0.9), rgb(0,0.5,0.5,0.9), rgb(0,0,0,0.9))
colors_in=c(rgb(0,0,0.6,0.1), rgb(0,0.6,0,0.1), rgb(0,0.1,0.1,0.1), rgb(0.1,0.1,0.1,0.1))
pdf(file=paste0(pdir, "/radar.plot.liver.tetramer_FigS4H.pdf"),width=5, height=5)
radarchart(ploTData, title = "OVA-reactive", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty = 1,cglwd=0.8)
dev.off()
######################################################
##################Figure 4K- RADAR PLOT CD4##########
######################################################
IFNa_genes<- list(c("Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes<-list(c("Il18rap","Il18r1","Il12rb1","Gbp2"))
Th1<-list(c("Ifng","Tbx21","Gzmk","Stat1","Tnf","Cxcr3","Il2"))
Th2<-list(c("Gata3","Il4","Il5","Lima1","Auh","Runx2","Smad2"))
Th17<-list(c("Rorc","Il17a","Palld","Basp1","Tnfrsf8","Apoe"))
CD4 <- AddModuleScore(CD4, features = Th1, name = "Th1")
CD4 <- AddModuleScore(CD4, features = Th2, name = "Th2")
CD4 <- AddModuleScore(CD4, features = Th17, name = "Th17")
CD4 <- AddModuleScore(CD4, features = IFNa_genes, name = "IFNa_genes")
CD4 <- AddModuleScore(CD4, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#41 is "NewlablesM_clu"
#42 is "RNA_Group"
#45:49 are the module scores
names(CD4@meta.data)
M1<-CD4@meta.data[,c("NewlablesM", "RNA_Group", "Th11","Th21","Th171","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(CD4$RNA_Group)
CellType<-unique(M1$NewlablesM_clu)
#with Median
#TAMs
#Groups are OVA.IL12 OVA.IFNa OVA Combo
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x), 5)
min1 <- rep(do.call("min", x), 5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0,0,1,0.9), rgb(0,0.8,0,0.9), rgb(0,0.5,0.5,0.9), rgb(0,0,0,0.9))
colors_in=c(rgb(0,0,0.6,0.1), rgb(0,0.6,0,0.1), rgb(0,0.1,0.1,0.1), rgb(0.1,0.1,0.1,0.1))
pdf(file=paste0(pdir, "/radar.plot.All.CD4T.cells2_Fig4K.pdf"), width=5, height=5)
radarchart(ploTData, title = "All CD4 T cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty = 1,cglwd=0.8)
dev.off()
###########################################GSEA##########################################################
#miDB_sig4.MLS <- readRDS(paste0(username, "Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/05-DGE-Tumor/miDB_sig4.MLS.rds"))
miDB_sig4.MLS <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/reference/miDB_sig4.MLS.rds")
############################################################
###############Figure 4L - GSEA CD4#########################
#############################################################
CD4<-SetIdent(CD4, value = "RNA_Group")
OVA.combo<-FindMarkers(CD4, ident.1="OVA.Combo", ident.2="SIINFEKL", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
stop.combo<-FindMarkers(CD4, ident.1="SIINFEKL.Combo", ident.2="SIINFEKL", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
OVA.combo.ranks <- OVA.combo$avg_log2FC
stop.combo.ranks <- stop.combo$avg_log2FC
names(OVA.combo.ranks) <- rownames(OVA.combo)
names(stop.combo.ranks) <- rownames(stop.combo)
res.OVA.combo <- fgsea(pathways=miDB_sig4.MLS, stats=OVA.combo.ranks, minSize=0, maxSize=500, eps=0, nPermSimple=25000)
res.stop.combo <- fgsea(pathways=miDB_sig4.MLS, stats=stop.combo.ranks, minSize=0, maxSize=500, eps=0, nPermSimple=25000)
# Select columns of interest
res.OVA.combo2<-res.OVA.combo[,c(1,3,6,8)]
res.stop.combo2<-res.stop.combo[,c(1,3,6,8)]
# Merge in a single file and save xlsx
merge3 <- merge(x=res.OVA.combo2,y=res.stop.combo2,by="pathway", suffixes = c("-Combo", "-stopcombo"))
res.OVA.combo$origin<-"OVA.Combo"
res.stop.combo$origin<-"SIINFEKL.Combo"
merge.results<-rbind(res.OVA.combo,res.stop.combo)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
# Manually selected pathways
a1<-c("HALLMARK_INTERFERON_ALPHA_RESPONSE",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"HALLMARK_IL2_STAT5_SIGNALING",
"LPS_RO",
"GOBP_INTERLEUKIN_18_PRODUCTION",
"GOBP_INTERFERON_GAMMA_PRODUCTION",
"GOBP_CELL_DIVISION",
"HALLMARK_G2M_CHECKPOINT",
"GOBP_NEGATIVE_REGULATION_OF_MACROPHAGE_ACTIVATION",
"IL4_RO",
"GOBP_RESPONSE_TO_INTERLEUKIN_17")
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "HALLMARK_INTERFERON_ALPHA_RESPONSE"] <- "Response to IFNa"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Response to IFNg"
merge.results1[merge.results1 == "HALLMARK_IL2_STAT5_SIGNALING"] <- "IL-2/STAT5 signalling"
merge.results1[merge.results1 == "LPS_RO"] <- "LPS signature (Cilenti et al)"
merge.results1[merge.results1 == "GOBP_INTERLEUKIN_18_PRODUCTION"] <- "IL-18 production"
merge.results1[merge.results1 == "GOBP_INTERFERON_GAMMA_PRODUCTION"] <- "Ifng production"
merge.results1[merge.results1 == "GOBP_CELL_DIVISION"] <- "Cell division"
merge.results1[merge.results1 == "HALLMARK_G2M_CHECKPOINT"] <- "Hallmark G2M checkpoint"
merge.results1[merge.results1 == "GOBP_NEGATIVE_REGULATION_OF_MACROPHAGE_ACTIVATION"] <- "Negative regulation of Macrophages activation"
merge.results1[merge.results1 == "IL4_RO"] <- "IL-4 Signature (Cilenti et al)"
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_INTERLEUKIN_17"] <- "Response to IL-17"
# Order in the way we want to see
merge.results1$pathway<- factor(merge.results1$pathway, levels = rev(c("Response to IFNa",
"Response to IFNg",
"IL-2/STAT5 signalling",
"LPS signature (Cilenti et al)",
"IL-18 production",
"Ifng production",
"Cell division",
"Hallmark G2M checkpoint",
"Negative regulation of Macrophages activation",
"IL-4 Signature (Cilenti et al)",
"Response to IL-17")))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette="RdBu") +
geom_text(aes(label = stats), vjust=0.75, angle=0, size=4) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color="Black"),
axis.text.x = element_text(angle=45, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA CD4 vs SIINFEKL")
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_vs_SIINFEKL_Fig4L.pdf"), plot=y, width=5, height=3)
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_vs_SIINFEKL_Fig4L.png"), plot=y, width=5, height=3, dpi=200)
# a1_new_not_used<-c("GOBP_RESPONSE_TO_VIRUS",
# "HALLMARK_INTERFERON_ALPHA_RESPONSE",
# "GOBP_CHROMOSOME_SEGREGATION",
# "HALLMARK_INTERFERON_GAMMA_RESPONSE",
# "HALLMARK_IL2_STAT5_SIGNALING",
# "LPS_RO",
# "HALLMARK_G2M_CHECKPOINT",
# "GOBP_CELL_DIVISION",
# "Exhaustion_Wherry")
# Rename pathways
# merge.results1[merge.results1 == "GOBP_RESPONSE_TO_VIRUS"] <- "Response to virus"
# merge.results1[merge.results1 == "HALLMARK_INTERFERON_ALPHA_RESPONSE"] <- "Response to IFNa"
# merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Response to IFNg"
# merge.results1[merge.results1 == "HALLMARK_IL2_STAT5_SIGNALING"] <- "IL-2/STAT5 signalling"
# merge.results1[merge.results1 == "LPS_RO"] <- "LPS signature (Cilenti et al)"
# merge.results1[merge.results1 == "HALLMARK_G2M_CHECKPOINT"] <- "G2M checkpoint"
# merge.results1[merge.results1 == "GOBP_CHROMOSOME_SEGREGATION"] <- "Chromosome segregation"
# merge.results1[merge.results1 == "GOBP_CELL_DIVISION"] <- "Cell division"
# merge.results1[merge.results1 == "Exhaustion_Wherry"] <- "Exhaustion signature (Wherry)"
# merge.results1$pathway<- factor(merge.results1$pathway, levels = rev(c("Response to virus",
# "Response to IFNa",
# "Response to IFNg",
# "IL-2/STAT5 signalling",
# "LPS signature (Cilenti et al)",
# "G2M checkpoint",
# "Cell division",
# "Chromosome segregation",
# "Exhaustion signature (Wherry)")))
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.05,]
filter_in <- head(unique(merge.results_temp$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("OVA.Combo","SIINFEKL.Combo"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_CD4 vs SIINFEKL")
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_vs_SIINFEKL_unbias.pdf"), plot=y, width=15, height=30)
############################################################
###############Figure xxx-OLD - GSEA CD4#########################
#############################################################
CD4<-SetIdent(CD4, value = "RNA_Group")
OVA.combo<-FindMarkers(CD4, ident.1="OVA.Combo", ident.2 ="liOVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
stop.combo<-FindMarkers(CD4, ident.1="SIINFEKL.Combo", ident.2= "liOVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
STOP<-FindMarkers(CD4, ident.1="SIINFEKL", ident.2= "liOVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
liOVA<-FindMarkers(CD4, ident.1="liOVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
OVA.combo.ranks <- OVA.combo$avg_log2FC
stop.combo.ranks <- stop.combo$avg_log2FC
STOP.ranks <- STOP$avg_log2FC
liOVA.ranks <- liOVA$avg_log2FC
names(OVA.combo.ranks) <- rownames(OVA.combo)
names(stop.combo.ranks) <- rownames(stop.combo)
names(STOP.ranks) <- rownames(STOP)
names(liOVA.ranks) <- rownames(liOVA)
res.OVA.combo <- fgsea(pathways=miDB_sig4.MLS, stats=OVA.combo.ranks, minSize=0, maxSize=500, eps=0, nPermSimple=25000)
res.stop.combo <- fgsea(pathways=miDB_sig4.MLS, stats=stop.combo.ranks, minSize=0, maxSize=500, eps=0, nPermSimple=25000)
res.STOP <- fgsea(pathways=miDB_sig4.MLS, stats=STOP.ranks, minSize=0, maxSize=500, eps=0, nPermSimple=25000)
res.liOVA <- fgsea(pathways=miDB_sig4.MLS, stats=liOVA.ranks, minSize=0, maxSize=500, eps=0, nPermSimple=25000)
# Select columns of interest
res.OVA.combo2<-res.OVA.combo[,c(1,3,6,8)]
res.stop.combo2<-res.stop.combo[,c(1,3,6,8)]
res.STOP2<-res.STOP[,c(1,3,6,8)]
res.liOVA2<-res.liOVA[,c(1,3,6,8)]
# Merge in a single file and save xlsx
merge1 <- merge(x=res.OVA.combo2,y=res.stop.combo2,by="pathway", suffixes = c("-Combo", "-stopcombo"))
merge2<-merge(x=res.STOP2,y=res.liOVA2,by="pathway", suffixes = c("-STOP", "-liOVA"))
merge3<-merge(merge1,merge2)
# setwd(pdir)
# write.xlsx(merge3,"GSEA_CD4_vsliOVA_OVA-vsall.xlsx",asTable = TRUE,rowNames=T) ####save file
# merge2<-merge1[merge1$`padj-Combo`<0.05,]
# merge3<-merge2[merge2$`padj-stopcombo`<0.05,]
# write.xlsx(merge3,"GSEA_CD4_vsSIINFEKL_only signifi.xlsx",asTable = TRUE,rowNames=T) ####save file
res.OVA.combo$origin<-"OVA.Combo"
res.stop.combo$origin<-"SIINFEKL.Combo"
res.STOP$origin<-"SIINFEKL"
res.liOVA$origin<-"li.OVA"
merge.results<-rbind(res.OVA.combo,res.stop.combo,res.STOP,res.liOVA)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
# Manually selected pathways
a1_OLD<-c("HALLMARK_INTERFERON_ALPHA_RESPONSE",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"HALLMARK_IL2_STAT5_SIGNALING",
"LPS_RO",
"GOBP_INTERLEUKIN_18_PRODUCTION",
"GOBP_INTERFERON_GAMMA_PRODUCTION",
"GOBP_T_CELL_DIFFERENTIATION_INVOLVED_IN_IMMUNE_RESPONSE",
"HALLMARK_E2F_TARGETS",
"HALLMARK_G2M_CHECKPOINT",
"GOBP_NEGATIVE_REGULATION_OF_MACROPHAGE_ACTIVATION",
"IL4_RO",
"GOBP_RESPONSE_TO_INTERLEUKIN_17")
a1<-c("GOBP_RESPONSE_TO_VIRUS",
"HALLMARK_INTERFERON_ALPHA_RESPONSE",
"GOCC_T_CELL_RECEPTOR_COMPLEX",
"GOBP_PHAGOCYTOSIS",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"HALLMARK_IL2_STAT5_SIGNALING",
"LPS_RO",
"GOBP_INTERFERON_GAMMA_PRODUCTION",
"GOBP_T_CELL_DIFFERENTIATION_INVOLVED_IN_IMMUNE_RESPONSE",
"Exhaustion_Wherry")
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_VIRUS"] <- "Response to virus"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_ALPHA_RESPONSE"] <- "Response to IFNa"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Response to IFNg"
merge.results1[merge.results1 == "HALLMARK_IL2_STAT5_SIGNALING"] <- "IL-2/STAT5 signalling"
merge.results1[merge.results1 == "LPS_RO"] <- "LPS signature (Cilenti et al)"
merge.results1[merge.results1 == "GOBP_INTERFERON_GAMMA_PRODUCTION"] <- "Ifng production"
merge.results1[merge.results1 == "GOCC_T_CELL_RECEPTOR_COMPLEX"] <- "T cell receptor complex"
merge.results1[merge.results1 == "GOBP_PHAGOCYTOSIS"] <- "Phagocytosis"
merge.results1[merge.results1 == "GOBP_T_CELL_DIFFERENTIATION_INVOLVED_IN_IMMUNE_RESPONSE"] <- "T cell differentiation"
merge.results1[merge.results1 == "Exhaustion_Wherry"] <- "Exhaustion signature (Wherry)"
# Order in the way we want to see
merge.results1$pathway<- factor(merge.results1$pathway, levels = rev(c("Response to virus",
"Response to IFNa",
"Response to IFNg",
"IL-2/STAT5 signalling",
"LPS signature (Cilenti et al)",
"Ifng production",
"T cell differentiation",
"T cell receptor complex",
"Phagocytosis",
"Exhaustion signature (Wherry)")))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette="RdBu") +
geom_text(aes(label = stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color="Black"),
axis.text.x = element_text(angle=45, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA CD4 vs liOVA")
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_vs_liOVA_Fig4.pdf"), plot=y, width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.01,]
filter_in <- head(unique(merge.results_temp$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("li.OVA","SIINFEKL","OVA.Combo","SIINFEKL.Combo"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_CD4 vs liOVA")
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_vs_liOVA_unbias.pdf"), plot=y, width=15, height=30)
suppressPackageStartupMessages(library(Seurat))
suppressPackageStartupMessages(library(harmony))
suppressPackageStartupMessages(library(openxlsx))
suppressPackageStartupMessages(library(readxl))
suppressPackageStartupMessages(library(tidyr))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(RColorBrewer)) # Color palettes for visualization
suppressPackageStartupMessages(library(dplyr))
##############################################################################
################Figure S4D - Liver clusters dotplot markers###################
dataset <- "18"
Tissue <- "Liver" # "Liver" or "Tumor"
wd <- paste0("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM")
setwd(wd)
# Plot dir
plot_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results3/Result3_MNOT/Plots"
dir.create(plot_dir, showWarnings = FALSE)
# Load the RDS
obs1 <- readRDS(paste0(wd, "/results2/", Tissue, "/", Tissue, "_final.rds"))
# Assign groups
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="liOVA_IL12"] <- "OVA.IL12"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="liOVA_IFNa"] <- "OVA.IFNa"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="liOVA"] <- "OVA"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="Combo3x"] <- "Combo"
#sample origin
obs1$Tube <- paste0(obs1$RNA_Group,obs1$hash.ID)
obs1@meta.data$RNA_Group<- factor(x = obs1@meta.data$RNA_Group, levels = c("OVA","OVA.IFNa","OVA.IL12","Combo"))
obs1@meta.data$Tissue <- obs1@meta.data$PROP.Source
# Liver
obs1 <- SetIdent(obs1, value = "Newlables2")
obs1@meta.data$Newlables2 <- factor(x = obs1@meta.data$Newlables2, levels = c("APCs","TandNK","B cells","Hepatocytes","Endothelial cells","Others"))
obs1_subset <- subset(obs1, Newlables2 != "Others")
# Dot Plot
features_to_plot_manual_liver_MNOT <- unique(c("Cd86", "Itgax", "Clec9a", "Flt3", "Clec4f", "Adgre1", "Lyz2", "Marco", "Cd14", # APCs
"Cd3e", "Cd8a", "Cd4", "Nkg7", "Gzmb", "Cd3g", "Klrb1c", # TandNK
"Cd79a", "Ms4a1", "Cd19", "Ighm", "Cd22", "Ebf1", "Pax5", # B cells
"Alb", "Adh1", "Cyp3a11", "Serpina1a", "Apoa1", "Fgb", "Hamp", # Hepatocytes
"Cdh5", "Pecam1", "Kdr", "Eng", "Nos3", "Esam", "Vwf" # Endothelial cells
))
paletteLength <- 100
myColor <- colorRampPalette(c("blue", "darkgrey", "darkred"))(paletteLength)
pdf(paste0(plot_dir, "/TAD018_", Tissue, "_dotplot.markers.Newlables2_FigS4D.pdf"), width=11, height=4)
dotplot1<-scCustomize::Clustered_DotPlot(obs1_subset,
features = features_to_plot_manual_liver_MNOT,
plot_km_elbow=F,
row_label_size=10,
flip=T, colors_use_exp = myColor,
cluster_feature=F, cluster_ident=F)
dev.off()
##############################################################################
################Figure S4E - Tumor clusters dotplot markers###################
dataset <- "18"
Tissue <- "Tumor" # "Liver" or "Tumor"
wd <- paste0("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A0", dataset, "/Analysis_MM")
setwd(wd)
# Plot dir
plot_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results3/Result3_MNOT/Plots"
dir.create(plot_dir, showWarnings = FALSE)
# Load the RDS
obs1 <- readRDS(paste0(wd, "/results2/", Tissue, "/", Tissue, "_final.rds"))
# Assign groups
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="liOVA_IL12"] <- "OVA.IL12"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="liOVA_IFNa"] <- "OVA.IFNa"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="liOVA"] <- "OVA"
obs1@meta.data$RNA_Group[obs1@meta.data$PROP.Condition=="Combo3x"] <- "Combo"
#sample origin
obs1$Tube <- paste0(obs1$RNA_Group,obs1$hash.ID)
obs1@meta.data$RNA_Group<- factor(x = obs1@meta.data$RNA_Group, levels = c("OVA","OVA.IFNa","OVA.IL12","Combo"))
obs1@meta.data$Tissue <- obs1@meta.data$PROP.Source
# Tumor
obs1 <- SetIdent(obs1, value = "Newlables2")
obs1@meta.data$Newlables2 <- factor(x = obs1@meta.data$Newlables2, levels = c("APCs","TandNK","B cells","Cancer cells","Others"))
obs1_subset <- subset(obs1, Newlables2 != "Others")
# Dot Plot
features_to_plot_manual_tumor_MNOT <- unique(c("Cd86", "Itgax", "Adgre1", "Lyz2", "Cd14", "Cd68", "Fcgr1", # APCs
"Cd3e", "Cd8a", "Cd4", "Nkg7", "Gzmb", "Cd3g", # TandNK
"Cd79a", "Ms4a1", "Cd19", "Ighm", "Cd22", "Ebf1", "Pax5", # B cells
"Cd34", "Serpinf1", "Sparc", "Mxra7", "Fstl1" # Cancer cells
))
paletteLength <- 100
myColor <- colorRampPalette(c("blue", "darkgrey", "darkred"))(paletteLength)
pdf(paste0(plot_dir, "/TAD018_", Tissue, "_dotplot.markers.Newlables2_FigS4E.pdf"), width=10, height=3)
dotplot1<-scCustomize::Clustered_DotPlot(obs1_subset,
features = features_to_plot_manual_tumor_MNOT,
plot_km_elbow=F,
row_label_size=10,
flip=T, colors_use_exp = myColor,
cluster_feature=F, cluster_ident=F)
dev.off()
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(reshape2)
library(fgsea)
library(patchwork)
library(presto)
library(matrixStats)
library(fmsb)
library(ggplot2)
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results3"
wdir<- paste0(cluster_dir, "/Result3_MNOT")
tdir<- paste0(cluster_dir, "/Tumor_APCs/")
ldir<- paste0(cluster_dir, "/Liver_APCs/")
pdir<- paste0(cluster_dir, "/Result3_MNOT/Plots")
plotRadar <- function(i){
ploTData<- rbind(max1,min1,get(i))
id <- sub(".db","",i)
radarchart(ploTData, title = id, pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty = 1, cglwd=0.8)
} #function to plot radarplot
#############################################################################
##########################LIVER MACS#########################################
#############################################################################
apcs.liver <- readRDS(paste0(ldir, "/Liver_APCs_final.rds"))
# Assigning groups
apcs.liver@meta.data$Tissue <- apcs.liver@meta.data$PROP.Source
apcs.liver@meta.data$RNA_Group <- apcs.liver@meta.data$PROP.Condition
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$RNA_Group == "liOVA_IL12"] <- "OVA.Il12"
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$RNA_Group == "liOVA_IFNa"] <- "OVA.Ifna"
apcs.liver@meta.data$RNA_Group[apcs.liver@meta.data$RNA_Group == "Combo3x"] <- "OVA.Combo"
apcs.liver@meta.data$RNA_Group <- factor(x = apcs.liver@meta.data$RNA_Group, levels = c("liOVA","OVA.Ifna","OVA.Il12","OVA.Combo"))
apcs.liver@meta.data$Tube <- paste0(apcs.liver@meta.data$hash.ID, apcs.liver@meta.data$RNA_Group)
########################################################################
#######################TUMOR###########################################
#########################################################################
# Load the RDS file
apcs.tumor <- readRDS(paste0(tdir, "Tumor_APCs_final.rds"))
# Assigning tissue, origin, and ordering
apcs.tumor@meta.data$Tissue <- apcs.tumor@meta.data$PROP.Source
apcs.tumor@meta.data$RNA_Group <- apcs.tumor@meta.data$PROP.Condition
apcs.tumor@meta.data$RNA_Group[apcs.tumor@meta.data$RNA_Group == "liOVA_IL12"] <- "OVA.Il12"
apcs.tumor@meta.data$RNA_Group[apcs.tumor@meta.data$RNA_Group == "liOVA_IFNa"] <- "OVA.Ifna"
apcs.tumor@meta.data$RNA_Group[apcs.tumor@meta.data$RNA_Group == "Combo3x"] <- "OVA.Combo"
apcs.tumor@meta.data$RNA_Group <- factor(x = apcs.tumor@meta.data$RNA_Group, levels = c("liOVA","OVA.Ifna","OVA.Il12","OVA.Combo"))
apcs.tumor@meta.data$Tube <- paste0(apcs.tumor@meta.data$hash.ID, apcs.tumor@meta.data$RNA_Group)
# Refining labels
apcs.tumor$NewlablesM_clu[apcs.tumor$NewlablesM_clu == "pre DCs2"] <- "Macrophages"
############DimPlots
pdf(paste0(pdir, "/Liver_umapAPC_Fig2C.pdf"), width = 8, height = 6)
DimPlot(apcs.liver, reduction = "umap.harmony.orig.ident", group.by = "NewlablesM_clu", label = T, label.size = 6, repel = T)
dev.off()
# Export DimPlot as excel
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu")
apcs.liver_df <- FetchData(apcs.liver, vars = var_list)
apcs.liver_df$cell_ID <- rownames(apcs.liver_df)
write.xlsx(apcs.liver_df, file=paste0(pdir, "/Liver_umapAPC_Fig2C.xlsx"), overwrite=T)
pdf(paste0(pdir, "/Tumor_umapAPC_Fig2D.pdf"), width = 8, height = 6)
DimPlot(apcs.tumor, reduction = "umap.harmony.orig.ident", group.by = "NewlablesM_clu", label = T, label.size = 6, repel = T)
dev.off()
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu")
apcs.tumor_df <- FetchData(apcs.tumor, vars = var_list)
apcs.tumor_df$cell_ID <- rownames(apcs.tumor_df)
write.xlsx(apcs.tumor_df, file=paste0(pdir, "/Tumor_umapAPC_Fig2D.xlsx"), overwrite=T)
# All Liver
ALL_liver <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results2/Liver/Liver_final.rds")
ALL_liver@meta.data$Tissue <- ALL_liver@meta.data$PROP.Source
ALL_liver@meta.data$RNA_Group <- ALL_liver@meta.data$PROP.Condition
ALL_liver@meta.data$RNA_Group[ALL_liver@meta.data$RNA_Group == "liOVA_IL12"] <- "OVA.Il12"
ALL_liver@meta.data$RNA_Group[ALL_liver@meta.data$RNA_Group == "liOVA_IFNa"] <- "OVA.Ifna"
ALL_liver@meta.data$RNA_Group[ALL_liver@meta.data$RNA_Group == "Combo3x"] <- "OVA.Combo"
ALL_liver@meta.data$RNA_Group <- factor(x = ALL_liver@meta.data$RNA_Group, levels = c("liOVA","OVA.Ifna","OVA.Il12","OVA.Combo"))
ALL_liver@meta.data$Tube <- paste0(ALL_liver@meta.data$hash.ID, ALL_liver@meta.data$RNA_Group)
pdf(paste0(pdir, "/Liver_umap_Fig2A.pdf"), width = 8, height = 6)
DimPlot(ALL_liver, reduction = "umap.harmony.orig.ident", group.by = "Newlables2", label = T, label.size = 6, repel = T)
dev.off()
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.0.6","Newlables2")
ALL_liver_df <- FetchData(ALL_liver, vars = var_list)
ALL_liver_df$cell_ID <- rownames(ALL_liver_df)
write.xlsx(ALL_liver_df, file=paste0(pdir, "/Liver_umap_Fig2A_FigS4B.xlsx"), overwrite=T)
# All Tumor
ALL_tumor <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results2/Tumor/Tumor_final.rds")
ALL_tumor@meta.data$Tissue <- ALL_tumor@meta.data$PROP.Source
ALL_tumor@meta.data$RNA_Group <- ALL_tumor@meta.data$PROP.Condition
ALL_tumor@meta.data$RNA_Group[ALL_tumor@meta.data$RNA_Group == "liOVA_IL12"] <- "OVA.Il12"
ALL_tumor@meta.data$RNA_Group[ALL_tumor@meta.data$RNA_Group == "liOVA_IFNa"] <- "OVA.Ifna"
ALL_tumor@meta.data$RNA_Group[ALL_tumor@meta.data$RNA_Group == "Combo3x"] <- "OVA.Combo"
ALL_tumor@meta.data$RNA_Group <- factor(x = ALL_tumor@meta.data$RNA_Group, levels = c("liOVA","OVA.Ifna","OVA.Il12","OVA.Combo"))
ALL_tumor@meta.data$Tube <- paste0(ALL_tumor@meta.data$hash.ID, ALL_tumor@meta.data$RNA_Group)
pdf(paste0(pdir, "/Tumor_umap_Fig2B.pdf"), width = 8, height = 6)
DimPlot(ALL_tumor, reduction = "umap.harmony.orig.ident", group.by = "Newlables2", label = T, label.size = 6, repel = T)
dev.off()
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.0.6","Newlables2")
ALL_tumor_df <- FetchData(ALL_tumor, vars = var_list)
ALL_tumor_df$cell_ID <- rownames(ALL_tumor_df)
write.xlsx(ALL_tumor_df, file=paste0(pdir, "/Tumor_umap_Fig2B_FigS4C.xlsx"), overwrite=T)
# Macrophages Tumor
macrophages_tumor <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results3/macrophages_tumor/macrophages_tumor_final.rds")
macrophages_tumor@meta.data$Tissue <- macrophages_tumor@meta.data$PROP.Source
macrophages_tumor@meta.data$RNA_Group <- macrophages_tumor@meta.data$PROP.Condition
macrophages_tumor@meta.data$RNA_Group[macrophages_tumor@meta.data$RNA_Group == "liOVA_IL12"] <- "OVA.Il12"
macrophages_tumor@meta.data$RNA_Group[macrophages_tumor@meta.data$RNA_Group == "liOVA_IFNa"] <- "OVA.Ifna"
macrophages_tumor@meta.data$RNA_Group[macrophages_tumor@meta.data$RNA_Group == "Combo3x"] <- "OVA.Combo"
macrophages_tumor@meta.data$RNA_Group <- factor(x = macrophages_tumor@meta.data$RNA_Group, levels = c("liOVA","OVA.Ifna","OVA.Il12","OVA.Combo"))
macrophages_tumor@meta.data$Tube <- paste0(macrophages_tumor@meta.data$hash.ID, macrophages_tumor@meta.data$RNA_Group)
pdf(paste0(pdir, "/macrophages_tumor_umap_res.0.3_FigS5C.pdf"), width = 8, height = 6)
DimPlot(macrophages_tumor, reduction = "umap.harmony.orig.ident", group.by = "RNA_snn_h.orig.ident_res.0.3", label = T, label.size = 6, repel = T)
dev.off()
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.0.3")
macrophages_tumor_df <- FetchData(macrophages_tumor, vars = var_list)
macrophages_tumor_df$cell_ID <- rownames(macrophages_tumor_df)
write.xlsx(macrophages_tumor_df, file=paste0(pdir, "/macrophages_tumor_umap_res.0.3_FigS5C.xlsx"), overwrite=T)
##############DOTPLOT STELLARI#####################################
# Selected genes for dotplot
features1 = c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2", #MHCI
"H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita", #MHCII
"Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g", #IFNa
"Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74", #IFNg
"Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1") #protumor
###########Figure 2E############
###############################
apcs.liver<-SetIdent(apcs.liver, value = "Tissue")
pa1 <- DotPlot(apcs.liver, features = features1,idents = "Liver", dot.scale = 15, split.by = "RNA_Group",
cols="RdBu") + RotatedAxis()
i<-"Liver" # Is subset.ident = i necessary?
df1 <- pa1$data
df1$id <- factor(x = df1$id, levels = unique(df1$id)[c(4,1,2,3)])
m.Combo <- FindMarkers(apcs.liver, ident.1 = "OVA.Combo", ident.2 = "liOVA", group.by = "RNA_Group",
subset.ident = i, features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.Combo <- m.Combo[match(features1, rownames(m.Combo)),]
m.IL12 <- FindMarkers(apcs.liver, ident.1 = "OVA.Il12", ident.2 = "liOVA", group.by = "RNA_Group",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.IL12 <- m.IL12[match(features1,rownames(m.IL12)),]
m.IFNa <- FindMarkers(apcs.liver, ident.1 = "OVA.Ifna", ident.2 = "liOVA", group.by = "RNA_Group",
subset.ident = i, features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.IFNa <- m.IFNa[match(features1,rownames(m.IFNa)),]
m.OVA <- FindMarkers(apcs.liver, ident.1 = "liOVA", group.by = "RNA_Group",
subset.ident = i, features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.OVA <- m.OVA[match(features1,rownames(m.OVA)),]
m.OVA$p_val_adj<-1
markers1 <- rbind(m.IL12,m.IFNa,m.OVA,m.Combo)
df2 <- cbind(df1,markers1)
df2$stars <- ifelse(df2$p_val_adj< 0.001,"***",
ifelse(df2$p_val_adj< 0.01,"**",
ifelse(df2$p_val_adj< 0.05,"*","")))
a<-ggplot(df2, aes(x=features.plot, y=id, size=pct.exp ,color=avg.exp.scaled)) +
geom_point() +
scale_size_area(max_size = 10) +
scale_colour_gradient2(low= "blue",mid = "darkgrey",high="darkred") + ####"#CCCCFF"
labs(y='',x='')+
geom_text(aes(label=stars,vjust=0.8),col="black",size = 4)+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"))+
theme(axis.text.x = element_text(angle = 45, hjust= 1, color = "Black"))+
theme(axis.line.x=element_line(color="Black"))+
theme(axis.line.y=element_line(color="Black"))+
ggtitle("Dotplot liver APCs")
ggsave(filename = paste0(pdir, "/Dotplot_stellare_liverAPCs_Fig2E.pdf"), plot=1, width=11, height=3)
#############TUMOR#################################
#####################Figure 2F####################
apcs.tumor<-SetIdent(apcs.tumor, value = "Tissue")
pa1 <- DotPlot(apcs.tumor, features = features1,idents = "Tumor", dot.scale = 15, split.by = "RNA_Group",
cols="RdBu") + RotatedAxis()
i<-"Tumor"
df1 <- pa1$data
df1$id <- factor(x = df1$id, levels = unique(df1$id)[c(4,1,2,3)])
m.Combo <- FindMarkers(apcs.tumor, ident.1 = "OVA.Combo",ident.2 = "liOVA", group.by = "RNA_Group",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.Combo <- m.Combo[match(features1,rownames(m.Combo)),]
m.IL12 <- FindMarkers(apcs.tumor, ident.1 = "OVA.Il12",ident.2 = "liOVA", group.by = "RNA_Group",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.IL12 <- m.IL12[match(features1,rownames(m.IL12)),]
m.IFNa <- FindMarkers(apcs.tumor, ident.1 = "OVA.Ifna",ident.2 = "liOVA", group.by = "RNA_Group",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.IFNa <- m.IFNa[match(features1,rownames(m.IFNa)),]
m.OVA <- FindMarkers(apcs.tumor, ident.1 = "liOVA", group.by = "RNA_Group",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
m.OVA <- m.OVA[match(features1,rownames(m.OVA)),]
m.OVA$p_val_adj<-1
markers1 <- rbind(m.IL12,m.IFNa,m.OVA,m.Combo)
df2 <- cbind(df1,markers1)
df2$stars <- ifelse(df2$p_val_adj< 0.001,"***",
ifelse(df2$p_val_adj< 0.01,"**",
ifelse(df2$p_val_adj< 0.05,"*","")))
a<-ggplot(df2, aes(x=features.plot, y=id, size=pct.exp ,color=avg.exp.scaled)) +
geom_point() +
scale_size_area(max_size = 10) +
scale_colour_gradient2(low= "blue",mid = "darkgrey",high="darkred") + ####"#CCCCFF"
labs(y='',x='')+
geom_text(aes(label=stars,vjust=0.8),col="black",size = 4)+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"))+
theme(axis.text.x = element_text(angle = 45, hjust= 1, color = "Black"))+
theme(axis.line.x=element_line(color="Black"))+
theme(axis.line.y=element_line(color="Black"))+
ggtitle("Dotplot tumor APCs")
ggsave(filename = paste0(pdir, "/Dotplot_stellare_tumorAPCs_Fig2F.pdf"), plot=1, width=11, height=3)
###############RADAR PLOT WITH MACROCLASS LIVER AND TUMOR#################################
###############Figure 2G#################################################################
####Create a new label to cluster DCs and Granulocytes together
apcs.liver@meta.data$Shortlables <- apcs.liver@meta.data$NewlablesM_clu
apcs.tumor@meta.data$Shortlables <- apcs.tumor@meta.data$NewlablesM_clu
DCs<-c("CD8 cDC1", "moDCs", "Ccr7 DCs", "pDCs", "pre DCs")
apcs.liver@meta.data$Shortlables[apcs.liver@meta.data$NewlablesM_clu%in%DCs] <- "DCs"
apcs.tumor@meta.data$Shortlables[apcs.tumor@meta.data$NewlablesM_clu%in%DCs] <- "DCs"
granu<-c("Neutrophils", "Basophils")
apcs.liver@meta.data$Shortlables[apcs.liver@meta.data$NewlablesM_clu%in%granu] <- "Granulocytes"
apcs.tumor@meta.data$Shortlables[apcs.tumor@meta.data$NewlablesM_clu%in%granu] <- "Granulocytes"
table(apcs.liver@meta.data$NewlablesM_clu)
table(apcs.tumor@meta.data$NewlablesM_clu)
##############LIVER RADARPLOT##########################
MHCI_genes <- list(c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2"))
MHCII_genes <- list( c("H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita"))
Protumoral_genes <- list(c("Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1") )
IFNa_genes <- list(c("Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g") )
IFNg_genes <-list(c("Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74"))
apcs.liver <- AddModuleScore(apcs.liver, features = MHCI_genes, name = "MHCI_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = MHCII_genes, name = "MHCII_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = Protumoral_genes, name = "Protumoral_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = IFNa_genes, name = "IFNa_genes")
apcs.liver <- AddModuleScore(apcs.liver, features = IFNg_genes, name = "IFNg_genes")
names(apcs.liver@meta.data)
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#41 is "Shortlables"
#42 is "RNA_Group"
#45:49 are the module scores
M1<-apcs.liver@meta.data[,c("NewlablesM_clu", "RNA_Group", "MHCI_genes1","MHCII_genes1","Protumoral_genes1","IFNa_genes1","IFNg_genes1")]
#M1<-apcs.liver@meta.data[,c(45, 42, 46:50)]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(apcs.liver$RNA_Group)
CellType<-unique(M1$NewlablesM_clu)
for (i in CellType){
M2<-M1[M1$NewlablesM_clu%in%i,]
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
assign(paste0(i,".db"),x)}
lsCells <- grep(".db",ls(),value=T)
MinMax<-lapply(lsCells,get)
max1 <- rep(do.call("max", MinMax),5)
min1 <- rep(do.call("min", MinMax),5)
colors_border=c(rgb(0,0,0,0.9), rgb(0.1,0.6,0.2,0.9), rgb(0.8,0.1,0.1,0.9), rgb(0.1,0.2,1,0.9))
colors_in=c(rgb(0,0,0,0.1), rgb(0.1,0.6,0.2,0.1), rgb(0.8,0.1,0.1,0.1), rgb(0.1,0.2,1,0.1))
pdf(paste0(pdir, "/Radar_plot_liverAPCs_NewlablesM_clu_Fig.2G_part1.pdf"), width=18, height=6)
par(mfrow=c(2,5))
for (i in 1:length(unique(apcs.liver$NewlablesM_clu))){
plotRadar(lsCells[i])
}
dev.off()
################TUMOR RADARPLOT#####################
rm(list = grep(".db", ls(), value = TRUE))
MHCI_genes <- list(c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2"))
MHCII_genes <- list( c("H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita"))
Protumoral_genes <- list(c("Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1") )
IFNa_genes <- list(c("Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g") )
IFNg_genes <- list(c("Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74"))
apcs.tumor <- AddModuleScore(apcs.tumor, features = MHCI_genes, name = "MHCI_genes")
apcs.tumor <- AddModuleScore(apcs.tumor, features = MHCII_genes, name = "MHCII_genes")
apcs.tumor <- AddModuleScore(apcs.tumor, features = Protumoral_genes, name = "Protumoral_genes")
apcs.tumor <- AddModuleScore(apcs.tumor, features = IFNa_genes, name = "IFNa_genes")
apcs.tumor <- AddModuleScore(apcs.tumor, features = IFNg_genes, name = "IFNg_genes")
M1<-apcs.tumor@meta.data[,c("NewlablesM_clu", "RNA_Group", "MHCI_genes1","MHCII_genes1","Protumoral_genes1","IFNa_genes1","IFNg_genes1")]
#M1<-apcs.tumor@meta.data[,c(46, 43, 47:51)]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(apcs.tumor$RNA_Group)
CellType<-unique(M1$NewlablesM_clu)
for (i in CellType){
M2<-M1[M1$NewlablesM_clu%in%i,]
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
assign(paste0(i,".db"),x)}
lsCells <- grep(".db",ls(),value=T)
MinMax<-lapply(lsCells,get)
max1 <- rep(do.call("max", MinMax),5)
min1 <- rep(do.call("min", MinMax),5)
colors_border=c(rgb(0,0,0,0.9), rgb(0.1,0.6,0.2,0.9), rgb(0.8,0.1,0.1,0.9), rgb(0.1,0.2,1,0.9))
colors_in=c(rgb(0,0,0,0.1), rgb(0.1,0.6,0.2,0.1), rgb(0.8,0.1,0.1,0.1), rgb(0.1,0.2,1,0.1))
pdf(paste0(pdir, "/Radar_plot_tumorAPCs_NewlablesM_clu_Fig.2G_part2.pdf"), width=18, height=6)
par(mfrow=c(2,5))
for (i in 1:length(unique(apcs.tumor$NewlablesM_clu))){
plotRadar(lsCells[i])
}
dev.off()
#############GSEA###################
########Create a single file with all the NES and Pvalue_adj, PLOT HEATMAP###############################
################################Only liver macs##########################################################
#miDB_sig4.MLS <- readRDS("C:/Users/notaro.marco/Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/05-DGE-Tumor/miDB_sig4.MLS.rds")
miDB_sig4.MLS <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/reference/miDB_sig4.MLS.rds")
#################Figure S2C Liver#######################################
macrophage.L<-subset(apcs.liver, subset = NewlablesM_clu== "Monocytes" |
NewlablesM_clu== "Macrophages" |
NewlablesM_clu== "KCs")
macrophage.L<-SetIdent(macrophage.L, value = "RNA_Group")
# Here there is some discussions about what parameters to use to rank genes for fgsea: https://github.com/ctlab/fgsea/issues/50
combo<-FindMarkers(macrophage.L, ident.1="OVA.Combo",ident.2 ="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1) # used min.pct = -Inf or 0.01
IL12<-FindMarkers(macrophage.L, ident.1="OVA.Il12",ident.2 ="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
IFNa<-FindMarkers(macrophage.L, ident.1="OVA.Ifna",ident.2 ="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
OVA<-FindMarkers(macrophage.L, ident.1="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
combo.ranks <- combo$avg_log2FC
IL12.ranks <- IL12$avg_log2FC
IFNa.ranks <- IFNa$avg_log2FC
OVA.ranks <- OVA$avg_log2FC
names(combo.ranks) <- rownames(combo)
names(IL12.ranks) <- rownames(IL12)
names(IFNa.ranks) <- rownames(IFNa)
names(OVA.ranks) <- rownames(OVA)
#summary(combo.ranks)
#n_occur <- data.frame(table(combo.ranks))
res.combo<-fgsea(pathways = miDB_sig4.MLS, stats = combo.ranks, minSize=0, maxSize=500, eps=0) # I added eps=0
res.IL12<-fgsea(pathways = miDB_sig4.MLS, stats = IL12.ranks, minSize=0, maxSize=500, eps=0)
res.IFNa<-fgsea(pathways = miDB_sig4.MLS, stats = IFNa.ranks, minSize=0, maxSize=500, eps=0)
res.OVA<-fgsea(pathways = miDB_sig4.MLS, stats = OVA.ranks, minSize=0, maxSize=500, eps=0) # nPermSimple=500000 long calculation, saved RDS, needed because it cant calculate pval for some pathways due to high variability
#saveRDS(res.OVA, paste0(pdir, "FGSEA_KCmonoMacs_liver_OVAvsAll_nperm500000.rds"))
# Select the columns of interest
res.combo2<-res.combo[,c(1,3,6,8)]
res.IL122<-res.IL12[,c(1,3,6,8)]
res.IFNa2<-res.IFNa[,c(1,3,6,8)]
res.OVA2<-res.OVA[,c(1,3,6,8)]
# Merge in a single file and save as xlsx
merge1 <- merge(x=res.combo2,y=res.IL122,by="pathway", suffixes = c("-Combo", "-Il12"))
merge2 <- merge(x=res.IFNa2,y=res.OVA2,by="pathway", suffixes = c("-IFna", "-OVA"))
merge3<-merge(x=merge1,y=merge2,by="pathway")
write.xlsx(merge3, paste0(pdir, "/GSEA_L_monomackc_vsOVA_min.pct0.01.xlsx"), asTable=T, rowNames=T)
#################GSEA Heatmap of selected###################################
# Rearrange data to plot heatmap
res.combo$origin<-"OVA.Combo"
res.IL12$origin<-"OVA.Il12"
res.IFNa$origin<-"OVA.IFNa"
res.OVA$origin<-"liOVA"
merge.results<-rbind(res.combo,res.IL12,res.IFNa,res.OVA)
# Create a variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
#merge.results$origin <- factor(x = merge.results$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
# Manually selected pathways
a1<-c("IFNa_RO",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"GOMF_ANTIGEN_BINDING",
"GOBP_POSITIVE_REGULATION_OF_LEUKOCYTE_CELL_CELL_ADHESION",
"GOBP_POSITIVE_REGULATION_OF_CELL_KILLING",
"GOCC_MHC_PROTEIN_COMPLEX",
"GOMF_MHC_CLASS_II_RECEPTOR_ACTIVITY",
"GOCC_MHC_CLASS_II_PROTEIN_COMPLEX",
"GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION_OF_EXOGENOUS_PEPTIDE_ANTIGEN_VIA_MHC_CLASS_I_TAP_INDEPENDENT")
# Subset pathways
merge.results1 <- merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "IFNa_RO"] <- "IFNa response (Cilenti et all)"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Hallmark_IFNg response"
merge.results1[merge.results1 == "GOMF_ANTIGEN_BINDING"] <- "Antigen Binding"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_LEUKOCYTE_CELL_CELL_ADHESION"] <- "Positive regulation of cell adhesion"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_CELL_KILLING"] <- "Positive regulation of cell killing"
merge.results1[merge.results1 == "GOCC_MHC_PROTEIN_COMPLEX"] <- "MHC protein complex"
merge.results1[merge.results1 == "GOMF_MHC_CLASS_II_RECEPTOR_ACTIVITY"] <- "MHC-II activity"
merge.results1[merge.results1 == "GOCC_MHC_CLASS_II_PROTEIN_COMPLEX"] <- "MHC-II protein complex"
merge.results1[merge.results1 == "GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION_OF_EXOGENOUS_PEPTIDE_ANTIGEN_VIA_MHC_CLASS_I_TAP_INDEPENDENT"] <- "Antigen processing and presentation"
# Order in the way we want to see
merge.results1$pathway <- factor(merge.results1$pathway, levels = c("IFNa response (Cilenti et all)",
"Hallmark_IFNg response",
"Positive regulation of cell adhesion",
"Positive regulation of cell killing",
"Antigen processing and presentation",
"Antigen Binding",
"MHC protein complex",
"MHC-II protein complex",
"MHC-II activity"))
#saveRDS(merge.results1, paste0(pdir, "/merge.results.for.GSEA.rds"))
# Load saved GSEA FILE --> KC, Monocytes and Macrophages vs OVA and OVA vs all with iterations 500.000
#merge.results1 <- readRDS(paste0(pdir, "/merge.results.for.GSEA.rds"))
merge.results1$origin <- factor(x = merge.results1$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette="RdBu") +
geom_text(aes(label = stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color="Black"),
axis.text.x = element_text(angle=90, vjust=0.5, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))+
ggtitle("GSEA_MacroKCandmono vs OVA_Liver")
ggsave(filename = paste0(pdir, "/Liver_MacroKCsMonovsOVA_FigS2C.pdf"),
plot=y, width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.00001,]
filter_in <- head(unique(merge.results$pathway), 50)
filter_in <- unique(merge.results_temp$pathway)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_MacroKCandmono vs OVA_Tumor")
ggsave(filename = paste0(pdir, "/Liver_MacroKCsMonovsOVA_unbias.pdf"), plot=y, width=15, height=30) # limitsize = FALSE
##############TUMOR#####################
##############Figure S2D###############
macrophage.T<-subset(apcs.tumor, subset = NewlablesM_clu == "Monocytes" |
NewlablesM_clu == "Macrophages" |
NewlablesM_clu == "KCs")
macrophage.T<-SetIdent(macrophage.T, value = "RNA_Group")
combo<-FindMarkers(macrophage.T, ident.1="OVA.Combo", ident.2 ="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1) # used min.pct = -Inf or 0.01
IL12<-FindMarkers(macrophage.T, ident.1="OVA.Il12", ident.2 ="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
IFNa<-FindMarkers(macrophage.T, ident.1="OVA.Ifna", ident.2 ="liOVA", min.pct = 0.01, logfc.threshold = 0, min.cells.feature = 1, min.cells.group = 1)
OVA<-FindMarkers(macrophage.T, ident.1="liOVA", min.pct = 0.01, logfc.threshold = -0, min.cells.feature = 1, min.cells.group = 1)
combo.ranks <- combo$avg_log2FC
IL12.ranks <- IL12$avg_log2FC
IFNa.ranks <- IFNa$avg_log2FC
OVA.ranks <- OVA$avg_log2FC
names(combo.ranks) <- rownames(combo)
names(IL12.ranks) <- rownames(IL12)
names(IFNa.ranks) <- rownames(IFNa)
names(OVA.ranks) <- rownames(OVA)
res.combo<-fgsea(pathways = miDB_sig4.MLS, stats = combo.ranks, minSize=0, maxSize=500, eps=0) # I added eps=0, before was nPermSimple=50000
res.IL12<-fgsea(pathways = miDB_sig4.MLS, stats = IL12.ranks, minSize=0, maxSize=500, eps=0)
res.IFNa<-fgsea(pathways = miDB_sig4.MLS, stats = IFNa.ranks, minSize=0, maxSize=500, eps=0)
res.OVA<-fgsea(pathways = miDB_sig4.MLS, stats = OVA.ranks, minSize=0, maxSize=500, eps=0) # before was nPermSimple=500000
#saveRDS(res.OVA, paste0(pdir, "FGSEA_KCmonoMacs_tumor_OVAvsAll_nperm500000.rds"))
# select the columns of interest
res.combo2<-res.combo[,c(1,3,6,8)]
res.IL122<-res.IL12[,c(1,3,6,8)]
res.IFNa2<-res.IFNa[,c(1,3,6,8)]
res.OVA2<-res.OVA[,c(1,3,6,8)]
# merge in a single file and save xlsx
merge1 <- merge(x=res.combo2,y=res.IL122,by="pathway", suffixes = c("-Combo", "-Il12"))
merge2 <- merge(x=res.IFNa2,y=res.OVA2,by="pathway", suffixes = c("-IFna", "-OVA"))
merge3 <- merge(x=merge1,y=merge2,by="pathway")
write.xlsx(merge3, paste0(pdir, "/GSEA_T_monomackc_vsOVA.xlsx"), asTable=T, rowNames=T) #save file
##################GSEA Heatmap of selected#######################################
# Rearrange data to plot heatmap
res.combo$origin<-"OVA.Combo"
res.IL12$origin<-"OVA.Il12"
res.IFNa$origin<-"OVA.IFNa"
res.OVA$origin<-"liOVA"
merge.results<-rbind(res.combo,res.IL12,res.IFNa,res.OVA)
# Create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
# Manually selected pathways
a1<-c("IFNa_RO",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"GOMF_ANTIGEN_BINDING",
"GOBP_POSITIVE_REGULATION_OF_LEUKOCYTE_CELL_CELL_ADHESION",
"GOBP_POSITIVE_REGULATION_OF_CELL_KILLING",
"GOCC_MHC_PROTEIN_COMPLEX",
"GOMF_MHC_CLASS_II_RECEPTOR_ACTIVITY",
"GOCC_MHC_CLASS_II_PROTEIN_COMPLEX",
"GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION_OF_EXOGENOUS_PEPTIDE_ANTIGEN_VIA_MHC_CLASS_I_TAP_INDEPENDENT")
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename the pathways
merge.results1[merge.results1 == "IFNa_RO"] <- "IFNa response (Cilenti et all)"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Hallmark_IFNg response"
merge.results1[merge.results1 == "GOMF_ANTIGEN_BINDING"] <- "Antigen Binding"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_LEUKOCYTE_CELL_CELL_ADHESION"] <- "Positive regulation of cell adhesion"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_CELL_KILLING"] <- "Positive regulation of cell killing"
merge.results1[merge.results1 == "GOCC_MHC_PROTEIN_COMPLEX"] <- "MHC protein complex"
merge.results1[merge.results1 == "GOMF_MHC_CLASS_II_RECEPTOR_ACTIVITY"] <- "MHC-II activity"
merge.results1[merge.results1 == "GOCC_MHC_CLASS_II_PROTEIN_COMPLEX"] <- "MHC-II protein complex"
merge.results1[merge.results1 == "GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION_OF_EXOGENOUS_PEPTIDE_ANTIGEN_VIA_MHC_CLASS_I_TAP_INDEPENDENT"] <- "Antigen processing and presentation"
# Order in the way we want to see
merge.results1$pathway <- factor(merge.results1$pathway, levels = c("IFNa response (Cilenti et all)",
"Hallmark_IFNg response",
"Positive regulation of cell adhesion",
"Positive regulation of cell killing",
"Antigen processing and presentation",
"Antigen Binding",
"MHC protein complex",
"MHC-II protein complex",
"MHC-II activity"))
merge.results1$origin<- factor(x = merge.results1$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_MacroKCandmono vs OVA_Tumor")
ggsave(filename = paste0(pdir, "/Tumor_MacroKCsMonovsOVA_FigS2D.pdf"), plot=y, width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.00001,]
filter_in <- head(unique(merge.results_temp$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle=90, vjust=0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_MacroKCandmono vs OVA_Tumor")
ggsave(filename = paste0(pdir, "/Tumor_MacroKCsMonovsOVA_unbias.pdf"), plot=y, width=20, height=30) # limitsize = FALSE
##############ENDS here#####################################
\ No newline at end of file
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(scRepertoire)
library(reshape2)
library(fgsea)
library(ggplot2)
library(matrixStats)
library(fmsb)
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results3"
wdir<- paste0(cluster_dir, "/Result3_MNOT")
ldir<- paste0(cluster_dir, "/Liver_TandNK/")
tdir<- paste0(cluster_dir, "/Tumor_TandNK/")
pdir<- paste0(cluster_dir, "/Result3_MNOT/Plots")
#############################UPLOAD AND LABELLING LIVER###############
############Load LIVER object and add annotations###################
obs1 <- readRDS(paste0(ldir, "Liver_TandNK_final.rds"))
# Remove undefined
obs1 <- subset(obs1, subset=NewlablesM_clu != "undefined")
# Assign groups
a1 <- grep(pattern = "Liver3",x = unique(obs1@meta.data$orig.ident),value=T)
obs1@meta.data$RNA_Group [obs1@meta.data$orig.ident%in%a1]<- "OVA.IL12"
a1 <- grep(pattern = "Liver10",x = unique(obs1@meta.data$orig.ident),value=T)
obs1@meta.data$RNA_Group [obs1@meta.data$orig.ident%in%a1]<- "OVA.IFNa"
a1 <- grep(pattern = "Liver11",x = unique(obs1@meta.data$orig.ident),value=T)
obs1@meta.data$RNA_Group [obs1@meta.data$orig.ident%in%a1]<- "OVA"
a1 <- grep(pattern = "Liver9",x = unique(obs1@meta.data$orig.ident),value=T)
obs1@meta.data$RNA_Group [obs1@meta.data$orig.ident%in%a1]<- "Combo"
#Tissue assign
a1 <- grep(pattern = "Liver",x = unique(obs1@meta.data$orig.ident),value=T)
obs1@meta.data$Tissue [obs1@meta.data$orig.ident%in%a1]<- "Liver"
#sample origin
obs1$Tube <- paste0(obs1$RNA_Group,obs1$hash.ID)
obs1@meta.data$RNA_Group<- factor(x = obs1@meta.data$RNA_Group, levels = c("OVA","OVA.IFNa","OVA.IL12","Combo"))
# Create lables for all CD8 and CD4 T cells
obs1@meta.data$NewlablesG <- obs1@meta.data$NewlablesM_clu
obs1@meta.data$NewlablesG[grep("CD4",obs1@meta.data$NewlablesM_clu) ] <- "CD4 T cells"
obs1@meta.data$NewlablesG[grep("CD8",obs1@meta.data$NewlablesM_clu)] <- "CD8 T cells"
#create lables CD4 and CD8 clusters wothout naive
obs1@meta.data$NewlablesS <- obs1@meta.data$NewlablesM_clu
indCd4<- grepl("CD4",obs1@meta.data$NewlablesM_clu) & !grepl("Naive",obs1@meta.data$NewlablesM_clu)
indCd8<- grepl("CD8",obs1@meta.data$NewlablesM_clu) & !grepl("Naive",obs1@meta.data$NewlablesM_clu)
obs1@meta.data$NewlablesS[indCd4] <- "CD4 T cells"
obs1@meta.data$NewlablesS[indCd8] <- "CD8 T cells"
obs1@meta.data$NewlablesST <- paste0(obs1@meta.data$Tissue,".",obs1@meta.data$NewlablesS)
###################UPLOADING AND LABELLING TUMOR OBJECT#############################
####################################################################################
#Load
Tobs<- readRDS(paste0(tdir, "Tumor_TandNK_final.rds"))
a1 <- grep(pattern = "Tumor3",x = unique(Tobs@meta.data$orig.ident),value=T)
Tobs@meta.data$RNA_Group [Tobs@meta.data$orig.ident%in%a1]<- "OVA.IL12"
a1 <- grep(pattern = "Tumor10",x = unique(Tobs@meta.data$orig.ident),value=T)
Tobs@meta.data$RNA_Group [Tobs@meta.data$orig.ident%in%a1]<- "OVA.IFNa"
a1 <- grep(pattern = "Tumor11",x = unique(Tobs@meta.data$orig.ident),value=T)
Tobs@meta.data$RNA_Group [Tobs@meta.data$orig.ident%in%a1]<- "OVA"
a1 <- grep(pattern = "Tumor34|Tumor29",x = unique(Tobs@meta.data$orig.ident),value=T)
Tobs@meta.data$RNA_Group [Tobs@meta.data$orig.ident%in%a1]<- "Combo"
#Tissue Sample assign
Tobs$Tube <- paste0(Tobs$hash.ID,Tobs$RNA_Group)
#Ordering RNA_Group
Tobs@meta.data$RNA_Group<- factor(x = Tobs@meta.data$RNA_Group, levels = c("OVA","OVA.IFNa","OVA.IL12","Combo"))
Tobs@meta.data$Tissue<- "Tumor"
#create lables for all CD8 and CD4 t cells
Tobs@meta.data$NewlablesG <- Tobs@meta.data$NewlablesM_clu
Tobs@meta.data$NewlablesG[grep("CD4",Tobs@meta.data$NewlablesM_clu) ] <- "CD4 T cells"
Tobs@meta.data$NewlablesG[grep("CD8",Tobs@meta.data$NewlablesM_clu)] <- "CD8 T cells"
#create labels CD4 and CD8 clusters without naive
Tobs@meta.data$NewlablesS <- Tobs@meta.data$NewlablesM_clu
indCd4<- grepl("CD4",Tobs@meta.data$NewlablesM_clu) & !grepl("Naive",Tobs@meta.data$NewlablesM_clu)
indCd8<- grepl("CD8",Tobs@meta.data$NewlablesM_clu) & !grepl("Naive",Tobs@meta.data$NewlablesM_clu)
Tobs@meta.data$NewlablesS[indCd4] <- "CD4 T cells"
Tobs@meta.data$NewlablesS[indCd8] <- "CD8 T cells"
Tobs@meta.data$NewlablesST <- paste0(Tobs@meta.data$Tissue,".",Tobs@meta.data$NewlablesS)
###Calculating hyperexpanded T cells#############
##########LIVER##############################
obs1$aa3.Tube <- paste0(obs1$cdr3_aa2,".",obs1$Tube)
obs1$aa3.Tube[is.na(obs1$cdr3_aa2)] <- NA
obs1@meta.data$ClonoFreq <- obs1@meta.data %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>%
as.data.frame() %>% select (count)
obs1@meta.data$ClonoFreq[is.na(obs1$cdr3_aa2),] <- NA
obs1@meta.data$Clonetype <- NA
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq==1] <- "unique"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 1 & obs1@meta.data$ClonoFreq <= 5] <- "small"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 5 & obs1@meta.data$ClonoFreq <= 30] <- "large"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 30] <- "hyperexpanded"
obs1$Clonetype <- factor(x = obs1$Clonetype, levels = c("unique", "small", "large", "hyperexpanded")) #order clonotype variable
##########TUMOR##############################
Tobs$aa3.Tube <- paste0(Tobs$cdr3_aa2,".",Tobs$Tube)
Tobs$aa3.Tube[is.na(Tobs$cdr3_aa2)] <- NA
Tobs@meta.data$ClonoFreq <- Tobs@meta.data %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>%
as.data.frame() %>% select (count)
Tobs@meta.data$ClonoFreq[is.na(Tobs$cdr3_aa2),] <- NA
Tobs@meta.data$Clonetype <- NA
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq==1] <- "unique"
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq > 1 & Tobs@meta.data$ClonoFreq <= 5] <- "small"
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq > 5 & Tobs@meta.data$ClonoFreq <= 30] <- "large"
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq > 30] <- "hyperexpanded"
Tobs$Clonetype <- factor(x = Tobs$Clonetype, levels = c("unique", "small", "large", "hyperexpanded")) #order clonotype variable
############################################
######FINDING Tetramer reactive TCRs########
############################################
ind1 <- obs1$ADT.Tetramer
ind1 <- ind1[order(ind1)]
TetramerCount <- obs1@meta.data$ADT.Tetramer[!is.na(obs1@meta.data$ADT.Tetramer)]
TetramerCount <-TetramerCount[TetramerCount > 0]
obs1@meta.data$TetramerT <- "Other"
obs1@meta.data$TetramerT[obs1@meta.data$ADT.Tetramer>2] <- "OVA.TCR"
df1 <- data.frame(obs1$cdr3_aa2, obs1$TetramerT, obs1$ClonoFreq, obs1$Tissue)
df1$aa3.OVA <- paste0(obs1$cdr3_aa2,".",obs1$TetramerT)
df1 <- na.omit(df1)
df1l <- df1[df1$obs1.Tissue=="Liver",]
df2 <- df1l %>% group_by(aa3.OVA) %>% mutate(count = n()) %>% ungroup() %>% as.data.frame()
df3 <- df2 %>% select(obs1.cdr3_aa2,obs1.TetramerT,obs1.ClonoFreq,count) %>% unique() %>%
pivot_wider(names_from = obs1.TetramerT, values_from = count) %>% as.data.frame()
df3[is.na(df3)] <- 0
df3$Tumor <- df3[,2]-df3[,3]-df3[,4]
OVA.TCRs <- df3$obs1.cdr3_aa2[df3[,4]/df3[,3]>1]
df1 <- data.frame(obs1$cdr3_aa2, obs1$TetramerT,obs1$ClonoFreq,obs1$Tissue,obs1$Tube)
df1$aa3.Tube <-paste0(obs1$cdr3_aa2,".",obs1$TetramerT,".",obs1$Tube)
df1 <- na.omit(df1)
df1l <- df1[df1$obs1.Tissue=="Liver",]
df2 <- df1l %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>% as.data.frame()
df3T <- df2 %>% select(obs1.cdr3_aa2,obs1.TetramerT,obs1.Tube,obs1.ClonoFreq,count) %>% unique() %>%
pivot_wider(names_from = obs1.TetramerT, values_from = count) %>% as.data.frame()
df3T[is.na(df3T)] <- 0
######Indicating Tetramer OVA in liver
obs1$OVA.reactive <- ifelse(obs1$cdr3_aa2 %in% OVA.TCRs, "OVA", "Other")
obs1@meta.data$TetramerTS <- paste0(obs1@meta.data$OVA.reactive,".",obs1@meta.data$NewlablesS)
obs1$OVA.reactive.CD8 <- ifelse(obs1$OVA.reactive=="OVA" & obs1$NewlablesG=="CD8 T cells", "OVA", "Other")
######Indicating Tetramer OVA in tumor
Tobs$OVA.reactive <- ifelse(Tobs$cdr3_aa2 %in% OVA.TCRs, "OVA", "Other")
Tobs@meta.data$TetramerTS <- paste0(Tobs@meta.data$OVA.reactive,".",Tobs@meta.data$NewlablesS)
Tobs$OVA.reactive.CD8 <- ifelse(Tobs$OVA.reactive=="OVA" & Tobs$NewlablesG=="CD8 T cells", "OVA", "Other")
######TISSUE SHARED CLONOTYPES with tumors########
# clonotypes in Liver
df1<-data.frame(obs1@meta.data$cdr3_aa2,obs1@meta.data$hash.ID,obs1@meta.data$RNA_Group, obs1@meta.data$Tissue)
df2<-na.omit(df1)
df2$cdr3_mouse<-paste0(df2$obs1.meta.data.cdr3_aa2,".",df2$obs1.meta.data.hash.ID,".",df2$obs1.meta.data.RNA_Group)
# clonotypes in Tumor
df3<-data.frame(Tobs@meta.data$cdr3_aa2,Tobs@meta.data$hash.ID,Tobs@meta.data$RNA_Group, Tobs@meta.data$Tissue)
df4<-na.omit(df3)
df4$cdr3_mouse<-paste0(df4$Tobs.meta.data.cdr3_aa2,".",df4$Tobs.meta.data.hash.ID,".",df4$Tobs.meta.data.RNA_Group)
# List of Shared clonotypes
shared_cdr3aa <- intersect(df2$cdr3_mouse, df4$cdr3_mouse)
# Add variable shared in liver
obs1$cdr3_mouse<-paste0(obs1$cdr3_aa2,".",obs1$hash.ID,".",obs1$RNA_Group)
obs1$Shared <- ifelse(obs1$cdr3_mouse %in% shared_cdr3aa, "Shared", "Unique")
# Add variable shared in tumor
Tobs$cdr3_mouse<-paste0(Tobs$cdr3_aa2,".",Tobs$hash.ID,".",Tobs$RNA_Group)
Tobs$Shared <- ifelse(Tobs$cdr3_mouse %in% shared_cdr3aa, "Shared", "Unique")
# Add new variables in liver
obs1@meta.data$New_division <- obs1@meta.data$NewlablesM_clu
ind<- grepl("CD4",obs1@meta.data$NewlablesM_clu) & grepl("Shared",obs1@meta.data$Shared)
obs1@meta.data$New_division[ind] <- "Shared CD4"
ind<- grepl("CD8",obs1@meta.data$NewlablesM_clu) & grepl("Shared",obs1@meta.data$Shared)
obs1@meta.data$New_division[ind] <- "Shared CD8"
ind<- grepl("CD8",obs1@meta.data$NewlablesM_clu) & grepl("OVA",obs1@meta.data$OVA.reactive)
obs1@meta.data$New_division[ind] <- "OVA.reactive"
obs1@meta.data$New_division2 <- "Other"
ind<- grepl("CD4",obs1@meta.data$NewlablesM_clu) & grepl("Shared",obs1@meta.data$Shared)
obs1@meta.data$New_division2[ind] <- "Shared CD4"
# Variable with shared CD4 only in selected groups
obs1$New_division3<-paste0(obs1$New_division2,".",obs1$RNA_Group)
obs1@meta.data$New_division3[obs1@meta.data$New_division3 %in% "Shared CD4.OVA.IFNa"] <- "Other.OVA.IFNa"
obs1@meta.data$New_division3[obs1@meta.data$New_division3 %in% "Shared CD4.OVA"] <- "Other.OVA"
# Add new variables in tumor
Tobs@meta.data$New_division <- Tobs@meta.data$NewlablesM_clu
ind<- grepl("CD4",Tobs@meta.data$NewlablesM_clu) & grepl("Shared",Tobs@meta.data$Shared)
Tobs@meta.data$New_division[ind] <- "Shared CD4"
ind<- grepl("CD8",Tobs@meta.data$NewlablesM_clu) & grepl("Shared",Tobs@meta.data$Shared)
Tobs@meta.data$New_division[ind] <- "Shared CD8"
ind<- grepl("CD8",Tobs@meta.data$NewlablesM_clu) & grepl("OVA",Tobs@meta.data$OVA.reactive)
Tobs@meta.data$New_division[ind] <- "OVA.reactive"
Tobs@meta.data$New_division2 <- "Other"
ind<- grepl("CD4",Tobs@meta.data$NewlablesM_clu) & grepl("Shared",Tobs@meta.data$Shared)
Tobs@meta.data$New_division2[ind] <- "Shared CD4"
#######################Plot UMAP################
table(obs1$OVA.reactive.CD8, obs1$NewlablesG)
# Save plot
pdf(paste0(pdir, "/TandNK_umap_Fig3A.pdf"), width=7, height=6) # Figure 3A
DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "NewlablesM_clu", pt.size = 0.5, label = T, label.size = 3, repel = T)
dev.off()
pdf(paste0(pdir, "/tetramer_umap_Fig3E.pdf"), width=7, height=6) # Figure 3E
DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "OVA.reactive.CD8", pt.size = 0.5, label = F, order = c("OVA", "Others"), cols = c("lightgrey", "blue"))
dev.off()
pdf(paste0(pdir, "/shared_cd4_umap_Fig3I.pdf"), width=7, height=6) # Figure 3I
DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "New_division2", pt.size = 0.5, label = F, order = c("Shared CD4", "Others"), cols = c("lightgrey", "blue"))
dev.off()
# Export DimPlot as excel
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu","Shared","OVA.reactive.CD8","New_division2")
TandNK_df <- FetchData(obs1, vars = var_list)
TandNK_df$cell_ID <- rownames(TandNK_df)
write.xlsx(TandNK_df, file=paste0(pdir, "/TandNK_umap_Fig3A_3E_3I.xlsx"), overwrite=T)
#######################Plot UMAP################
# # NO_TCR
# # Save plot
# pdf(paste0(pdir, "/TandNK_umap_NO_TCR_FigS13C-1.pdf"), width=7, height=6) # Figure S13C-1
# DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "NewlablesM_clu", pt.size = 0.5, label = T, label.size = 3, repel = T)
# dev.off()
# pdf(paste0(pdir, "/tetramer_umap_NO_TCR_FigS13C-2.pdf"), width=7, height=6) # Figure S13C-2
# DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "OVA.reactive.CD8", pt.size = 0.5, label = F, order = c("OVA", "Others"), cols = c("lightgrey", "blue"))
# dev.off()
#
# # Export DimPlot as excel
# var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu","Shared","OVA.reactive.CD8","New_division2")
# TandNK_df <- FetchData(obs1, vars = var_list)
# TandNK_df$cell_ID <- rownames(TandNK_df)
# write.xlsx(TandNK_df, file=paste0(pdir, "/TandNK_umap_NO_TCR_FigS13C.xlsx"), overwrite=T)
##############################################################################
################Figure S3A - Cluster dotplot markers##########################
obs1@meta.data$NewlablesM_clu_temp <- obs1@meta.data$NewlablesM_clu
new_order <- c("Naive CD8","Naive CD4","CD4 Treg","Th17 CD4","NK","Cytotox NK",
"Early CD8","CD8 prol","CD8 Teff1","CD8 Teff2","CD8 Teff3",
"Act gd T ","gd T","ILC-like","ILCs","IFNg CD4","Il4 CD4")
obs1@meta.data$NewlablesM_clu <- factor(x = obs1@meta.data$NewlablesM_clu, levels = new_order)
#t<-as.matrix(table(obs1$NewlablesM_clu))
#as.vector(unique(Idents(obs1)))
#setdiff(new_order, as.vector(unique(Idents(obs1))))
#Code to select top scoring and selective genes for each cluster
obs1<-SetIdent(obs1, value = "NewlablesM_clu")
markers<- FindAllMarkers(obs1)
#write.xlsx(markers, file=paste0(pdir, "/Markers_Newlables_clu.xlsx"),asTable=T,rowNames=T) # save file
markers$diff<-markers$pct.1-markers$pct.2 #add diff variable to select most selective genes
top_genes_per_cluster <- c()
for (i in unique(markers$cluster)) {
cluster_genes <- markers[markers$cluster == i,] # select cluster i
cluster_genes<-cluster_genes[rev(order(cluster_genes$diff)),] #order by diff ptc1-ptc2
top_genes <- cluster_genes$gene[(1:3)] #select top scoring 1:n
top_genes_per_cluster <- c(top_genes_per_cluster,top_genes)
}
manual_genes<-c("Il4","Tbx21","Rorc","Il17a","Foxp3","Ifng","Mki67",
"Gzmb","Tox","Pdcd1")
features_to_plot <- unique(c(top_genes_per_cluster, manual_genes))
print(features_to_plot)
paletteLength <- 100
myColor <- colorRampPalette(c("blue", "darkgrey", "darkred"))(paletteLength)
pdf(paste0(pdir, "/dotplot.markers.clusters.livercd8_not_clustered_Fig.S3A.pdf"), width=10, height=5)
a5<-scCustomize::Clustered_DotPlot(obs1,
features = features_to_plot,
plot_km_elbow=F,
row_label_size=10,
flip=T, colors_use_exp = myColor,
cluster_feature=F, cluster_ident=F)
dev.off()
pdf(paste0(pdir, "/dotplot.markers.clusters.livercd8_Fig.S3A.pdf"), width=10, height=5)
a5<-scCustomize::Clustered_DotPlot(obs1,
features = features_to_plot,
plot_km_elbow=F,
row_label_size=10,
flip=T, colors_use_exp = myColor,
cluster_feature=T, cluster_ident=T)
dev.off()
##########################################################
####DOTPLOT WITH STATISTIC FROM LIVER####
# The function PlotStellare is in the script plot_stellare_function.R
# Figures 3D and S3C
pdf(paste0(pdir, "/Dotplot_stellare_CD8_liver_Fig3D.pdf"), width=12, height=3) # Figure 3D
PlotStellare(obs1=obs1, features1=featuresCD8, valueG="NewlablesG", i="CD8 T cells", group.by0 ="RNA_Group", controGroup="OVA")
dev.off()
pdf(paste0(pdir, "/Dotplot_stellare_tetramer_liver_FigS3C.pdf"), width=12, height=3) # Figure S3C
PlotStellare(obs1=obs1, features1=featuresCD8, valueG="OVA.reactive.CD8", i="OVA", group.by0 ="RNA_Group", controGroup="OVA")
dev.off()
########################################
####Figure 3J - TABLE POP PERCENTAGE CD4
CD4 <- subset(obs1, subset = NewlablesG=="CD4 T cells")
liver.CD4_cells <- table(CD4$Tube, CD4$NewlablesM_clu)
liver.CD4_percentage <- round(prop.table(table(CD4$Tube, CD4$NewlablesM_clu), 1)*100, 2)
write.xlsx(liver.CD4_cells, file=paste0(pdir, "/liver.CD4.prop.number.xlsx"))
write.xlsx(liver.CD4_percentage, file=paste0(pdir, "/liver.CD4.prop.percentage.tube.xlsx"))
####Figure 3K - clonal expansion CD4
liver.CD4_group_cells <- table(CD4$RNA_Group, CD4$Clonetype)
liver.CD4_group_percentage <- round(prop.table(table(CD4$RNA_Group, CD4$Clonetype), 1)*100, 2)
write.xlsx(liver.CD4_group_percentage, file=paste0(pdir, "/liver.CD4.clonotypes.xlsx"))
#####################Figure S3D - Plot of shared CD4 in different groups#############
features1<-c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3", #Ifna
"Il18rap","Il18r1","Il12rb1","Gbp2", #Ifng genes
"Ifng","Tnf","Il21","Gzmk","Fasl","Cd40lg","Slamf1", #Th1/effector genes
"Il10","Foxp3","Pdcd1","Ctla4","Tnfrsf18","Tigit","Tox") #immune suppression
CD4$New_division3<- factor(x = CD4$New_division3, levels = c("Other.OVA","Other.OVA.IFNa","Other.OVA.IL12","Shared CD4.OVA.IL12","Other.Combo","Shared CD4.Combo"))
CD4_shared<-subset(CD4, subset= RNA_Group == "Combo"|
RNA_Group =="OVA.IL12")
CD4_shared<-SetIdent(CD4_shared, value = "New_division3")
CD4_shared<-SetIdent(CD4_shared, value = "Tissue")
i <- unique(CD4_shared$Tissue)[1]
pa1 <- DotPlot(CD4_shared, features = features1,idents = i, dot.scale=15,split.by = "New_division3",
cols="RdBu")+RotatedAxis()
df1 <- pa1$data
df1$id <- factor(x = df1$id, levels = unique(df1$id)[c(4,1,2,3)])
m.Combo <- FindMarkers(CD4_shared, ident.1 = "Shared CD4.Combo", ident.2="Other.Combo", group.by = "New_division3",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature=1, min.cells.group=1)
m.Combo <- m.Combo[match(features1,rownames(m.Combo)),]
other.Combo <- FindMarkers(CD4_shared, ident.1 = "Other.Combo", ident.2="Shared CD4.Combo", group.by = "New_division3",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature=1, min.cells.group=1)
other.Combo <- other.Combo[match(features1,rownames(other.Combo)),]
m.IL12 <- FindMarkers(CD4_shared, ident.1 = "Shared CD4.OVA.IL12", ident.2 = "Other.OVA.IL12", group.by = "New_division3",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature=1, min.cells.group=1)
m.IL12 <- m.IL12[match(features1,rownames(m.IL12)),]
other.IL12 <- FindMarkers(CD4_shared, ident.1 = "Other.OVA.IL12", ident.2 = "Shared CD4.OVA.IL12", group.by = "New_division3",
subset.ident = i,features = features1,
min.pct = 0.01, logfc.threshold = 0, min.cells.feature=1, min.cells.group=1)
other.IL12 <- other.IL12[match(features1,rownames(other.IL12)),]
other.IL12$p_val_adj<-1
other.Combo$p_val_adj<-1
markers1 <- rbind(other.IL12,m.IL12,other.Combo,m.Combo)
df2 <- cbind(df1,markers1)
df2$stars <- ifelse(df2$p_val_adj< 0.001,"***",
ifelse(df2$p_val_adj< 0.01,"**",
ifelse(df2$p_val_adj< 0.05,"*","")))
df2$id <- factor(x = df2$id, levels = c("Liver_Other.OVA.IL12","Liver_Shared CD4.OVA.IL12","Liver_Other.Combo","Liver_Shared CD4.Combo"))
a<-ggplot(df2, aes(y=id, x=features.plot, size=pct.exp ,color=avg.exp.scaled)) +
geom_point() +
scale_size_area(max_size=15) +
scale_colour_gradient2(low= "blue",mid = "darkgrey",high="darkred") + ####"#CCCCFF"
labs(y='',x='')+
geom_text(aes(label=stars, vjust=0.8), col="black", size=4)+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"),
axis.text.x = element_text(angle = 45, hjust= 1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))+
ggtitle("Dotplot Shared CD4")
ggsave(filename = paste0(pdir, "/Dotplot_stellare_CD4.shared_FigS3D.pdf"),
plot=a, width=11, height=3) # Figure S3D
##########################GSEA#########################################
##################Figure 3B FGSEA on all TandNK########################
# Load signature
#miDB_sig4.MLS <- readRDS(paste0(username, "90-756142658_RNAseq_Squadrito/05-DGE-Tumor/miDB_sig4.MLS.rds"))
miDB_sig4.MLS <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/reference/miDB_sig4.MLS.rds")
obs1<-SetIdent(obs1, value = "RNA_Group")
combo<-FindMarkers(obs1, ident.1="Combo", ident.2 ="OVA", min.pct=0.01, logfc.threshold=0)
IL12<-FindMarkers(obs1, ident.1="OVA.IL12", ident.2 ="OVA", min.pct=0.01, logfc.threshold=0)
IFNa<-FindMarkers(obs1, ident.1="OVA.IFNa", ident.2 ="OVA", min.pct=0.01, logfc.threshold=0)
OVA<-FindMarkers(obs1, ident.1="OVA", min.pct=0.01, logfc.threshold=0)
combo.ranks <- combo$avg_log2FC
IL12.ranks <- IL12$avg_log2FC
IFNa.ranks <- IFNa$avg_log2FC
OVA.ranks <- OVA$avg_log2FC
names(combo.ranks) <- rownames(combo)
names(IL12.ranks) <- rownames(IL12)
names(IFNa.ranks) <- rownames(IFNa)
names(OVA.ranks) <- rownames(OVA)
res.combo<-fgsea(pathways = miDB_sig4.MLS, stats = combo.ranks, minSize=0, maxSize=500, eps=0)
res.IL12<-fgsea(pathways = miDB_sig4.MLS, stats = IL12.ranks, minSize=0, maxSize=500, eps=0)
res.OVA<-fgsea(pathways = miDB_sig4.MLS, stats = OVA.ranks, minSize=0, maxSize=500, eps=0) #nPermSimple = 500000
res.IFNa<-fgsea(pathways = miDB_sig4.MLS, stats = IFNa.ranks, minSize=0, maxSize=500, eps=0)
#select columns of interest
res.combo2<-res.combo[,c(1,3,6,8)]
res.IL122<-res.IL12[,c(1,3,6,8)]
res.IFNa2<-res.IFNa[,c(1,3,6,8)]
res.OVA2<-res.OVA[,c(1,3,6,8)]
# merge in a single file and save xlsx
# merge1 <- merge(x=res.combo2,y=res.IL122,by="pathway", suffixes = c("-Combo", "-Il12"))
# merge2 <- merge(x=res.IFNa2,y=res.OVA2,by="pathway", suffixes = c("-IFna", "-OVA"))
# merge3<-merge(x=merge1,y=merge2,by="pathway")
# write.xlsx(merge3,paste0(pdir "/GSEA_L_allTnK.xlsx"),asTable = TRUE,rowNames=T) ####save file
#rearrange data to plot heatmap
res.combo$origin<-"OVA.Combo"
res.IL12$origin<-"OVA.Il12"
res.IFNa$origin<-"OVA.IFNa"
res.OVA$origin<-"liOVA"
merge.results<-rbind(res.combo,res.IL12,res.IFNa,res.OVA)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
#pathway manually selected
a1<-c("GOBP_NEGATIVE_REGULATION_OF_VIRAL_GENOME_REPLICATION",
"GOBP_RESPONSE_TO_TYPE_I_INTERFERON",
"GOBP_CELL_DIVISION",
"GOBP_RESPONSE_TO_INTERFERON_GAMMA",
"GOBP_POSITIVE_REGULATION_OF_CELL_CYCLE_PROCESS")
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_TYPE_I_INTERFERON"] <- "Response to IFNa"
merge.results1[merge.results1 == "GOBP_CELL_DIVISION"] <- "Cell division"
merge.results1[merge.results1 == "GOBP_NEGATIVE_REGULATION_OF_VIRAL_GENOME_REPLICATION"] <- "Negative regulation of viral replication"
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_INTERFERON_GAMMA"] <- "Response to IFNg"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_CELL_CYCLE_PROCESS"] <- "Positive regulation of proliferation"
# Order in the way we want to see
merge.results1$pathway<- factor(merge.results1$pathway, levels = rev(c("Response to IFNa",
"Response to IFNg",
"Negative regulation of viral replication",
"Positive regulation of proliferation",
"Cell division")))
merge.results1$origin<- factor(x = merge.results1$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
#Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust=0.7,angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"),
axis.text.x = element_text(angle = 45, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_TandNK_Specific")
ggsave(filename = paste0(pdir, "/GSEA_heatmap_TandNK_Fig3B.pdf"), plot=y, width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.00001,]
filter_in <- head(unique(merge.results$pathway), 50)
filter_in <- unique(merge.results_temp$pathway)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_TandNK_Specific")
ggsave(filename = paste0(pdir, "/GSEA_heatmap_TandNK_unbias.pdf"), plot=y, width=15, height=30) # limitsize = FALSE
###############Figure 3F Only OVA Specific#####
tetramer.t<-subset(obs1, subset = OVA.reactive== "OVA" &
NewlablesG =="CD8 T cells")
tetramer.t<-SetIdent(tetramer.t, value = "RNA_Group")
combo<-FindMarkers(tetramer.t, ident.1="Combo", ident.2 ="OVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
IL12<-FindMarkers(tetramer.t, ident.1="OVA.IL12", ident.2 ="OVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
IFNa<-FindMarkers(tetramer.t, ident.1="OVA.IFNa", ident.2 ="OVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
OVA<-FindMarkers(tetramer.t, ident.1="OVA", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
combo.ranks <- combo$avg_log2FC
IL12.ranks <- IL12$avg_log2FC
IFNa.ranks <- IFNa$avg_log2FC
OVA.ranks <- OVA$avg_log2FC
names(combo.ranks) <- rownames(combo)
names(IL12.ranks) <- rownames(IL12)
names(IFNa.ranks) <- rownames(IFNa)
names(OVA.ranks) <- rownames(OVA)
res.combo <- fgsea(pathways = miDB_sig4.MLS, stats = combo.ranks, minSize=0, maxSize=500, eps=0) # I added eps=0
res.IL12 <- fgsea(pathways = miDB_sig4.MLS, stats = IL12.ranks, minSize=0, maxSize=500, eps=0) # nPermSimple = 500000
res.OVA <- fgsea(pathways = miDB_sig4.MLS, stats = OVA.ranks, minSize=0, maxSize=500, eps=0) # nPermSimple = 500000
res.IFNa <- fgsea(pathways = miDB_sig4.MLS, stats = IFNa.ranks, minSize=0, maxSize=500, eps=0)
# saveRDS(res.OVA, paste0(pdir, "/FGSEA_L_tetramer_OVA-vsALL_nperm500000.rds"))
# saveRDS(res.IL12, paste0(pdir, "/FGSEA_L_tetramer_IL12-vsOVA_nperm500000.rds"))
# Select colums of interest
res.combo2<-res.combo[,c(1,3,6,8)]
res.IL122<-res.IL12[,c(1,3,6,8)]
res.IFNa2<-res.IFNa[,c(1,3,6,8)]
res.OVA2<-res.OVA[,c(1,3,6,8)]
# Merge in a single file and save xlsx
merge1 <- merge(x=res.combo2,y=res.IL122,by="pathway", suffixes = c("-Combo", "-Il12"))
merge2 <- merge(x=res.IFNa2,y=res.OVA2,by="pathway", suffixes = c("-IFna", "-OVA"))
merge3<-merge(x=merge1,y=merge2,by="pathway")
# write.xlsx(merge3,"GSEA_L_tetramer.immunedb.xlsx",asTable = TRUE,rowNames=T) ####save file
####rearrange to plot
res.combo$origin<-"OVA.Combo"
res.IL12$origin<-"OVA.Il12"
res.IFNa$origin<-"OVA.IFNa"
res.OVA$origin<-"liOVA"
merge.results<-rbind(res.combo,res.IL12,res.IFNa,res.OVA)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
#merge.results2 <- merge.results[order(merge.results$padj, decreasing = F)]
#filter_in <- head(unique(merge.results2$pathway), 40)
#merge.results1 <-merge.results[merge.results$pathway %in% filter_in,]
# Manually selected pathways
a1_OLD<-c("Exhaustion_Wherry",
"GOBP_RESPONSE_TO_TYPE_I_INTERFERON",
"GOBP_POSITIVE_REGULATION_OF_RESPONSE_TO_INTERFERON_GAMMA",
"GOCC_IMMUNOLOGICAL_SYNAPSE",
"GOBP_POSITIVE_REGULATION_OF_CELL_KILLING",
"GOBP_ALPHA_BETA_T_CELL_PROLIFERATION",
"GOBP_RESPONSE_TO_INTERLEUKIN_15")
a1<-c("Exhaustion_Wherry",
"HALLMARK_INTERFERON_ALPHA_RESPONSE",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"GOBP_RESPONSE_TO_TYPE_I_INTERFERON",
"GOBP_RESPONSE_TO_VIRUS",
"LPS_RO")
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "HALLMARK_INTERFERON_ALPHA_RESPONSE"] <- "Response to IFNa"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Response to IFNg"
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_TYPE_I_INTERFERON"] <- "Response to type-I interferon"
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_VIRUS"] <- "Response to virus"
merge.results1[merge.results1 == "Exhaustion_Wherry"] <- "Exhaustion signature (Wherry)"
merge.results1[merge.results1 == "LPS_RO"] <- "LPS signature from Cilenti et al"
#merge.results1[merge.results1 == "GOBP_TISSUE_MIGRATION"] <- "Tissue migration"
#merge.results1[merge.results1 == "GOBP_CELLULAR_AMINO_ACID_CATABOLIC_PROCESS"] <- "Amino acid catabolic process"
#merge.results1[merge.results1 == "GOBP_MESENCHYMAL_CELL_DIFFERENTIATION"] <- "Mesenchymal cell differentiation"
#merge.results1[merge.results1 == "GOBP_REGULATION_OF_VASCULATURE_DEVELOPMENT"] <- "regulation of vasculature development"
# Order in the way we want to see
merge.results1$pathway <- factor(merge.results1$pathway, levels = rev(c("Response to virus",
"Response to IFNa",
"Response to IFNg",
"Response to type-I interferon",
"LPS signature from Cilenti et al",
"Exhaustion signature (Wherry)")))
merge.results1$origin <- factor(x = merge.results1$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
# saveRDS(merge.results1, paste0(pdir, "/GSEA_Tetramer_vsOVA.rds"))
# merge.results1<-readRDS(paste0(pdir, "/GSEA_Tetramer_vsOVA.rds"))
# GSEA heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) + # y=reorder(pathway, pval, decreasing=T)
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label=stats), vjust=0.7,angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y=element_text(color = "Black"),
axis.text.x=element_text(angle=45, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_OVA_Specific")
ggsave(filename = paste0(pdir, "/GSEA_heatmap_OVA_Specific_Fig3F_new.pdf"), plot=y, width=5.5, height=4) # width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.00001,]
filter_in <- head(unique(merge.results$pathway), 50)
#filter_in <- unique(merge.results_temp$pathway)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("liOVA","OVA.IFNa","OVA.Il12","OVA.Combo"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_OVA_Specific")
ggsave(filename = paste0(pdir, "/GSEA_heatmap_OVA_Specific_unbias.pdf"), plot=y, width=15, height=30) # limitsize = FALSE
########################RADAR PLOT######################
##################Figure 3C RADAR PLOT CD8########################
CD8 <- subset(obs1, subset = NewlablesG=="CD8 T cells")
Effector <- list(c("Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl"))
Pex <- list( c("Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell"))
Exhaustion <- list(c("Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox"))
IFNa_genes <- list(c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes <-list(c("Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2"))
CD8 <- AddModuleScore(CD8, features = Effector, name = "Effector")
CD8 <- AddModuleScore(CD8, features = Pex, name = "Pex")
CD8 <- AddModuleScore(CD8, features = Exhaustion, name = "Exhaustion")
CD8 <- AddModuleScore(CD8, features = IFNa_genes, name = "IFNa_genes")
CD8 <- AddModuleScore(CD8, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
M1<-CD8@meta.data[,c("NewlablesM_clu", "RNA_Group", "Effector1","Pex1","Exhaustion1","IFNa_genes1","IFNg_genes1")]
#M1<-CD8@meta.data[,c(41, 42, 60:64)]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(CD8$RNA_Group)
CellType<-unique(M1$NewlablesM_clu)
lsCells <- grep(".db",ls(),value=T)
MinMax<-lapply(lsCells,get)
max1 <- rep(do.call("max", MinMax),5)
min1 <- rep(do.call("min", MinMax),5)
colors_border=c(rgb(0,0,0,0.9), rgb(0.1,0.6,0.2,0.9), rgb(0.8,0.1,0.1,0.9), rgb(0.1,0.2,1,0.9))
colors_in=c(rgb(0,0,0,0.1), rgb(0.1,0.6,0.2,0.1), rgb(0.8,0.1,0.1,0.1), rgb(0.1,0.2,1,0.1))
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x),5)
min1 <- rep(do.call("min", x),5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0,0,0,0.9), rgb(0.1,0.6,0.2,0.9), rgb(0.8,0.1,0.1,0.9), rgb(0.1,0.2,1,0.9))
colors_in=c(rgb(0,0,0,0.1), rgb(0.1,0.6,0.2,0.1), rgb(0.8,0.1,0.1,0.1), rgb(0.1,0.2,1,0.1))
pdf(paste0(pdir, "/radar.plot.liver.CD8_Fig3C.pdf"), width=5, height=5)
radarchart(ploTData, title = "CD8 T cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1,cglwd=0.8)
dev.off()
##################Figure 3G RADAR PLOT tetramer########################
# Pex<- list( c(sig1,sig2,sig3,sig4))
# Exhaustion<- list(c("Tox","Coch", "Crygb", "Cpa2", "Gdf3", "Klk6", "Myh4", "Scin", "Nptxr", "Cxcl10", "Spp1", "Dock7", "Trim47", "Spock2", "Tcea2", "Car2", "Chl1", "Rgs16", "Cpt2", "Ctla4", "Pdcd1",
# "Ptger2", "Plscr1", "Lag3", "Casp3", "Cd9", "Pawr", "Sh2d2a", "Gpd2", "Ndfip1", "Cd7", "Itgav", "Gas2", "Tcrg-V4", "Atf1", "Tor3a", "Tnfrsf1a"))
Effector<- list(c("Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl"))
Pex<- list( c("Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell"))
Exhaustion<- list(c("Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox"))
IFNa_genes<- list(c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes<-list(c("Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2"))
tetramer.t<- AddModuleScore(tetramer.t, features = Effector, name = "Effector")
tetramer.t<- AddModuleScore(tetramer.t, features = Pex, name = "Pex")
tetramer.t<- AddModuleScore(tetramer.t, features = Exhaustion, name = "Exhaustion")
tetramer.t<- AddModuleScore(tetramer.t, features = IFNa_genes, name = "IFNa_genes")
tetramer.t<- AddModuleScore(tetramer.t, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
M1<-tetramer.t@meta.data[,c("NewlablesM_clu", "RNA_Group", "Effector1","Pex1","Exhaustion1","IFNa_genes1","IFNg_genes1")]
#M1<-tetramer.t@meta.data[,c(41, 42, 60:64)]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(tetramer.t$RNA_Group)
CellType<-unique(M1$NewlablesM_clu)
#with Median
#TAMs
#Groups are OVA.IL12 OVA.IFNa OVA Combo
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M3c<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[3],3:7]),na.rm=T)
M3d<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[4],3:7]),na.rm=T)
M4<-rbind(M3a,M3b,M3c,M3d)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x),5)
min1 <- rep(do.call("min", x),5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0,0,0,0.9), rgb(0.1,0.6,0.2,0.9), rgb(0.8,0.1,0.1,0.9), rgb(0.1,0.2,1,0.9))
colors_in=c(rgb(0,0,0,0.1), rgb(0.1,0.6,0.2,0.1), rgb(0.8,0.1,0.1,0.1), rgb(0.1,0.2,1,0.1))
pdf(paste0(pdir, "/radar.plot.liver.tetramer_Fig3G.pdf"), width=5, height=5)
radarchart(ploTData, title = "OVA-reactive", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1, cglwd=0.8)
dev.off()
#####Fluvial
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(reshape2)
library(fgsea)
library(ggalluvial)
library("gridExtra")
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/results3"
wdir<- paste0(cluster_dir, "/Result3_MNOT")
ddir<- paste0(cluster_dir, "/Liver_Tumor_TnK/")
pdir<- paste0(cluster_dir, "/Result3_MNOT/Plots")
# Load the RDS
obs1 <- readRDS(paste0(ddir, "Liver_Tumor_TnK_final.rds"))
obs1@meta.data$Tissue <- obs1@meta.data$PROP.Source
obs1@meta.data$RNA_Group <- obs1@meta.data$PROP.Condition
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "liOVA"] <- "OVA"
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "liOVA_IL12"] <- "OVA.IL12"
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "liOVA_IFNa"] <- "OVA.IFNa"
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "Combo3x"] <- "Combo"
obs1@meta.data$RNA_Group <- factor(x = obs1@meta.data$RNA_Group, levels = c("OVA","OVA.IFNa","OVA.IL12","Combo"))
# Sample origin
obs1$Tube <- paste0(obs1$RNA_Group, obs1$hash.ID)
obs1@meta.data$Orig<-paste0(obs1@meta.data$Tissue, ".", obs1@meta.data$RNA_Group)
obs1@meta.data$RNA_Group <- factor(x = obs1@meta.data$RNA_Group, levels = c("OVA","OVA.IFNa","OVA.IL12","Combo"))
#################Create labels for all CD8 and CD4 T cells#############
obs1@meta.data$NewlablesG <- obs1@meta.data$NewlablesM
obs1@meta.data$NewlablesG[grep("CD4",obs1@meta.data$NewlablesM) ] <- "CD4 T cells"
obs1@meta.data$NewlablesG[grep("CD8",obs1@meta.data$NewlablesM)] <- "CD8 T cells"
###############create labels CD4 and CD8 clusters without naive####################
obs1@meta.data$NewlablesS <- obs1@meta.data$NewlablesM
indCd4<- grepl("CD4",obs1@meta.data$NewlablesM) & !grepl("Naive",obs1@meta.data$NewlablesM)
indCd8<- grepl("CD8",obs1@meta.data$NewlablesM) & !grepl("Naive",obs1@meta.data$NewlablesM)
obs1@meta.data$NewlablesS[indCd4] <- "CD4 T cells"
obs1@meta.data$NewlablesS[indCd8] <- "CD8 T cells"
obs1@meta.data$NewlablesST <- paste0(obs1@meta.data$Tissue, ".", obs1@meta.data$NewlablesS)
################################################
###Calculating hyperexpanded T cells#############
################################################
obs1$aa3.Tube <- paste0(obs1$cdr3_aa2,".",obs1$Tube)
obs1$aa3.Tube[is.na(obs1$cdr3_aa2)] <- NA
obs1@meta.data$ClonoFreq <- obs1@meta.data %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>%
as.data.frame() %>% select (count)
obs1@meta.data$ClonoFreq[is.na(obs1$cdr3_aa2),] <- NA
obs1@meta.data$Clonetype <- NA
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq==1] <- "unique"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 1 & obs1@meta.data$ClonoFreq <= 5] <- "small"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 5 & obs1@meta.data$ClonoFreq <= 30] <- "large"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 30] <- "hyperexpanded"
obs1$Clonetype <- factor(x = obs1$Clonetype, levels = c("unique", "small", "large", "hyperexpanded")) #order clonotype variable
############################################
######FINDING Tetramer reactive TCRs##########
############################################
ind1 <- obs1$ADT.Tetramer
ind1 <- ind1[order(ind1)]
ind1 <- ind1[order(ind1)]
TetramerCount <- obs1@meta.data$ADT.Tetramer[!is.na(obs1@meta.data$ADT.Tetramer)]
TetramerCount <- TetramerCount[TetramerCount > 0]
obs1@meta.data$TetramerT <- "Other"
obs1@meta.data$TetramerT[obs1@meta.data$ADT.Tetramer>2] <- "OVA.TCR"
df1 <- data.frame(obs1$cdr3_aa2, obs1$TetramerT,obs1$ClonoFreq,obs1$Tissue)
df1$aa3.OVA <- paste0(obs1$cdr3_aa2,".",obs1$TetramerT)
df1 <- na.omit(df1)
df1l <- df1[df1$obs1.Tissue=="Liver",]
df2 <- df1l %>% group_by(aa3.OVA) %>% mutate(count = n()) %>% ungroup() %>% as.data.frame()
df3 <- df2 %>% select(obs1.cdr3_aa2,obs1.TetramerT,obs1.ClonoFreq,count) %>% unique() %>%
pivot_wider(names_from = obs1.TetramerT, values_from = count) %>% as.data.frame()
df3[is.na(df3)] <- 0
df3$Tumor <- df3[,2]-df3[,3]-df3[,4]
OVA.TCRs <- df3$obs1.cdr3_aa2[df3[,4]/df3[,3]>1]
df1 <- data.frame(obs1$cdr3_aa2, obs1$TetramerT,obs1$ClonoFreq,obs1$Tissue,obs1$Tube)
df1$aa3.Tube <- paste0(obs1$cdr3_aa2,".",obs1$TetramerT,".",obs1$Tube)
df1 <- na.omit(df1)
df1l <- df1[df1$obs1.Tissue=="Liver",]
df2 <- df1l %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>% as.data.frame()
df3T <- df2 %>% select(obs1.cdr3_aa2,obs1.TetramerT,obs1.Tube,obs1.ClonoFreq,count) %>% unique() %>%
pivot_wider(names_from = obs1.TetramerT, values_from = count) %>% as.data.frame()
df3T[is.na(df3T)] <- 0
######Indicating Tetramer OVA in obs1######
obs1$OVA.reactive <- ifelse(obs1$cdr3_aa2 %in% OVA.TCRs, "OVA", "Other")
obs1@meta.data$TetramerTS <- paste0(obs1@meta.data$OVA.reactive,".",obs1@meta.data$NewlablesS)
######TISSUE SHARED CLONOTYPES########
#Identify cells with the same Cdr3aa sequence in both tissues
df1<-data.frame(obs1@meta.data$cdr3_aa2,obs1@meta.data$hash.ID,obs1@meta.data$RNA_Group, obs1@meta.data$Tissue)
df2<-na.omit(df1)
df2$cdr3_mouse<-paste0(df2$obs1.meta.data.cdr3_aa2,".",df2$obs1.meta.data.hash.ID,".",df2$obs1.meta.data.RNA_Group)
shared_cdr3aa <- intersect(df2$cdr3_mouse[df2$obs1.meta.data.Tissue == "Liver"], df2$cdr3_mouse[df2$obs1.meta.data.Tissue == "Tumor"])
obs1$cdr3_mouse<-paste0(obs1$cdr3_aa2,".",obs1$hash.ID,".",obs1$RNA_Group)
obs1$Shared <- ifelse(obs1$cdr3_mouse %in% shared_cdr3aa, "Shared", "Unique")
# Create variables share tissue and shared OVA
obs1@meta.data$Sharedtissue<-paste0(obs1@meta.data$Tissue,".",obs1@meta.data$Shared)
obs1@meta.data$SharedOVA<-paste0(obs1@meta.data$Shared,".",obs1@meta.data$OVA.reactive)
####Alluvial plot#####
######Figure S3B-allOVA the same color########
df1 <- obs1@meta.data
df1 <- df1[df1$NewlablesG=="CD8 T cells",]
#df2<- na.omit(df1[,c(13,38,39,49)])
df2<- na.omit(df1[,c("cdr3_aa2","RNA_Group","Tissue","OVA.reactive")])
for (i in unique(df1$RNA_Group)){
# i <- unique(df1$RNA_Group)[1]
df3 <- df2[df2$RNA_Group==i&df2$Tissue=="Liver",]
df4 <- df2[df2$RNA_Group==i&df2$Tissue=="Tumor",]
df3 <- df3 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
df4 <- df4 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
df3 <- df3[df3$ClonoFreq>2,]
df4 <- df4[df4$ClonoFreq>2,]
df3$ClonoFreq.norm <- sapply(df3$ClonoFreq,function(x){100*x/sum(df3$ClonoFreq)})
df4$ClonoFreq.norm <- sapply(df4$ClonoFreq,function(x){100*x/sum(df4$ClonoFreq)})
df6 <- rbind(df3,df4)
df6 <- df6[order(df6$cdr3_aa2),]
df6$col1[!duplicated(df6$cdr3_aa2)] <- "#CCCCCC"
Dtests <- duplicated(df6$cdr3_aa2)|duplicated(df6$cdr3_aa2, fromLast=T)
df6$col1 [df6$OVA.reactive=="OVA"] <- "#3399FF" #"#3399FF"
df6$col1 [df6$OVA.reactive=="Other"&Dtests] <- "#CC6600"
plotA <- ggplot(data = df6,
aes(x=Tissue, y=ClonoFreq.norm, alluvium=cdr3_aa2, stratum=cdr3_aa2)) +
geom_flow(aes(fill=col1), decreasing=F)+
geom_stratum(aes(fill=col1, size=0.2), decreasing=F) +
scale_fill_manual(values=setNames(unique(df6$col), unique(df6$col)))+
theme_bw() + theme(legend.position="none")+
scale_size_identity()+
ggtitle(i)
nameR <- paste0(i, ".plot")
assign(nameR, plotA)}
pdf(paste0(pdir, "/Fluvial.Plot.18.CD8.norm.2clones.OVAblue_FigS3B.pdf"), width=4, height=4)
grid.arrange(Combo.plot,OVA.IFNa.plot,OVA.IL12.plot,OVA.plot, ncol=2, nrow=2)
dev.off()
######CD4 T cells########
####Figure 3H - normalized test CD4#######
df1 <- obs1@meta.data
df1 <- df1[df1$NewlablesG=="CD4 T cells",]
#df2<- na.omit(df1[,c(13,38,39,49)])
df2<- na.omit(df1[,c("cdr3_aa2","RNA_Group","Tissue","OVA.reactive")])
for (i in unique(df1$RNA_Group)){
# i <- unique(df1$RNA_Group)[1]
df3 <- df2[df2$RNA_Group==i&df2$Tissue=="Liver",]
df4 <- df2[df2$RNA_Group==i&df2$Tissue=="Tumor",]
df3 <- df3 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
df4 <- df4 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
df3 <- df3[df3$ClonoFreq>1,]
df4 <- df4[df4$ClonoFreq>1,]
df3$ClonoFreq.norm <- sapply(df3$ClonoFreq,function(x){100*x/sum(df3$ClonoFreq)})
df4$ClonoFreq.norm <- sapply(df4$ClonoFreq,function(x){100*x/sum(df4$ClonoFreq)})
df6 <- rbind(df3,df4)
df6 <- df6[order(df6$cdr3_aa2),]
df6$col1[!duplicated(df6$cdr3_aa2)] <- "#CCCCCC"
Dtests <- duplicated(df6$cdr3_aa2)|duplicated(df6$cdr3_aa2, fromLast=T)
df6$col1 [df6$OVA.reactive=="OVA"&Dtests] <- "#CC6600" #"#3399FF"
df6$col1 [df6$OVA.reactive=="Other"&Dtests] <- "#CC6600"
plotA <- ggplot(data = df6,
aes(x = Tissue, y=ClonoFreq.norm, alluvium = cdr3_aa2,stratum=cdr3_aa2)) +
geom_flow(aes(fill = col1),decreasing = F)+
geom_stratum(aes(fill = col1,size=0.2),decreasing = F) +
scale_fill_manual(values = setNames(unique(df6$col), unique(df6$col)))+
theme_bw() + theme(legend.position = "none")+
scale_size_identity()+
ggtitle(i)
nameR <- paste0(i,".plot")
assign(nameR,plotA)}
pdf(paste0(pdir, "/Fluvial.Plot.18.CD4.norm.2clones_Fig3H.pdf"), width=4, height=4)
grid.arrange(Combo.plot,OVA.IFNa.plot,OVA.IL12.plot,OVA.plot, ncol=2, nrow=2)
dev.off()
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(reshape2)
library(fgsea)
library(matrixStats)
library(fmsb)
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM"
wdir <- paste0(cluster_dir, "/Result3_MNOT")
ddir <- paste0(cluster_dir, "/results3/Liver_Tumor_APCs/")
pdir <- paste0(cluster_dir, "/Result3_MNOT/Plots")
# Custom functions
source(file = "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/last_scripts_MNOT/TAD018/plot_stellare_function.R")
# Load RDS
obs1 <- readRDS(paste0(ddir, "Liver_Tumor_APCs_final.rds"))
########################
#####Annotations#######
########################
obs1@meta.data$Tissue <- obs1@meta.data$PROP.Source
obs1@meta.data$RNA_Group <- obs1@meta.data$PROP.Condition
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "TA_only"] <- "TA33"
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "TA_combo"] <- "TA33.Combo"
obs1@meta.data$RNA_Group <- factor(x = obs1@meta.data$RNA_Group, levels = c("TA33","TA33.Combo"))
# Tissue Sample assign
obs1$Tube <- paste0(obs1$hash.ID,obs1$RNA_Group)
obs1@meta.data$Orig<-paste0(obs1@meta.data$Tissue, ".", obs1@meta.data$RNA_Group)
table(obs1@meta.data$Tissue,obs1@meta.data$RNA_Group)
table(obs1@meta.data$Orig)
obs1@meta.data$allData <- "all"
#############Analysis APCs###################
features1 = c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2", #MHCI
"H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita", #MHCII
"Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g", #IFNa
"Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74", #IFNg
"Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1") #protumor
#####Figure 6A##############
pdf(paste0(pdir, "/liver.apc.19.LandT_Fig6A.pdf"), width=14, height=3)
plot.a <- PlotStellare(obs1, features1=features1, valueG="allData", i="all", group.by0="Orig", controGroup="Liver.TA33")
print(plot.a)
par(mfrow=c(1,2))
dev.off()
#######################GSEA#######################################################################
#######################Figure S6B - gsea on Liver and tumor APCs##################################
# Load signature
#miDB_sig4.MLS <- readRDS("C:/Users/notaro.marco/Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/05-DGE-Tumor/miDB_sig4.MLS.rds")
miDB_sig4.MLS <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/reference/miDB_sig4.MLS.rds")
sub.obj<-subset(obs1, subset= NewlablesM == "KCs"|
NewlablesM == "Macrophages"|
NewlablesM == "Monocytes")
sub.obj <- SetIdent(sub.obj, value = "Orig")
obs1.dge <- FindMarkers(sub.obj, ident.1 = "Liver.TA33.Combo", ident.2 = "Liver.TA33", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs2.dge <- FindMarkers(sub.obj, ident.1 = "Tumor.TA33.Combo", ident.2 = "Tumor.TA33", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs1.ranks <- obs1.dge$avg_log2FC
obs2.ranks <- obs2.dge$avg_log2FC
names(obs2.ranks) <- rownames(obs2.dge)
names(obs1.ranks) <- rownames(obs1.dge)
res.combo.liver<-fgsea(pathways = miDB_sig4.MLS, stats = obs1.ranks, minSize=0, maxSize=500, eps=0) # nPermSimple=50000
res.combo.tumor<-fgsea(pathways = miDB_sig4.MLS, stats = obs2.ranks, minSize=0, maxSize=500, eps=0) # PermSimple=50000
# Select columns of interest
res.combo.liver2<-res.combo.liver[,c(1,3,6,8)]
res.combo.tumor2<-res.combo.tumor[,c(1,3,6,8)]
# Merge in a single file and save xlsx
merge1 <- merge(x=res.combo.liver2, y=res.combo.tumor2, by="pathway", suffixes = c("-liver", "-tumor"))
write.xlsx(merge1, paste0(pdir, "/GSEA_LandT_KC-mono-macs.xlsx"), asTable=T, rowNames=T)
##################GSEA Heatmap of selected#######################################
#rearrange data to plot heatmap
res.combo.liver$origin<-"Liver"
res.combo.tumor$origin<-"Tumor"
# res.OVA$origin<- factor(x = res.OVA$origin, levels = c("OVA.Combo","OVA.Il12","OVA.IFNa","liOVA"))
merge.results<-rbind(res.combo.liver,res.combo.tumor)
#saveRDS(merge.results, "GSEA.liverandtumormacs.nperm50000.rds")
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
# Manually selected pathways
a1<-c("IFNa_RO",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"GOBP_DEFENSE_RESPONSE_TO_VIRUS",
"GOBP_POSITIVE_REGULATION_OF_LEUKOCYTE_CELL_CELL_ADHESION",
"GOBP_POSITIVE_REGULATION_OF_CELL_KILLING",
"GOCC_MHC_PROTEIN_COMPLEX",
"GOBP_POSITIVE_REGULATION_OF_T_CELL_MEDIATED_CYTOTOXICITY",
"GOCC_MHC_CLASS_II_PROTEIN_COMPLEX",
"GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION_OF_ENDOGENOUS_ANTIGEN",
"HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION",
"GOBP_POSITIVE_REGULATION_OF_EPITHELIAL_CELL_PROLIFERATION",
"GOBP_POSITIVE_REGULATION_OF_ENDOTHELIAL_CELL_PROLIFERATION",
"PGE2_RO",
"HALLMARK_ANGIOGENESIS",
"IL4_RO"
)
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "IFNa_RO"] <- "IFNa response (Cilenti et all)"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Hallmark_IFNg response"
merge.results1[merge.results1 == "GOBP_DEFENSE_RESPONSE_TO_VIRUS"] <- "Antiviral response"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_LEUKOCYTE_CELL_CELL_ADHESION"] <- "Positive regulation of cell adhesion"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_CELL_KILLING"] <- "Positive regulation of cell killing"
merge.results1[merge.results1 == "GOCC_MHC_PROTEIN_COMPLEX"] <- "MHC protein complex"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_T_CELL_MEDIATED_CYTOTOXICITY"] <- "Positive regulation of T cell cytotoxicity"
merge.results1[merge.results1 == "GOCC_MHC_CLASS_II_PROTEIN_COMPLEX"] <- "MHC-II protein complex"
merge.results1[merge.results1 == "GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION_OF_ENDOGENOUS_ANTIGEN"] <- "Antigen processing and presentation"
merge.results1[merge.results1 == "HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION"] <- "Hallmark EMT"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_EPITHELIAL_CELL_PROLIFERATION"] <- "Positive regulation of epithelial cell proliferation"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_ENDOTHELIAL_CELL_PROLIFERATION"] <- "Positive regulation of endothelial cell proliferation"
merge.results1[merge.results1 == "PGE2_RO"] <- "PGE2 signature from Cilenti et al"
merge.results1[merge.results1 == "HALLMARK_ANGIOGENESIS"] <- "Angiogenesis"
merge.results1[merge.results1 == "IL4_RO"] <- "IL-4 signature from Cilenti et al"
# Order in the way we want to see
merge.results1$pathway<- factor(merge.results1$pathway, levels = c("IFNa response (Cilenti et all)",
"Hallmark_IFNg response",
"Antiviral response",
"Positive regulation of cell adhesion",
"Positive regulation of cell killing",
"Positive regulation of T cell cytotoxicity",
"Antigen processing and presentation",
"MHC protein complex",
"MHC-II protein complex",
"Hallmark EMT",
"Positive regulation of epithelial cell proliferation",
"Positive regulation of endothelial cell proliferation",
"Angiogenesis",
"IL-4 signature from Cilenti et al",
"PGE2 signature from Cilenti et al"))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_gradientn(limits = c(-4,5.2), colours=c("Blue","White","Red"))+
geom_text(aes(label = stats), vjust=0.7,angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"),
axis.text.x = element_text(angle=90, vjust=0.5, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))+
ggtitle("GSEA_MacroKCandmono vs OVA_Liver")
ggsave(filename = paste0(pdir, "/Liver_and_Tumor_MacroKCsMonovsOVA_FigS6B.pdf"), plot=y, width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.0001,]
filter_in <- head(unique(merge.results_temp$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("Liver","Tumor"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_MacroKCandmono vs OVA_Liver")
ggsave(filename = paste0(pdir, "/Liver_and_Tumor_MacroKCsMonovsOVA_unbias.pdf"), plot=y, width=15, height=30) # limitsize = FALSE
##############################################################################
##################Figure S6D - RADAR PLOT######################################
##############################################################################
plotRadar <- function(i){
ploTData<- rbind(max1,min1,get(i))
id <- sub(".db","",i)
radarchart(ploTData, title = id, pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1, cglwd=0.8)
} #function to plot radarplot
####Create label to cluster dc and granulocytes together
obs1@meta.data$Shortlables<-obs1@meta.data$NewlablesM
#DCs<-c("CD8 cDC1","moDCs", "Ccr7 DCs","pDCs","pre DCs")
#obs1@meta.data$Shortlables[obs1@meta.data$NewlablesM%in%DCs] <- "DCs"
#granu<-c("Neutrophils","Basophils")
#obs1@meta.data$Shortlables[obs1@meta.data$NewlablesM%in%granu] <- "Granulocytes"
obs1$Shortlables <- paste0(obs1$Shortlables,".",obs1$Tissue)
# AddModuleScore
MHCI_genes<- list(c("H2-Q7", "H2-T22", "H2-Q4", "H2-K1", "H2-T23", "H2-M3", "H2-D1","Tap1","Tap2"))
MHCII_genes<- list( c("H2-Eb1", "H2-Ab1", "H2-Aa", "H2-DMb1", "H2-DMa", "Ciita"))
Protumoral_genes<- list(c("Vav2","Tgfb1","Il10","Ccl24","Mmp8","Tmem176b","Trem2","Fn1") )
IFNa_genes<- list(c("Ifi44", "Oasl1","Irf7","Isg15", "Isg20","Oas1a","Oas1g") )
IFNg_genes<-list(c("Ccl5", "Upp1", "Slamf7", "Cxcl9", "Gbp4","Cd74"))
obs1<- AddModuleScore(obs1, features = MHCI_genes, name = "MHCI_genes")
obs1<- AddModuleScore(obs1, features = MHCII_genes, name = "MHCII_genes")
obs1<- AddModuleScore(obs1, features = Protumoral_genes, name = "Protumoral_genes")
obs1<- AddModuleScore(obs1, features = IFNa_genes, name = "IFNa_genes")
obs1<- AddModuleScore(obs1, features = IFNg_genes, name = "IFNg_genes")
# Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#M1 <- obs1@meta.data[,c(37,42, 43:47)]
M1 <- obs1@meta.data[,c("Shortlables", "RNA_Group", "MHCI_genes1","MHCII_genes1","Protumoral_genes1","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(obs1$RNA_Group)
CellType<-unique(M1$Shortlables)
#with Median
#TAMs
#Groups
for (i in CellType){
M2<-M1[M1$Shortlables%in%i,]
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M4<-rbind(M3a,M3b)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
assign(paste0(i,".db"),x)}
lsCells <- grep(".db",ls(),value=T)
MinMax<-lapply(lsCells,get)
max1 <- rep(do.call("max", MinMax),5)
min1 <- rep(do.call("min", MinMax),5)
colors_border=c(rgb(0,0.8,0,0.9), rgb(0,0,0,0.9))
colors_in=c(rgb(0,0.3,0,0.), rgb(0,0,0.0,0.1))
pdf(paste0(pdir, "/Radar_plot_liver_and_tumor_APCs_FigS6D_new2.pdf"), width=15, height=12)
par(mfrow=c(4,5))
for (i in 1:length(unique(obs1$Shortlables))){
plotRadar(lsCells[i])
}
dev.off()
#######################Plot UMAP################
liver.apcs <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM/results3/Liver_APCs/Liver_APCs_final.rds")
tumor.apcs <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM/results3/Tumor_APCs/Tumor_APCs_final.rds")
liver.apcs@meta.data$Tissue <- liver.apcs@meta.data$PROP.Source
liver.apcs@meta.data$RNA_Group <- liver.apcs@meta.data$PROP.Condition
liver.apcs@meta.data$RNA_Group[liver.apcs@meta.data$RNA_Group == "TA_only"] <- "TA33"
liver.apcs@meta.data$RNA_Group[liver.apcs@meta.data$RNA_Group == "TA_combo"] <- "TA33.Combo"
liver.apcs@meta.data$RNA_Group <- factor(x = liver.apcs@meta.data$RNA_Group, levels = c("TA33","TA33.Combo"))
liver.apcs$Tube <- paste0(liver.apcs$hash.ID,liver.apcs$RNA_Group)
tumor.apcs@meta.data$Tissue <- tumor.apcs@meta.data$PROP.Source
tumor.apcs@meta.data$RNA_Group <- tumor.apcs@meta.data$PROP.Condition
tumor.apcs@meta.data$RNA_Group[tumor.apcs@meta.data$RNA_Group == "TA_only"] <- "TA33"
tumor.apcs@meta.data$RNA_Group[tumor.apcs@meta.data$RNA_Group == "TA_combo"] <- "TA33.Combo"
tumor.apcs@meta.data$RNA_Group <- factor(x = tumor.apcs@meta.data$RNA_Group, levels = c("TA33","TA33.Combo"))
tumor.apcs$Tube <- paste0(tumor.apcs$hash.ID,tumor.apcs$RNA_Group)
# Save plot
pdf(paste0(pdir, "/liver_apcs_umap_FigS11A-1.pdf"), width=7, height=6) # Figure S11A-1
DimPlot(liver.apcs, reduction = "umap.harmony.orig.ident",group.by = "NewlablesM_clu", pt.size = 0.5, label = T, label.size = 3, repel = T)
dev.off()
pdf(paste0(pdir, "/tumor_apcs_umap_FigS11A-2.pdf"), width=7, height=6) # Figure S11A-2
DimPlot(tumor.apcs, reduction = "umap.harmony.orig.ident",group.by = "NewlablesM_clu", pt.size = 0.5, label = T, label.size = 3, repel = T)
dev.off()
# Export DimPlot as excel
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu")
liver.apcs_df <- FetchData(liver.apcs, vars = var_list)
liver.apcs_df$cell_ID <- rownames(liver.apcs_df)
write.xlsx(liver.apcs_df, file=paste0(pdir, "/liver_apcs_umap_FigS11A-1.xlsx"), overwrite=T)
tumor.apcs_df <- FetchData(tumor.apcs, vars = var_list)
tumor.apcs_df$cell_ID <- rownames(tumor.apcs_df)
write.xlsx(tumor.apcs_df, file=paste0(pdir, "/tumor_apcs_umap_FigS11A-2.xlsx"), overwrite=T)
#################################ENDS here##############################
\ No newline at end of file
library(Seurat)
library(openxlsx)
library(readxl)
library(tidyr)
library("RColorBrewer")
library(dplyr)
library(scRepertoire)
library(reshape2)
library(fgsea)
library(ggalluvial)
library("gridExtra")
library(matrixStats)
library(fmsb)
cluster_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM"
wdir <- paste0(cluster_dir, "/Result3_MNOT")
ddir <- paste0(cluster_dir, "/results3/Liver_Tumor_TnK/")
pdir <- paste0(cluster_dir, "/Result3_MNOT/Plots")
# Custom functions
source(file = "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/Analysis_MM/last_scripts_MNOT/TAD018/plot_stellare_function.R")
# Load RDS
obs1 <- readRDS(paste0(ddir, "Liver_Tumor_TnK_final.rds"))
#obs1 <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM/results3/Liver_TandNK_NO_TCR/Liver_TandNK_final.rds")
########################
#####Annotations#######
########################
obs1@meta.data$Tissue <- obs1@meta.data$PROP.Source
obs1@meta.data$RNA_Group <- obs1@meta.data$PROP.Condition
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "TA_only"] <- "TA33"
obs1@meta.data$RNA_Group[obs1@meta.data$RNA_Group == "TA_combo"] <- "TA33.Combo"
obs1@meta.data$RNA_Group <- factor(x = obs1@meta.data$RNA_Group, levels = c("TA33","TA33.Combo"))
# Tissue Sample assign
obs1$Tube <- paste0(obs1$hash.ID,obs1$RNA_Group)
obs1@meta.data$Orig<-paste0(obs1@meta.data$Tissue, ".", obs1@meta.data$RNA_Group)
table(obs1@meta.data$Tissue,obs1@meta.data$RNA_Group)
table(obs1@meta.data$Orig)
#################create labels for all CD8 and CD4 T cells#############
obs1@meta.data$NewlablesG <- obs1@meta.data$NewlablesM
obs1@meta.data$NewlablesG[grep("CD4",obs1@meta.data$NewlablesM) ] <- "CD4 T cells"
obs1@meta.data$NewlablesG[grep("CD8",obs1@meta.data$NewlablesM)] <- "CD8 T cells"
unique(obs1@meta.data$NewlablesM)
################create labels CD4 and CD8 clusters without naive####################
obs1@meta.data$NewlablesS <- obs1@meta.data$NewlablesM
indCd4<- grepl("CD4",obs1@meta.data$NewlablesM) & !grepl("Naive",obs1@meta.data$NewlablesM)
indCd8<- grepl("CD8",obs1@meta.data$NewlablesM) & !grepl("Naive",obs1@meta.data$NewlablesM)
obs1@meta.data$NewlablesS[indCd4] <- "CD4 T cells"
obs1@meta.data$NewlablesS[indCd8] <- "CD8 T cells"
obs1@meta.data$NewlablesST <- paste0(obs1@meta.data$Tissue,".",obs1@meta.data$NewlablesS)
################################################
###Calculating hyperexpanded T cells#############
################################################
obs1$aa3.Tube <- paste0(obs1$cdr3_aa2,".",obs1$Tube)
obs1$aa3.Tube[is.na(obs1$cdr3_aa2)] <- NA
obs1@meta.data$ClonoFreq <- obs1@meta.data %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>%
as.data.frame() %>% select (count)
obs1@meta.data$ClonoFreq[is.na(obs1$cdr3_aa2),] <- NA
obs1@meta.data$Clonetype <- NA
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq==1] <- "unique"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 1 & obs1@meta.data$ClonoFreq <= 5] <- "small"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 5 & obs1@meta.data$ClonoFreq <= 30] <- "large"
obs1@meta.data$Clonetype[obs1@meta.data$ClonoFreq > 30] <- "hyperexpanded"
obs1$Clonetype <- factor(x = obs1$Clonetype, levels = c("unique", "small", "large", "hyperexpanded")) #order clonotype variable
obs1$Expansion <- "unique"
obs1$Expansion[obs1@meta.data$ClonoFreq>5] <- "expanded"
table(obs1@meta.data$Clonetype)
######TISSUE SHARED CLONOTYPES########
# Identify cells with the same Cdr3aa sequence in both tissues
df1<-data.frame(obs1@meta.data$cdr3_aa2,obs1@meta.data$hash.ID,obs1@meta.data$RNA_Group, obs1@meta.data$Tissue)
df2<-na.omit(df1)
df2$cdr3_mouse<-paste0(df2$obs1.meta.data.cdr3_aa2,".",df2$obs1.meta.data.hash.ID,".",df2$obs1.meta.data.RNA_Group)
shared_cdr3aa <- intersect(df2$cdr3_mouse[df2$obs1.meta.data.Tissue == "Liver"], df2$cdr3_mouse[df2$obs1.meta.data.Tissue == "Tumor"])
obs1$cdr3_mouse<-paste0(obs1$cdr3_aa2,".",obs1$hash.ID,".",obs1$RNA_Group)
obs1$Shared <- ifelse(obs1$cdr3_mouse %in% shared_cdr3aa, "Shared", "Unique")
# Create variables share tissue
obs1@meta.data$Sharedtissue<-paste0(obs1@meta.data$Tissue,".",obs1@meta.data$Shared)
obs1@meta.data$Shared.NewlablesS<-paste0(obs1@meta.data$Shared,".",obs1@meta.data$NewlablesS)
obs1@meta.data$Shared.NewlablesG<-paste0(obs1@meta.data$Shared,".",obs1@meta.data$NewlablesG)
obs1@meta.data$Expansion.NewlablesG<-paste0(obs1@meta.data$Shared,".",obs1@meta.data$NewlablesG,".",obs1@meta.data$Expansion)
################################################
Tobs <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM/results3/Tumor_TandNK/Tumor_TandNK_final.rds")
########################
#####Annotations#######
########################
Tobs@meta.data$Tissue <- Tobs@meta.data$PROP.Source
Tobs@meta.data$RNA_Group <- Tobs@meta.data$PROP.Condition
Tobs@meta.data$RNA_Group[Tobs@meta.data$RNA_Group == "TA_only"] <- "TA33"
Tobs@meta.data$RNA_Group[Tobs@meta.data$RNA_Group == "TA_combo"] <- "TA33.Combo"
Tobs@meta.data$RNA_Group <- factor(x = Tobs@meta.data$RNA_Group, levels = c("TA33","TA33.Combo"))
# Tissue Sample assign
Tobs$Tube <- paste0(Tobs$hash.ID,Tobs$RNA_Group)
Tobs@meta.data$Orig<-paste0(Tobs@meta.data$Tissue, ".", Tobs@meta.data$RNA_Group)
table(Tobs@meta.data$Tissue,Tobs@meta.data$RNA_Group)
table(Tobs@meta.data$Orig)
#################create labels for all CD8 and CD4 T cells#############
Tobs@meta.data$NewlablesG <- Tobs@meta.data$NewlablesM
Tobs@meta.data$NewlablesG[grep("CD4",Tobs@meta.data$NewlablesM) ] <- "CD4 T cells"
Tobs@meta.data$NewlablesG[grep("CD8",Tobs@meta.data$NewlablesM)] <- "CD8 T cells"
unique(Tobs@meta.data$NewlablesM)
################create labels CD4 and CD8 clusters without naive####################
Tobs@meta.data$NewlablesS <- Tobs@meta.data$NewlablesM
indCd4<- grepl("CD4",Tobs@meta.data$NewlablesM) & !grepl("Naive",Tobs@meta.data$NewlablesM)
indCd8<- grepl("CD8",Tobs@meta.data$NewlablesM) & !grepl("Naive",Tobs@meta.data$NewlablesM)
Tobs@meta.data$NewlablesS[indCd4] <- "CD4 T cells"
Tobs@meta.data$NewlablesS[indCd8] <- "CD8 T cells"
Tobs@meta.data$NewlablesST <- paste0(Tobs@meta.data$Tissue,".",Tobs@meta.data$NewlablesS)
################################################
###Calculating hyperexpanded T cells#############
################################################
Tobs$aa3.Tube <- paste0(Tobs$cdr3_aa2,".",Tobs$Tube)
Tobs$aa3.Tube[is.na(Tobs$cdr3_aa2)] <- NA
Tobs@meta.data$ClonoFreq <- Tobs@meta.data %>% group_by(aa3.Tube) %>% mutate(count = n()) %>% ungroup() %>%
as.data.frame() %>% select (count)
Tobs@meta.data$ClonoFreq[is.na(Tobs$cdr3_aa2),] <- NA
Tobs@meta.data$Clonetype <- NA
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq==1] <- "unique"
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq > 1 & Tobs@meta.data$ClonoFreq <= 5] <- "small"
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq > 5 & Tobs@meta.data$ClonoFreq <= 30] <- "large"
Tobs@meta.data$Clonetype[Tobs@meta.data$ClonoFreq > 30] <- "hyperexpanded"
Tobs$Clonetype <- factor(x = Tobs$Clonetype, levels = c("unique", "small", "large", "hyperexpanded")) #order clonotype variable
Tobs$Expansion <- "unique"
Tobs$Expansion[Tobs@meta.data$ClonoFreq>5] <- "expanded"
table(Tobs@meta.data$Clonetype)
######TISSUE SHARED CLONOTYPES with tumors########
# clonotypes in Liver
df1<-data.frame(obs1@meta.data$cdr3_aa2,obs1@meta.data$hash.ID,obs1@meta.data$RNA_Group, obs1@meta.data$Tissue)
df2<-na.omit(df1)
df2$cdr3_mouse<-paste0(df2$obs1.meta.data.cdr3_aa2,".",df2$obs1.meta.data.hash.ID,".",df2$obs1.meta.data.RNA_Group)
# clonotypes in Tumor
df3<-data.frame(Tobs@meta.data$cdr3_aa2,Tobs@meta.data$hash.ID,Tobs@meta.data$RNA_Group, Tobs@meta.data$Tissue)
df4<-na.omit(df3)
df4$cdr3_mouse<-paste0(df4$Tobs.meta.data.cdr3_aa2,".",df4$Tobs.meta.data.hash.ID,".",df4$Tobs.meta.data.RNA_Group)
# List of Shared clonotypes
shared_cdr3aa <- intersect(df2$cdr3_mouse, df4$cdr3_mouse)
# Add variable shared in liver
obs1$cdr3_mouse<-paste0(obs1$cdr3_aa2,".",obs1$hash.ID,".",obs1$RNA_Group)
obs1$Shared <- ifelse(obs1$cdr3_mouse %in% shared_cdr3aa, "Shared", "Unique")
# Add variable shared in tumor
Tobs$cdr3_mouse<-paste0(Tobs$cdr3_aa2,".",Tobs$hash.ID,".",Tobs$RNA_Group)
Tobs$Shared <- ifelse(Tobs$cdr3_mouse %in% shared_cdr3aa, "Shared", "Unique")
# Add new variables in liver
obs1@meta.data$New_division <- obs1@meta.data$NewlablesM_clu
ind<- grepl("CD4",obs1@meta.data$NewlablesM_clu) & grepl("Shared",obs1@meta.data$Shared)
obs1@meta.data$New_division[ind] <- "Shared CD4"
ind<- grepl("CD8",obs1@meta.data$NewlablesM_clu) & grepl("Shared",obs1@meta.data$Shared)
obs1@meta.data$New_division[ind] <- "Shared CD8"
obs1@meta.data$New_division2 <- "Other"
ind<- grepl("CD4",obs1@meta.data$NewlablesM_clu) & grepl("Shared",obs1@meta.data$Shared)
obs1@meta.data$New_division2[ind] <- "Shared CD4"
unique(obs1@meta.data$New_division)
obs1@meta.data$New_division_CD8 <- "Other"
obs1@meta.data$New_division_CD8[obs1@meta.data$New_division=="Shared CD8"] <- "Shared CD8"
# Variable with shared CD4 only in selected groups
obs1$New_division3<-paste0(obs1$New_division2,".",obs1$RNA_Group)
obs1@meta.data$New_division3[obs1@meta.data$New_division3 %in% "Shared CD4.OVA.IFNa"] <- "Other.OVA.IFNa"
obs1@meta.data$New_division3[obs1@meta.data$New_division3 %in% "Shared CD4.OVA"] <- "Other.OVA"
# Add new variables in tumor
Tobs@meta.data$New_division <- Tobs@meta.data$NewlablesM_clu
ind<- grepl("CD4",Tobs@meta.data$NewlablesM_clu) & grepl("Shared",Tobs@meta.data$Shared)
Tobs@meta.data$New_division[ind] <- "Shared CD4"
ind<- grepl("CD8",Tobs@meta.data$NewlablesM_clu) & grepl("Shared",Tobs@meta.data$Shared)
Tobs@meta.data$New_division[ind] <- "Shared CD8"
Tobs@meta.data$New_division2 <- "Other"
ind<- grepl("CD4",Tobs@meta.data$NewlablesM_clu) & grepl("Shared",Tobs@meta.data$Shared)
Tobs@meta.data$New_division2[ind] <- "Shared CD4"
#######################Plot UMAP################
# Save plot
pdf(paste0(pdir, "/AKTPF_TandNK_umap_Fig6B-1.pdf"), width=7, height=6) # Figure 6B-1
DimPlot(obs1, reduction = "umap.harmony.orig.ident", group.by = "NewlablesM_clu", pt.size = 0.5, label = T, label.size = 3, repel = T)
dev.off()
# DimPlot(obs1, reduction = "umap.harmony.orig.ident",group.by = "Expansion", pt.size = 0.5, label = F, order = c("expanded", "unique"), cols = c("lightgrey", "blue"))
pdf(paste0(pdir, "/AKTPF_tetramer_umap_Fig6B-2.pdf"), width=7, height=6) # Figure 6B-2
DimPlot(obs1, reduction = "umap.harmony.orig.ident", group.by = "New_division_CD8", pt.size = 0.5, label = F, order = c("Shared CD8", "Other"), cols = c("lightgrey", "blue"))
dev.off()
pdf(paste0(pdir, "/AKTPF_shared_cd4_umap_FigS12F.pdf"), width=7, height=6) # Figure S12F
DimPlot(obs1, reduction = "umap.harmony.orig.ident", group.by = "New_division2", pt.size = 0.5, label = F, order = c("Shared CD4", "Other"), cols = c("lightgrey", "blue"))
dev.off()
# Export DimPlot as excel
var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu","Clonetype","Expansion","New_division","New_division_CD8","New_division2")
TandNK_df <- FetchData(obs1, vars = var_list)
TandNK_df$cell_ID <- rownames(TandNK_df)
write.xlsx(TandNK_df, file=paste0(pdir, "/AKTPF_TandNK_umap_Fig6B_FigS12F.xlsx"), overwrite=T)
#######################Plot UMAP################
# NO_TCR
# # Save plot
# pdf(paste0(pdir, "/AKTPF_TandNK_umap_NO_TCR_FigS13D-1.pdf"), width=7, height=6) # Figure S13D-1
# DimPlot(obs1, reduction = "umap.harmony.orig.ident", group.by = "NewlablesM_clu", pt.size = 0.5, label = T, label.size = 3, repel = T)
# dev.off()
#
# pdf(paste0(pdir, "/AKTPF_tetramer_umap_NO_TCR_FigS13D-2.pdf"), width=7, height=6) # Figure FigS13D-2
# DimPlot(obs1, reduction = "umap.harmony.orig.ident", group.by = "New_division_CD8", pt.size = 0.5, label = F, order = c("Shared CD8", "Other"), cols = c("lightgrey", "blue"))
# dev.off()
#
# # Export DimPlot as excel
# var_list <- c("UMAPh_1", "UMAPh_2","Tissue","orig.ident","Sample","RNA_Group","Tube","RNA_snn_h.orig.ident_res.1.2","NewlablesM_clu","Clonetype","Expansion","New_division","New_division_CD8","New_division2")
# TandNK_df <- FetchData(obs1, vars = var_list)
# TandNK_df$cell_ID <- rownames(TandNK_df)
# write.xlsx(TandNK_df, file=paste0(pdir, "/AKTPF_TandNK_umap_NO_TCR_Fig6B_FigS13D.xlsx"), overwrite=T)
#######################DOTPLOT stellare ########################################################
featuresCD4<-c("Ly6c2","Oas1a","Irf8","Ifitm3", # Ifna
"Il18rap","Il18r1","Il12rb1","Gbp2", # Ifng genes
"Ifng","Tbx21","Gzmk","Stat1","Tnf","Cxcr3","Il2", # Th1/effector genes
"Gata3","Il4","Il5","Lima1","Auh","Runx2","Smad2", # Th2
"Rorc","Il17a","Palld","Basp1","Tnfrsf8","Apoe") # Th17
featuresCD8<-c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3", # IFNa genes
"Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2", # IL12/IFNg genes
"Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell", # pex
"Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl", # effector
"Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox") # exhaustion
# PlotStellari
pdf(file=paste0(pdir, "/CD8T_expanded_shared_FigS6D.pdf"), width=14, height=3) # Figure S6D
plot.b<-PlotStellare(obs1=obs1, features1=featuresCD8, valueG="Expansion.NewlablesG", i="Shared.CD8 T cells.expanded", group.by0="Orig", controGroup="Liver.TA33", noCtrlvsAll=T)
print(plot.b)
dev.off()
pdf(file=paste0(pdir, "/CD4_T_cells_Liver_FigS6F.pdf"), width=14, height=3) # Figure S6F
plot.c<-PlotStellare(obs1=obs1, features1=featuresCD4, valueG="NewlablesG", i="CD4 T cells", group.by0="Orig", controGroup="Liver.TA33", noCtrlvsAll=T)
print(plot.c)
dev.off()
# Subset putative tumor specific CD8 in liver and tumor
T.liver<-subset(obs1, subset = Tissue=="Liver")
T.liverCD8.shexp<-subset(T.liver, subset = Expansion.NewlablesG =="Shared.CD8 T cells.expanded")
T.tumor<-subset(obs1, subset = Tissue=="Tumor")
T.tumorCD8.shexp<-subset(T.tumor, subset = Expansion.NewlablesG =="Shared.CD8 T cells.expanded")
#########################################################
###############FIGURE 6D############################
##########################################################
##############RADAR PLOT LIVER EXPANDED########
Effector <- list(c("Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl"))
Pex <- list(c("Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell"))
Exhaustion <- list(c("Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox"))
IFNa_genes <- list(c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes <-list(c("Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2"))
T.liverCD8.shexp<- AddModuleScore(T.liverCD8.shexp, features = Effector, name = "Effector")
T.liverCD8.shexp<- AddModuleScore(T.liverCD8.shexp, features = Pex, name = "Pex")
T.liverCD8.shexp<- AddModuleScore(T.liverCD8.shexp, features = Exhaustion, name = "Exhaustion")
T.liverCD8.shexp<- AddModuleScore(T.liverCD8.shexp, features = IFNa_genes, name = "IFNa_genes")
T.liverCD8.shexp<- AddModuleScore(T.liverCD8.shexp, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#M1<-T.liverCD8.shexp@meta.data[,c(16, 37, 54:58)]
M1<-T.liverCD8.shexp@meta.data[,c("NewlablesM", "RNA_Group", "Effector1","Pex1","Exhaustion1","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(T.liverCD8.shexp$RNA_Group)
CellType<-unique(M1$NewlablesM)
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M4<-rbind(M3a,M3b)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x),5)
min1 <- rep(do.call("min", x),5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0.1,0.6,0.2,0.9),rgb(0,0,0,0.9))
colors_in=c(rgb(0.1,0.6,0.2,0.1),rgb(0,0,0,0.1))
#radarchart(ploTData, title = "Tumor reactive liver T cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1, cglwd=0.8)
pdf(paste0(pdir, "/radar.plot.liver.expandedandshared.CD8_newgenes_Fig6D-1.pdf"), width=5, height=5)
radarchart(ploTData, title = "CD8 T cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1, cglwd=0.8)
dev.off()
##############RADAR PLOT tumor EXPANDED########
Effector <- list(c("Gzmb","Gzma","Prf1","Ifng","Tnf","Fasl"))
Pex <- list(c("Tbx21","Klrg1","Cx3cr1","Tcf7","Klf2","Sell"))
Exhaustion <- list(c("Pdcd1","Lag3","Ctla4","Havcr2","Tigit","Il10ra","Tox"))
IFNa_genes <- list(c("Stat1","Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes <-list(c("Il18rap","Il18r1","Ifngas1","Il12rb1","Gbp2"))
T.tumorCD8.shexp<- AddModuleScore(T.tumorCD8.shexp, features = Effector, name = "Effector")
T.tumorCD8.shexp<- AddModuleScore(T.tumorCD8.shexp, features = Pex, name = "Pex")
T.tumorCD8.shexp<- AddModuleScore(T.tumorCD8.shexp, features = Exhaustion, name = "Exhaustion")
T.tumorCD8.shexp<- AddModuleScore(T.tumorCD8.shexp, features = IFNa_genes, name = "IFNa_genes")
T.tumorCD8.shexp<- AddModuleScore(T.tumorCD8.shexp, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#M1<-T.tumorCD8.shexp@meta.data[,c(16, 37, 54:58)]
M1<-T.tumorCD8.shexp@meta.data[,c("NewlablesM", "RNA_Group", "Effector1","Pex1","Exhaustion1","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(T.tumorCD8.shexp$RNA_Group)
CellType<-unique(M1$NewlablesM)
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M4<-rbind(M3a,M3b)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x),5)
min1 <- rep(do.call("min", x),5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0.1,0.6,0.2,0.9),rgb(0,0,0,0.9))
colors_in=c(rgb(0.1,0.6,0.2,0.1),rgb(0,0,0,0.1))
#radarchart(ploTData, title = "Tumor reactive tumor CD8 T cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1, cglwd=0.8)
pdf(paste0(pdir, "/radar.plot.tumor.expandedandshared.CD8_Fig6D-2.pdf"), width=5, height=5)
radarchart(ploTData, title = "CD8 T cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty=1, cglwd=0.8)
dev.off()
#################FIGURE S6G###########################
############Spider plot liver CD4######################
CD4<-subset(obs1, subset = Tissue =="Liver" &
NewlablesG =="CD4 T cells")
IFNa_genes<- list(c("Ly6c2","Oas1a","Irf8","Ifitm3") )
IFNg_genes<-list(c("Il18rap","Il18r1","Il12rb1","Gbp2"))
Th1<-list(c("Ifng","Tbx21","Gzmk","Stat1","Tnf","Cxcr3","Il2"))
Th2<-list(c("Gata3","Il4","Il5","Lima1","Auh","Runx2","Smad2"))
Th17<-list(c("Rorc","Il17a","Palld","Basp1","Tnfrsf8","Apoe"))
CD4 <- AddModuleScore(CD4, features = Th1, name = "Th1")
CD4 <- AddModuleScore(CD4, features = Th2, name = "Th2")
CD4 <- AddModuleScore(CD4, features = Th17, name = "Th17")
CD4 <- AddModuleScore(CD4, features = IFNa_genes, name = "IFNa_genes")
CD4 <- AddModuleScore(CD4, features = IFNg_genes, name = "IFNg_genes")
#Normalize data
#we needed to find a way to normalize the module scores.
#we used a quantile normalization method.
#M1<-CD4@meta.data[,c(16, 37, 54:58)]
M1<-CD4@meta.data[,c("NewlablesM", "RNA_Group", "Th11","Th21","Th171","IFNa_genes1","IFNg_genes1")]
M1[,3:7]<-limma::normalizeQuantiles(M1[,3:7])
Groups <-unique(CD4$RNA_Group)
CellType<-unique(M1$NewlablesM)
M2<-M1
M3a<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[1],3:7]),na.rm=T)
M3b<-colMedians(as.matrix(M2[M2$RNA_Group%in%Groups[2],3:7]),na.rm=T)
M4<-rbind(M3a,M3b)
rownames(M4)<-Groups
colnames(M4)<-colnames(M2[,3:7])
x<-as.data.frame(M4)
max1 <- rep(do.call("max", x),5)
min1 <- rep(do.call("min", x),5)
ploTData<- rbind(max1,min1,x)
colors_border=c(rgb(0.1,0.6,0.2,0.9),rgb(0,0,0,0.9))
colors_in=c(rgb(0.1,0.6,0.2,0.1),rgb(0,0,0,0.1))
pdf(paste0(pdir, "/radar.plot.liver_CD4_FigS6G.pdf"), width=5, height=5)
radarchart(ploTData, title = "CD4 T liver cells", pcol=colors_border, pfcol=colors_in, plwd=2, plty=1, cglcol="grey", cglty = 1,cglwd=0.8)
dev.off()
#########################################
###################GSEA##################
#########################################
# Load signature
#miDB_sig4.MLS <- readRDS(paste0(username, "Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/05-DGE-Tumor/miDB_sig4.MLS.rds"))
miDB_sig4.MLS <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A018/reference/miDB_sig4.MLS.rds")
###############Figure S6#############################
CD8<-subset(obs1, subset= NewlablesG =="CD8 T cells")
CD8<-SetIdent(CD8, value = "Orig")
obs1.dge<-FindMarkers(CD8, ident.1 = "Liver.TA33.Combo", ident.2 = "Liver.TA33",min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs1.ranks <- obs1.dge$avg_log2FC
names(obs1.ranks) <- rownames(obs1.dge)
obs2.dge<-FindMarkers(CD8, ident.1 = "Tumor.TA33.Combo", ident.2 = "Tumor.TA33",min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs2.ranks <- obs2.dge$avg_log2FC
names(obs2.ranks) <- rownames(obs2.dge)
res.combo.liver<-fgsea(pathways = miDB_sig4.MLS, stats = obs1.ranks,minSize=0,maxSize=500, eps=0)
res.combo.tumor<-fgsea(pathways = miDB_sig4.MLS, stats = obs2.ranks,minSize=0,maxSize=500, eps=0)
# Select the columns of interest
res.combo.liver2<-res.combo.liver[,c(1,3,6,8)]
res.combo.tumor2<-res.combo.tumor[,c(1,3,6,8)]
# Merge in a single file and save xlsx
merge1 <- merge(x=res.combo.liver2,y=res.combo.tumor2,by="pathway", suffixes = c("-liver", "-tumor"))
write.xlsx(merge1, paste0(pdir, "GSEA_CD8.xlsx"), asTable=T, rowNames=T)
##################GSEA Heatmap of selected#######################################
# Rearrange data to plot heatmap
res.combo.liver$origin <- "Liver"
res.combo.tumor$origin <- "Tumor"
# res.OVA$origin<- factor(x = res.OVA$origin, levels = c("OVA.Combo","OVA.Il12","OVA.IFNa","liOVA"))
merge.results<-rbind(res.combo.liver,res.combo.tumor)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
#pathway manually selected
a1<-c("HALLMARK_G2M_CHECKPOINT",
"GOBP_DNA_REPLICATION",
"HALLMARK_ANGIOGENESIS",
"GOBP_RESPONSE_TO_TYPE_I_INTERFERON",
"GOBP_RESPONSE_TO_INTERFERON_GAMMA",
"GOBP_LEUKOCYTE_MEDIATED_CYTOTOXICITY",
"GOBP_CELL_CYCLE_G2_M_PHASE_TRANSITION",
"GOBP_DEFENSE_RESPONSE_TO_VIRUS",
"GOBP_CELL_KILLING",
"GOBP_POSITIVE_REGULATION_OF_ENDOTHELIAL_CELL_MIGRATION",
"GOBP_VASCULAR_ENDOTHELIAL_GROWTH_FACTOR_SIGNALING_PATHWAY",
"HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION")
#subset selcting pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_TYPE_I_INTERFERON"] <- "Response to IFNa"
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_INTERFERON_GAMMA"] <- "Response to IFNg"
merge.results1[merge.results1 == "GOBP_DEFENSE_RESPONSE_TO_VIRUS"] <- "Response to virus"
merge.results1[merge.results1 == "GOBP_LEUKOCYTE_MEDIATED_CYTOTOXICITY"] <- "Leukocyte cytotoxicity"
merge.results1[merge.results1 == "GOBP_CELL_CYCLE_G2_M_PHASE_TRANSITION"] <- "G2-M phase transition"
merge.results1[merge.results1 == "GOBP_CELL_KILLING"] <- "Cell Killing"
merge.results1[merge.results1 == "GOBP_POSITIVE_REGULATION_OF_ENDOTHELIAL_CELL_MIGRATION"] <- "Positive regulation of endothelial cell migration"
merge.results1[merge.results1 == "GOBP_VASCULAR_ENDOTHELIAL_GROWTH_FACTOR_SIGNALING_PATHWAY"] <- "VEGF signaling"
merge.results1[merge.results1 == "HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION"] <- "Hallmark EMT"
merge.results1[merge.results1 == "HALLMARK_G2M_CHECKPOINT"] <- "Hallmark G2M checkpoint"
merge.results1[merge.results1 == "GOBP_DNA_REPLICATION"] <- "DNA replication"
merge.results1[merge.results1 == "HALLMARK_ANGIOGENESIS"] <- "Hallmark angiogenesis"
# Order in the way we want to see
merge.results1$pathway<- factor(merge.results1$pathway, levels = rev(c("Response to virus",
"Response to IFNa",
"Response to IFNg",
"Cell Killing",
"Leukocyte cytotoxicity",
"G2-M phase transition",
"Hallmark G2M checkpoint",
"DNA replication",
"Hallmark EMT",
"Positive regulation of endothelial cell migration",
"VEGF signaling",
"PGE2 signature Cilenti et al",
"Hallmark angiogenesis")))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"),
axis.text.x = element_text(angle = 45, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_CD8")
ggsave(filename = paste0(pdir, "/GSEA_CD8_FigS6C.pdf"), plot=y, width=5, height=2.5)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.0001,]
filter_in <- head(unique(merge.results_temp$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("Liver","Tumor"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_CD8")
ggsave(filename = paste0(pdir, "/GSEA_CD8_unbias.pdf"), plot=y, width=15, height=30)
###################Figure S6E################
CD4<-subset(obs1, subset= NewlablesG =="CD4 T cells")
CD4<-SetIdent(CD4, value = "Orig")
obs1.dge<-FindMarkers(CD4, ident.1="Liver.TA33.Combo", ident.2="Liver.TA33", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs2.dge<-FindMarkers(CD4, ident.1="Tumor.TA33.Combo", ident.2="Tumor.TA33", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs1.ranks <- obs1.dge$avg_log2FC
obs2.ranks <- obs2.dge$avg_log2FC
names(obs1.ranks) <- rownames(obs1.dge)
names(obs2.ranks) <- rownames(obs2.dge)
res.combo.liver <- fgsea(pathways = miDB_sig4.MLS, stats=obs1.ranks, minSize=0, maxSize=500, eps=0)
res.combo.tumor <- fgsea(pathways = miDB_sig4.MLS, stats=obs2.ranks, minSize=0, maxSize=500, eps=0)
# Select columns of interest
res.combo.liver2<-res.combo.liver[,c(1,3,6,8)]
res.combo.tumor2<-res.combo.tumor[,c(1,3,6,8)]
#merge in a single file and save xlsx
merge1 <- merge(x=res.combo.liver2,y=res.combo.tumor2,by="pathway", suffixes = c("-liver", "-tumor"))
write.xlsx(merge1, file = paste0(pdir, "/GSEA_CD4.xlsx"), asTable=T, rowNames=T)
##################GSEA Heatmap of selected#######################################
#rearrange data to plot heatmap
res.combo.liver$origin <- "Liver"
res.combo.tumor$origin <- "Tumor"
# res.OVA$origin<- factor(x = res.OVA$origin, levels = c("OVA.Combo","OVA.Il12","OVA.IFNa","liOVA"))
merge.results<-rbind(res.combo.liver,res.combo.tumor)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
#pathway manually selected
a1<-c("HALLMARK_INTERFERON_ALPHA_RESPONSE",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"LPS_RO",
"GOBP_INTERLEUKIN_18_PRODUCTION",
"GOBP_INTERFERON_GAMMA_PRODUCTION",
"GOBP_T_CELL_DIFFERENTIATION_INVOLVED_IN_IMMUNE_RESPONSE",
"HALLMARK_E2F_TARGETS",
"HALLMARK_G2M_CHECKPOINT",
"GOBP_NEGATIVE_REGULATION_OF_MACROPHAGE_ACTIVATION",
"IL4_RO",
"GOBP_RESPONSE_TO_INTERLEUKIN_17")
# #subset selcting pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# ###rename pathways
merge.results1[merge.results1 == "HALLMARK_INTERFERON_ALPHA_RESPONSE"] <- "Response to IFNa"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Response to IFNg"
merge.results1[merge.results1 == "LPS_RO"] <- "LPS signature (Cilenti et al)"
merge.results1[merge.results1 == "GOBP_INTERLEUKIN_18_PRODUCTION"] <- "IL-18 production"
merge.results1[merge.results1 == "GOBP_INTERFERON_GAMMA_PRODUCTION"] <- "Ifng production"
merge.results1[merge.results1 == "GOBP_T_CELL_DIFFERENTIATION_INVOLVED_IN_IMMUNE_RESPONSE"] <- "T cell differentiation"
merge.results1[merge.results1 == "HALLMARK_E2F_TARGETS"] <- "Hallmark E2F targets"
merge.results1[merge.results1 == "HALLMARK_G2M_CHECKPOINT"] <- "Hallmark G2M checkpoint"
merge.results1[merge.results1 == "GOBP_NEGATIVE_REGULATION_OF_MACROPHAGE_ACTIVATION"] <- "Negative regulation of Macrophages activation"
merge.results1[merge.results1 == "IL4_RO"] <- "IL-4 Signature (Cilenti et al)"
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_INTERLEUKIN_17"] <- "Response to IL-17"
# Order in the way we want to see
merge.results1$pathway<- factor(merge.results1$pathway, levels = rev(c("Response to IFNa",
"Response to IFNg",
"LPS signature (Cilenti et al)",
"IL-18 production",
"Ifng production",
"T cell differentiation",
"Hallmark E2F targets",
"Hallmark G2M checkpoint",
"Negative regulation of Macrophages activation",
"IL-4 Signature (Cilenti et al)",
"Response to IL-17")))
# Heatmap
y<-ggplot(merge.results1, aes(x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"),
axis.text.x = element_text(angle=45, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_CD4")
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_FigS6E.pdf"), plot=y, width=5, height=3)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.0001,]
filter_in <- head(unique(merge.results_temp$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("Liver","Tumor"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label=stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_CD4")
ggsave(filename = paste0(pdir, "/GSEA_CD4_T_cells_unbias.pdf"), plot=y, width=15, height=30)
####################Figure 6E#####################################
sub.obj<-subset(obs1, subset= Expansion.NewlablesG =="Shared.CD8 T cells.expanded")
sub.obj<-SetIdent(sub.obj, value = "Orig")
obs1.dge<-FindMarkers(sub.obj, ident.1="Liver.TA33.Combo", ident.2="Liver.TA33", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs2.dge<-FindMarkers(sub.obj, ident.1="Tumor.TA33.Combo", ident.2="Tumor.TA33", min.pct=0.01, logfc.threshold=0, min.cells.feature=1, min.cells.group=1)
obs1.ranks <- obs1.dge$avg_log2FC
obs2.ranks <- obs2.dge$avg_log2FC
names(obs1.ranks) <- rownames(obs1.dge)
names(obs2.ranks) <- rownames(obs2.dge)
res.combo.liver <- fgsea(pathways = miDB_sig4.MLS, stats = obs1.ranks, minSize=0, maxSize=500, eps=0)
res.combo.tumor <- fgsea(pathways = miDB_sig4.MLS, stats = obs2.ranks, minSize=0, maxSize=500, eps=0)
#select columns of interest
res.combo.liver2<-res.combo.liver[,c(1,3,6,8)]
res.combo.tumor2<-res.combo.tumor[,c(1,3,6,8)]
#merge in a single file and save xlsx
merge1 <- merge(x=res.combo.liver2,y=res.combo.tumor2,by="pathway", suffixes = c("-liver", "-tumor"))
setwd(pdir)
write.xlsx(merge1,"GSEA_LandT_SharedexpandedCD8.xlsx",asTable = TRUE,rowNames=T) ####save file
##################GSEA Heatmap of selected#######################################
#rearrange data to plot heatmap
res.combo.liver$origin<-"Liver"
res.combo.tumor$origin<-"Tumor"
# res.OVA$origin<- factor(x = res.OVA$origin, levels = c("OVA.Combo","OVA.Il12","OVA.IFNa","liOVA"))
merge.results<-rbind(res.combo.liver,res.combo.tumor)
#create variable with star for statistic
merge.results$stats <- ifelse(merge.results$padj < 0.0005, "***",
ifelse(merge.results$padj < 0.005, "**",
ifelse(merge.results$padj < 0.05, "*", "")))
#merge.results2 <- merge.results[order(merge.results$padj, decreasing = F)]
#filter_in <- head(unique(merge.results2$pathway), 50)
#merge.results1 <-merge.results[merge.results$pathway %in% filter_in,]
# Manually selected pathways
a1_OLD<-c("Exhaustion_Wherry",
"GOBP_RESPONSE_TO_TYPE_I_INTERFERON",
"GOBP_RESPONSE_TO_INTERFERON_GAMMA",
"GOBP_LEUKOCYTE_MEDIATED_CYTOTOXICITY",
"GOBP_CELL_CYCLE_G2_M_PHASE_TRANSITION",
"GOBP_DEFENSE_RESPONSE_TO_VIRUS",
"GOBP_CELL_KILLING",
"GOBP_POSITIVE_REGULATION_OF_ENDOTHELIAL_CELL_MIGRATION",
"GOBP_VASCULAR_ENDOTHELIAL_GROWTH_FACTOR_SIGNALING_PATHWAY",
"PGE2_RO",
"HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION")
a1<-c("GOBP_RESPONSE_TO_VIRUS",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"HALLMARK_INTERFERON_ALPHA_RESPONSE",
"HALLMARK_E2F_TARGETS",
"GOMF_ANTIGEN_BINDING",
"GOBP_VASCULATURE_DEVELOPMENT",
"LPS_RO",
"GOBP_EPITHELIAL_TO_MESENCHYMAL_TRANSITION",
"GOBP_MESENCHYMAL_CELL_DIFFERENTIATION",
"Exhaustion_Wherry")
# Subset selected pathways
merge.results1 <-merge.results[merge.results$pathway %in% a1,]
# Rename pathways
merge.results1[merge.results1 == "GOBP_RESPONSE_TO_VIRUS"] <- "Response to virus"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_ALPHA_RESPONSE"] <- "Response to IFNa"
merge.results1[merge.results1 == "HALLMARK_INTERFERON_GAMMA_RESPONSE"] <- "Response to IFNg"
merge.results1[merge.results1 == "LPS_RO"] <- "LPS signature from Cilenti et al"
merge.results1[merge.results1 == "HALLMARK_E2F_TARGETS"] <- "E2F targets"
merge.results1[merge.results1 == "GOMF_ANTIGEN_BINDING"] <- "Antigen binding"
merge.results1[merge.results1 == "GOBP_EPITHELIAL_TO_MESENCHYMAL_TRANSITION"] <- "Epithelial to mesenchymal transition"
merge.results1[merge.results1 == "GOBP_MESENCHYMAL_CELL_DIFFERENTIATION"] <- "Mesenchymal cell differentiation"
merge.results1[merge.results1 == "GOBP_VASCULATURE_DEVELOPMENT"] <- "Vasculature development"
merge.results1[merge.results1 == "Exhaustion_Wherry"] <- "Exhaustion signature (Wherry)"
# Order in the way we want to see
merge.results1$pathway <- factor(merge.results1$pathway, levels = rev(c("Response to virus", # rev()?
"Response to IFNa",
"Response to IFNg",
"LPS signature from Cilenti et al",
"E2F targets",
"Antigen binding",
"Epithelial to mesenchymal transition",
"Mesenchymal cell differentiation",
"Vasculature development",
"Exhaustion signature (Wherry)")))
#merge.results1$origin <- factor(x = merge.results1$origin, levels = c("Liver","Tumor"))
# Heatmap
y<-ggplot(merge.results1, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette="RdBu") +
geom_text(aes(label = stats), vjust=0.7, angle=0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color="Black"),
axis.text.x = element_text(angle=45, hjust=1, color="Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black")) +
ggtitle("GSEA_LandT_putative_Tumor_specific")
ggsave(filename = paste0(pdir, "/GSEA_LandT_putative_Tumorspecific_Fig6E.pdf"), plot=y, width=5, height=2.5) #width=5, height=2.5)
# Unbias heatmap
merge.results <- merge.results[order(merge.results$padj, decreasing = F)]
merge.results_temp <-merge.results[merge.results$padj < 0.001,]
#filter_in <- head(unique(merge.results_temp$pathway), 100)
filter_in <- head(unique(merge.results$pathway), 100)
merge.results2 <-merge.results[merge.results$pathway %in% filter_in,]
merge.results2$origin<- factor(x = merge.results2$origin, levels = c("Liver","Tumor"))
y<-ggplot(merge.results2, aes (x=origin, y=pathway, fill=NES)) +
geom_tile() +
scale_fill_distiller(palette = "RdBu") +
geom_text(aes(label = stats), vjust = 0.7,angle = 0) +
labs(y='',x='')+
theme_classic()+
theme(axis.text.y = element_text(color = "Black"), text = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, color = "Black"),
axis.line.x=element_line(color="Black"),
axis.line.y=element_line(color="Black"))
ggtitle("GSEA_LandT_putative_Tumorspecific")
ggsave(filename = paste0(pdir, "/GSEA_LandT_putative_Tumorspecific_unbias.pdf"), plot=y, width=15, height=30)
##################################################################################
#############################ALLUVIAL PLOT########################################
##################################################################################
#####Figure 6C#########
df1 <- obs1@meta.data
df1<-df1[df1$NewlablesG == "CD8 T cells",]
#df2<- na.omit(df1[,c(12,37,38)])
df2<- na.omit(df1[,c("cdr3_aa2","RNA_Group","Tissue")])
for (i in unique(df1$RNA_Group)){
df3 <- df2[df2$RNA_Group==i&df2$Tissue=="Liver",]
df4 <- df2[df2$RNA_Group==i&df2$Tissue=="Tumor",]
df3 <- df3 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
df4 <- df4 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
#df5 <- merge(df3,df4,by=1,suffixes = c(".Liver",".Tumor"))
df6 <- rbind(df3,df4)
df6 <- df6[df6$ClonoFreq>2,]
df6 <- df6[order(df6$cdr3_aa2),]
df6$col1[!duplicated(df6$cdr3_aa2)] <- "#CCCCCC"
Dtests <- duplicated(df6$cdr3_aa2)|duplicated(df6$cdr3_aa2,fromLast = T)
df6$col1 [Dtests] <- "#CC6600" #"#3399FF"
plotA <- ggplot(data = df6,
aes(x = Tissue, y=ClonoFreq,alluvium = cdr3_aa2,stratum= cdr3_aa2)) +
geom_flow(aes(fill = col1),decreasing = F)+
geom_stratum(aes(fill = col1,size=0.2),decreasing = F) +
scale_fill_manual(values = setNames(unique(df6$col), unique(df6$col)))+
theme_bw() + theme(legend.position = "none")+
scale_size_identity()+
ggtitle(i)
nameR <- paste0(i,".plot")
assign(nameR,plotA)}
pdf(paste0(pdir, "/Fluvial.Plot.19.CD8mag2clones_Fig6C.pdf"), width=4, height=2)
grid.arrange(TA33.plot,TA33.Combo.plot, ncol = 2, nrow = 1)
#grid.arrange(sapply(plots.all,get), ncol = 2, nrow = 2)
dev.off()
#####Figure 6G#########
df1 <- obs1@meta.data
df1<-df1[df1$NewlablesG == "CD4 T cells",]
#df2<- na.omit(df1[,c(12,37,38)])
df2<- na.omit(df1[,c("cdr3_aa2","RNA_Group","Tissue")])
for (i in unique(df1$RNA_Group)){
df3 <- df2[df2$RNA_Group==i&df2$Tissue=="Liver",]
df4 <- df2[df2$RNA_Group==i&df2$Tissue=="Tumor",]
df3 <- df3 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
df4 <- df4 %>% group_by(cdr3_aa2) %>% mutate(ClonoFreq = n()) %>% unique() %>% ungroup() %>% as.data.frame()
#df5 <- merge(df3,df4,by=1,suffixes = c(".Liver",".Tumor"))
df6 <- rbind(df3,df4)
df6 <- df6[df6$ClonoFreq>1,]
df6 <- df6[order(df6$cdr3_aa2),]
df6$col1[!duplicated(df6$cdr3_aa2)] <- "#CCCCCC"
Dtests <- duplicated(df6$cdr3_aa2)|duplicated(df6$cdr3_aa2,fromLast = T)
df6$col1 [Dtests] <- "#CC6600" #"#3399FF"
plotA <- ggplot(data = df6,
aes(x = Tissue, y=ClonoFreq,alluvium = cdr3_aa2,stratum= cdr3_aa2)) +
geom_flow(aes(fill = col1),decreasing = F)+
geom_stratum(aes(fill = col1,size=0.2),decreasing = F) +
scale_fill_manual(values = setNames(unique(df6$col), unique(df6$col)))+
theme_bw() + theme(legend.position = "none")+
scale_size_identity()+
ggtitle(i)
nameR <- paste0(i,".plot")
assign(nameR,plotA)}
pdf(paste0(pdir, "/Fluvial.Plot.19.CD4mag1clones_Fig6G.pdf"), width=4, height=2)
grid.arrange(TA33.plot,TA33.Combo.plot, ncol = 2, nrow = 1)
#grid.arrange(sapply(plots.all,get), ncol = 2, nrow = 2)
dev.off()
library(SingleCellExperiment)
library(dplyr)
library(ggplot2)
library(multinichenetr)
#####RELATIVE TO FIGURE 6H#########
#############Prepare files
wdir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM/results3/Result3_MNOT"
setwd(wdir)
all.labels <- readRDS("all.labels.rds")
#####open LIVER Obj
####Prepare files
username <- "C:/Users/notaro.marco/"
username <- "/Users/Squadrito/"
ddir<- paste0(username, "Dropbox (HSR Global)/90-935462466_scRNAseq_NotaroTAD_A019/Analysis_MM/results2cond/Tumor")
setwd(ddir)
obs <- readRDS("Tumor_final.rds")
obs@meta.data$NewlablesM2 <- all.labels[rownames(obs@meta.data)]
obs$sample_id <- paste0(obs$hash.ID, obs$PROP.Condition)
obs@meta.data$NewlablesG <- obs@meta.data$NewlablesM2
obs@meta.data$NewlablesG[grep("CD4",obs@meta.data$NewlablesM2) ] <- "CD4_Tcells"
obs@meta.data$NewlablesG[grep("CD8",obs@meta.data$NewlablesM2)] <- "CD8_Tcells"
obs@meta.data$NewlablesG[grep("DCs",obs@meta.data$NewlablesM2) ] <- "DCs"
###subset
sub.obj<-subset(obs,
subset= NewlablesG == "Macrophages"|
NewlablesG == "DCs"|
NewlablesG == "CD4_Tcells"|
NewlablesG == "CD8_Tcells")
#sub.obj2 <- subset(sub.obj,cells = sample(1:nrow(sub.obj@meta.data),500))
sub.obj2 <- sub.obj
nrow(sub.obj@meta.data)
###Multinichnet
organism = "mouse"
if(organism == "human"){
lr_network = readRDS(url("https://zenodo.org/record/7074291/files/lr_network_human_21122021.rds"))
lr_network = lr_network %>% dplyr::rename(ligand = from, receptor = to) %>% distinct(ligand, receptor) %>% mutate(ligand = make.names(ligand), receptor = make.names(receptor))
ligand_target_matrix = readRDS(url("https://zenodo.org/record/7074291/files/ligand_target_matrix_nsga2r_final.rds"))
colnames(ligand_target_matrix) = colnames(ligand_target_matrix) %>% make.names()
rownames(ligand_target_matrix) = rownames(ligand_target_matrix) %>% make.names()
} else if(organism == "mouse"){
lr_network = readRDS(url("https://zenodo.org/record/7074291/files/lr_network_mouse_21122021.rds"))
lr_network = lr_network %>% dplyr::rename(ligand = from, receptor = to) %>% distinct(ligand, receptor) %>% mutate(ligand = make.names(ligand), receptor = make.names(receptor))
ligand_target_matrix = readRDS(url("https://zenodo.org/record/7074291/files/ligand_target_matrix_nsga2r_final_mouse.rds"))
colnames(ligand_target_matrix) = colnames(ligand_target_matrix) %>% make.names()
rownames(ligand_target_matrix) = rownames(ligand_target_matrix) %>% make.names()
}
obs1 <- Seurat::as.SingleCellExperiment(sub.obj2, assay = "RNA")
obs1 = alias_to_symbol_SCE(obs1, "mouse") %>% makenames_SCE()
celltype_id = "NewlablesG"
group_id = "PROP.Condition"
sample_id = "sample_id"
covariates = NA
batches = NA
senders_oi = SummarizedExperiment::colData(obs1)[,celltype_id] %>% unique()
receivers_oi = SummarizedExperiment::colData(obs1)[,celltype_id] %>% unique()
min_cells = 10
abundance_expression_info = get_abundance_expression_info(sce = obs1,
sample_id = sample_id, group_id = group_id, celltype_id = celltype_id,
min_cells = min_cells, senders_oi = senders_oi,
receivers_oi = receivers_oi, lr_network = lr_network, batches = batches)
abundance_expression_info$abund_plot_sample
contrasts_oi = c("'TA_combo-TA_only','TA_only-TA_combo'")
contrast_tbl = tibble(contrast =
c("TA_combo-TA_only","TA_only-TA_combo"),
group = c("TA_combo","TA_only"))
DE_info = get_DE_info(sce = obs1, sample_id = sample_id,
group_id = group_id, celltype_id = celltype_id,
batches = batches, covariates = covariates,
contrasts_oi = contrasts_oi, min_cells = min_cells)
DE_info$celltype_de$de_output_tidy %>% arrange(p_adj) %>% head()
celltype_de = DE_info$celltype_de$de_output_tidy
sender_receiver_de = combine_sender_receiver_de(
sender_de = celltype_de,
receiver_de = celltype_de,
senders_oi = senders_oi,
receivers_oi = receivers_oi,
lr_network = lr_network)
sender_receiver_de %>% head(20)
logFC_threshold = 0.50
p_val_threshold = 0.05
fraction_cutoff = 0.05
p_val_adj = FALSE
top_n_target = 250
verbose = TRUE
#cores_system = 8
#n.cores = min(cores_system, sender_receiver_de$receiver %>% unique() %>% length()) # use one core per receiver cell type
#takes time
ligand_activities_targets_DEgenes = suppressMessages(suppressWarnings(get_ligand_activities_targets_DEgenes(
receiver_de = celltype_de,
receivers_oi = receivers_oi,
ligand_target_matrix = ligand_target_matrix,
logFC_threshold = logFC_threshold,
p_val_threshold = p_val_threshold,
p_val_adj = p_val_adj,
top_n_target = top_n_target,
verbose = verbose,
n.cores = 1
)))
#prioritazing
prioritizing_weights_DE = c("de_ligand" = 1,
"de_receptor" = 1)
prioritizing_weights_activity = c("activity_scaled" = 2)
prioritizing_weights_expression_specificity = c("exprs_ligand" = 2,
"exprs_receptor" = 2)
prioritizing_weights_expression_sufficiency = c("frac_exprs_ligand_receptor" = 1)
prioritizing_weights_relative_abundance = c( "abund_sender" = 0,
"abund_receiver" = 0)
prioritizing_weights = c(prioritizing_weights_DE,
prioritizing_weights_activity,
prioritizing_weights_expression_specificity,
prioritizing_weights_expression_sufficiency,
prioritizing_weights_relative_abundance)
sender_receiver_tbl = sender_receiver_de %>% dplyr::distinct(sender, receiver)
metadata_combined = SummarizedExperiment::colData(obs1) %>% tibble::as_tibble()
#grouping
if(!is.na(batches)){
grouping_tbl = metadata_combined[,c(sample_id, group_id, batches)] %>% tibble::as_tibble() %>% dplyr::distinct()
colnames(grouping_tbl) = c("sample","group",batches)
} else {
grouping_tbl = metadata_combined[,c(sample_id, group_id)] %>% tibble::as_tibble() %>% dplyr::distinct()
colnames(grouping_tbl) = c("sample","group")}
#run it
prioritization_tables = suppressMessages(generate_prioritization_tables(
sender_receiver_info = abundance_expression_info$sender_receiver_info,
sender_receiver_de = sender_receiver_de,
ligand_activities_targets_DEgenes = ligand_activities_targets_DEgenes,
contrast_tbl = contrast_tbl,
sender_receiver_tbl = sender_receiver_tbl,
grouping_tbl = grouping_tbl,
prioritizing_weights = prioritizing_weights,
fraction_cutoff = fraction_cutoff,
abundance_data_receiver = abundance_expression_info$abundance_data_receiver,
abundance_data_sender = abundance_expression_info$abundance_data_sender
))
prioritization_tables$group_prioritization_tbl %>% head(20)
##known info
lr_target_prior_cor = lr_target_prior_cor_inference(prioritization_tables$group_prioritization_tbl$receiver %>% unique(), abundance_expression_info, celltype_de, grouping_tbl, prioritization_tables, ligand_target_matrix, logFC_threshold = logFC_threshold, p_val_threshold = p_val_threshold, p_val_adj = p_val_adj)
##saving
multinichenet_output = list(
celltype_info = abundance_expression_info$celltype_info,
celltype_de = celltype_de,
sender_receiver_info = abundance_expression_info$sender_receiver_info,
sender_receiver_de = sender_receiver_de,
ligand_activities_targets_DEgenes = ligand_activities_targets_DEgenes,
prioritization_tables = prioritization_tables,
grouping_tbl = grouping_tbl,
lr_target_prior_cor = lr_target_prior_cor
)
multinichenet_output = make_lite_output(multinichenet_output)
seted(wdir)
saveRDS(multinichenet_output, paste0(wdir, "multinichenet_output.Tumor.19.rds"))
##look at top 50
prioritized_tbl_oi_all = get_top_n_lr_pairs(multinichenet_output$prioritization_tables, 50, rank_per_group = FALSE)
prioritized_tbl_oi = multinichenet_output$prioritization_tables$group_prioritization_tbl %>%
filter(id %in% prioritized_tbl_oi_all$id) %>%
distinct(id, sender, receiver, ligand, receptor, group) %>% left_join(prioritized_tbl_oi_all)
prioritized_tbl_oi$prioritization_score[is.na(prioritized_tbl_oi$prioritization_score)] = 0
senders_receivers = union(prioritized_tbl_oi$sender %>% unique(), prioritized_tbl_oi$receiver %>% unique()) %>% sort()
colors_sender = RColorBrewer::brewer.pal(n = length(senders_receivers), name = 'Spectral') %>% magrittr::set_names(senders_receivers)
colors_receiver = RColorBrewer::brewer.pal(n = length(senders_receivers), name = 'Spectral') %>% magrittr::set_names(senders_receivers)
circos_list = make_circos_group_comparison(prioritized_tbl_oi, colors_sender, colors_receiver)
##see interactions
group_oi = "TA_combo"
##plot results
prioritized_tbl_oi_M_50 = get_top_n_lr_pairs(multinichenet_output$prioritization_tables, 50, groups_oi = group_oi)
plot_oi = make_sample_lr_prod_activity_plots(multinichenet_output$prioritization_tables, prioritized_tbl_oi_M_50)
plot_oi
##see interactions
group_oi = "TA_only"
##plot results
prioritized_tbl_oi_M_50 = get_top_n_lr_pairs(multinichenet_output$prioritization_tables, 50, groups_oi = group_oi)
plot_oi = make_sample_lr_prod_activity_plots(multinichenet_output$prioritization_tables, prioritized_tbl_oi_M_50)
plot_oi
sessionInfo()
suppressPackageStartupMessages(library(Seurat))
options(Seurat.object.assay.version = "v5")
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(openxlsx))
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(plyr))
wd <- "/beegfs/scratch/ric.squadrito/ric.squadrito/202312011215_VMSC10702-NotaroTAD_A019/Analysis_MM/python_scripts/circles"
setwd(wd)
args <- commandArgs(trailingOnly = TRUE)
sample <- args[1] # "M18", "M21", "M40", "M41"
#sample <- "M18"
out_dir <- paste0(wd, "/distance_table")
dir.create(out_dir, showWarnings = F, recursive = T)
#####################
# Define a function to calculate Euclidean distance
euclidean_dist <- function(x1, y1, x2, y2) {
return(sqrt((x1 - x2)^2 + (y1 - y2)^2))
}
#####################
detected_transcripts <- read.csv(file=paste0(wd, "/detected_transcripts_", sample, ".csv"), header = T, numerals = c("no.loss"))
# "global_x" and "global_y" give the position in um, x and y in pixels: https://vizgen.github.io/vizgen-postprocessing/output_data_formats/detected_transcripts_format.html
df_molecules <- detected_transcripts[c("gene", "global_x", "global_y", "cell_id")]
colnames(df_molecules) <- c("gene", "x", "y", "cell_id")
rm(detected_transcripts)
# Remove transcripts without cell_id
nrow(df_molecules)
df_molecules <- df_molecules %>% filter(! df_molecules$gene %in% grep(x = df_molecules$gene, pattern = "Blank", value = T))
nrow(df_molecules)
df_molecules <- df_molecules[df_molecules$cell_id != "-1",] # It might be possible to include transcripts outside the cells but the results appear similar
nrow(df_molecules)
# M18 transcripts: 4263642 => 4242609 => 3254954
# M21 transcripts: 3508195 => 3490821 => 2430395
# M40 transcripts: 2017821 => 2001106 => 1449746
# M41 transcripts: 4510227 => 4494444 => 3030891
# Number of genes
n_genes <- 500
# Define the distance threshold. Default d=30um
d <- 30
# SelectedGenes contains the list of genes manually selected to identify specific cell types.
# It is possible to run the analysis with all the 500 genes but it takes much more time (5-10 days).
SelectedGenes <- unique(c("S100a6", "Klf4", "Anxa2", "Cdkn2a", "Vim",
# Antigen presentation
"Ciita", "H2-DMb1", "H2-Aa", "H2-Ab1",
# Macrophages
"Clec4f", "C1qa", "Marco",
# T cell activation
"Trac", "Cd3e", "Klf2", "Sell", "Il2rb", "Stat1","Ccr5", "Il12rb1", "Cd40",
# IFN
"Irf1", "Isg15", "Ifit2", "Cxcl9","Il18r1",
# Protumoral
"Serpine1","Cebpb","Pdgfb","Lrg1","Id2", "Vegfa", "Il1r1", "Cd274", "Tgfb1")) # Cd81
df_molecules <- df_molecules[df_molecules$gene %in% SelectedGenes,]
# subset to have a smaller dataframe. This is used mostly for benchmarking and testing
#df_molecules <- df_molecules[df_molecules$gene %in% head(genes_ID, n_genes),]
# Get the unique gene ID
genes_ID <- unique(df_molecules$gene)
# Sort genes_ID
genes_ID <- sort(genes_ID, decreasing=F)
n_genes <- length(genes_ID) # 500
# Initialize an empty distance matrix
distance_matrix <- matrix(nrow = length(genes_ID), ncol = length(genes_ID), 0)
distance_matrix_norm <- matrix(nrow = length(genes_ID), ncol = length(genes_ID), 0)
colnames(distance_matrix) <- genes_ID
rownames(distance_matrix) <- genes_ID
colnames(distance_matrix_norm) <- genes_ID
rownames(distance_matrix_norm) <- genes_ID
# Loop through each gene type combination
for (i in 1:length(genes_ID)) { # 1:length(genes_ID) or 1:n_genes
print(i)
gene_A <- genes_ID[i]
# Filter transcripts for gene A
transcripts_A <- df_molecules[df_molecules$gene == gene_A,]
for (j in 1:length(genes_ID)) { # (i + 1):length(genes_ID)) or 1:n_genes
gene_B <- genes_ID[j]
# Filter transcripts for gene B
transcripts_B <- df_molecules[df_molecules$gene == gene_B,]
# Initialize counters for close and not close transcripts
close_count <- 0
# Loop through transcripts in transcripts_A
for (z in 1:nrow(transcripts_A)) {
a_x <- transcripts_A$x[z]
a_y <- transcripts_A$y[z]
# filter to retain only transcripts_B that are not in the same cell as the transcripts_A analysed. This speed up the script.
transcripts_B_temp <- transcripts_B[transcripts_B$cell_id != transcripts_A$cell_id[z],]
# If you include also transcripts outside the cells add the following lines
#if (transcripts_A$cell_id[z] != "-1") {
# transcripts_B_temp <- transcripts_B[transcripts_B$cell_id != transcripts_A$cell_id[z],]}
#else{transcripts_B_temp <- transcripts_B}
# filter to retain only transcripts_B that are close to the transcripts_A analysed. This speed up the script. It looks only in a square of l=1.1*1.1*2d.
transcripts_B_temp <- transcripts_B_temp[transcripts_B_temp$x > a_x - 1.1*d & transcripts_B_temp$x < a_x + 1.1*d,]
transcripts_B_temp <- transcripts_B_temp[transcripts_B_temp$y > a_y - 1.1*d & transcripts_B_temp$y < a_y + 1.1*d,]
is_close <- FALSE # Flag to track if a close transcript is found
if (nrow(transcripts_B_temp)==0){next} # This transcript of A is not close to any transcript of B
# Loop through transcripts in transcripts_B
for (w in 1:nrow(transcripts_B_temp)) {
b_x <- transcripts_B_temp$x[w]
b_y <- transcripts_B_temp$y[w]
# Calculate distance
distance <- euclidean_dist(a_x, a_y, b_x, b_y)
# Check if distance is less than threshold
if (distance < d) {
is_close <- TRUE
break # Exit inner loop if close transcript found
}
}
# Update counters based on the flag
if (is_close) {
close_count <- close_count + 1
}
}
# Fill the distance matrix. Note: The matrix is not perfectly symmetrical because more A molecules can be close to the same B molecule and viceversa
distance_matrix[i, j] <- close_count
# Normalize for the sum of transcripts A and B.
# Note: I multiplied close_count * 2 because each transcript-transcript interaction involves two transcripts.
distance_matrix_norm[i, j] <- round(close_count*2/((nrow(transcripts_A)+nrow(transcripts_B))),5)
}
}
# Print the distance matrix
print(distance_matrix)
print(distance_matrix_norm)
# Save the matrix
write.csv(distance_matrix, paste0(out_dir, "/", sample, "_transcripts_distance_matrix_inCell_t", d, "_g", n_genes, "_selected.csv"), row.names=T)
write.csv(distance_matrix_norm, paste0(out_dir, "/", sample, "_transcripts_distance_matrix_norm_inCell_t", d, "_g", n_genes, "_selected.csv"), row.names=T)
suppressPackageStartupMessages(library(pheatmap))
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(openxlsx))
suppressPackageStartupMessages(library(RColorBrewer))
wd <- "/beegfs/scratch/ric.squadrito/ric.squadrito/202312011215_VMSC10702-NotaroTAD_A019/Analysis_MM/python_scripts/circles"
setwd(wd)
# M21 and M40 are TA_Only and M18 and M41 are TA_Combo
sample <- "M18" # "M18", "M21", "M40", "M41"
# Define the distance threshold. Default d=30um
d <- 30 # 10 or 30
inCell <- "inCell_" # "inCell_" or ""
# _transcripts_distance_matrix_t30_g500.csv _transcripts_distance_matrix_inCell_t10_g500-2.csv _transcripts_distance_matrix_post_t30_g500.csv
td_matrix_norm <- read.csv(paste0(wd, "/distance_table/", sample, "_transcripts_distance_matrix_norm_", inCell, "t", d, "_g35_selected.csv"))
plot_dir <- paste0(wd, "/distance_table/selected/")
dir.create(plot_dir, showWarnings=F, recursive=T)
td_matrix_norm$X <- NULL
genes <- colnames(td_matrix_norm)
H2_genes <- genes[grep(x = genes, pattern = "H2")]
H2_genes_modified <- gsub("\\.", "-", H2_genes) # replace "." with "-"
# Change the column names of the genes that start with H2...
#colnames(td_matrix_norm[H2_genes]) <- H2_genes_modified
genes <- gsub("\\.", "-", genes) # replace "." with "-"
colnames(td_matrix_norm) <- genes
rownames(td_matrix_norm) <- genes
td_matrix_norm$X <- NULL
colnames(td_matrix_norm) <- genes
rownames(td_matrix_norm) <- genes
#Cancer cell signature from top genes
SelectedGenes <- unique(c("S100a6", "Klf4", "Anxa2", "Cdkn2a", "Vim",
#antigen presentation
"Ciita", "H2-DMb1", "H2-Aa", "H2-Ab1",
#Macrophages
"Clec4f", "C1qa", "Marco",
#T cell activation
"Trac", "Cd3e", "Klf2", "Sell", "Il2rb", "Stat1","Ccr5", "Il12rb1", "Cd40",
#IFN
"Irf1", "Isg15", "Ifit2", "Cxcl9","Il18r1",
#protumoral
"Serpine1","Cebpb","Pdgfb","Lrg1","Id2", "Vegfa", "Il1r1", "Cd274", "Tgfb1")) # Cd81
SelectedGenes_ann <- c("Cancer genes", "Cancer genes", "Cancer genes", "Cancer genes", "Cancer genes",
#antigen presentation
"MHCI", "MHCI", "MHCI", "MHCI",
#Macrophages
"Macs", "Macs","Macs",
#T cell activation
"T cell activation", "T cell activation", "T cell activation", "T cell activation", "T cell activation", "T cell activation","T cell activation", "T cell activation", "T cell activation",
#IFN
"IFN", "IFN", "IFN", "IFN","IFN",
#Protumoral
"Protumoral","Protumoral","Protumoral","Protumoral","Protumoral","Protumoral","Protumoral","Protumoral","Protumoral")
gene_annotation <- data.frame(annotation = SelectedGenes_ann)
row.names(gene_annotation) <- SelectedGenes
signature_levels <- c("Cancer genes", "MHCI", "Macs", "T cell activation", "IFN", "Protumoral")
gene_annotation$annotation <- factor(gene_annotation$annotation, levels = signature_levels, ordered = T)
td_matrix_norm_selected <- td_matrix_norm[SelectedGenes, SelectedGenes]
pheatmap(td_matrix_norm_selected, cluster_rows = F, cluster_cols = F, na_col = "grey", scale = "none",
filename = paste0(plot_dir, sample, "_transcripts_distance_matrix_norm_", inCell, "d", d, "_selected.pdf"), width = 15, height = 15,
fontsize=9, annotation_col = gene_annotation, annotation_row = gene_annotation)
# Compare two samples
# M21 and M40 are TA_Only and M18 and M41 are TA_Combo
sample2 <- "M21" # "M18", "M21", "M40", "M41"
td_matrix_norm_S2 <- read.csv(paste0(wd, "/distance_table/", sample2, "_transcripts_distance_matrix_norm_", inCell, "t", d, "_g35_selected.csv"))
td_matrix_norm_S2$X <- NULL
colnames(td_matrix_norm_S2) <- genes
rownames(td_matrix_norm_S2) <-genes
# Combine the two samples by subtracting the two matrices
td_matrix_norm_S1_S2 <- td_matrix_norm - td_matrix_norm_S2
td_matrix_norm_selected_S1_S2 <- td_matrix_norm_S1_S2[SelectedGenes, SelectedGenes]
# Plot the results
paletteLength <- 50
myColor <- colorRampPalette(c("blue", "white", "red"))(paletteLength)
# Use floor and ceiling to deal with even/odd length pallettelengths
MIN <- min(td_matrix_norm_selected_S1_S2[!is.na(td_matrix_norm_selected_S1_S2)])
MAX <- max(td_matrix_norm_selected_S1_S2[!is.na(td_matrix_norm_selected_S1_S2)])
myBreaks <- c(seq(MIN, 0, length.out=ceiling(paletteLength/2) + 1),
seq(MAX/paletteLength, MAX, length.out=floor(paletteLength/2)))
pheatmap(td_matrix_norm_selected_S1_S2, cluster_rows = F, cluster_cols = F, na_col = "grey", scale = "none",
filename = paste0(plot_dir, sample, "_", sample2, "_transcripts_distance_matrix_norm_", inCell, "d", d, "_selected.pdf"), width = 15, height = 15,
fontsize=9, annotation_col = gene_annotation, annotation_row = gene_annotation, color = myColor, breaks = myBreaks)
library(openxlsx)
library(dplyr)
library(readxl)
library(psych)
library(data.table)
library(GGally)
library(ggplot2)
library(ggpubr)
library(ggrepel)
#WDs
MNOT.gar<-"C:/Users/notaro.marco/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/"
MNOT.pvac<-"C:/Users/notaro.marco/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/pvacseq_mouse/MHC_Class_I"
MNOT.wd1<-"C:/Users/notaro.marco/Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/03-aln_GRCm38/"
#WD MLS
#MNOT.gar<-"/Users/Squadrito/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38"
#MNOT.pvac<-"/Users/Squadrito/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/pvacseq_mouse/MHC_Class_I"
#MNOT.wd1<-"/Users/Squadrito/Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/03-aln_GRCm38"
#define filtering functions
filter_data_common <- function(df, a1, a2, a3, a4, a5, a6, a7, a8) {
subset(df, (Ensemble_score <= a1 | is.na(Ensemble_score)) &
(IC50.MT <= a2 | is.na(IC50.MT)) &
(DAI >= a3 | is.na(DAI)) &
(agretopicity <= a4 | is.na(agretopicity)) &
(average_vivo >= a5 | is.na(average_vivo)) &
(average_vitro >= a6 | is.na(average_vitro)) &
(dissimilarity >= a7 | is.na(dissimilarity)) &
(foreignness_score >= a8 | is.na(foreignness_score)))
}
filter_data_garnish <- function(df, a1, a3, a5, a6, a7, a8) {
subset(df, (Ensemble_score <= a1 | is.na(Ensemble_score)) &
(DAI >= a3 | is.na(DAI)) &
(average_vivo >= a5 | is.na(average_vivo)) &
(average_vitro >= a6 | is.na(average_vitro)) &
(dissimilarity >= a7 | is.na(dissimilarity)) &
(foreignness_score >= a8 | is.na(foreignness_score)))
}
filter_data_pvac <- function(df, a2, a4, a5, a6, a7, a8) {
subset(df,(IC50.MT <= a2 | is.na(IC50.MT)) &
(agretopicity <= a4 | is.na(agretopicity)) &
(average_vivo >= a5 | is.na(average_vivo)) &
(average_vitro >= a6 | is.na(average_vitro)) &
(dissimilarity >= a7 | is.na(dissimilarity)) &
(foreignness_score >= a8 | is.na(foreignness_score)))
}
##Garnish
#carica la tabella di antigengarnish
setwd(MNOT.gar)
data_garnish<- fread("ant_garnish_res_AKTPFV3only_filt_coding.tsv", sep = "\t", header = TRUE)
###pvac
setwd(MNOT.pvac)
data_pvac <- read_excel("pvac_seq.xlsx")
#Common
common.pep.pvac<-unique(data_pvac$Best.Peptide)
common.pep.garnish<-unique(data_garnish$nmer)
common.pep<-intersect(common.pep.pvac,common.pep.garnish)
data_pvac2<-subset(data_pvac,Best.Peptide%in%common.pep)
data_pvac3<-data_pvac2 %>%
group_by(Best.Peptide) %>%
slice(which.min(IC50.MT))
data_garnish2<-subset(data_garnish,nmer%in%common.pep)
data_garnish3<-data_garnish2 %>%
group_by(nmer_uuid) %>%
slice(which.min(Ensemble_score))
data.common<-merge(data_pvac3,data_garnish3, by.x = "Best.Peptide", by.y= "nmer")
#ADD expression
setwd(MNOT.wd1)
count_tpm <- read_excel("featureCounts_results_tpm.xlsx")
#average expression level to pply filtering
count_tpm$average_vitro<-apply(count_tpm[,7:9],1,function(x)mean(x))
#sum(count_tpm$average_vitro==0)
count_tpm$average_vitro[apply(count_tpm[,7:9],1,function(x)mean(x)*min(x))==0]<-0
count_tpm$average_vivo<-apply(count_tpm[,10:12],1,function(x)mean(x))
#sum(count_tpm$average_vivo==0)
count_tpm$average_vivo[apply(count_tpm[,10:12],1,function(x)mean(x)*min(x))==0]<-0
merged.exp<-merge(data.common,count_tpm[,c("Geneid","average_vivo","average_vitro")], by.x = "Gene",by.y="Geneid")
merged.df<-merged.exp #1244
merged.df[,c(22)]<-as.numeric(as.character(merged.df[,c(22)]))
merged.df[,c(24)]<-as.numeric(as.character(merged.df[,c(24)]))
merged.df$dissimilarity.x[is.na(merged.df$dissimilarity.x)] <- 0
merged.df$foreignness_score.x[is.na(merged.df$foreignness_score.x)] <- 0
merged.df$dissimilarity<-merged.df$dissimilarity.x
merged.df$foreignness_score<-merged.df$foreignness_score.x
#FILTERING common based on expr and foreigness
a1<-quantile(merged.df$Ensemble_score, 0.2) #minor 0.4
a2<-quantile(merged.df$IC50.MT, 1) #minor 0.4
a3<-quantile(merged.df$DAI, 0,na.rm=T) #higher 0.4
a4<-quantile(merged.df$agretopicity, 1) #minor 0.6
a5<-quantile(merged.df$average_vivo, 0.80) #higher 90
a6<-quantile(merged.df$average_vitro, 0.90) #higher 95
a7<-quantile(merged.df$dissimilarity, 0) #higher
a8<-quantile(merged.df$foreignness_score, 0.5) #higher
data_filter1<-filter_data_common(merged.df,a1,a2,a3,a4,a5,a6,a7,a8)
db1 <- data_filter1[,c(1,2,3,6,10,11,131,12,132,138,139,140,141)]
db1$type <- "exp-foreigness"
db1
#FILTERING common based on IC50,Agretopicity
a1<-quantile(merged.df$Ensemble_score, 0.12) #minor
a2<-quantile(merged.df$IC50.MT, 0.12) #minor
a3<-quantile(merged.df$DAI, 0.2,na.rm=T) #higher
a4<-quantile(merged.df$agretopicity, 0.1) #minor
a5<-quantile(merged.df$average_vivo, 0.50) #higher
a6<-quantile(merged.df$average_vitro, 0.60) #higher
a7<-quantile(merged.df$dissimilarity, 0) #higher
a8<-quantile(merged.df$foreignness_score, 0.0) #higher
data_filter2<-filter_data_common(merged.df,a1,a2,a3,a4,a5,a6,a7,a8)
db2 <- data_filter2[,c(1,2,3,6,10,11,131,12,132,138,139,140,141)]
db2$type <- "IC50-agretopicity"
db2
#FILTERING common based on expression and IC50
a1<-quantile(merged.df$Ensemble_score, 0.3) #minor
a2<-quantile(merged.df$IC50.MT, 0.3) #minor
a3<-quantile(merged.df$DAI, 0.4,na.rm=T) #higher
a4<-quantile(merged.df$agretopicity, 0.6) #minor
a5<-quantile(merged.df$average_vivo, 0.90) #higher
a6<-quantile(merged.df$average_vitro, 0.95) #higher
a7<-quantile(merged.df$dissimilarity, 0) #higher
a8<-quantile(merged.df$foreignness_score, 0.0) #higher
data_filter3<-filter_data_common(merged.df,a1,a2,a3,a4,a5,a6,a7,a8)
db3 <- data_filter3[,c(1,2,3,6,10,11,131,12,132,138,139,140,141)]
db3$type <- "IC50-exp"
db3
common.sel<- rbind(db1,db2,db3)
common.sel<-common.sel %>% group_by(Best.Peptide) %>%
slice(which.min(Ensemble_score))
#top scoring in garnish
#take only garnish not present in common
garnish.only<- subset(data_garnish, !(nmer %in% common.pep))
#ADD expression
garnish.only<-merge(garnish.only,count_tpm[,c("Geneid",
"average_vivo","average_vitro")], by.x = "gene",by.y="Geneid")
#rimuovi peptidi wt,più lunghi di 10aa, multipli e di frame diversi, tiene solo quelli con ensemble score piu alto
garnish.only<- subset(garnish.only, pep_type != "wt")
garnish.only<-subset(garnish.only, nmer_l<= 10 )
garnish.only<-garnish.only %>%
group_by(nmer_uuid) %>%
slice(which.min(Ensemble_score))
garnish.only <- garnish.only %>%
group_by(var_uuid) %>%
slice(which.min(Ensemble_score))
garnish.only$foreignness_score[is.na(garnish.only$foreignness_score)]<-0
#FILTERING garnish based on Enseble score
a1<-quantile(garnish.only$Ensemble_score, 0.01) #minor
a3<-quantile(garnish.only$DAI, 0.5,na.rm=T) #higher
a5<-quantile(garnish.only$average_vivo, 0.40) #higher
a6<-quantile(garnish.only$average_vitro, 0.40) #higher
a7<-quantile(garnish.only$dissimilarity, 0 ,na.rm=T ) #higher
a8<-quantile(garnish.only$foreignness_score, .8,na.rm=T ) #higher
data_filter1<-filter_data_garnish(garnish.only,a1,a3,a5,a6,a7,a8)
db1<-data_filter1[,c(1,2,9,10,12,13,57,108,109,111,113,115,116)]
db1$type <- "Escore"
#FILTERING garnish based on expression
a1<-quantile(garnish.only$Ensemble_score, 0.1) #minor
a3<-quantile(garnish.only$DAI, 0.5,na.rm=T) #higher
a5<-quantile(garnish.only$average_vivo, 0.90) #higher
a6<-quantile(garnish.only$average_vitro, 0.95) #higher
a7<-quantile(garnish.only$dissimilarity, 0 ,na.rm=T ) #higher
a8<-quantile(garnish.only$foreignness_score, .8,na.rm=T ) #higher
data_filter2<-filter_data_garnish(garnish.only,a1,a3,a5,a6,a7,a8)
db2<-data_filter2[,c(1,2,9,10,12,13,57,108,109,111,113,115,116)]
db2$type <- "expression"
garnish.sel<- rbind(db1,db2)
garnish.sel<-garnish.sel %>% group_by(nmer) %>%
slice(which.min(Ensemble_score))
#top scoring in pvac
#take only pvac not present in common
pvac.only<- subset(data_pvac, !(Best.Peptide %in% common.pep))
#ADD expression
pvac.only<-merge(pvac.only,count_tpm[,c("Geneid",
"average_vivo","average_vitro")], by.x = "Gene",by.y="Geneid")
pvac.only$nmer_l<-nchar(pvac.only$Best.Peptide)
pvac.only$foreignness_score<-as.numeric(pvac.only$foreignness_score)
pvac.only$foreignness_score[is.na(pvac.only$foreignness_score)]<-0
#FILTERING pvac based on IC50
a2<-quantile(pvac.only$IC50.MT, 0.2) #minor
a4<-quantile(pvac.only$agretopicity, 0.2) #minor
a5<-quantile(pvac.only$average_vivo, 0.2) #higher
a6<-quantile(pvac.only$average_vitro, 0.2) #higher
a7<-quantile(pvac.only$dissimilarity, 0) #higher
a8<-quantile(pvac.only$foreignness_score, 0) #higher
data_filter1<-filter_data_pvac(pvac.only,a2,a4,a5,a6,a7,a8)
db1<-data_filter1[,c(1,2,3,6,10,11,25,26,22,24)]
db1$type <- "IC50"
#FILTERING pvac based on expression
a2<-quantile(pvac.only$IC50.MT, .5) #minor
a4<-quantile(pvac.only$agretopicity, 1) #minor
a5<-quantile(pvac.only$average_vivo, 0.80) #higher
a6<-quantile(pvac.only$average_vitro, 0.90) #higher
a7<-quantile(pvac.only$dissimilarity, 0) #higher
a8<-quantile(pvac.only$foreignness_score, 0) #higher
data_filter2<-filter_data_pvac(pvac.only,a2,a4,a5,a6,a7,a8)
db2<-data_filter2[,c(1,2,3,6,10,11,25,26,22,24)]
db2$type <- "exp"
pvac.sel<- rbind(db1,db2)
pvac.sel<-pvac.sel %>%
group_by(Best.Peptide) %>%
slice(which.min(IC50.MT))
#length of nmer in original db
windows()
par(mfrow=c(3,1))
hist(garnish.only$nmer_l,xlim=c(8,12))
hist(merged.df$nmer_l,xlim=c(8,12))
hist(pvac.only$nmer_l,xlim=c(8,12))
#length of selected nmer
pvac.sel$nmer_l<-nchar(pvac.sel$Best.Peptide)
common.sel$nmer_l<-nchar(common.sel$Best.Peptide)
garnish.sel$nmer_l<-nchar(garnish.sel$nmer)
windows()
par(mfrow=c(3,1))
hist(garnish.sel$nmer_l,xlim=c(8,12))
hist(common.sel$nmer_l,xlim=c(8,12))
hist(pvac.sel$nmer_l,xlim=c(8,12))
#FINAL MERGE of selected adding origin
common.sel$origin<-"common"
garnish.sel$origin<-"garnish"
pvac.sel$origin<-"pvac"
colnames(common.sel)[1:3]<-c("gene","nmer","ID")
colnames(pvac.sel)[c(1,2)]<-c("gene","nmer")
db.All <- merge(garnish.sel,merge(common.sel,pvac.sel,all=TRUE),all=T)
# Crea un nuovo file Excel e salva il dataframe
setwd(MNOT.gar)
write.xlsx(db.All,"FinalTable.xlsx")
#########################################################################################
#####################ENDS HERE###########################################################
###########################################################################################
#plots
FINAL_LIST_PEP <- read_excel("C:/Users/notaro.marco/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/FINAL_LIST_PEP.xlsx")
windows()
par(mfrow=c(4,2))
db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$Ensemble_score),]
plot.ecdf((merged.df$Ensemble_score),main="Ensemble_score", xlab=(""))
abline(v=(FINAL_LIST_PEP$Ensemble_score),col="red")
db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$IC50.MT),]
plot.ecdf((merged.df$IC50.MT),main="IC50.MT", xlab=(""))
abline(v=(FINAL_LIST_PEP$IC50.MT),col="red")
db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$foreignness_score),]
plot.ecdf(merged.df$foreignness_score,main="foreigness_score", xlab=(""))
abline(v=FINAL_LIST_PEP$foreignness_score,col="red")
#db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$DAI),]
#plot.ecdf((merged.df$DAI+0.1),main="DAI")
#abline(v=(db.ES$DAI+0.1),col="red")
db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$agretopicity),]
plot.ecdf((merged.df$agretopicity+0.01),main="agretopicity", xlab=(""))
abline(v=(FINAL_LIST_PEP$agretopicity+0.01),col="red")
db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$average_vitro),]
plot.ecdf((merged.df$average_vitro+0.00001),main="average_vitro", xlab=(""))
abline(v=(FINAL_LIST_PEP$average_vitro+0.00001),col="red")
db.ES<- FINAL_LIST_PEP[!is.na(FINAL_LIST_PEP$average_vivo),]
plot.ecdf((merged.df$average_vivo+0.00001),main="average_vivo", xlab=(""))
abline(v=(FINAL_LIST_PEP$average_vivo+0.00001),col="red")
#gg plots
windows()
par(mfrow=c(2,2))
p<- ggplot(merged.df, aes(IC50.MT)) +
geom_line(stat = "ecdf")+
geom_point(stat="ecdf",size=2) +
geom_vline(xintercept=FINAL_LIST_PEP$IC50.MT, colour = "red")
p
#histos
windows()
par(mfrow=c(2,2))
hist(merged.df$IC50.MT, breaks = 100, xlab="IC50", main ="IC50")
abline(v=(FINAL_LIST_PEP$IC50.MT),col="black")
hist(log10(merged.df$average_vivo), breaks = 100, xlab="Average expression (log TPM)", main ="Log TPM")
abline(v=(log10(FINAL_LIST_PEP$average_vivo)),col="black")
hist(merged.df$agretopicity, xlab="Agretopicity", main ="Agretopicity")
abline(v=(FINAL_LIST_PEP$agretopicity),col="red")
hist(merged.df$foreignness_score, xlab="Foreigness", main ="Foreigness")
abline(v=(FINAL_LIST_PEP$foreignness_score),col="red")
#corr
windows()
par(mfrow=c(2,2))
p<-ggscatter(merged.df, x = "IC50.MT", y = "average_vivo",
cor.coef = TRUE, cor.method = "pearson",
xlab = "IC50", ylab = "log10 TPM",
color= "black", fill='grey', shape=21, size=5)+
scale_y_log10()+
scale_x_log10()+
geom_vline(xintercept=1000, colour = "red",linetype = "dashed")+
geom_hline(yintercept=10, colour = "red",linetype = "dashed")+
geom_point(data=FINAL_LIST_PEP, fill= "green",color="black", , shape=21, size=5)+
grids(linetype = "dashed")+
geom_text_repel(
data = FINAL_LIST_PEP,
aes(label = gene),
size = 5,
box.padding = unit(0.35, "lines"),
point.padding = unit(0.3, "lines")
)
p
windows()
par(mfrow=c(2,2))
p<-ggscatter(merged.df, x = "foreignness_score", y = "agretopicity",
cor.coef = TRUE, cor.method = "pearson",
xlab = "Foreigness", ylab = "Agretopicity",
color= "black", fill='grey', shape=21, size=5)+
scale_y_log10()+
scale_x_log10()+
geom_point(data=FINAL_LIST_PEP, fill= "green",color="black", , shape=21, size=5)+
grids(linetype = "dashed")+
geom_text_repel(
data = FINAL_LIST_PEP,
aes(label = gene),
size = 5,
box.padding = unit(0.35, "lines"),
point.padding = unit(0.3, "lines")
)
p
library(openxlsx)
library(dplyr)
library(readxl)
library(psych)
library(data.table)
library(tidyr)
library(stringr)
library(R.utils)
#WDs
MNOT.gar<-"C:/Users/notaro.marco/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/"
MNOT.pvac<-"C:/Users/notaro.marco/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/pvacseq_mouse/MHC_Class_I"
MNOT.wd1<-"C:/Users/notaro.marco/Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/03-aln_GRCm38/"
#MLS
MNOT.gar<-"/Users/Squadrito/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38"
MNOT.pvac<-"/Users/Squadrito/Dropbox (HSR Global)/90-756147447_WES_Squadrito/WES_07-diff_GRCm38/pvacseq_mouse/MHC_Class_I"
MNOT.wd1<-"/Users/Squadrito/Dropbox (HSR Global)/90-756142658_RNAseq_Squadrito/03-aln_GRCm38"
mappa_completa <- c("Ala" = "A", "Arg" = "R", "Asn" = "N", "Asp" = "D", "Cys" = "C",
"Gln" = "Q", "Glu" = "E", "Gly" = "G", "His" = "H", "Ile" = "I",
"Leu" = "L", "Lys" = "K", "Met" = "M", "Phe" = "F", "Pro" = "P",
"Ser" = "S", "Thr" = "T", "Trp" = "W", "Tyr" = "Y", "Val" = "V")
##Garnish
#carica la tabella di antigengarnish
#setwd(MNOT.gar)
#data_garnish<- fread("ant_garnish_res_AKTPFV3only_filt_coding.tsv.gz", sep = "\t", header = TRUE)
#clean garnish
#data_garnish<-subset(data_garnish, effect_type == "missense_variant")
#data_garnish<- subset(data_garnish, pep_type != "wt")
#saveRDS(data_garnish,"data_garnish.rds")
data_garnish<-readRDS("data_garnish.rds")
#create protein_pos column
data_garnish <- separate(data_garnish, Protein_position_Protein_len,
into = c("Protein_pos", "Protein_length"), sep = "/")
data_garnish$Protein_pos<-as.numeric(as.character(data_garnish$Protein_pos))
#calculate distance from previous mutation in the same gene, take only mutation that are nearby in the protein (distance<10)
data_garnish2<-data_garnish[,c(50,7,60,57,67)]
data_garnish2 <- unique(data_garnish2)
double_mut <- data_garnish2[order(data_garnish2$transcript_id, data_garnish2$Protein_pos),]
double_mut$next_position1 <- c(double_mut$Protein_pos[-1],NA)
double_mut$next_gene1 <- c(double_mut$transcript_id[-1],NA)
double_mut$next_mut1 <- c(double_mut$protein_change[-1],NA)
double_mut$distance1 <- ifelse(double_mut$transcript_id == double_mut$next_gene1,
double_mut$next_position1-double_mut$Protein_pos, NA)
#genes with 3 concatenate mutations
df1<-double_mut
remove_rows<- c(-1,-2)
df2<- df1[order(df1$transcript_id, df1$Protein_pos),]
df2$next_position2 <- c(df2$Protein_pos[remove_rows],NA,NA)
df2$next_gene2 <- c(df2$transcript_id[remove_rows],NA,NA)
df2$next_mut2 <- c(df2$protein_change[remove_rows],NA,NA)
df2$distance2 <- ifelse(df2$transcript_id == df2$next_gene2,
df2$next_position2 - df2$Protein_pos, NA)
#transcripts with 4 concatenate mutations
remove_rows<- c(-1,-2,-3)
df3<- df2[order(df2$transcript_id, df2$Protein_pos),]
df3$next_position3 <- c(df2$Protein_pos[remove_rows],NA,NA,NA)
df3$next_gene3 <- c(df2$transcript_id[remove_rows],NA,NA,NA)
df3$next_mut3 <- c(df2$protein_change[remove_rows],NA,NA,NA)
df3$distance3 <- ifelse(df3$transcript_id == df3$next_gene3,
df3$next_position3 - df3$Protein_pos, NA)
#transcripts with 5 concatenate mutations
remove_rows<- c(-1,-2,-3,-4)
df4<- df3[order(df3$transcript_id, df3$Protein_pos),]
df4$next_position4 <- c(df3$Protein_pos[remove_rows],NA,NA,NA,NA)
df4$next_gene4 <- c(df3$transcript_id[remove_rows],NA,NA,NA,NA)
df4$next_mut4 <- c(df3$protein_change[remove_rows],NA,NA,NA,NA)
df4$distance4 <- ifelse(df4$transcript_id == df4$next_gene4,
df4$next_position4 - df4$Protein_pos, NA)
#Apply filters
pep01 <- df4 %>% filter(distance1 <= 10 & distance1 >0 &
(is.na(distance2)|distance2>10|
(distance2==distance1 & (is.na(distance3)|distance3>10))))
pep02 <- df4 %>% filter(distance1 == 0 & distance2 <= 10 & distance2 > 0 &
(is.na(distance3)|distance3 > 10|
(distance3 == distance2 & (is.na(distance4)|distance4 > 10))))
pep012 <- df4 %>% filter(distance1 <= 10 & distance1 >0 &
distance2 <= 10 & distance2 >0 &
distance1!=distance2 &
(is.na(distance3)|distance3>10|
(distance3==distance2 & (is.na(distance4)|distance4>10))))
pep013 <- df4 %>% filter(distance1 <= 10 & distance1 >0 &
distance1==distance2 &
distance3 <= 10 & distance3 >0 &
(is.na(distance4)|distance4>10|distance4==distance3))
pep0123 <- df4 %>% filter(distance1 <= 10 & distance1 >0 &
distance1!=distance2 &
distance2 <= 10 & distance2 >0 &
distance2!=distance3 &
distance3 <= 10 & distance3 >0 &
(is.na(distance4)|distance4>10|distance4==distance3))
#Select columns for semplicity
pep01 <- pep01[,c(1,2,3,5,4,8)]
pep02 <- pep02[,c(1,2,3,5,4,12)]
pep012 <- pep012[,c(1,2,3,5,4,8,12)]
pep013<- pep013[,c(1,2,3,5,4,8,16)]
pep0123 <- pep0123[,c(1,2,3,5,4,8,12,16)]
#crea colonne con la singola mutazione e converte in codice ad una lettera
#for
Create_db <- function(dfi,x,name.pep="pep"){
Prot_mut <- dfi[,4]
for (i in x){
aminoacido_sost <- str_extract(dfi[,i], "(?<=\\d)[A-Z][a-z]{2}")
pos_inMut <- as.numeric(as.character(str_sub(dfi[,i], 6, -4)))
aminoacido_sost <- mappa_completa[aminoacido_sost]
Prot_mut<- transform(str_replace(Prot_mut, paste0("^(.{", pos_inMut-1, "})."), paste0("\\1", aminoacido_sost)))
Prot_mut <- Prot_mut[,1]}
Pep_mut <- substr(Prot_mut, dfi[,3]-9, dfi[,3]+10)
Pep_wt <- substr(dfi[,4], dfi[,3]-9, dfi[,3]+10)
Gene_ID <- paste0(dfi[,1],name.pep)
mut0123<- data.frame(Gene_ID,Pep_wt,Pep_mut)
return(mut0123)}
pep01 <- pep01[,c(1,2,3,5,4,8)]
pep02 <- pep02[,c(1,2,3,5,4,12)]
pep012 <- pep012[,c(1,2,3,5,4,8,12)]
pep013<- pep013[,c(1,2,3,5,4,8,16)]
pep0123 <- pep0123[,c(1,2,3,5,4,8,12,16)]
FinalDB <- rbind(Create_db(pep01,5:6,".01"),
Create_db(pep02,5:6,".02"),
Create_db(pep012,5:7,".012"),
Create_db(pep013,5:7,".013"),
Create_db(pep0123,5:8,".0123"))
FinalDB <- unique(FinalDB)
write.xlsx(FinalDB,"multipleMuts_MNOT.xlsx")
\ No newline at end of file
name: singlecell5
channels:
- defaults
- bioconda
- conda-forge
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- _r-mutex=1.0.1=anacondar_1
- aioeasywebdav=2.4.0=pyha770c72_0
- aiohttp=3.9.1=py311h459d7ec_0
- aiosignal=1.3.1=pyhd8ed1ab_0
- amply=0.1.6=pyhd8ed1ab_0
- anyio=4.8.0=pyhd8ed1ab_0
- aom=3.9.1=hac33072_0
- appdirs=1.4.4=pyh9f0ad1d_0
- argon2-cffi=23.1.0=pyhd8ed1ab_1
- argon2-cffi-bindings=21.2.0=py311h9ecbd09_5
- arrow=1.3.0=pyhd8ed1ab_1
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_1
- atk-1.0=2.38.0=h04ea711_2
- attmap=0.13.2=pyhd8ed1ab_0
- attrs=23.1.0=pyh71513ae_1
- aws-c-auth=0.8.0=h205f482_16
- aws-c-cal=0.8.1=h1a47875_3
- aws-c-common=0.10.6=hb9d3cd8_0
- aws-c-compression=0.3.0=h4e1184b_5
- aws-c-event-stream=0.5.0=h7959bf6_11
- aws-c-http=0.9.2=hefd7a92_4
- aws-c-io=0.15.3=h173a860_6
- aws-c-mqtt=0.11.0=h11f4f37_12
- aws-c-s3=0.7.9=hf454442_0
- aws-c-sdkutils=0.2.2=h4e1184b_0
- aws-checksums=0.2.2=h4e1184b_4
- aws-crt-cpp=0.29.9=hbbd73d0_1
- aws-sdk-cpp=1.11.488=h4d475cb_0
- azure-core-cpp=1.14.0=h5cfcd09_0
- azure-identity-cpp=1.10.0=h113e628_0
- azure-storage-blobs-cpp=12.13.0=h3cf044e_1
- azure-storage-common-cpp=12.8.0=h736e048_1
- azure-storage-files-datalake-cpp=12.12.0=ha633028_1
- babel=2.16.0=pyhd8ed1ab_1
- backports=1.0=pyhd8ed1ab_3
- backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
- bcrypt=4.1.1=py311h46250e7_0
- beautifulsoup4=4.12.3=pyha770c72_1
- bedtools=2.31.1=h13024bc_3
- binutils_impl_linux-64=2.40=hf600244_0
- bleach=6.2.0=pyh29332c3_4
- bleach-with-css=6.2.0=h82add2a_4
- boto3=1.28.81=pyhd8ed1ab_0
- botocore=1.31.82=pyhd8ed1ab_0
- brotli=1.1.0=hd590300_1
- brotli-bin=1.1.0=hd590300_1
- brotli-python=1.1.0=py311hb755f60_1
- bwidget=1.9.14=ha770c72_1
- bzip2=1.0.8=hd590300_5
- c-ares=1.34.4=hb9d3cd8_0
- ca-certificates=2025.1.31=hbcca054_0
- cached-property=1.5.2=hd8ed1ab_1
- cached_property=1.5.2=pyha770c72_1
- cachetools=5.3.2=pyhd8ed1ab_0
- cairo=1.18.2=h3394656_1
- certifi=2025.1.31=pyhd8ed1ab_0
- cffi=1.16.0=py311hb3a22ac_0
- charset-normalizer=3.3.2=pyhd8ed1ab_0
- cmake=3.31.4=h74e3db0_0
- coin-or-cbc=2.10.10=h9002f0b_0
- coin-or-cgl=0.60.9=h1d3f3f2_0
- coin-or-clp=1.17.10=h07f2a63_0
- coin-or-osi=0.108.11=h6514dde_1
- coin-or-utils=2.11.12=h99da652_1
- coincbc=2.10.10=0_metapackage
- colorama=0.4.6=pyhd8ed1ab_0
- comm=0.1.4=pyhd8ed1ab_0
- configargparse=1.7=pyhd8ed1ab_0
- connection_pool=0.0.3=pyhd3deb0d_0
- cryptography=41.0.7=py311hcb13ee4_1
- curl=8.11.1=h332b0f4_0
- cycler=0.12.1=pyhd8ed1ab_1
- dart-sass=1.58.3=ha770c72_1
- datrie=0.8.2=py311h459d7ec_7
- dav1d=1.2.1=hd590300_0
- debugpy=1.8.0=py311hb755f60_1
- decorator=5.1.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- deno=1.46.3=hcab8b69_0
- deno-dom=0.1.41=h4768de7_0
- docutils=0.20.1=py311h38be061_3
- dpath=2.1.6=pyha770c72_0
- dropbox=11.36.2=pyhd8ed1ab_0
- eido=0.2.1=pyhd8ed1ab_0
- esbuild=0.19.2=ha770c72_0
- exceptiongroup=1.1.3=pyhd8ed1ab_0
- executing=2.0.1=pyhd8ed1ab_0
- expat=2.6.4=h5888daf_0
- fftw=3.3.10=nompi_hf1063bd_110
- filechunkio=1.8=py_2
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- font-ttf-ubuntu=0.83=hab24e00_0
- fontconfig=2.15.0=h7e30c49_1
- fonts-conda-ecosystem=1=0
- fonts-conda-forge=1=0
- fqdn=1.5.1=pyhd8ed1ab_1
- freetype=2.12.1=h267a509_2
- fribidi=1.0.10=h36c2ea0_0
- frozenlist=1.4.0=py311h459d7ec_1
- ftputil=5.0.4=pyhd8ed1ab_0
- future=1.0.0=pyhd8ed1ab_1
- gcc_impl_linux-64=13.2.0=h338b0a0_2
- gdk-pixbuf=2.42.12=hb9ae30d_0
- gettext=0.21.1=h27087fc_0
- gflags=2.2.2=he1b5a44_1004
- gfortran_impl_linux-64=13.2.0=h76e1118_2
- ghostscript=10.04.0=h5888daf_0
- giflib=5.2.2=hd590300_0
- gitdb=4.0.11=pyhd8ed1ab_0
- gitpython=3.1.40=pyhd8ed1ab_0
- glog=0.7.1=hbabe93e_0
- google-api-core=2.24.0=pyhd8ed1ab_0
- google-api-python-client=2.107.0=pyhd8ed1ab_0
- google-auth=2.23.4=pyhca7485f_0
- google-auth-httplib2=0.1.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- google-cloud-storage=2.3.0=pyh6c4a22f_0
- google-crc32c=1.1.2=py311h9b08b9c_5
- google-resumable-media=2.6.0=pyhd8ed1ab_0
- googleapis-common-protos=1.66.0=pyhff2d567_0
- graphite2=1.3.13=h58526e2_1001
- graphviz=12.0.0=hba01fac_0
- grpcio=1.67.1=py311h9789449_1
- gsl=2.7=he838d99_0
- gtk2=2.24.33=h6470451_5
- gts=0.7.6=h977cf35_4
- gxx_impl_linux-64=13.2.0=h338b0a0_2
- h11=0.14.0=pyhd8ed1ab_1
- h2=4.1.0=pyhd8ed1ab_1
- harfbuzz=9.0.0=hda332d3_1
- hdf5=1.14.4=nompi_h2d575fe_105
- hpack=4.1.0=pyhd8ed1ab_0
- htslib=1.21=h566b1c6_1
- httpcore=1.0.7=pyh29332c3_1
- httplib2=0.22.0=pyhd8ed1ab_0
- httpx=0.28.1=pyhd8ed1ab_0
- humanfriendly=10.0=pyhd8ed1ab_6
- hyperframe=6.1.0=pyhd8ed1ab_0
- icu=75.1=he02047a_0
- idna=3.4=pyhd8ed1ab_0
- imagemagick=7.1.1_41=imagemagick_hcfc5581_0
- importlib-metadata=6.8.0=pyha770c72_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- iniconfig=2.0.0=pyhd8ed1ab_0
- ipykernel=6.26.0=pyhf8b6a83_0
- ipython=8.17.2=pyh41d4057_0
- isoduration=20.11.0=pyhd8ed1ab_1
- jags=4.3.2=h647a790_1
- jbig=2.1=h7f98852_2003
- jedi=0.19.1=pyhd8ed1ab_0
- jinja2=3.1.2=pyhd8ed1ab_1
- jmespath=1.0.1=pyhd8ed1ab_0
- json5=0.10.0=pyhd8ed1ab_1
- jsonpointer=3.0.0=py311h38be061_1
- jsonschema=4.19.2=pyhd8ed1ab_0
- jsonschema-specifications=2023.7.1=pyhd8ed1ab_0
- jsonschema-with-format-nongpl=4.19.2=pyhd8ed1ab_0
- jupyter-lsp=2.2.5=pyhd8ed1ab_1
- jupyter_client=8.6.0=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h38be061_0
- jupyter_events=0.11.0=pyhd8ed1ab_0
- jupyter_server=2.15.0=pyhd8ed1ab_0
- jupyter_server_terminals=0.5.3=pyhd8ed1ab_1
- jupyterlab=4.3.5=pyhd8ed1ab_0
- jupyterlab_pygments=0.3.0=pyhd8ed1ab_2
- jupyterlab_server=2.27.3=pyhd8ed1ab_1
- kernel-headers_linux-64=2.6.32=he073ed8_16
- keyutils=1.6.1=h166bdaf_0
- krb5=1.21.3=h659f571_0
- lcms2=2.16=hb7c19ff_0
- ld_impl_linux-64=2.40=h41732ed_0
- lerc=4.0.0=h27087fc_0
- lftp=4.9.3=h63b36a4_1
- libabseil=20240722.0=cxx17_hbbce691_4
- libaec=1.1.3=h59595ed_0
- libarrow=19.0.0=hb1bf10f_2_cuda
- libarrow-acero=19.0.0=hb826db4_2_cuda
- libarrow-dataset=19.0.0=hb826db4_2_cuda
- libarrow-substrait=19.0.0=hbf482d9_2_cuda
- libavif16=1.1.1=h1909e37_2
- libblas=3.9.0=19_linux64_openblas
- libbrotlicommon=1.1.0=hd590300_1
- libbrotlidec=1.1.0=hd590300_1
- libbrotlienc=1.1.0=hd590300_1
- libcblas=3.9.0=19_linux64_openblas
- libcrc32c=1.1.2=h9c3ff4c_0
- libcurl=8.11.1=h332b0f4_0
- libde265=1.0.15=h00ab1b0_0
- libdeflate=1.23=h4ddbbb0_0
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libevent=2.1.12=hf998b51_1
- libexpat=2.6.4=h5888daf_0
- libffi=3.4.2=h7f98852_5
- libgcc=14.2.0=h77fa898_1
- libgcc-devel_linux-64=13.2.0=ha9c7c90_2
- libgcc-ng=14.2.0=h69a702a_1
- libgd=2.3.3=h6f5c62b_11
- libgfortran=14.2.0=h69a702a_1
- libgfortran-ng=14.2.0=h69a702a_1
- libgfortran5=14.2.0=hd5240d6_1
- libgit2=1.8.4=hd24f944_1
- libglib=2.82.2=h2ff4ddf_1
- libgomp=14.2.0=h77fa898_1
- libgoogle-cloud=2.33.0=h2b5623c_1
- libgoogle-cloud-storage=2.33.0=h0121fbd_1
- libgrpc=1.67.1=h25350d4_1
- libheif=1.18.2=gpl_hffcb242_100
- libiconv=1.17=h166bdaf_0
- libjpeg-turbo=3.0.0=hd590300_1
- liblapack=3.9.0=19_linux64_openblas
- liblapacke=3.9.0=19_linux64_openblas
- liblzma=5.6.3=hb9d3cd8_1
- libnghttp2=1.64.0=h161d5f1_0
- libnsl=2.0.1=hd590300_0
- libopenblas=0.3.24=pthreads_h413a1c8_0
- libparquet=19.0.0=h3f30f2e_2_cuda
- libpng=1.6.45=h943b412_0
- libprotobuf=5.28.3=h6128344_1
- libre2-11=2024.07.02=hbbce691_2
- librsvg=2.58.4=hc0ffecb_0
- libsanitizer=13.2.0=h7e041cc_2
- libsodium=1.0.18=h36c2ea0_1
- libsqlite=3.48.0=hee588c1_0
- libssh2=1.11.1=hf672d98_0
- libstdcxx=14.2.0=hc0a3c3a_1
- libstdcxx-devel_linux-64=13.2.0=ha9c7c90_2
- libstdcxx-ng=13.2.0=h7e041cc_2
- libthrift=0.21.0=h0e7cc3e_0
- libtiff=4.7.0=hd9ff511_3
- libutf8proc=2.9.0=hb9d3cd8_1
- libuuid=2.38.1=h0b41bf4_0
- libuv=1.50.0=hb9d3cd8_0
- libwebp=1.5.0=hae8dbeb_0
- libwebp-base=1.5.0=h851e524_0
- libxcb=1.17.0=h8a09558_0
- libxcrypt=4.4.36=hd590300_1
- libxml2=2.13.5=h8d12d68_1
- libzlib=1.3.1=hb9d3cd8_2
- logmuse=0.2.6=pyh8c360ce_0
- lz4-c=1.10.0=h5888daf_1
- make=4.3=hd18ef5c_1
- markdown-it-py=3.0.0=pyhd8ed1ab_0
- markupsafe=2.1.3=py311h459d7ec_1
- matplotlib-base=3.10.0=py311h2b939e6_0
- matplotlib-inline=0.1.6=pyhd8ed1ab_0
- mdurl=0.1.0=pyhd8ed1ab_0
- mistune=3.1.1=pyhd8ed1ab_0
- multidict=6.0.4=py311h459d7ec_1
- munkres=1.0.7=py_1
- nbconvert-core=7.16.6=pyh29332c3_0
- nbformat=5.9.2=pyhd8ed1ab_0
- ncbi-vdb=3.0.8=hdbdd923_0
- ncurses=6.5=h2d0b736_2
- nest-asyncio=1.5.8=pyhd8ed1ab_0
- notebook-shim=0.2.4=pyhd8ed1ab_1
- numpy=1.26.2=py311h64a7726_0
- oauth2client=4.1.3=py_0
- openjpeg=2.5.2=he7f1fd0_0
- openssl=3.4.1=h7b32b05_0
- orc=2.0.3=h12ee42a_2
- ossuuid=1.6.2=hf484d3e_1000
- overrides=7.7.0=pyhd8ed1ab_1
- packaging=23.2=pyhd8ed1ab_0
- pandas=2.1.4=py311h320fe9a_0
- pandoc=3.4=ha770c72_0
- pandocfilters=1.5.0=pyhd8ed1ab_0
- pango=1.54.0=h3a902e7_3
- paramiko=3.3.1=pyhd8ed1ab_0
- parso=0.8.3=pyhd8ed1ab_0
- pcre2=10.44=hba22ea6_2
- peppy=0.35.7=pyhd8ed1ab_0
- perl=5.32.1=7_hd590300_perl5
- perl-alien-build=2.84=pl5321h7b50bb2_0
- perl-alien-libxml2=0.17=pl5321h577a1d6_1
- perl-app-cpanminus=1.7048=pl5321hd8ed1ab_0
- perl-business-isbn=3.007=pl5321hd8ed1ab_0
- perl-business-isbn-data=20210112.006=pl5321hd8ed1ab_0
- perl-capture-tiny=0.48=pl5321ha770c72_1
- perl-carp=1.50=pl5321hd8ed1ab_0
- perl-constant=1.33=pl5321hd8ed1ab_0
- perl-data-dumper=2.183=pl5321hd590300_0
- perl-encode=3.21=pl5321hb9d3cd8_1
- perl-exporter=5.74=pl5321hd8ed1ab_0
- perl-extutils-makemaker=7.70=pl5321hd8ed1ab_0
- perl-ffi-checklib=0.28=pl5321hdfd78af_0
- perl-file-chdir=0.1011=pl5321hd8ed1ab_0
- perl-file-path=2.18=pl5321hd8ed1ab_0
- perl-file-temp=0.2304=pl5321hd8ed1ab_0
- perl-file-which=1.24=pl5321hd8ed1ab_0
- perl-importer=0.026=pl5321hd8ed1ab_0
- perl-mime-base64=3.16=pl5321hb9d3cd8_2
- perl-parent=0.243=pl5321hd8ed1ab_0
- perl-path-tiny=0.124=pl5321hd8ed1ab_0
- perl-pathtools=3.75=pl5321hb9d3cd8_1
- perl-scope-guard=0.21=pl5321hd8ed1ab_0
- perl-storable=3.15=pl5321hb9d3cd8_0
- perl-sub-info=0.002=pl5321hd8ed1ab_0
- perl-term-table=0.024=pl5321hdfd78af_0
- perl-test-fatal=0.016=pl5321ha770c72_0
- perl-test-warnings=0.031=pl5321ha770c72_0
- perl-test2-suite=0.000163=pl5321hdfd78af_0
- perl-try-tiny=0.31=pl5321ha770c72_0
- perl-uri=5.17=pl5321ha770c72_0
- perl-xml-libxml=2.0210=pl5321hf886d80_0
- perl-xml-namespacesupport=1.12=pl5321hd8ed1ab_0
- perl-xml-sax=1.02=pl5321hd8ed1ab_0
- perl-xml-sax-base=1.09=pl5321hd8ed1ab_0
- perl-xsloader=0.24=pl5321hd8ed1ab_0
- pexpect=4.8.0=pyh1a96a4e_2
- pickleshare=0.7.5=py_1003
- pip=23.3.1=pyhd8ed1ab_0
- pixman=0.44.2=h29eaf8c_0
- pkg-config=0.29.2=h4bc722e_1009
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
- plac=1.4.1=pyhd8ed1ab_1
- platformdirs=3.11.0=pyhd8ed1ab_0
- pluggy=1.3.0=pyhd8ed1ab_0
- ply=3.11=py_1
- prettytable=3.9.0=pyhd8ed1ab_0
- prometheus_client=0.21.1=pyhd8ed1ab_0
- prompt-toolkit=3.0.39=pyha770c72_0
- prompt_toolkit=3.0.39=hd8ed1ab_0
- proto-plus=1.25.0=pyhd8ed1ab_1
- protobuf=5.28.3=py311hfdbb021_0
- psutil=5.9.5=py311h459d7ec_1
- pthread-stubs=0.4=h36c2ea0_1001
- ptyprocess=0.7.0=pyhd3deb0d_0
- pulp=2.7.0=py311h38be061_1
- pure_eval=0.2.2=pyhd8ed1ab_0
- pyasn1=0.5.0=pyhd8ed1ab_0
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
- pybktree=1.1=pyh9f0ad1d_0
- pycparser=2.21=pyhd8ed1ab_0
- pygments=2.16.1=pyhd8ed1ab_0
- pynacl=1.5.0=py311h459d7ec_3
- pyopenssl=23.3.0=pyhd8ed1ab_0
- pyparsing=3.1.1=pyhd8ed1ab_0
- pysam=0.22.1=py311h1f0e11c_2
- pysftp=0.2.9=py_1
- pysocks=1.7.1=pyha2e5f31_6
- pytest=7.4.3=pyhd8ed1ab_0
- python=3.11.11=h9e4cc4f_1_cpython
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python-fastjsonschema=2.18.1=pyhd8ed1ab_0
- python-irodsclient=1.1.9=pyhd8ed1ab_0
- python-json-logger=2.0.7=pyhd8ed1ab_0
- python-tzdata=2023.3=pyhd8ed1ab_0
- python_abi=3.11=4_cp311
- pytz=2023.3.post1=pyhd8ed1ab_0
- pyu2f=0.1.5=pyhd8ed1ab_0
- pyyaml=6.0.1=py311h459d7ec_1
- pyzmq=25.1.2=py311h34ded2d_0
- qhull=2020.2=h434a139_5
- r-arrow=19.0.0=r44h5888daf_0
- r-askpass=1.2.1=r44h2b5f3a1_0
- r-assertthat=0.2.1=r44hc72bb7e_5
- r-base=4.4.2=hc737e89_2
- r-base64enc=0.1_3=r44hb1dbf0f_1007
- r-bit=4.5.0.1=r44h2b5f3a1_0
- r-bit64=4.5.2=r44h2b5f3a1_0
- r-bslib=0.8.0=r44hc72bb7e_0
- r-cachem=1.1.0=r44hb1dbf0f_1
- r-cairo=1.6_2=r44h232ff4d_2
- r-cli=3.6.3=r44h0d4f4ea_1
- r-coda=0.19_4.1=r44hc72bb7e_1
- r-codetools=0.2_20=r44hc72bb7e_1
- r-colorspace=2.1_1=r44hdb488b9_0
- r-cpp11=0.5.1=r44hc72bb7e_0
- r-crayon=1.5.3=r44hc72bb7e_1
- r-credentials=2.0.2=r44hc72bb7e_0
- r-curl=6.0.1=r44h2700575_0
- r-digest=0.6.37=r44h0d4f4ea_0
- r-dplyr=1.1.4=r44h0d4f4ea_1
- r-ellipsis=0.3.2=r44hb1dbf0f_3
- r-evaluate=1.0.3=r44hc72bb7e_0
- r-fansi=1.0.6=r44hb1dbf0f_1
- r-farver=2.1.2=r44ha18555a_1
- r-fastmap=1.2.0=r44ha18555a_1
- r-fontawesome=0.5.3=r44hc72bb7e_0
- r-fs=1.6.5=r44h93ab643_0
- r-future=1.34.0=r44h785f33e_0
- r-future.apply=1.11.3=r44hc72bb7e_0
- r-generics=0.1.3=r44hc72bb7e_3
- r-gert=2.1.4=r44h017ce79_0
- r-ggplot2=3.5.1=r44hc72bb7e_1
- r-globals=0.16.3=r44hc72bb7e_1
- r-glue=1.8.0=r44h2b5f3a1_0
- r-gridextra=2.3=r44hc72bb7e_1006
- r-gtable=0.3.6=r44hc72bb7e_0
- r-highr=0.11=r44hc72bb7e_1
- r-htmltools=0.5.8.1=r44ha18555a_1
- r-isoband=0.2.7=r44ha18555a_3
- r-jquerylib=0.1.4=r44hc72bb7e_3
- r-jsonlite=1.8.9=r44h2b5f3a1_0
- r-knitr=1.49=r44hc72bb7e_0
- r-labeling=0.4.3=r44hc72bb7e_1
- r-later=1.4.1=r44h93ab643_0
- r-lattice=0.22_6=r44hb1dbf0f_1
- r-lifecycle=1.0.4=r44hc72bb7e_1
- r-listenv=0.9.1=r44hc72bb7e_1
- r-magick=2.8.5=r44h93ab643_0
- r-magrittr=2.0.3=r44hb1dbf0f_3
- r-mass=7.3_64=r44h2b5f3a1_0
- r-matrix=1.6_5=r44he966344_1
- r-matrixstats=1.5.0=r44h2b5f3a1_0
- r-memoise=2.0.1=r44hc72bb7e_3
- r-mgcv=1.9_1=r44h0d28552_1
- r-mime=0.12=r44hb1dbf0f_3
- r-munsell=0.5.1=r44hc72bb7e_1
- r-nlme=3.1_165=r44hbcb9c34_1
- r-openssl=2.2.2=r44he8289e2_0
- r-packrat=0.9.2=r44hc72bb7e_1
- r-parallelly=1.41.0=r44h2b5f3a1_0
- r-pillar=1.10.1=r44hc72bb7e_0
- r-pkgconfig=2.0.3=r44hc72bb7e_4
- r-pki=0.1_14=r44he8289e2_2
- r-plyr=1.8.9=r44ha18555a_1
- r-processx=3.8.5=r44h2b5f3a1_0
- r-ps=1.8.1=r44h2b5f3a1_0
- r-purrr=1.0.2=r44hdb488b9_1
- r-quarto=1.4.4=r44hc72bb7e_1
- r-r6=2.5.1=r44hc72bb7e_3
- r-rappdirs=0.3.3=r44hb1dbf0f_3
- r-rcolorbrewer=1.1_3=r44h785f33e_3
- r-rcpp=1.0.14=r44h93ab643_0
- r-rcppannoy=0.0.22=r44ha18555a_1
- r-rcpparmadillo=14.2.2_1=r44hb79369c_0
- r-rcpptoml=0.2.2=r44ha18555a_2
- r-renv=1.0.11=r44hc72bb7e_0
- r-reshape2=1.4.4=r44h0d4f4ea_4
- r-rjags=4_16=r44h93ab643_1
- r-rlang=1.1.5=r44h93ab643_0
- r-rmarkdown=2.29=r44hc72bb7e_0
- r-rsconnect=1.3.3=r44hc72bb7e_0
- r-rstudioapi=0.17.1=r44hc72bb7e_0
- r-sass=0.4.9=r44ha18555a_1
- r-scales=1.3.0=r44hc72bb7e_1
- r-sctransform=0.4.1=r44hb424bfc_1
- r-stringi=1.8.4=r44h33cde33_3
- r-stringr=1.5.1=r44h785f33e_1
- r-sys=3.4.3=r44h2b5f3a1_0
- r-systemfonts=1.1.0=r44h38d38ca_1
- r-textshaping=0.4.0=r44ha47bcaa_2
- r-tibble=3.2.1=r44hdb488b9_3
- r-tidyselect=1.2.1=r44hc72bb7e_1
- r-tinytex=0.54=r44hc72bb7e_0
- r-utf8=1.2.4=r44hb1dbf0f_1
- r-vctrs=0.6.5=r44h0d4f4ea_1
- r-viridislite=0.4.2=r44hc72bb7e_2
- r-withr=3.0.2=r44hc72bb7e_0
- r-xfun=0.50=r44h93ab643_0
- r-yaml=2.3.10=r44hdb488b9_0
- r-zip=2.3.1=r44hb1dbf0f_1
- rav1e=0.6.6=he8a937b_2
- re2=2024.07.02=h9925aae_2
- readline=8.2=h8228510_1
- referencing=0.30.2=pyhd8ed1ab_0
- regex=2024.11.6=py311h9ecbd09_0
- requests=2.31.0=pyhd8ed1ab_0
- reretry=0.11.8=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_1
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- rhash=1.4.5=hb9d3cd8_0
- rich=13.6.0=pyhd8ed1ab_0
- rpds-py=0.13.2=py311h46250e7_0
- rsa=4.9=pyhd8ed1ab_0
- s2n=1.5.11=h072c03f_0
- s3transfer=0.7.0=pyhd8ed1ab_0
- samtools=1.21=h96c455f_1
- sed=4.8=he412f7d_0
- send2trash=1.8.3=pyh0d859eb_1
- setuptools=68.2.2=pyhd8ed1ab_0
- setuptools-scm=8.0.4=pyhd8ed1ab_0
- six=1.16.0=pyh6c4a22f_0
- slacker=0.14.0=py_0
- smart_open=6.4.0=pyhd8ed1ab_0
- smmap=5.0.0=pyhd8ed1ab_0
- snakemake=7.32.4=hdfd78af_1
- snakemake-minimal=7.32.4=pyhdfd78af_0
- snappy=1.2.1=h8bd8927_1
- sniffio=1.3.1=pyhd8ed1ab_1
- soupsieve=2.5=pyhd8ed1ab_1
- sra-tools=3.0.8=h9f5acd7_0
- stack_data=0.6.2=pyhd8ed1ab_0
- star=2.7.11b=h5ca1c30_5
- stone=3.3.1=pyhd8ed1ab_0
- stopit=1.1.2=py_0
- stress-ng=0.17.03=h2797004_0
- svt-av1=2.3.0=h5888daf_0
- sysroot_linux-64=2.12=he073ed8_16
- tabulate=0.9.0=pyhd8ed1ab_1
- terminado=0.18.1=pyh0d859eb_0
- throttler=1.2.2=pyhd8ed1ab_0
- tinycss2=1.4.0=pyhd8ed1ab_0
- tk=8.6.13=noxft_h4845f30_101
- tktable=2.10=h0c5db8f_5
- tomli=2.0.1=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311h459d7ec_1
- traitlets=5.13.0=pyhd8ed1ab_0
- types-python-dateutil=2.9.0.20241206=pyhd8ed1ab_0
- typing-extensions=4.8.0=hd8ed1ab_0
- typing_extensions=4.8.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_1
- typst=0.11.0=he8a937b_0
- tzdata=2025a=h78e105d_0
- ubiquerg=0.6.3=pyhd8ed1ab_0
- umi_tools=1.1.6=py311haab0aaa_0
- unicodedata2=16.0.0=py311h9ecbd09_0
- uri-template=1.3.0=pyhd8ed1ab_1
- uritemplate=4.1.1=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
- veracitools=0.1.3=py_0
- wcwidth=0.2.9=pyhd8ed1ab_0
- webcolors=24.11.1=pyhd8ed1ab_0
- webencodings=0.5.1=pyhd8ed1ab_3
- websocket-client=1.8.0=pyhd8ed1ab_1
- wheel=0.41.3=pyhd8ed1ab_0
- wrapt=1.16.0=py311h459d7ec_0
- x265=3.5=h924138e_3
- xorg-kbproto=1.0.7=h7f98852_1002
- xorg-libice=1.1.1=hd590300_0
- xorg-libsm=1.2.4=h7391055_0
- xorg-libx11=1.8.10=h4f16b4b_1
- xorg-libxau=1.0.11=hd590300_0
- xorg-libxdmcp=1.1.3=h7f98852_0
- xorg-libxext=1.3.6=hb9d3cd8_0
- xorg-libxrender=0.9.11=hd590300_0
- xorg-libxt=1.3.0=hd590300_1
- xorg-renderproto=0.11.1=h7f98852_1002
- xorg-xextproto=7.3.0=h0b41bf4_1003
- xorg-xproto=7.0.31=h7f98852_1007
- xz=5.2.6=h166bdaf_0
- yaml=0.2.5=h7f98852_2
- yarl=1.9.3=py311h459d7ec_0
- yte=1.5.1=pyha770c72_2
- zeromq=4.3.5=h59595ed_0
- zipp=3.17.0=pyhd8ed1ab_0
- zlib=1.3.1=hb9d3cd8_2
- zstd=1.5.6=ha6fb4c9_0
- pip:
- absl-py==2.1.0
- anndata==0.8.0
- arboreto==0.1.6
- array-api-compat==1.6
- bokeh==3.3.2
- boltons==23.1.1
- chex==0.1.86
- click==8.1.7
- cloudpickle==3.0.0
- contextlib2==21.6.0
- contourpy==1.2.0
- ctxcore==0.2.0
- cytoolz==0.12.2
- dask==2023.12.0
- dill==0.3.7
- distributed==2023.12.0
- dnspython==2.6.1
- docrep==0.3.2
- et-xmlfile==1.1.0
- etils==1.8.0
- filelock==3.13.4
- flax==0.8.2
- fonttools==4.51.0
- frozendict==2.3.10
- fsspec==2023.12.2
- h5py==3.10.0
- hyperopt==0.1.2
- igraph==0.10.8
- interlap==0.2.7
- jax==0.4.26
- jaxlib==0.4.26
- joblib==1.3.2
- kiwisolver==1.4.5
- legacy-api-wrap==1.4
- leidenalg==0.10.1
- lightning==2.1.4
- lightning-utilities==0.11.2
- llvmlite==0.41.1
- locket==1.0.0
- loompy==3.0.7
- lz4==4.3.2
- matplotlib==3.8.4
- ml-collections==0.1.1
- ml-dtypes==0.4.0
- mpmath==1.3.0
- msgpack==1.0.7
- mudata==0.2.3
- multipledispatch==1.0.0
- multiprocessing-on-dill==3.5.0a4
- natsort==8.4.0
- nbclient==0.9.0
- networkx==3.2.1
- numba==0.58.1
- numexpr==2.8.8
- numpy-groupies==0.10.2
- numpyro==0.14.0
- nvidia-cublas-cu12==12.1.3.1
- nvidia-cuda-cupti-cu12==12.1.105
- nvidia-cuda-nvrtc-cu12==12.1.105
- nvidia-cuda-runtime-cu12==12.1.105
- nvidia-cudnn-cu12==8.9.2.26
- nvidia-cufft-cu12==11.0.2.54
- nvidia-curand-cu12==10.3.2.106
- nvidia-cusolver-cu12==11.4.5.107
- nvidia-cusparse-cu12==12.1.0.106
- nvidia-nccl-cu12==2.19.3
- nvidia-nvjitlink-cu12==12.4.127
- nvidia-nvtx-cu12==12.1.105
- openpyxl==3.1.5
- opt-einsum==3.3.0
- optax==0.2.2
- orbax-checkpoint==0.5.10
- partd==1.4.1
- patsy==0.5.6
- pillow==10.1.0
- pyarrow==14.0.1
- pyarrow-hotfix==0.6
- pymongo==4.6.3
- pynndescent==0.5.11
- pyro-api==0.1.2
- pyro-ppl==1.9.0
- pyscenic==0.12.1
- pytorch-lightning==2.2.3
- quarto==0.1.0
- scanpy==1.10.1
- scikit-learn==1.3.2
- scikit-misc==0.3.1
- scipy==1.11.4
- scvi-tools==1.1.2
- seaborn==0.13.2
- session-info==1.0.0
- sortedcontainers==2.4.0
- statsmodels==0.14.2
- stdlib-list==0.10.0
- sympy==1.12
- tblib==3.0.0
- tensorstore==0.1.56
- texttable==1.7.0
- threadpoolctl==3.2.0
- toolz==0.12.0
- torch==2.2.2
- torchmetrics==1.3.2
- tqdm==4.66.1
- triton==2.2.0
- umap-learn==0.5.5
- xlrd==2.0.1
- xyzservices==2023.10.1
- zict==3.0.0
prefix: /opt/common/tools/ric.tiget/mambaforge/envs/singlecell5
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment