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