TCGA基因差异表达分析流程(3)

作者: ZJCLucasC22 | 来源:发表于2019-05-13 18:34 被阅读37次

    3.1 蛋白互作网络分析

    蛋白质的相互作用(PPI, Protein-protein interaction)是指蛋白质分子之间存在相互作用, 可以从生物化学、信号转导和遗传 网络的角度研究这种相关性。
    PPI网络中的每个结点代表一种蛋白质,节点之间有连线代表它 们之间存在相互作用关系。

    #安装STRINGdb 软件包
    source("https://bioconductor.org/biocLite.R")
    biocLite("STRINGdb")#用于连接STRING数据库
    install.packages("rlist")
    install.packages("STRINGdb")
    library("STRINGdb")
    library("rlist")
    #设置工作目录
    setwd("D:/train/TCGA/lab/PPI")
    getwd()
    #找到源文件
    deg_file<-"/train/TCGA/lab/DEG/Gene/DE_genes.txt"
    
    image.png
    # 获取物种的分类编号
    # get_STRING_species(version="10", species_name=NULL) 
    # 9606 代表人类,NBCI的物种分类编号
    string_db <- STRINGdb$new(version="10", species=9606,
                              score_threshold=700, input_directory= "D:/train/TCGA/lab/PPI")
    # 读取差异表达的文件,获得差异表达基因列表
    degs = read.table(deg_file,header=T,comment.char = "",check.names=F)
    degs$gene <- rownames(degs)
    head(degs)
    
    image.png
    # 查看有多少差异表达的基因需要分析 
    cat("Total deg genes:", dim(degs)[1])
    
    image.png
    # 将基因的ID map 到string 数据库中, 不一定每个基因都能map上
    deg_mapped <- string_db$map( degs, "gene", removeUnmappedRows = TRUE )
    
    image.png

    可以看到少了一百二十个左右,并不是所有基因都能映射的上

    # 筛选出一部分结果,进行绘图,选择了前两百个,当然可以任意
    hits <- deg_mapped$STRING_id[1:200]
    
    options(par(mar=c(2.1, 0.1, 4.1, 2.1)))
    # 绘图
    network_file = "network_plot.png"
    png(file=network_file, height = 900, width = 1600)
    string_db$plot_network( hits,required_score = 400)
    dev.off()
    
    image.png

    圆圈代表基因,线条代表基因间存在 相互作用,圆圈内部的结果代表蛋白 的结构。线头颜色代表证明蛋白之间 存在相互作用的不同证据

    第二种方法:采用cytoscape 进行网络分析

    # 将所有的结果输出到文件,后面采用cytoscape 进行网络分析
    info <- string_db$get_interactions(deg_mapped$STRING_id)
    write.table(info, file = "STRING_info.txt",sep="\t", row.names =F, quote = F)
    
    image.png

    在cytoscape软件中点击File→Import→Network→File
    按下图操作


    image.png
    image.png

    点击OK
    结果呈现:


    image.png
    图里面就是完整的蛋白互作网络分析。

    3.2 KEGG分析

    在生物体内,不同基因相互协调行使其生物学功能,利用通路分析可以更进一步了解基因的参与代谢通路及具体的生物学功能。
    Pathway富集分析以KEGG Pathway为单位,应用统计学检验,找出与整个基因组背景相比,在差异表达基因中显著性富集的Pathway。

    # 分析之前,先安装Bioconductor 和 clusterProfiler,org.Hs.eg.db
    source("https://bioconductor.org/biocLite.R")
    biocLite("org.Hs.eg.db")
    biocLite("clusterProfiler")
    biocLite("pathview")
    ############################################
    if (!requireNamespace("BiocManager", quietly = TRUE))
      install.packages("BiocManager")
    BiocManager::install("clusterProfiler")
    #因为最上面的语句我一直安装不成功,所以找到了这个办法,看起来成功了
    #语句来源:http://bioconductor.org/packages/release/bioc/html/clusterProfiler.html
    if (!requireNamespace("BiocManager", quietly = TRUE))
      install.packages("BiocManager")
    BiocManager::install("pathview")
    ################################################
    library("clusterProfiler")
    library("org.Hs.eg.db")
    library("pathview")
    #设置工作目录
    setwd("D:/train/TCGA/lab/Annotation")
    deg_file<-("/train/TCGA/lab/DEG/Gene/DE_genes.txt")
    # 读取差异表达的文件,获得差异表达基因列表
    degs = read.table(deg_file,header=T,comment.char = "",check.names=F)
    DEG_list <- rownames(degs)
    head(DEG_list)
    # KEGG pathway 富集
    gene_ids <- bitr(DEG_list, fromType="ENSEMBL", toType="ENTREZID", OrgDb="org.Hs.eg.db")
    #此处将DEG_LIST中的ID从ENSEMBL格式转化成ENTREZID格式
    kegg <- enrichKEGG(gene         = gene_ids$ENTREZID,
                       organism     = 'hsa',
                       pvalueCutoff = 0.05)
    #hsa代表的是人类
    head(kegg)
    write.table(kegg, file = "KEGG_enrichment_stat.txt",sep="\t", row.names =F, quote = F)
    
    image.png

    这个表目前还看不出什么有效信息,需要依重要性进行排序

    # 点图
    png(file = "kegg_dotplot.png")
    dotplot(kegg,title="Enrichment KEGG_dot")
    dev.off()
    
    image.png

    从图中信息可以看出这种癌症可能和碳代谢有很大关系

    # 合并表达信息和基因信息
    #知道哪些基因上调或下调
    #logFC,Fold_Change为差异表达基因上调倍数,然后取Log,LogFC一般表达相差两倍以上是有意义的
    #放宽至1.5或者1.2倍也可以接受
    deg_info <- degs['logFC']
    deg_info['ENSEMBL'] <- rownames(deg_info)
    gene_ids_merge <- merge(gene_ids, deg_info,by='ENSEMBL')
    # 去掉ENTREZID 重复的基因
    index<-duplicated(gene_ids_merge$ENTREZID)
    gene_ids_merge<-gene_ids_merge[!index,]
    # 提取FC的值,在map上进行颜色标注
    map_ids <- as.matrix(gene_ids_merge['logFC'])
    rownames(map_ids) <- gene_ids_merge$ENTREZID
    
    #  绘制富集的pathway 以hsa00280 为例
    pathway_id <- "hsa00280"
    map <- pathview(gene.data  = map_ids[,1],
                    pathway.id = pathway_id,
                    species    = "hsa", kegg.native = TRUE)
    
    image.png
    image.png

    3.3GO富集分析

    GO(Gene ontology)按照生物途径(Biology Process),分子功能(Molecular Function)和细胞 定位(Cellular Location)对基因进行注释和分类。通 过对差异表达基因进行GO terms富集度统计学的分 析,计算出差异基因GO term的p-value和p-value的 FDR值(q-value),定位差异基因最可能相关的GO term。

    #GO
    #ont有三种 :BP(Biology Process),CL(Molecular Function),MF(Cellular Location)
    ego <- enrichGO(gene          = DEG_list,
                    keyType       = "ENSEMBL",
                    OrgDb         = org.Hs.eg.db,
                    ont           = "BP",
                    pAdjustMethod = "BH",
                    pvalueCutoff  = 0.05,
                    qvalueCutoff  = 0.05,
                    readable      = TRUE)
    
    write.table(ego, file = "GO_enrichment_stat.txt",sep="\t", row.names =F, quote = F)
    

    看下文件内容


    image.png
    ego_results<-summary(ego)
    ego_results
    
    image.png
    image.png
    image.png
    # 绘制相关图
    pdf(file = "ego_barplot.pdf")
    barplot(ego, showCategory=20, x = "GeneRatio")
    #画前面20个
    dev.off()
    
    image.png
    # 点图
    pdf(file = "ego_dotplot.pdf")
    dotplot(ego,showCategory=20)
    dev.off()
    
    image.png
    
    # 绘制topGO图
    if (!requireNamespace("BiocManager", quietly = TRUE))
      install.packages("BiocManager")
    BiocManager::install("topGO")
    library("topGO")
    pdf(file = "topgo.pdf")
    plotGOgraph(ego)
    dev.off()
    
    image.png

    相关文章

      网友评论

        本文标题:TCGA基因差异表达分析流程(3)

        本文链接:https://www.haomeiwen.com/subject/rsaxaqtx.html