转录组入门(8): 差异基因结果注释

前言

我们统一选择p<0.05而且abs(logFC)大于1的基因为显著差异表达基因集,对这个基因集用R包做KEGG/GO超几何分布检验分析。然后把表达矩阵和分组信息分别作出cls和gct文件,导入到GSEA软件分析。基本任务是完成这个分析。生信技能树

实验操作

首先根据上一节的结果,按p<0.05且abs(logFC)>1作为筛选标准取差异表达基因。

DEG <- DEG[!is.na(DEG$log2FoldChange),] #去除NA行
# 按p<0.05且abs(logFC)>1取差异基因
DEG_filt <- DEG[abs(DEG$log2FoldChange) > 1 & DEG$pvalue < 0.05,]

用Y叔的clusterProfiler包进行富集分析。

GO

library(clusterProfiler)
# 差异基因ID转换,Symbol -> Entrezid
eg <- bitr(rownames(DEG_filt),fromType = "SYMBOL",toType = "ENTREZID",OrgDb = "org.Mm.eg.db")

#### 探索org.Mm.eg.db包,得到所有有GO注释的Entrezid
ids <- keys(org.Mm.eg.db, 'ENTREZID')
id_GO <-select(org.Mm.eg.db,keys = ids,columns = c("ENTREZID","GO"))
id_GO <- subset(id_GO,!is.na(GO)) #去除无GO注释的gene
id_GO <- select(org.Mm.eg.db,keys = ids,columns = c("ENTREZID","GO")) %>% subset(!is.na(GO))  # require(magrittr)

length(unique(id_GO$ENTREZID)) # id去重后还剩24139个
org.Mm.eg() #总共68314个Entrezid,其中24139个有GO注释
# org.Mm.egGO has 24139 mapped keys (of 68314 keys)
str(ego)
@ universe     : chr [1:23454]
###

# GO分析使用默认背景基因集
ego <- enrichGO(gene = eg$ENTREZID,
                keyType = "ENTREZID",
               # universe,
                OrgDb = "org.Mm.eg.db",
                ont = "BP",
                pAdjustMethod = "BH",
                pvalueCutoff = 0.01,
                qvalueCutoff = 0.05,
                readable = TRUE)
ego_df <- as.data.frame(ego)  # ego_df <- ego@result
dotplot(ego, showCategory=20)

加universe后报错,强制类型转换错误。

str(ego)显示universe有23454个gene,而org.Mm.eg.db里有GO注释的有24139个。搜索之后发现了原因。即背景基因集会筛选有对应注释分类的基因,而不是全部基因。

# 上面enrichGO中universe筛选出“BP”注释的id
id_GO %>% subset(ONTOLOGY=="BP") %$% ENTREZID %>% setequal(ego@universe)  #TRUE
1504449805425.png
# 利用全部检测到的基因作为背景
# SYMBOL to Entrezid
DEG_id <- bitr(rownames(DEG),fromType = "SYMBOL",toType = "ENTREZID",OrgDb = "org.Mm.eg.db")
# DEG_ALL_GO <- select(org.Mm.eg.db,keys = DEG_id$ENTREZID,columns = c("ENTREZID","GO")) %>% subset(!is.na(GO))  筛选有GO注释的,不需要
ego2 <- enrichGO(gene = eg$ENTREZID,
                keyType = "ENTREZID",
                OrgDb = "org.Mm.eg.db",
                ont = "BP",
                pAdjustMethod = "BH",
                universe = DEG_id$ENTREZID,
                pvalueCutoff = 0.01,
                qvalueCutoff = 0.05,
                readable = TRUE)


# 同时分析所有GO分类
ego3 <- enrichGO(gene = eg$ENTREZID,
                 keyType = "ENTREZID",
                 OrgDb = "org.Mm.eg.db",
                 ont = "ALL",
                 pAdjustMethod = "BH",
                 universe = DEG_id$ENTREZID,
                 pvalueCutoff = 0.01,
                 qvalueCutoff = 0.05,
                 readable = TRUE)

ego3_df <- as.data.frame(ego3)
ego3_BP <- subset(ego3_df,ONTOLOGY=="BP") # 提取其中一个分类结果
require(ggplot2)
dotplot(ego2, showCategory=20) + xlim(NA,0.058) # + scale_size(range=c(2,6))
# dotplot(ego3, showCategory=20)
1504528494106.png

KEGG

# KEGG
ekk <- enrichKEGG(gene = eg$ENTREZID,
                 organism = "mmu",   # "hsa"
                 keyType = "kegg",
                 pAdjustMethod = "BH",
                 universe = DEG_id$ENTREZID,
                 pvalueCutoff = 0.01,
                 qvalueCutoff = 0.05,
                 use_internal_data = TRUE)

GSEA

先将基因按不同标准(比如GO、KEGG、癌症特征基因等)分类成多个基因集(S),依据表达值或者变化倍数等对基因排序(L),计算ES(富集得分)、NES(标准化富集得分)再进行统计检验。

GSEA的目的就在于判断S的成员是随机的分布于L上,还是有序的分布于顶部与尾部。

1504692091378.png

ES计算基本规则是扫描排序后基因序列L,每出现一个基因集(S)中的基因,则增加ES值,反之则减少ES值。ES>0,表明S基因集排在L中的前方,反之则在后方。

1504691397531.png
# GSEA需要先降序排列,去重复
genelist <- DEG_filt$log2FoldChange
names(genelist) <- rownames(DEG_filt)
genelist <- sort(genelist, decreasing = TRUE)
gsea_BP <- gseGO(genelist,
      OrgDb = "org.Mm.eg.db",
      keyType = "ENTREZID",
      ont="BP")

ridgesplot(gsea_BP)             #joyplot(gsea_BP)
gseaplot(gsea_BP, geneSetID="GO:0050767", by = "runningScore")
1504540331572.png
1504540363964.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容