美文网首页
对TNBC做GEO数据挖掘

对TNBC做GEO数据挖掘

作者: Forest_Lee | 来源:发表于2019-04-09 15:50 被阅读0次

    原文名称:Identification of Key Genes and Pathways in Triple-Negative Breast Cancer by Integrated Bioinformatics Analysis
    GEO编号:GSE76275

    rm(list = ls()) 
    options()$repos #更改镜像
    options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
    options()$BioC_mirror
    options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
    options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
    
    ## 下载GEO数据
    library(GEOquery) #需提前安装
    gset <- getGEO('GSE76275', destdir=".",
                   AnnotGPL = F,     ## 注释文件
                   getGPL = F)       ## 平台文件 由于我这边下载GPL总是报错,故F,后面另下载。
    
    gset <- gset[[1]] #降级处理
    exprSet <- exprs(gset) #获取表达矩阵
    dim(exprSet)
    pdata <- pData(gset) #获取样本信息
    colnames(pdata)
    group_list <- pdata[,67] #通过观察得知该分组信息在pdata的第67列,提取出来
    table(group_list) # 对group_list进行统计,有67个not TN,198个TN
    NOT_TN_expr <- exprSet[,grep("not TN",group_list)] #根据group_list的分组把not TN的表达矩阵提取出来
    TN_expr     = exprSet[, !(colnames(exprSet) %in% colnames(NOT_TN_expr))] #根据group_list的分组把TN的表达矩阵提取出来
    dim(NOT_TN_expr)
    dim(TN_expr)
    exprSet <- cbind(NOT_TN_expr,TN_expr) #将两者重新合并,得到的是顺序排列的表达矩阵 此表达矩阵原本就按照先not TN,后TN的顺序排列,这一步骤是为了规范化,对无序的表达矩阵同样适用
    group_list = c(rep('not_TN',ncol(NOT_TN_expr)), 
                   rep('TN', ncol(TN_expr))) #在排好序的表达矩阵的基础上,对group_list进行排序 注意理解 两组无序的数据通过table等使之有序
    table(group_list)
    save(exprSet,group_list,file = "exprSet_by_group.Rdata") #保存排好序的表达矩阵和分组信息
    load("exprSet_by_group.Rdata") #加载
    
    GPL570 <- getGEO("GPL570",destdir = ".") #下载注释信息
    GPL570_a <- Table(GPL570) #提取注释信息
    GPL570_b <- GPL570_a[,c(1,11)] #通过观察 第一列ID和第11列gene symbol为我们所需 提取出来
    ids = GPL570_b[GPL570_b[,2] != '',] # 去除空白的基因名 留下的数据赋值给ids
    dim(ids)
    
    # 部分探针对应多个基因,需要将其提取出来
    library(plyr)
    a <- strsplit(as.character(ids[,2]),"///") #将基因用///分割
    tmp <- mapply(cbind, ids[,1],a) #分割后的基因与探针重新合并 成三列
    df <- ldply(tmp,data.frame) #将tmp转化为数据框
    ID2gene <- df[,2:3] #二选一 已经删除未被注释的ID
    save(ID2gene,file="ID2gene.Rdata") #保存
    load("ID2gene.Rdata")
    
    ## 将表达矩阵中未被注释的探针去除
    exprSet <- exprSet[row.names(exprSet)%in%ID2gene[,1],] #对两者进行匹配
    ID2gene <- ID2gene[match(rownames(exprSet),ID2gene[,1]),]
    colnames(ID2gene) <- c("id","gene") #修改ID2gene的列名
    dim(exprSet)
    dim(ID2gene) #两者列数相同
    
    tail(sort(table(ID2gene$gene))) # 同一个基因存在不同的表达量,我们需要对其进行筛选,一般只保留最大值
    {
      MAX = by(exprSet, ID2gene[,2], 
               function(x) rownames(x)[ which.max(rowMeans(x))])
      MAX = as.character(MAX)    
      exprSet = exprSet[rownames(exprSet) %in% MAX,]  #筛选出最大值的表达矩阵
      rownames( exprSet ) = ID2gene[ match( rownames( exprSet ), ID2gene[ , 1 ] ), 2 ]
    }
    dim(exprSet)
    exprSet[1:5,1:5]  
    save(exprSet, group_list, file = 'finalSet.Rdata')  ## 数据调整全部完成,保存最终数据
    
    ## 做PCA分析
    load("finalSet.Rdata")
    library(ggfortify) #加载R包,需提前安装
    data <- as.data.frame(t(exprSet)) #行太大,不要View
    dim(data)
    data$group <- group_list #给data加列
    png("pca_plot.png",res=100)
    autoplot(prcomp(data[, 1:(ncol(data)-1)]), data = data, colour = 'group') + theme_bw() 
    dev.off() ## 保存png图,完成PCA分析,可以查看一下png
    
    ## 用limma包做差异分析
    library(limma)
    design <- model.matrix(~0+factor(group_list))
    colnames(design) <- levels(factor(group_list))
    row.names(design) <- colnames(exprSet)
    design
    contrast.matrix <- makeContrasts("TN-not_TN", levels = design) 
    contrast.matrix
    load("ID2gene.Rdata")
    {
      fit <- lmFit(exprSet, design)  
      fit2 <- contrasts.fit(fit, contrast.matrix)  
      fit2 <- eBayes( fit2 )   ## Empirical Bayes Statistics for Differential Expression
      nrDEG = topTable( fit2, coef = 1, n = Inf ) #产生差异表达矩阵
      write.table( nrDEG, file = "nrDEG.out")
    }
    head(nrDEG)
    
    ## 之后可做热图,可画火山图,可行注释
    

    参考来源:生信技能树

    友情链接:

    课程分享
    生信技能树全球公益巡讲
    https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g
    B站公益74小时生信工程师教学视频合辑
    https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw
    招学徒:
    https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw

    欢迎关注公众号:青岛生信菜鸟团

    相关文章

      网友评论

          本文标题:对TNBC做GEO数据挖掘

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