美文网首页生物信息学R语言源码
生信-使用R语言将gdc数据转化为基因表达矩阵

生信-使用R语言将gdc数据转化为基因表达矩阵

作者: lietobrain | 来源:发表于2019-12-21 11:15 被阅读0次

    gdc-client下载数据后,接下来,我们可以尝试把gdc数据转化为基因表达矩阵,这里需要对原始数据文件进行加工处理

    1.准备工作

    创建一个工作目录,将样本文件夹放在all文件夹下
    在本地选择一个文件夹:f:/gdc/,打开R-Studio

    # 设置目录
    setwd("f:/gdc/")
    # 获取当前目录
    getwd()
    # 新建文件夹all,zip,unzip,
    # 想要的效果:all放所有样本文件,zip放目标的压缩文件,unzip放目标文件
    dir.create('all')
    dir.create('zip')
    dir.create('unzip')
    

    将所有样本文件夹中的放到all文件夹下


    所有样本文件

    文件结构需要了解一下,打开以上任意一个文件夹,我们的目标只需要counts.gz的压缩包里边的文件,所以这里需要进行文件预处理


    样本文件

    2.文件预处理

    all文件夹中的所有文件,提取出里边的压缩文件到zip文件夹

    setwd("f:/gdc/all")
    getwd()
    
    # 不要遍历文件内的文件,直接循环一次就够了
    allFolder<-list.dirs(".",TRUE,FALSE)
    # allFolder下每一个文件由压缩包+log文件夹组成(如上图),这里只需要将压缩包拿出来
    
    for(f in allFolder){
    # x.path为f所在的文件下文件的文件路径,paste作用是拼接n与list.files(n),
    # 并使用sep做连接词组成路径
      x.path=paste(f,list.files(f),sep='/')
      # 再深入,获取压缩文件(忽略logs文件夹),并拷贝到'f:/gdc/zip'路径
      for(filePath in x.path){
        if(file_test("-f", filePath)){
          file.copy(filePath,'f:/gdc/zip',recursive = T)
        }
      }
    }
    
    zip效果图

    将这些压缩文件,使用系统的解压工具,手动解压到unzip文件夹下


    使用系统解压工具进行手工解压
    等待ing

    得到最后能够进行数据处理的数据集


    最终想要的数据集

    3.数据处理

    将这些文件里面的数据合并成想要的基因表达矩阵

    setwd("f:/gdc/unzip")
    getwd()
    x_merge=NULL
    i<-list.files()
    #merge所有的文件为x_merge,即x坐标为每一个文件名,y坐标为文件对应的值,
    # 举例 A B C三个文件,A有数据h1:1,h2:2,h3:3,B有数据h1:1,h2:1,h3:1,C有数据h1:3,h2:3,h3:3
    # 那么merge后就是y坐标为h1,h2,h3,x坐标为A,B,C,对应坐标值即数据值,例如(A,h1)数据为1
    
    for(n in i){
      x=read.delim(n,col.names = c('ID',substr(n,1,9)))
      if(is.null(x_merge)){
        x_merge=x
      }
      else{
        x_merge=merge(x_merge,x,by='ID')
      }
    }
    
    rownames(x_merge)<-x_merge$ID
    

    首先理解一下,原本counts文件里边的数据代表什么,有什么用


    counts文件的数据

    所有counts合并后的数据集:x_merge


    x_merge

    4.演示例子

    # 演示:获取最后五个,并输出前3列前10行的数据表格
    x_reduce=x_merge[-(1:5),]
    x_reduce=x_reduce[,-1]
    rownames(x_reduce)=x_merge$ID[-c(1:5)]
    
    head(x_reduce,10)[,1:3]
    

    演示:获取最后五个,并输出前3列前10行的数据表格


    演示例子

    5. R脚本大放送

    #获取当前目录
    setwd("f:/gdc/")
    getwd()
    #新建文件夹all,将所有样本文件夹中的压缩数据移动到all文件夹下
    dir.create('all')
    dir.create('zip')
    dir.create('unzip')
    
    # 手动把之前的所有文件放在all下
    setwd("f:/gdc/all")
    getwd()
    
    # 不要遍历文件内的文件,直接循环一次就够了
    allFolder<-list.dirs(".",TRUE,FALSE)
    # allFolder下每一个文件由压缩包+log文件夹组成,这里只需要将压缩包拿出来
    
    for(f in allFolder){
      
    # x.path为f所在的文件下文件的文件路径,paste作用是拼接n与list.files(n),并使用sep做连接词
    # 组成路径
      x.path=paste(f,list.files(f),sep='/')
      # 获取压缩文件,并拷贝到'f:/gdc/zip'路径
      for(filePath in x.path){
        if(file_test("-f", filePath)){
          file.copy(filePath,'f:/gdc/zip',recursive = T)
        }
      }
    }
    
    # 将zip中的压缩文件,全选,右键使用解压工具全部解压到另外一个路径f:/gdc/unzip"
    setwd("f:/gdc/unzip")
    getwd()
    x_merge=NULL
    i<-list.files()
    #merge所有的文件为x_merge,即x坐标为每一个文件名,y坐标为文件对应的值,
    # 举例 A B C三个文件,A有数据h1:1,h2:2,h3:3,B有数据h1:1,h2:1,h3:1,C有数据h1:3,h2:3,h3:3
    # 那么merge后就是y坐标为h1,h2,h3,x坐标为A,B,C,对应坐标值即数据值,例如(A,h1)数据为1
    
    for(n in i){
      x=read.delim(n,col.names = c('ID',substr(n,1,9)))
      if(is.null(x_merge)){
        x_merge=x
      }
      else{
        x_merge=merge(x_merge,x,by='ID')
      }
    }
    
    rownames(x_merge)<-x_merge$ID
    
    # 获取最后五个
    x_reduce=x_merge[-(1:5),]
    x_reduce=x_reduce[,-1]
    rownames(x_reduce)=x_merge$ID[-c(1:5)]
    
    head(x_reduce,10)[,1:3]
    

    相关文章

      网友评论

        本文标题:生信-使用R语言将gdc数据转化为基因表达矩阵

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