my_RNAseq_processure

p_load(tidyverse, DESeq2, pheatmap, ggrepel, ggsci, reshape2, 
       GSVA, GSEABase, clusterProfiler, aPEAR)
dir.create('./GSEA_analysis')
color <- c(pal_npg(alpha = 1)(10),pal_nejm(alpha=1)(8))
### Construct the DESeq2 object
countData <- read.csv('count.csv', row.names = 1)
condition <- factor(gsub("_[0-9]$", "", colnames(countData)))
colData <- data.frame(row.names = colnames(countData), condition)
dds <- DESeqDataSetFromMatrix(countData, colData, design=~condition)
### Vst() for PCA analysis
rld <- vst(dds, blind=T)
p <- plotPCA(rld)
pcaData <- p$data
median <- pcaData %>% group_by(group) %>% summarize(X1=median(PC1), X2 = median(PC2))
xlab_text <- p$labels$x
ylab_text <- p$labels$y
p1 <- ggplot(pcaData, aes(PC1, PC2, color = group)) + 
    geom_point(size = 3) + 
    scale_color_manual(values = color[1:length(table(pcaData$group))]) +
    geom_text_repel(aes(X1, X2, label = group), data = median, family="serif") + 
    xlab(xlab_text) + ylab(ylab_text) +
    ggtitle("Sample_PCA_analysis") +
    theme_classic() +
    theme(legend.position = "none", text=element_text(family = "serif"))
ggsave("./GSEA_analysis/1.sample_PCA.pdf", p1, height=4, width=6)
  ### Correlation analysis on samples
rld_mat <- assay(rld)
rld_cor <- cor(rld_mat)
rld_cor_gg <- melt(rld_cor)
rld_cor_gg$value <- scale(rld_cor_gg$value)
p2 <- ggplot(rld_cor_gg, aes(x=Var1,y=Var2, fill=value)) +
    geom_raster() +
    scale_fill_gradient2(low='royalblue2',high='firebrick2',mid="grey95") +
    ggtitle("Sample_correlation") +
    xlab(NULL) + ylab(NULL) +
    theme_classic() +
    theme(legend.position = "none", text=element_text(family = "serif"))
ggsave("./GSEA_analysis/2.sample_correlation.pdf", p2, height=4, width=6)

  ### Construct the DESeq2 object and perform the analysis
countData <- read.csv('count.csv', row.names = 1)
  ### countData <- filter_all(countData, any_vars(. > 10))
condition <- factor(c(rep("ctrl",(ncol(countData)/2)),rep("treated",(ncol(countData)/2))))
colData <- data.frame(row.names = colnames(countData), condition)
dds <- DESeqDataSetFromMatrix(countData, colData, design=~condition)
dds <- DESeq(dds)
saveRDS(dds, './GSEA_analysis/3.DESeq2_result.rds')
res <- results(dds)
resdata <- as.data.frame(res)
  ### To avoid the padj value goes too low
resdata$padj[resdata$padj<1e-200] <- 1e-200
  ### Separate the change into "UP", "DN", and "Stable"
resdata$change = ifelse(resdata$padj < 0.05 & abs(resdata$log2FoldChange) >= 2, 
                          ifelse(resdata$log2FoldChange >= 2, 'Up', 'Dn'), 'Stable')
resdata <- na.omit(resdata)
write.csv(resdata, './GSEA_analysis/3.DESeq2_result.csv')
  ### Prepare the text information for labeling
resdata_sig <- subset(resdata, (padj < 0.05 & abs(log2FoldChange) >= 2))
resdata_sig <- resdata_sig %>% top_n(20, -log10(padj))
if(any(resdata$change == "Dn")){
    color_panel <- c('royalblue2', "grey95", 'firebrick2')
  } else {
    color_panel <- c("grey95", 'firebrick2')
  }
  ### Draw the graph
p3 <- ggplot(resdata, aes(log2FoldChange, -log(padj, 10), colour = change)) + 
    geom_point(alpha=0.8, size = 2) + 
    scale_color_manual(values=color_panel) + 
    xlab(expression("log"[2]*"FC")) + ylab(expression("-log"[10]*"FDR")) + 
    geom_vline(xintercept=c(-2,2),lty=4,col="lightgrey",lwd=0.8) + 
    geom_hline(yintercept = -log10(0.05),lty=4,col="lightgrey",lwd=0.8) +
    geom_label_repel(aes(label = rownames(resdata_sig)), data = resdata_sig, family="serif", 
                     max.overlaps = 100, max.iter = 1e9, force = 1e2) +
    ggtitle("Significant_genes (padj < 0.05 & log2FC > 2)",
            subtitle = paste0("Down: ",count(resdata$change == "Dn"),", ",
                              "Up: ",count(resdata$change == "Up"),sep="")) +
    theme_classic() +
    theme(legend.position = "none", text=element_text(family="serif"))
ggsave("./GSEA_analysis/3.volcano.pdf", p3, height=4, width=6)

  ### Prepare the DESeq2 result for GSEA analysis
dds <- readRDS('./GSEA_analysis/3.DESeq2_result.rds')
dds <- data.frame(results(dds))
log2FC_matrix <- na.omit(dds)
log2FC_matrix <- log2FC_matrix[log2FC_matrix$baseMean > 1,]
GSEA <- log2FC_matrix$stat
names(GSEA) <- rownames(log2FC_matrix)
GSEA <- sort(GSEA, decreasing=T)
  ### Load the geneset information based on human or mouse
if('GAPDH' %in% names(GSEA)){
    df <- readRDS("~/Desktop/Saved_index_for_R/GSEA_genesets_hs_2024.rds")
  } else {
    df <- readRDS("~/Desktop/Saved_index_for_R/GSEA_genesets_mm_2024.rds")
  }
  ### Perform the GSEA analysis
GSEA_ALL <- GSEA(GSEA, TERM2GENE=df, eps=0)
GSEA_matrix <- GSEA_ALL@result
  ### Save result
saveRDS(GSEA_ALL, './GSEA_analysis/4.GSEA_result.rds')
GSEA_matrix <- GSEA_matrix %>% select('ID', 'NES', 'p.adjust') %>% 
  tibble() %>% arrange(NES) %>% mutate(logP = -log10(p.adjust)) %>%
  mutate(color = if_else(NES > 2, 'royalblue2', if_else(NES < -2, 'firebrick2', 'grey95')))
GSEA_matrix$ID <- gsub('_',' ',GSEA_matrix$ID)
GSEA_top <- rbind(GSEA_matrix %>% top_n(-10, NES), GSEA_matrix %>% top_n(10, NES))
p4 <- ggplot(GSEA_matrix, aes(x = NES, y = logP, color = color)) + 
  geom_point() + theme_classic() + 
  geom_label_repel(aes(label = ID), GSEA_top, size = 2.5, direction="both") + 
  scale_color_manual(values = c('royalblue2','grey95','firebrick2')) +
  xlab('NES of enrichment') + ylab(expression("Log"[10]*"(p.adj)")) +
  geom_vline(xintercept=c(-2, 2),lty=4,col="grey",lwd=0.5) +
  theme(legend.position = 'none') + 
  ggtitle("GSEA_results_on_genesets")
ggsave("./GSEA_analysis/4_GSEA.pdf", p4, height=6, width=12)

  ### Perform filtering of the GSEA result
  # GSEA_matrix$Description <- gsub("WP_","",GSEA_matrix$Description)
  # GSEA_matrix$Description <- gsub("REACTOME_","",GSEA_matrix$Description)
  # GSEA_matrix$Description <- gsub("KEGG_","",GSEA_matrix$Description)
  # GSEA_matrix$Description <- gsub("GOMF_","",GSEA_matrix$Description)
  # GSEA_matrix$Description <- gsub("GOCC_","",GSEA_matrix$Description)
  # GSEA_matrix$Description <- gsub("GOBP_","",GSEA_matrix$Description)
GSEA_matrix <- GSEA_ALL@result
GSEA_matrix$Description <- gsub("_", " ", GSEA_matrix$ID)
# GSEA_matrix$Description <- tolower(GSEA_matrix$Description)
GSEA_matrix <- rbind(GSEA_matrix %>% top_n(100,NES), 
                       GSEA_matrix %>% top_n(-100,NES))
GSEA_matrix <- GSEA_matrix[unique(GSEA_matrix$ID),]
  ### Use the aPEAR package
set.seed(123)
data <- findPathClusters(GSEA_matrix, cluster = 'hier', minClusterSize = 3)
p5 <- plotPathClusters(GSEA_matrix, data$sim, data$clusters, 
                        repelLabels = TRUE, drawEllipses = TRUE)
ggsave("./GSEA_analysis/5.GSEA_network.pdf", p5, height=8, width=12)
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容