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

I added the manuscript's scripts

parents
library("readxl")
library("dplyr")
#####Directories#####
us <- "/Users/Squadrito/"
us <-"C:/Users/bresesti.chiara/"
wdir1509<-paste0(us,"/Dropbox (HSR Global)/SquadritoM_1509_RNASeq_QIAseq_UPX/QIAseqUltraplexRNA_181342/primary_analysis")
wdir1510<-paste0(us,"/Dropbox (HSR Global)/SquadritoM_1510_RNA_miRNA_QIAseq_UPX")
fdir <- paste0(us,"/Dropbox (HSR Global)/CancerGeneTherapy/Cancer Gene Therapy/MS/2024 Bresesti et al/Scripts/plots and tables used in figures")
#### Figure 1B ####
setwd(wdir1509)
df1 <- as.data.frame(read_excel("QIAseqUltraplexRNA_181342.xlsx",sheet=3,col_names = T,skip = 1))#sheet: umis.genes.polyA-mouse
df1 <-df1[,-c(1,3:6)] #keep only gene name and UMI counts
df1[,-1] <-apply(df1[,-1],2,function(x){x/sum(x)*1000000}) #UMI normalized by CPM
gene_vector <- c("Cd19", "Ms4a1", "Fcer2a", "Ighm", "Cd8a", "Xcr1", "Itgae", "Itgax",
"Ccr2", "Itgam", "Mgl2", "Cd68", "Vcam1", "Csf1r", "Adgre1",
"Siglec1", "Hmox1", "Timd4", "Vsig4", "Clec4f", "Marco", "Pecam1",
"Tek", "Lyve1", "Stab2")
df2 <- df1[df1$gene%in%gene_vector,] %>% arrange(factor(gene, levels=gene_vector))
rownames(df2) <- df2[,1]
df2.scaled <- as.data.frame(t(scale(t(df2[-1])))) #Zscore normalization. Scaled only works on columns, so need to transform
setwd(fdir)
openxlsx::write.xlsx(df2.scaled,"Figure_1B_table.xlsx", rowNames=T)
#the df was exported and used to create a heatmap using Graphpad
#### Figure 1C ####
# "edgeR_DGE_res_volcano.pdf" (in the 'wdir1509' folder) was imported in illustrator
# and merged with the plot generated by the code below
setwd(wdir1510)
df1 <- as.data.frame(read_excel("173308.all_samples.summary.xlsx",sheet=2,col_names = T))#sheet: miRNA_piRNA
df1 <-df1[,1:7]#UMI
rownames(df1)<-df1$miRNA
df2 <- apply(df1[,-1], 2, function(x) log(x)) #Log counts
df2 <- as.data.frame(limma::normalizeCyclicLoess(df2, weights = NULL, span=0.7, iterations = 5, method = "pairs")) #Cyclic loess normalization
colnames(df2)<-c("B cell","RPM","cDC1","cDC2","LSEC","KC") #Rename columns
upper.panel<-function(x, y, ...){
points(((x+y)/2),(x-y), cex=0.6, pch=19, col="grey")
above <- (x-y-1)*((x+y)/2-5) > 5 & ((x+y)/2)>5
points(((x+y)/2)[above],(x-y)[above], col="red", cex=0.6, pch=19)
below <- (x-y+1)*((x+y)/2-5) < -5 & ((x+y)/2)>5
points(((x+y)/2)[below],(x-y)[below], col="blue", cex=0.6, pch=19)
} #function for MA plot
pairs(df2[,1:6], lower.panel = NULL, upper.panel = upper.panel,
ylim=c(-8.5,8.5), xlim=c(2,14), cex.labels = 2) #pairwise plot
#### Figure 1D ####
setwd(wdir1510)
df1 <- as.data.frame(read_excel("173308.all_samples.summary.xlsx",sheet=2,col_names = T))#sheet: miRNA_piRNA
df1 <- df1[-which(grepl("piR",df1[,1])),1:7]#UMI and piRNA removing
df1[,1] <- gsub("/.*","",df1[,1]) #leave only first miRNA for ambiguous entries
df1[,-1] <- apply(df1[,-1],2,function(x){x/sum(x,na.rm=T)*1000000})#UMI normalized by CPM
df.families <- as.data.frame(read_excel("Analysis CB/miRNA Family.xlsx",sheet=1,col_names = T))#miRNA families from miRBase
df.families <- df.families[df.families[,3]==10090,c(4,1)] #select mouse entries
df.families[,1] <- sub(pattern = "p.*",replacement ="p",x = df.families[,1])
df2 <- merge(df.families,df1,by=1)
df2 <- aggregate(df2[,-c(1:2)],by = df2["miR family"],FUN = sum,na.rm=T) #sum counts by family
gene_vector <- c("miR-150-5p","miR-25-3p/32-5p/92-3p/363-3p/367-3p","miR-142-3p.1",
"miR-17-5p/20-5p/93-5p/106-5p","miR-191-5p",
"miR-15-5p/16-5p/195-5p/322-5p/497-5p","miR-26-5p","miR-138-5p",
"miR-223-3p","miR-342-3p","miR-22-3p","miR-192-5p/215-5p",
"miR-125-5p/351-5p","miR-126-3p.1","miR-199-3p")
df3 <- subset(df2, df2$`miR family`%in% gene_vector) %>% arrange(factor(`miR family`, levels=gene_vector))
rownames(df3) <- df3[,1]
df3.scaled <- as.data.frame(t(scale(t(df3[-1])))) #Zscore normalization. Scaled only works on columns, so need to transform
setwd(fdir)
openxlsx::write.xlsx(df2.scaled,"Figure_1D_table.xlsx", rowNames=T)
#the df was exported and used to create a heatmap using Graphpad
library(readxl)
library(ggplot2)
library(ggrepel)
library(dplyr)
library(fgsea)
library(clusterProfiler)
library(enrichplot)
##### Directories #####
#us <- "/Users/Squadrito/"
us <-"C:/Users/bresesti.chiara/"
wdir<-paste0(us,"/Dropbox (HSR Global)/90-857433247_RNAseq_Squadrito/05-DGE-NoOut-Corr")
wdir_CB<-paste0(us, "/Dropbox (HSR Global)/90-857433247_RNAseq_Squadrito/Analysis CB_v2")
fdir <- paste0(us,"/Dropbox (HSR Global)/CancerGeneTherapy/Cancer Gene Therapy/MS/2024 Bresesti et al/Scripts/plots and tables used in figures")
#### Figure 3A&B ####
#Import df
setwd(wdir)
miR_ctrl <- read_excel("edgeR_results.xlsx", sheet = "miR342-control")
sponge_ctrl <- read_excel("edgeR_results.xlsx", sheet = "spongeBT-control")
#Add DEG color and label for volcano plot
miR_ctrl$DEG <- "NO"
miR_ctrl$DEG[miR_ctrl$logFC > 1 & miR_ctrl$PValue < 0.05] <- "UP"
miR_ctrl$DEG[miR_ctrl$logFC < (-1) & miR_ctrl$PValue < 0.05] <- "DOWN"
miR_ctrl$DEG_label <- NA
miR_ctrl$DEG_label[miR_ctrl$DEG != "NO"] <- miR_ctrl$...1[miR_ctrl$DEG != "NO"]
sponge_ctrl$DEG <- "NO"
sponge_ctrl$DEG[sponge_ctrl$logFC > 1 & sponge_ctrl$PValue < 0.05] <- "UP"
sponge_ctrl$DEG[sponge_ctrl$logFC < (-1) & sponge_ctrl$PValue < 0.05] <- "DOWN"
sponge_ctrl$DEG_label <- NA
sponge_ctrl$DEG_label[sponge_ctrl$DEG != "NO"] <- sponge_ctrl$...1[sponge_ctrl$DEG != "NO"]
#Volcano plot (left panel)
data <- miR_ctrl
ggplot(data=data, aes(x=logFC, y=-log10(PValue), col=DEG, label=DEG_label)) +
geom_point() +
theme_minimal() +
geom_text_repel() +
scale_color_manual(values=c("blue", "grey", "red")) +
geom_vline(xintercept=c(-1, 1), col="black") +
geom_hline(yintercept=-log10(0.05), col="black") +
scale_x_continuous(limits = c(-4.1,4.1), breaks = seq(-4,4,1)) +
scale_y_continuous(limits = c(0,20)) +
xlab(bquote(Log[2](FC))) +
ylab(bquote(-Log[10](PVal)))
data <- sponge_ctrl
ggplot(data=data, aes(x=logFC, y=-log10(PValue), col=DEG, label=DEG_label)) +
geom_point() +
theme_minimal() +
geom_text_repel() +
scale_color_manual(values=c("blue", "grey", "red")) +
geom_vline(xintercept=c(-1, 1), col="black") +
geom_hline(yintercept=-log10(0.05), col="black") +
scale_x_continuous(limits = c(-4.1,4.1), breaks = seq(-4,4,1)) +
scale_y_continuous(limits = c(0,20)) +
xlab(bquote(Log[2](FC))) +
ylab(bquote(-Log[10](PVal)))
#Import miR-342-3p target list (from TargetScan)
setwd(wdir_CB)
miR342_targets <- read_excel("TargetScan8.0__miR-342-3p.predicted_targets.xlsx")
miR342_targets <- filter(miR342_targets, miR342_targets$`Cumulative weighted context++ score`< (-0.3))
#ecdf plot (right panel)
data <- miR_ctrl
test <-filter(data, data$...1 %in% miR342_targets$'Target gene')
plot(ecdf(data$logFC), lwd = 2, do.points=F, verticals=T,
ylab = "Fraction of DEG",
xlab = bquote(Log[2](FC)),
xlim=c(-0.5,0.5),
ylim=c(0,1),
main="ECDF of gene expression: miR vs mut") +
lines(ecdf(test$logFC), col= "blue", do.points=F, lwd = 2, verticals=T) +
abline(v=0, col="black") +
abline(h=0.5, col="black") +
legend("bottomright", c("All genes","miR-342-3p targets"),
col = c("black","blue"), lwd=2, cex = 0.7)
ks.test(test$logFC, data$logFC, alternative = "g") #Kolmogorov-Smirnov test to calculate p-val of miR target distribution *not* greater than average data
data <- sponge_ctrl
test <-filter(data, data$...1 %in% miR342_targets$'Target gene')
plot(ecdf(data$logFC), lwd = 2, do.points=F, verticals=T,
ylab = "Fraction of DEG",
xlab = bquote(Log[2](FC)),
xlim=c(-0.3,0.3),
ylim=c(0,1),
main="ECDF of gene expression: sponge vs scr") +
lines(ecdf(test$logFC), col= "red", do.points=F, lwd = 2, verticals=T) +
abline(v=0, col="black") +
abline(h=0.5, col="black") +
legend("bottomright", c("All genes","miR-342-3p targets"),
col = c("black","red"), lwd=2, cex = 0.7)
ks.test(test$logFC, data$logFC, alternative = "l") #Kolmogorov-Smirnov test to calculate p-val of miR target distribution *not* less than average data
#### Figure 3C&D ####
#Upload df
setwd(wdir)
df1<- read_excel("EdgeR_results.xlsx",, sheet = "miR342-control")
setwd(wdir_CB)
miDB_sig5 <- readRDS("miDB_sig5.MLS.rds") #GO terms db
#Rename pathways of interest in miDB_sig5
names(miDB_sig5)[names(miDB_sig5) == "HALLMARK_OXIDATIVE_PHOSPHORYLATION"] <- "Oxydative phosphorylation"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_REGULATION_OF_CHOLESTEROL_METABOLIC_PROCESS"] <- "Regulation of cholesterol metabolic process"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_RESPONSE_TO_INTERLEUKIN_12"] <- "Response to IL12"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_REGULATION_OF_LIPID_BIOSYNTHETIC_PROCESS"] <- "Regulation of lipid biosynthetic process"
names(miDB_sig5)[names(miDB_sig5) == "GOMF_MHC_CLASS_I_PROTEIN_BINDING"] <- "MHC-I protein binding"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_TUMOR_NECROSIS_FACTOR_MEDIATED_SIGNALING_PATHWAY"] <- "TNFa mediated signalling pathway"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_NEGATIVE_REGULATION_OF_CELL_CYCLE_G2_M_PHASE_TRANSITION"] <- "Negative regulation of cell cycle progression"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_FATTY_ACYL_COA_BIOSYNTHETIC_PROCESS"] <- "Fatty acyl-CoA biosynthetic process"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_RESPONSE_TO_TUMOR_NECROSIS_FACTOR"] <- "Response to TNFa"
names(miDB_sig5)[names(miDB_sig5) == "HALLMARK_G2M_CHECKPOINT"] <- "G2M checkpoint"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_RESPONSE_TO_TYPE_I_INTERFERON"] <- "Response to type I interferon"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_INTERLEUKIN_1_MEDIATED_SIGNALING_PATHWAY"] <- "IL1 mediated signalling pathway"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_RESPONSE_TO_INTERLEUKIN_1"] <- "Response to IL1"
names(miDB_sig5)[names(miDB_sig5) == "LPS_RO"] <- "LPS response genes"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_CYTOKINE_MEDIATED_SIGNALING_PATHWAY"] <- "Cytokine mediated signalling pathway"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_MYELOID_CELL_DIFFERENTIATION"] <- "Myeloid cell differentiation"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_INTERLEUKIN_10_PRODUCTION"] <- "IL10 production"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_POSITIVE_REGULATION_OF_ENDOTHELIAL_CELL_PROLIFERATION"] <- "Regulation of endothelial cell proliferation"
names(miDB_sig5)[names(miDB_sig5) == "GOBP_TUMOR_NECROSIS_FACTOR_SUPERFAMILY_CYTOKINE_PRODUCTION"] <- "TNFa superfamily cytokine production"
names(miDB_sig5)[names(miDB_sig5) == "HALLMARK_ANGIOGENESIS"] <- "Angiogenesis"
names(miDB_sig5)[names(miDB_sig5) == "GOMF_PATTERN_RECOGNITION_RECEPTOR_ACTIVITY"] <- "Pattern recognition receptor activity"
names(miDB_sig5)[names(miDB_sig5) == "PGE2_RO"] <- "PGE2 response genes"
#Filter low expression, NA and order by FC
df1 <- filter(df1, df1$logCPM>5 & !is.na(df1$...1))
df1<-df1[order(df1$logFC),]
df2<-df1$logFC
names(df2)<-df1$...1
#Run GSEA with fgsea and filter by PVal
sig <- miDB_sig5
test1<-fgsea(sig, df2,minSize = 7,maxSize =500, nproc=1)
PvalResult<-filter(test1, test1$padj<= 0.05)
#DotPlot pathways of interest (Fig.3C)
pathways <- c("Oxydative phosphorylation",
"Regulation of cholesterol metabolic process",
"Response to IL12",
"Regulation of lipid biosynthetic process",
"MHC-I protein binding",
"TNFa mediated signalling pathway",
"Negative regulation of cell cycle progression",
"Fatty acyl-CoA biosynthetic process",
"Response to TNFa",
"G2M checkpoint",
"Response to type I interferon",
"IL1 mediated signalling pathway",
"Response to IL1",
"LPS response genes",
"Cytokine mediated signalling pathway",
"Myeloid cell differentiation",
"IL10 production",
"Regulation of endothelial cell proliferation",
"TNFa superfamily cytokine production",
"Angiogenesis",
"Pattern recognition receptor activity",
"PGE2 response genes")
genelist <- as.data.frame(PvalResult[PvalResult$pathway %in% pathways,])
ggplot(genelist, aes(x=NES, y=reorder(pathway,NES), size=size ,color=padj)) +
geom_point() +
scale_size_area(limits=c(10,450), max_size = 15) +
scale_colour_gradient(low="red",high="blue") +
labs(y='Pathway',x='NES')
#Run GSEA with ClusterProfiler
genelist <- data.frame(term = rep(names(miDB_sig5), sapply(miDB_sig5, length)),
gene = unlist(miDB_sig5))
df2 = sort(df2, decreasing = TRUE)
test2 <- GSEA(df2,TERM2GENE = genelist)
#Enrichment map (Fig.3D)
test3 <- filter(test2, ID %in% pathways)
test3 <- pairwise_termsim(test3)
emapplot(test3, min_edge = 0.01, color = "NES", layout="fr", repel =T)+
scale_fill_gradient2(name=bquote(NES),low="blue", high="red")
#N.B. Produces slightly different plot every time,
#but connection between pathways stays the same
\ No newline at end of file
library(Seurat)
library(openxlsx)
library(readxl)
library(ggplot2)
library(dplyr)
library(fgsea)
library(pheatmap)
library(scales)
library(RColorBrewer)
library(cetcolor)
#username <- "/Users/Squadrito/"
#username <- "/Users/bresesti.chiara/"
#wdir <- paste0(username, "Dropbox (HSR Global)/90-935462466_scRNAseq_Bresesti/Analysis_MM/results2/CB1_CB3_CB4")
#wdir_CB <- paste0(username, "Dropbox (HSR Global)/90-935462466_scRNAseq_Bresesti/CB_scripts/results2")
#plot_dir <- paste0(username,"/Dropbox (HSR Global)/CancerGeneTherapy/Cancer Gene Therapy/MS/2024 Bresesti et al/Scripts/plots and tables used in figures") # fdir previously
#dirCB <-paste0(username,"Dropbox (HSR Global)/90-935462466_scRNAseq_Bresesti/CB_scripts")
#sig <- readRDS(paste0(wdir, "/miDB_sig5.MLS.rds")) #GO terms db
wdir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_Bresesti/Analysis_MM/results2/CB1_CB3_CB4"
wdir_CB <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_Bresesti/Analysis_MM/CB_scripts/results2"
plot_dir <- "/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_Bresesti/Analysis_MM/CB_scripts_final/plots and tables used in figures"
dirCB <-"/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_Bresesti/Analysis_MM/CB_scripts"
dir.create(plot_dir, showWarnings=F, recursive=T)
# 16357 GO terms db. used for GSEA
sig <- readRDS("/beegfs/scratch/ric.squadrito/ric.squadrito/90-935462466_scRNAseq_Bresesti/reference/miDB_sig5.MLS.rds")
###############################################################################
set.seed(42)
obs1 <- readRDS(paste0(wdir, "/CB1_CB3_CB4_final.rds"))
# Annotate each cell with a sample label based on its original identity (library) and hash ID
obs1@meta.data$Sample <- "Undefined"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB1"&obs1@meta.data$hash.ID=="Mouse1"] <- "Ctrl_01"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB1"&obs1@meta.data$hash.ID=="Mouse2"] <- "Ctrl_02"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB1"&obs1@meta.data$hash.ID=="Mouse3"] <- "Ctrl_03"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB3"&obs1@meta.data$hash.ID=="Mouse1"] <- "miR_01"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB3"&obs1@meta.data$hash.ID=="Mouse2"] <- "miR_02"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB3"&obs1@meta.data$hash.ID=="Mouse3"] <- "miR_03"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB4"&obs1@meta.data$hash.ID=="Mouse1"] <- "miR_04"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB4"&obs1@meta.data$hash.ID=="Mouse2"] <- "miR_02"
obs1@meta.data$Sample[obs1@meta.data$orig.ident=="CB4"&obs1@meta.data$hash.ID=="Mouse3"] <- "miR_05"
obs1<-FindClusters(obs1, graph.name="RNA_snn_h.orig.ident", resolution=4)
# Manually annotate the clusters
obs1@meta.data$Annotation.final.CB<-"Undefined"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==0]<- "Monocytes"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==1]<- "TAMs_3"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==2]<- "TAMs_4"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==3]<- "LSECs"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==4]<- "TAMs_1"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==5]<- "Cancer cells"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==6]<- "cDC2_MoDCs"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==7]<- "TAMs_2"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==8]<- "T and NK cells"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==9]<- "Neutrophils"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==10]<- "pre DCs"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==11]<- "KCs"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==12]<- "TAMs_5"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==13]<- "B cells"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==14]<- "Hepatocytes"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==15]<- "Mig cDCs"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==16]<- "Cholangiocytes"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==17]<- "cDC1"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==18]<- "Macrophages"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.0.6==19]<- "pDCs"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.1.2==8]<-"KC-LSEC doublet"
obs1@meta.data$Annotation.final.CB[obs1@meta.data$RNA_snn_h.orig.ident_res.4==51]<-"Basophils"
# Visualize final annotation in Umap (Fig.5A)
obs1 <- SetIdent(obs1,value="Annotation.final.CB")
pdf(file = paste(plot_dir, "CB_Annotation.final.CB_Fig.5A.pdf", sep = "/"), width=9, height=7)
DimPlot(obs1, reduction="umap.harmony.orig.ident", group.by="Annotation.final.CB", label=T, repel=T)
dev.off()
# Adding a simplified annotation
obs1@meta.data$Shortlables<-obs1@meta.data$Annotation.final.CB
DCs<-c("Mig cDCs","pDCs","pre DCs", "cDC1", "cDC2_MoDCs")
obs1@meta.data$Shortlables[obs1@meta.data$Annotation.final.CB%in%DCs]<- "DCs"
granu<-c("Neutrophils","Basophils")
obs1@meta.data$Shortlables[obs1@meta.data$Annotation.final.CB%in%granu]<- "Granulocytes"
TAMs<-c("TAMs_1", "TAMs_2", "TAMs_3", "TAMs_4", "TAMs_5")
obs1@meta.data$Shortlables[obs1@meta.data$Annotation.final.CB%in%TAMs]<- "TAMs"
# Dotplot with markers for population (Suppl.Fig.5A)
obs1 <- SetIdent(obs1,value="Shortlables")
obs1$Shortlables <- factor(x = obs1$Shortlables,
levels = c("Cancer cells","Cholangiocytes",
"Hepatocytes", "LSECs", "KC-LSEC doublet",
"KCs", "Macrophages","TAMs", "Monocytes",
"Granulocytes","DCs", "B cells", "T and NK cells"))
gene <- c("Vil1", "Cdx2","Cldn4","Cldn7","Epcam",
"Krt19", "Sox9", "Cftr", "Hnf1b",
"Alb", "Ttr", "Hnf4a", "Cyp3a11",
"Lyve1", "Stab2", "Fcgr2b", "Tek",
"Vsig4", "Clec4f", "Timd4",
"Cd5l", "Mertk", "Timd4", "Adgre1","Cd68","Marco",
"Itgam", "Cd14","Arg1", "Ccl2",
"Ccr2", "Itgam", "Cx3cr1",
"Ly6g", "S100a8", "S100a9","Mcpt8", "Cpa3",
"Cd209a","Itgax", "Flt3","H2-Aa","Xcr1", "Clec9a",
"Cd19", "Cd22", "Cd79a", "Ms4a1", "Pax5",
"Cd3e", "Cd4", "Cd8a", "Ncr1", "Gzmb")
pdf(file = paste(plot_dir, "CB_DotPlot_Shortlables_Fig.S5A.pdf", sep="/"), width=12, height=6)
DotPlot(obs1,features = unique(gene), cols = "RdBu") +
theme(axis.text.x = element_text(angle=45, vjust=1, hjust=1))
dev.off()
# Generate table with distribution clusters by Mouse
# Table saved in excel and used to generate a barplot with GraphPad Prism (Suppl.Fig.5B)
cells_labels <- table(obs1@meta.data$Annotation.final.CB, obs1@meta.data$Sample)
cells_labels_p <- round(prop.table(table(obs1@meta.data$Annotation.final.CB, obs1@meta.data$Sample), 2) * 100, 1)
write.csv(cells_labels, paste0(plot_dir, "/number_cells_sample_Annotation.final.CB_Fig.S5B.csv"), row.names=T)
write.csv(cells_labels_p, paste0(plot_dir, "/number_cells_sample_Annotation.final.CB_percentage_Fig.S5B.csv"), row.names=T)
#### Analysis of mOrange+ fraction (Fig.5B, Suppl.Fig.5C,D) ####
# The metadata indicating mOrange positivity are: positive_cells (generated with the mapping), mOrange_label (generated with CellRanger), mOrange_union (union of the previous two labels)
# Generate table with mOrange+ cells distribution by cluster
# Table saved in excel and used to generate a barplot with GraphPad Prism (Suppl.Fig.5C)
# Suppl.Fig.5D was subsequently generated dividing data from Suppl.Fig.5C and B
obs2 <- subset(obs1, subset = mOrange_union == "mOrange+")
cells_labels_orange <- table(obs2@meta.data$Annotation.final.CB, obs2@meta.data$Sample)
cells_labels_orange_p <- round(prop.table(table(obs2@meta.data$Annotation.final.CB, obs2@meta.data$Sample), 2) * 100, 1)
write.csv(cells_labels_orange, paste0(plot_dir, "/number_cells_sample_Annotation.final.CB_mOrange_fraction_Fig.S5C.csv"), row.names=T)
write.csv(cells_labels_orange_p, paste0(plot_dir, "/number_cells_sample_Annotation.final.CB_percentage_mOrange_fraction_Fig.S5C.csv"), row.names=T)
# DimPlot with overlayed mOrange density (Fig.5B)
data <- Embeddings(object = obs2[["umap.harmony.orig.ident"]])[(colnames(obs2)), c(1,2)]
data <- as.data.frame(data)
obs1 <- SetIdent(obs1, value="cells")
pdf(file = paste(plot_dir, "UMAP_mOrange_cells_Fig.5B.pdf", sep = "/"), width=9, height=7)
DimPlot(obs1, reduction = "umap.harmony.orig.ident", pt.size = 0.1, cols = "azure3") +
stat_density_2d(aes_string(x = "UMAPh_1", y = "UMAPh_2", fill = "after_stat(level)"), data=data,
linewidth = 0.4, geom = "density_2d_filled",
colour = "black", alpha = 0.2, n = 150, h = c(2,2))+
scale_fill_gradientn(colours = cet_pal(16, name = "fire"))
dev.off()
#### GSEA (Fig.5C-E) ####
# Subset populations of interest (to plot)
selected_pop <- c("DCs", "KCs", "TAMs", "Monocytes", "Cancer cells", "LSECs")
obs3 <- subset(obs1, subset = Shortlables %in% selected_pop)
# Dotplot of Slc7a11 expression by cluster and experimental group (Fig.5C, groups divided in Illustrator)
obs3 <- SetIdent(obs3, value="Shortlables")
obs3$Shortlables <- factor(x = obs3$Shortlables, levels = c("LSECs", "Cancer cells", "Monocytes", "TAMs", "KCs", "DCs"))
pdf(file = paste(plot_dir, "CB_DotPlot_Shortlables_Slc7a11_Fig.5C.pdf", sep = "/"), width=9, height=5)
DotPlot(obs3, features = "Slc7a11", dot.scale=20, cols = "RdBu", split.by = "PROP.Group") +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1)) +
coord_flip()
dev.off()
# Run DEG between groups in each pop
simpl_DEG <- createWorkbook()
deg_results <- list()
for(i in selected_pop){
obs3 <- SetIdent(obs3, value="Shortlables")
# We want to calculate DGE between miR342 vs miRmut in each cell population in Shortlables
markers <- FindMarkers(obs3, ident.1 = "miR342", group.by = "PROP.Group", subset.ident = i, min.pct=0.01, logfc.threshold=0, min.cells.feature=3, min.cells.group=3) # added min.pct=0.01, logfc.threshold=0, min.cells.feature=3, min.cells.group=3
markers$diff_pct <- abs(markers$pct.1-markers$pct.2)
name <-paste("DEG_simpl", i, sep = "_")
deg_results[[name]] <- markers
assign(name, markers)
addWorksheet(simpl_DEG, name)
writeData(simpl_DEG, name, markers, rowNames = T)
}
saveWorkbook(simpl_DEG, file = paste0(plot_dir, "/DEG_simpl_Shortlables.xlsx"), overwrite = T)
# Run GSEA for each population
GSEA_simpl <- data.frame(matrix(nrow = 0, ncol = 9))
for(i in selected_pop){
df1 <- deg_results[[paste0("DEG_simpl_", i)]]
df1 <- df1[order(df1$avg_log2FC),]
ranks<-df1$avg_log2FC
names(ranks)<-rownames(df1)
test<-fgsea(pathways = sig, stats = ranks, minSize=5, maxSize=1000, nproc=1, nPermSimple=10000)
test$cluster <- i
colnames(GSEA_simpl) <- colnames(test)
GSEA_simpl <- rbind(GSEA_simpl, test)
}
write.xlsx(GSEA_simpl, file = paste0(plot_dir, "/GSEA_simpl_Shortlables.xlsx"))
# Plot barplot for selected gene sets (Fig.5D, names and colors edited on illustrator)
gene_sets <- c("HALLMARK_TNFA_SIGNALING_VIA_NFKB",
"HALLMARK_INFLAMMATORY_RESPONSE",
"GOMF_CHEMOKINE_ACTIVITY",
"GOBP_RESPONSE_TO_CYTOKINE",
"GOBP_CYTOKINE_MEDIATED_SIGNALING_PATHWAY",
"HALLMARK_INTERFERON_GAMMA_RESPONSE",
"HALLMARK_INTERFERON_ALPHA_RESPONSE",
"GOBP_RESPONSE_TO_TYPE_I_INTERFERON",
"GOMF_ANTIOXIDANT_ACTIVITY",
"GOBP_CELLULAR_OXIDANT_DETOXIFICATION",
"GOMF_GLUTATHIONE_PEROXIDASE_ACTIVITY",
"GOMF_GLUTATHIONE_TRANSFERASE_ACTIVITY",
"GOBP_GLUTATHIONE_DERIVATIVE_METABOLIC_PROCESS",
"GOBP_GLUTATHIONE_METABOLIC_PROCESS",
"GOBP_ANTIGEN_PROCESSING_AND_PRESENTATION",
"GOMF_ANTIGEN_BINDING",
"GOMF_MHC_CLASS_II_PROTEIN_COMPLEX_BINDING",
"GOMF_MHC_PROTEIN_COMPLEX_BINDING",
"GOCC_MHC_CLASS_II_PROTEIN_COMPLEX",
"GOCC_MHC_PROTEIN_COMPLEX",
"GOBP_LEUKOCYTE_MIGRATION_INVOLVED_IN_INFLAMMATORY_RESPONSE",
"GOBP_CYTOKINESIS",
"GOBP_MICROTUBULE_CYTOSKELETON_ORGANIZATION",
"GOBP_MICROTUBULE_BASED_PROCESS",
"GOBP_POSITIVE_REGULATION_OF_CELL_CYCLE_PROCESS",
"GOBP_CELL_DIVISION",
"HALLMARK_G2M_CHECKPOINT",
"GOBP_MITOTIC_CELL_CYCLE",
"GOBP_CELL_CYCLE_PHASE_TRANSITION")
plot <- filter(GSEA_simpl, pathway %in% gene_sets)
plot$cluster <- factor(plot$cluster, levels = c("LSECs", "Cancer cells", "TAMs", "Monocytes","KCs","DCs"))
# Remove the 'HALLMARK_' prefix and other prefixes from the 'pathway' column
plot$pathway <- gsub(x=plot$pathway, pattern="HALLMARK_|GOBP_|GOMF_|GOCC_", replacement="")
plot$pathway <- gsub(x=plot$pathway, pattern="_", replacement=" ")
gene_sets <- gsub(x=gene_sets, pattern="HALLMARK_|GOBP_|GOMF_|GOCC_", replacement="")
gene_sets <- gsub(x=gene_sets, pattern="_", replacement=" ")
# Reorder the terms
plot$pathway <- factor(plot$pathway, levels = gene_sets)
write.xlsx(plot, file = paste0(plot_dir, "/GSEA_plotted.xlsx"))
# Plot the GSEA results (Fig5D)
p <- ggplot(data=plot, aes(x=NES, y=pathway, fill=log10(pval))) +
geom_bar(stat="identity", color="black")+
scale_fill_gradientn(
colors=c("red","white","blue"),
values=rescale(c(-8,log10(0.05),0)),
limits=c(-8,0),
na.value = "red") +
labs(y='Pathway', x='NES')+
theme(strip.text = element_text(face = "bold"),
axis.text.x = element_text(colour = "black"),
axis.text.y = element_text(colour = "black"))+
geom_vline(xintercept=0)+
facet_wrap(~cluster, ncol = length(unique(plot$cluster)))
ggsave(filename = paste0(plot_dir, "/GSEA_Fig5D.pdf"), plot=p, width=12, height=7)
# Create signature file with only signature cytokines for the more stringent GSEA in Fig.5E
sig.cyto <- sig[15061:16357]
# Define the populations we want to use for this GSEA
selected_pop2 <- c("B cells","cDC1","cDC2_MoDCs","KCs","Macrophages","Mig cDCs","Monocytes","Neutrophils","pDCs","T and NK cells", "TAMs_1","TAMs_2","TAMs_3","TAMs_4","TAMs_5")
# Run DEG between groups in each population
simpl_DEG2 <- createWorkbook()
deg_results <- list()
for(i in selected_pop2){
obs1 <- SetIdent(obs1, value="Annotation.final.CB")
# We want to calculate DGE between miR342 vs miRmut in each cell population in Annotation.final.CB
markers <- FindMarkers(obs1, ident.1="miR342", group.by="PROP.Group", subset.ident=i, min.pct=0.01, logfc.threshold=0, min.cells.feature=3, min.cells.group=3) # added min.pct=0.01, logfc.threshold=0, min.cells.feature=3, min.cells.group=3
markers$diff_pct <- abs(markers$pct.1-markers$pct.2)
name <-paste("DEG_simpl", i, sep = "_")
deg_results[[name]] <- markers
assign(name, markers)
addWorksheet(simpl_DEG2, name)
writeData(simpl_DEG2, name, markers, rowNames = T)
}
saveWorkbook(simpl_DEG2, file = paste0(plot_dir, "/DEG_Annotation.final.CB.xlsx"), overwrite = T)
# Repeat GSEA for cytokines signatures only
GSEA_cyto <- data.frame(matrix(nrow=0, ncol=9))
for(i in selected_pop2){
df1 <- deg_results[[paste0("DEG_simpl_", i)]]
df1<-df1[order(df1$avg_log2FC),]
ranks<-df1$avg_log2FC
names(ranks)<-rownames(df1)
test<-fgsea(pathways = sig.cyto, stats = ranks, minSize=2, maxSize=1000, nproc=1, nPermSimple=30000)
test$cluster <- i
colnames(GSEA_cyto) <- colnames(test)
GSEA_cyto <- rbind(GSEA_cyto,test)
}
write.xlsx(GSEA_cyto, file = paste0(plot_dir, "/GSEA_cyto.xlsx"))
# Subset the GSEA_cyto to match the cytokine signature calculated in the populations with the same populations that we have in our scRNAseq.
# This is necessary because each cytokine was tested and the effect in each population was saved as a different signature.
df <- GSEA_cyto
df_Bcells <- df[grepl("B_cell", df$pathway) & df$cluster=="B cells",]
df_cDC1 <- df[grepl("cDC1", df$pathway) & df$cluster=="cDC1",]
df_cDC2 <- df[grepl("cDC2", df$pathway) & df$cluster=="cDC2_MoDCs",]
df_macrophage <- df[grepl("Macrophage", df$pathway) & grepl("TAMs|KCs|Macrophages", df$cluster),]
df_MigDC <- df[grepl("MigDC", df$pathway) & df$cluster=="Mig cDCs",]
df_Monocyte <- df[grepl("Monocyte", df$pathway) & df$cluster=="Monocytes",]
df_Neutrophil <- df[grepl("Neutrophil", df$pathway) & df$cluster=="Neutrophils",]
df_pDC <- df[grepl("pDC", df$pathway) & df$cluster=="pDCs",]
df_Tcells <- df[grepl("T_cell_CD8", df$pathway) & df$cluster=="T and NK cells",]
# Combine again all the generated subsets
df <- rbind(df_Bcells, df_cDC1, df_cDC2, df_macrophage, df_MigDC, df_Monocyte, df_Neutrophil, df_pDC, df_Tcells)
# Remove the redundant data frames
rm(df_Bcells, df_cDC1, df_cDC2, df_macrophage, df_MigDC, df_Monocyte, df_Neutrophil, df_pDC, df_Tcells)
# Generate a column indicating the cytokine analysed.
df$cytokine <- gsub(".*_","",df$pathway)
df$padj[is.na(df$padj)] <- 1 # Convert the NA into padj=1
# Assing marks for the significance: *=padj<0.05; **=padj<0.01; ***=padj<0.001.
df$label <- ""
df <- df %>% mutate(label = cut(
padj,
breaks = c(0, 0.001, 0.01, 0.05, 1),
label = c("***", "**", "*", "")))
paletteLength <- 100
myColor <- colorRampPalette(rev(brewer.pal(5, "RdBu")))(paletteLength)
# Define breaks to set the zero to the center
df$NES[is.na(df$NES)] <- 0 # Convert the NA into NAS=0
MIN <- min(df$NES)
MAX <- max(df$NES)
myBreaks <- c(seq(MIN, 0, length.out=ceiling(paletteLength/2) + 1),
seq(MAX/paletteLength, MAX, length.out=floor(paletteLength/2)))
# Plot heatmap cytokine signatures (Fig.5E, removed dendrograms in illustrator)
mat.df <- with(df, tapply(NES, list(cluster, cytokine), FUN = mean))
mat.label <- with(df, tapply(label, list(cluster, cytokine), FUN = paste))
pheatmap(mat.df, scale = "none", display_numbers = mat.label,
clustering_method = "ward.D2",
cutree_rows = 2, cutree_cols = 3,
col=myColor, breaks = myBreaks, na_col = "grey",
filename = paste0(plot_dir, "/Heatmap_cytokine_sig_Fig.5E_new.pdf"), cellwidth=10, cellheight=10) # width=12, height=7
# Bresesti_Cell_Reports_2025
**Reprogramming liver metastasis-associated macrophages towards an anti-tumoral phenotype through enforced miR-342 expression**
Bresesti C, Monti M, Beretta S, Merelli I, Squadrito M, _et al._; 2025
Corresponding Author: Mario Leonardo Squadrito. Email: squadrito.mario@hsr.it. [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/wouter_decoster.svg?style=social&label=Follow%20%40Mariosqua)](https://x.com/Mariosqua)
GEO:
[GSE274043](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE274043) (single-cell RNA-seq)
[GSE274044](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE274044) (RNA-seq on iKCs)
[GSE274045](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE274045) (small RNA-seq on splenic and hepatic cell populations)
[GSE274046](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE274046) (bulk RNA-seq on splenic and hepatic cell populations)
## Directories and Files
- environment_singlecell5.yml: contains the conda virtual environment that can be used to install all the dependencies.
- scripts: folder with R scripts used for the analyses
- CB2025_figure_1_RNAseq.R
- CB2025_figure_3_RNAseq.R
- CB2025_figure_5_scRNAseq.R
- TCGA_analysis.R
- data: results of the analyses
- plots
- tables
- reference
- regev_lab_cell_cycle_mouse.rds: contains the genes involved in the cell cycle in mouse
- miDB_sig5.MLS.rds: reference files for GSEA analysis
- miDB_sig5.MLS_cytokines.rds: reference files for GSEA analysis
## scRNAseq analysis
The initial preprocessing of the data, including mapping against the _Mus musculus_ GRCm38 reference genome and gene counting, was done using the 10x Genomics Cell Ranger Software (v7.2.0) using default parameters. The resulting data were imported into R and analyzed with the Seurat package (v5.0.1).
library(data.table)
library(survival)
library(dplyr)
library(babelgene)
library(openxlsx)
library(readxl)
library(survminer)
library(gridExtra)
library(ggplot2)
##Load dataset
#username <- "C:/Users/notaro.marco/"
username <- "/Users/bresesti.chiara/"
wdir<- paste0(username, "/Dropbox (HSR Global)/CancerGeneTherapy/Cancer Gene Therapy/MS/2024 Bresesti et al Cell Reports/TCGA_analysis")
setwd(wdir)
metaD<-data.frame(fread("TCGA_phenotype_denseDataOnlyDownload.tsv.gz", sep='\t',colClasses=c("character"),data.table=FALSE))
Surv01<-data.frame(fread("Survival_SupplementalTable_S1_20171025_xena_sp", sep='\t',colClasses=c("character"),data.table=FALSE))
# FPKM01<-fread("tcga_RSEM_Hugo_norm_count")
FPKM01<-fread("pancanMiRs_EBadjOnProtocolPlatformWithoutRepsWithUnCorrectMiRs_08_04_16.xena.gz")
FPKM01<-as.data.frame(FPKM01)
# Annot<-data.frame(fread("probeMap_gencode.v23.annotation.gene.probemap", sep='\t',colClasses=c("character"),data.table=FALSE))
allGenes <- FPKM01[,1]
#######################################################################
#####PLOT HR Score of signature for multiple tumor types###############
#####################################################################
humanGenes<-list(c("hsa-miR-342-3p"))
####create xlsx file with genes, patients and tumor types
Pan.data3 <- metaD[,]
Pan.data4 <- merge(Surv01,Pan.data3,by=1)
Genes_selected <- FPKM01[FPKM01[,1]%in%humanGenes,]
rownames(Genes_selected)<-Genes_selected[,1]
Genes_selected<-Genes_selected[,-1]
Genes_selected <- data.frame(t(Genes_selected))
Genes_selected$sample<-rownames(Genes_selected)
Pan.data5 <- merge(Genes_selected,Pan.data4,by.y="sample")
colnames(Pan.data5)
#setwd(wdir)
#write.xlsx(Pan.data5, "miR342_patients_survival.xlsx")
#############Regression with defined k2
k2<-0.5 #define quartile for selecting low/high score
df2 <- NULL
for (i in unique(Pan.data5$cancer.type.abbreviation)){
Pan.data6 <- Pan.data5[Pan.data5$cancer.type.abbreviation%in%i,]
if(nrow(Pan.data6)>2){
P.OS <- Surv(as.numeric(Pan.data6$OS.time), as.numeric(Pan.data6$OS))
cohort.score<-rep(0,nrow(P.OS))
M1 <- quantile(Pan.data6$hsa.miR.342.3p,k2)
cohort.score[Pan.data6$hsa.miR.342.3p>=M1]<-1
a1<-coxph(P.OS ~ as.numeric(cohort.score))
df1 <- data.frame(Tumor = unique(Pan.data6$cancer.type.abbreviation),npatients=length(Pan.data6$X_PATIENT), HR = summary(a1)$coefficients[2], SE=summary(a1)$coefficients[3],
p = summary(a1)$coefficients[5] )
df2 <- rbind(df2,df1)
df2<-df2[(order(df2$p)),]
}else{}}
#write.xlsx(df2, "miR342_HR_by_tumortype.xlsx")
###Filters selected tumors
df3<-df2
df3<-df3[df3$p<0.1,]
df3<-df3[df3$npatients>100,]
df3$significance <- ifelse(df3$p < 0.05, "p<0.05", "NS")
a<-ggplot(df3, aes(x = reorder(Tumor, HR), y = HR, color = significance, label = significance)) +
geom_point(size = 4) +
geom_errorbar(aes(ymin = pmax(HR-SE, 0), ymax = HR + SE), width = 0.2) +
scale_color_manual(name = "Color", values = c("red", "blue")) +
labs(title = "HR by tumor type",
x = "Tumor Type",
y = "HR") +
geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 1), fill = "lightblue", alpha = 0.01) +
geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1, ymax = Inf), fill = "pink", alpha = 0.01)+
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust= 1, color = "Black")) +
geom_hline(yintercept = 1, linetype = "dashed", color = "gray")
# pdf("HR_alltumors_342.pdf",width=9,height = 4)
a
# dev.off()
####Plot survival of chosen tumors
###Select type of tumor
df3<-df3[order(df3$HR),]
df3<-df3[df3$p<0.05,]
# pdf("Survival_***_342",width=10,height = 6)
par(mfrow = c(2,4))
survival<-list()
for (i in df3$Tumor){
tumor.type<-i
Pan.data6 <- Pan.data5[Pan.data5$cancer.type.abbreviation%in%i,]
P.OS <- Surv(as.numeric(Pan.data6$OS.time), as.numeric(Pan.data6$OS))
cohort.score<-rep(0,nrow(P.OS))
M1 <- quantile(Pan.data6$hsa.miR.342.3p,k2)
cohort.score[Pan.data6$hsa.miR.342.3p>=M1]<-1
##plotting survival
fit.score <- survfit(P.OS ~ cohort.score)
cox_model <- coxph(P.OS ~ as.numeric(cohort.score))
p_value <- summary(cox_model)$coefficients["as.numeric(cohort.score)", "Pr(>|z|)"]
formatted_p_value <- ifelse(p_value < 0.0001, "<0.0001", as.numeric(round(p_value,5)))
par(las = 0)
plot(fit.score, lty = c(1, 1), col = c("blue", "red"), xlab = "Time (d)", ylab = "Overall Survival", lwd = 2, bty = "n",
main = paste0("Survival in ", i))
# Add legend
legend(x = max(fit.score$time)/2, y = 1, legend = c("miRNA high", "miRNA low"), lty = c(1, 1), col = c("red", "blue"), lwd = 2,bty = "n")
text(x = max(fit.score$time)/1.8, y = 0.70, label = paste("p=", (formatted_p_value)), adj = c(0, 1))
text(x = 10, y = 0.05, label = paste("n =", length(cohort.score)), adj = c(0, 1))
survival[[i]] <- recordPlot()
}
# dev.off()
###Plot survival of metastastic/primary cancers
#k2<-0.5
Pan.data7 <- Pan.data5[Pan.data5$sample_type == "Metastatic",]
#Pan.data7 <- Pan.data5[Pan.data5$sample_type == "Primary Tumor",]
P.OS <- Surv(as.numeric(Pan.data7$OS.time), as.numeric(Pan.data7$OS))
cohort.score<-rep(0,nrow(P.OS))
M1 <- quantile(Pan.data7$hsa.miR.342.3p,k2)
cohort.score[Pan.data7$hsa.miR.342.3p>M1]<-1
fit.score <- survfit(P.OS ~ cohort.score)
cox_model <- coxph(P.OS ~ as.numeric(cohort.score))
p_value <- summary(cox_model)$coefficients["as.numeric(cohort.score)", "Pr(>|z|)"]
formatted_p_value <- ifelse(p_value < 0.0001, "<0.0001", as.numeric(round(p_value,5)))
par(las = 0)
pdf("Survival_metastatic_342.pdf",width=5,height =5)
plot(fit.score, lty = c(1, 1), col = c("blue", "red"), xlab = "Time (d)", ylab = "Overall Survival", lwd = 2, bty = "n",
main = "Metastatic tumors")
#Add legend
legend(x = max(fit.score$time)/2, y = 1, legend = c("miRNA high", "miRNA low"), lty = c(1, 1), col = c("red", "blue"), lwd = 2,bty = "n")
text(x = max(fit.score$time)/1.8, y = 0.70, label = paste("p=", (formatted_p_value)), adj = c(0, 1))
text(x = 10, y = 0.05, label = paste("n =", length(cohort.score)), adj = c(0, 1))
dev.off()
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