美文网首页
2021-04-27 数据下载及理解

2021-04-27 数据下载及理解

作者: 学习生信的小兔子 | 来源:发表于2021-04-27 17:01 被阅读0次

    参考:http://www.bio-info-trainee.com/3754.html
    下载GSE76275数据地址https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi

    1、下载表达矩阵

    #step1
    rm(list=ls())
    library(GEOmirror)
    gset <- geoChina('GSE76275')
    gset=gset[[1]]
    exp <- exprs(gset)  #表达矩阵
    dim(exp)#265个样本,54675个探针
    exp[1:4,1:4]
    pdata <- pData(gset) #分组信息
    #通过观察,找到分组信息列
    table(pdata$characteristics_ch1.1)
    pdata$characteristics_ch1.1=='triple-negative status: not TN'
    #利用ifelse语句生成二分类分组信息(是否为三阴性乳腺癌)
    group_list <- ifelse(pdata$characteristics_ch1.1=='triple-negative status: not TN',
                         'noTNBC', 'TNBC')
    save(exp, group_list, file = "exp_group.Rdata")
    

    2、检查数据

    2.1PCA分析

    step2 检查
    ##PCA
    ## 下面是画PCA的必须操作,需要看说明书。
    install.packages(c('FactoMineR','factoextra'))
    library(FactoMineR)#画主成分分析图需要加载这两个包
    library(factoextra)
    exp1 <- t(exp) #画PCA图时要求是行名是样本名,列名时探针名,因此此时需要转换
    exp1 <- as.data.frame(exp1)#将matrix转换为data.frame
    exp1[1:4,1:4]
    exp1 <- cbind(exp1,group_list) #cbind横向追加,即将分组信息追加到最后一列
    exp1.pca <- PCA(exp1[,-54676],graph=FALSE)
    exp1.pca <- PCA(exp1[,-col(exp1],graph=FALSE)#和上面方式相同
    fviz_pca_ind(exp1.pca,
                 geom.ind = "point", # show points only (nbut not "text")
                 col.ind = exp1$group_list, # color by groups
                 palette = c("#00AFBB", "#E7B800"),
                 addEllipses = TRUE, # Concentration ellipses
                 legend.title = "Groups"
    )
    
    pca.png

    可以看到那些不属于TNBC的样本跟TNBC组有着很清晰的界限,而且可以看到TNBC组本身也有着界限分明的两列。

    2.2 heatmap

    ##热图
    rm(list=ls())
    load('exp_group.Rdata')
    Sys.setenv(LANGUAGE='EN')
    exp[1:4,1:4]
    system.time(apply(exp,1,sd))
    system.time(for (i in 1:nrow(exp)){
      sd(exp[1,])
    })
    
    tail(sort(apply(exp,1,sd)),1000)
    #取出方差最大的1000个基因
    cg <- names(tail(sort(apply(exp,1,sd)),1000))
    #apply按行('1'是按行取,'2'是按列取)取每一行的方差,从小到大排序,取最大的1000个
    #sort 排序,默认升序排序。tail从后向前显示,默认后6行
    library(pheatmap)
    pheatmap(exp[cg,],show_colnames = F,
             show_rownames =F)
    ##将表达量进行归一化
    n=t(scale(t(exp[cg,])))
    #通过“scale”对log-ratio数值进行归一化,现在的dat是行名为探针,列名为样本名,
    #由于scale这个函数应用在不同组数据间存在差异时,需要行名为样本,因此需要用t(dat[cg,])来转换,最后再转换回来
    #t 对矩阵进行行列转换
    n[n>2]=2   #限定上限,使表达量大于2的等于2
    n[n< -2]= -2  #限定下限,使表达量小于-2的等于-2
    pheatmap(n,show_colnames = F,
             show_rownames =F)
    
    #标上分组信息
    group_exp <- data.frame(group_list) #把character向量转换为数据框
    head(group_exp)
    rownames(group_exp) <- colnames(n)
    pheatmap(n,show_colnames = F,
             show_rownames =F,
             annotation_col = group_exp)
    
    
    简化方式
    rm(list=ls())
    load('exp_group.Rdata')
    Sys.setenv(LANGUAGE='EN')
    tail(sort(apply(exp,1,sd)),1000)
    #取出方差最大的1000个基因
    cg <- names(tail(sort(apply(exp,1,sd)),1000))
    cm <- exp[cg,] ##choose_matrix
    cm[1:4,1:4]
    cm <- t(scale(t(cm)))#标准化处理
    cm[1:4,1:4]
    cm[cm>2]=2   #限定上限,使表达量大于2的等于2
    cm[cm< -2]= -2  #限定下限,使表达量小于-2的等于-2
    cm[cm>2]=2;cm[cm< -2]= -2
    #热图的特定分组格式
    group_dat <- data.frame(group=group_list,row.names = colnames(exp))
    head(group_dat)
    library(pheatmap)
    pheatmap(cm,show_rownames = F,
             show_colnames = F,
             annotation_col = group_dat)
    
    
    
    #补充
    rm(list=ls())
    cg <- names(tail(sort(apply(exp,1,sd)),1000))
    cm <- exp[cg,]
    cm <- t(scale(t(cm)))
    cm[cm>2 ]=2
    cm[cm< -2]=-2
    group_exp <- data.frame(group=group_list,row.names= colnames(exp))
    head(group_exp)
    library(pheatmap)
    pheatmap(cm,show_rownames = F,
             show_colnames = F,
             annotation_col = group_exp)
    
    
    
    ## 单独看 TNBC 的 top 1000 基因的热图
    tnbc_exp <- exp[,group_list=='TNBC']
    cg1 <- names(tail(sort(apply(tnbc_exp,1,sd)),1000))
    cm1 <- tnbc_exp[cg1,]
    cm1 <- t(scale(t(cm1)))
    cm1[cm1>2]=2
    cm1[cm1< -2]= -2
    cm1[1:4,1:4]
    pheatmap(cm1,show_rownames = F,
             show_colnames = F)
    
    
    
    
    ## 单独看 noTNBC TNBC 的 top 1000 基因的热图
    notnbc_exp <- exp[,group_list=='noTNBC']
    cg2 <- names(tail(sort(apply(notnbc_exp,1,sd)),1000))
    cm2 <- notnbc_exp[cg2,]
    cm2 <- t(scale(t(cm2)))
    cm2[cm2>2]=2
    cm2[cm2< -2]= -2
    pheatmap(cm2,show_rownames = F,
             show_colnames = F)
    
    
    heatmap
    TNBC.heatmap
    noTNBC.heatmap

    参考:https://www.jianshu.com/p/dc631525ac30

    相关文章

      网友评论

          本文标题:2021-04-27 数据下载及理解

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