前些天群主给了我们学徒一个任务,下载数据集:GSE84073 做一些批量分析!

群主想看到,HCC,CHC,CC这3组,跟healthy的分开比较,然后3个火山图,3个热图。

那么首先需要下载counts值矩阵,样本信息如下:

GSM2653819    Healthy1-Tissue_1 [RNA-Seq]GSM2653820    Healthy1-Tissue_2 [RNA-Seq]GSM2653821    Healthy2-Tissue [RNA-Seq]GSM2653822    Healthy3-Tissue [RNA-Seq]GSM2653823    HCC1-Tissue_1 [RNA-Seq]GSM2653824    HCC1-Tissue_2 [RNA-Seq]GSM2653825    HCC3-Tissue [RNA-Seq]GSM2653826    CHC1-Tissue_1 [RNA-Seq]GSM2653827    CHC1-Tissue_2 [RNA-Seq]GSM2653828    CHC2-Tissue [RNA-Seq]GSM2653829    CC1-Tissue_1 [RNA-Seq]GSM2653830    CC1-Tissue_2 [RNA-Seq]GSM2653831    CC2-Tissue [RNA-Seq]GSM2653832    CC3-Tissue [RNA-Seq]

肯定是不能一个个手动点击样本信息进入寻找文件下载链接,那样低效。

查看具体的每个文件

压缩包解压的方式下载表达矩阵后,发现,每个样本都是一个文本文件

GSM2653819_Counts_notmergedTR_Healthy1_Tissue_1.txt.gzGSM2653820_Counts_notmergedTR_Healthy1_Tissue_2.txt.gzGSM2653821_Counts_notmergedTR_Healthy2_Tissue.txt.gzGSM2653822_Counts_notmergedTR_Healthy3_Tissue.txt.gzGSM2653823_Counts_notmergedTR_HCC1_Tissue_1.txt.gzGSM2653824_Counts_notmergedTR_HCC1_Tissue_2.txt.gzGSM2653825_Counts_notmergedTR_HCC3_Tissue.txt.gzGSM2653826_Counts_notmergedTR_CHC1_Tissue_1.txt.gzGSM2653827_Counts_notmergedTR_CHC1_Tissue_2.txt.gzGSM2653828_Counts_notmergedTR_CHC2_Tissue.txt.gzGSM2653829_Counts_notmergedTR_CC1_Tissue_1.txt.gzGSM2653830_Counts_notmergedTR_CC1_Tissue_2.txt.gzGSM2653831_Counts_notmergedTR_CC2_Tissue.txt.gzGSM2653832_Counts_notmergedTR_CC3_Tissue.txt.gzGSM2653833_Counts_notmergedTR_Healthy1_Organoid_1.txt.gzGSM2653834_Counts_notmergedTR_Healthy1_Organoid_2.txt.gzGSM2653835_Counts_notmergedTR_Healthy2_Organoid.txt.gzGSM2653836_Counts_notmergedTR_Healthy2_Organoid_DM.txt.gzGSM2653837_Counts_notmergedTR_Healthy3_Organoid.txt.gzGSM2653838_Counts_notmergedTR_Healthy3_Organoid_DM.txt.gzGSM2653839_Counts_notmergedTR_HCC1_Organoid_1.txt.gzGSM2653840_Counts_notmergedTR_HCC1_Organoid_2.txt.gzGSM2653841_Counts_notmergedTR_HCC3_Organoid.txt.gzGSM2653842_Counts_notmergedTR_CHC1_Organoid_1.txt.gzGSM2653843_Counts_notmergedTR_CHC1_Organoid_2.txt.gzGSM2653844_Counts_notmergedTR_CHC1_Organoid_a.txt.gzGSM2653845_Counts_notmergedTR_CHC1_Organoid_b.txt.gzGSM2653846_Counts_notmergedTR_CHC2_Organoid.txt.gzGSM2653847_Counts_notmergedTR_CC1_Organoid_1.txt.gzGSM2653848_Counts_notmergedTR_CC1_Organoid_2.txt.gzGSM2653849_Counts_notmergedTR_CC1_Organoid_a.txt.gzGSM2653850_Counts_notmergedTR_CC1_Organoid_b.txt.gzGSM2653851_Counts_notmergedTR_CC1_Organoid_c.txt.gzGSM2653852_Counts_notmergedTR_CC2_Organoid.txt.gzGSM2653853_Counts_notmergedTR_CC3_Organoid.txt.gz

格式很统一,如下:

Ensembl Symbol  CountsENSG00000278566 OR4F29  0ENSG00000273547 OR4F16  0ENSG00000187634 SAMD11  33ENSG00000188976 NOC2L   160ENSG00000187961 KLHL17  13ENSG00000187583 PLEKHN1 0ENSG00000187642 PERM1   0ENSG00000188290 HES4    1ENSG00000187608 ISG15   5ENSG00000188157 AGRN    187ENSG00000237330 RNF223  5ENSG00000131591 C1orf159        0ENSG00000162571 TTLL10  8

现在就需要批量依次读取这些文件,然后合并成为表达矩阵!

首先参考群主的WGCNA教程的合并方法

当时群主的代码是linux的shell脚本+R里面的dcast函数,如果大家感兴趣群主的WGCNA教程,见:

  • 一文看懂WGCNA 分析(2019更新版)
  • 通过WGCNA作者的测试数据来学习
  • 重复一篇WGCNA分析的文章(代码版)
  • 重复一篇WGCNA分析的文章(解读版)(逆向收费读文献2019-19)
  • 关键问题答疑:WGCNA的输入矩阵到底是什么格式

我仔细看了看代码其实,就是首先在linux是把多个文件合并成为 tmp.txt  文本。

  ## https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE48213  #wget -c ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE48nnn/GSE48213/suppl/GSE48213_RAW.tar  #tar -xf GSE48213_RAW.tar  #gzip -d *.gz  ## 首先在GSE48213_RAW目录里面生成tmp.txt文件,使用shell脚本  # awk '{print FILENAME"\t"$0}' GSM*.txt |grep -v EnsEMBL_Gene_ID >tmp.txt  #  其实也可以直接使用R来读取GSE48213_RAW.tar里面的gz文件,这里就不演示了  # 可以参考:https://mp.weixin.qq.com/s/OLc9QmfN0YcT548VAYgOPA 里面的教程  ## 然后把tmp.txt导入R语言里面用reshape2处理即可  # 这个 tmp.txt 文件应该是100M左右大小哦。

这个文本有点特殊,其实就是把每个txt文件夹,按照行的方式首尾连接起来成为一个大文本,但是第一列加上了样本信息!

然后在R里面读取后,使用reshape2包的dcast函数即可,如下所示,一句话搞定!

a=read.table('GSE48213_RAW/tmp.txt',sep = '\t',stringsAsFactors = F)  library(reshape2)  fpkm 

上面的方法当然是可行的,但是依赖于linux环境,在mac下面稍微有点不一样,在Windows就需要借助于git等软件来使用shell脚本。我猜想应该是那个WGCNA教程已经是四年前的啦,当时群主的主要编程语言并不是R,所以这样的文本合并需求,会采取LINUX+R的方式搞定!

第二种方法是lapply循环读取文件

这个是纯粹的R语言解决方案,我也是在群主的指点下完成的,可以看到里面使用了 do.calllapply 函数 批量读取txt文本文件:

rm(list = ls())options(stringsAsFactors = F)fs=list.files('countsFiles/')a=do.call(cbind,lapply(list.files('countsFiles/'), function(x){  read.table(file.path('countsFiles',x),             header = T,sep = '\t',row.names = 1)[,2]}))a[1:4,1:4]

# 下面是合并后的表达矩阵添加行名和列名rownames(a)=rownames(read.table('countsFiles/GSM2653820_Counts_notmergedTR_Healthy1_Tissue_2.txt.gz',                                header = T,sep = '\t',row.names = 1))colnames(a)=gsub('.txt.gz','',substring(fs,nchar("GSM2653853_Counts_notmergedTR_")+1,1000))a[1:4,1:4]

我不知道什么样的函数叫做优雅,但是看起来这个就有点高大上!

第3种方法你来写吧

反正数据集就是GSE84073,进入就看到了可以下载的txt文件,自行摸索合并!

最后当然是拿到表达矩阵后做差异分析了

这个群主的教程已经足够多了,走标准分析流程,火山图,热图,GO/KEGG数据库注释等等。这些流程的视频教程都在B站和GitHub了,目录如下:

  • 第一讲:GEO,表达芯片与R

  • 第二讲:从GEO下载数据得到表达量矩阵

  • 第三讲:对表达量矩阵用GSEA软件做分析

  • 第四讲:根据分组信息做差异分析

  • 第五讲:对差异基因结果做GO/KEGG超几何分布检验富集分析

  • 第六讲:指定基因分组boxplot指定基因list画热图

仅仅是最后得到的差异分子,并不是以前的mRNA后面的基因名,而是miRNA,lncRNA,甚至circRNA的ID,看起来很陌生罢了。感兴趣可以细读表达芯片的公共数据库挖掘系列推文 ;

  • 解读GEO数据存放规律及下载,一文就够

  • 解读SRA数据库规律一文就够

  • 从GEO数据库下载得到表达矩阵 一文就够

  • GSEA分析一文就够(单机版+R语言版)

  • 根据分组信息做差异分析- 这个一文不够的

  • 差异分析得到的结果注释一文就够

如果表达矩阵需要注释探针

也可以看群主在2019年的尾巴推出3个R包:

  • 第一个是整合全部的bioconductor里面的芯片探针注释包。

  • 第二个是整合全部GPL的soft文件里面的芯片探针注释包。

  • 第三个是下载全部的GPL的soft文件里面的探针碱基序列比对后注释包。

配合着详细的介绍:

  • 第三个万能芯片探针ID注释平台R包

  • 第二个万能芯片探针ID注释平台R包

  • 第一个万能芯片探针ID注释平台R包

  • GEO数据库中国区镜像横空出世

因为这些包暂时托管在GitHub平台,但是非常多的朋友访问GitHub困难,尤其是我打包了好几百个GPL平台的注释信息后, 我的GitHub包变得非常臃肿,大家下载安装困难,所以我重新写一个精简包。也在:芯片探针ID的基因注释以前很麻烦 和 :芯片探针序列的基因注释已经无需你自己亲自做了, 里面详细介绍了。最重要的是idmap函数,安装方法说到过:芯片探针序列的基因注释已经无需你自己亲自做了,  使用起来也非常简单:

library(AnnoProbe)ids=idmap('GPL570',type = 'soft')head(ids)

仅仅是一句话,就拿到了这个平台的探针的注释信息。需要注意的是,这个函数的type参数,其实是有3个选择,这里我演示的是选择soft这个来源的基因注释信息。

并不是所有的平台都是有soft注释,也不是所有的平台都被我的这个工具囊括哦。

c++ 合并2个txt_多个表达矩阵文件合并相关推荐

  1. linux下将多个文件去除文件头合并_shell命令实现当前目录下多个文件合并为一个文件的方法...

    当前目录下多个文件合并为一个文件 1.将多个文件合并为一个文件没有添加换行符 find ./ -name "iptv_authenticate_201801*" | xargs c ...

  2. r语言合并多个csv文件_PDF合并怎么做?分享多个PDF文件合并的方法

    PDF合并怎么做?我们在工作中经常会碰到多个散落独立的文件,当我们需要将它们整合在一起时该怎么办呢,是不是还有不少小伙伴会选择去打印店将文件打印出来再逐一校对?不用这么麻烦啦!只需要将这些PDF文件合 ...

  3. winfrom axacropdf预览pdf怎么一直显示_PDF合并怎么做?分享多个PDF文件合并的方法...

    PDF合并怎么做?我们在工作中经常会碰到多个散落独立的文件,当我们需要将它们整合在一起时该怎么办呢,是不是还有不少小伙伴会选择去打印店将文件打印出来再逐一校对?不用这么麻烦啦!只需要将这些PDF文件合 ...

  4. python 合并工作簿_将多个csv文件合并到一个xls工作簿Python 3中

    我们正处于从python 2.7到python 3.5的过渡期.这是一个公司范围内的变化,我们当前的大多数脚本都是用2.7编写的,没有额外的库.我已经利用了我们正在使用的Anaconda发行版,并且已 ...

  5. python合并多个pdf_pypdf将多个pdf文件合并到一个pd中

    我最近遇到了一个完全相同的问题,所以我深入PyPDF2,看看发生了什么,以及如何解决它. 注意:我假设filename是格式良好的文件路径字符串.假设我所有的代码都是一样的 简短的回答 使用PdfFi ...

  6. hadoop合并日志_【hadoop】24.MapReduce-shuffle之合并

    简介 shuffle机制中的合并(Combiner)并不是我们之前将的文件合并,他是一种依附于业务性质的调优手段.这里回顾一下我们之前的参考图 留意图中第11步的合并过程,这样做之后可以合并一些同ke ...

  7. 手机怎么把几个PDF文件合并到一起?教你一分钟搞定

    怎么用手机把几个PDF文件合并到一起呢?大家在阅读浏览PDF文件的时候,如果收到别人发来的几个短小又精简的PDF文件时,浏览时就需要挨个打开,有时可能连打开的顺序都会弄混淆,十分影响我们阅读体验.那么 ...

  8. Java合并流实现简单的文件合并示例

    合并流: SequenceInputStream:  表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,以此类推,知道到达包含的最 ...

  9. 基因探针c语言编程,如何零代码实现芯片探针表达矩阵转化为基因表达矩阵?...

    GEO下载到的标准化后的表达矩阵(Series Matrix File(s)文件)或是下载原始.CEL文件自己归一化后形成的表达矩阵,每行的标注是以探针的形式给出的,例如. 这样在分析差异基因之后,并 ...

最新文章

  1. 2013年3月百度之星B题
  2. 使用二代矫正三代全长转录组数据
  3. .net OCX 无法获取“****”控件的窗口句柄,不支持无窗口的ActiveX控 新解决方法...
  4. 小程序webview不全屏_有赞微信商城和有赞微信小程序什么不一样
  5. STM32启动文件分析
  6. Linux命令pdm -cli,pdm下载器下载 Persepolis Download Manager(aria2下载器) v3.1.0 Linux 官方安装免费版 下载-脚本之家...
  7. 硬盘的原理以及SQL Server如何利用硬盘原理减少IO
  8. python实现oa系统_技术讨论 | 利用Python程序实现某OA系统的自动定位
  9. springboot定时任务
  10. nginx php 配置
  11. 绝地求生2月19服务器维护,绝地求生2月19日停机维护几点结束_2020绝地求生2月19日开服时间介绍_求知软件网...
  12. C#中使用MongoDb
  13. linux scp命令 将数据从一台linux服务器复制到另一台linux服务器
  14. C语言华氏摄氏度转换
  15. 测试方案和测试计划区别
  16. 快速当前目录下打开cmd命令窗口
  17. 使用vue-giant-tree根据id定位位置
  18. idea本地项目上传至远程仓库及一些常见问题的解决办法
  19. 《NFL橄榄球》:田纳西泰坦·橄榄1号位
  20. 深入理解Linux启动过程 0号进程,1号进程

热门文章

  1. 丢失所有凭据后如何重新连接到SQL Server实例
  2. BTREE这种Mysql默认的索引方式,具有普遍的适用性
  3. Jquery垂直下拉二级菜单
  4. CSS重新认识(一)
  5. datetimepicker一个不错的日历android特效
  6. swing学习一(swing介绍、swing样例、布局管理器)
  7. JQM页面跳转,多种效果
  8. OLTP与OLAP介绍
  9. 在打包的时候,创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)
  10. 揭开伟大架构师的秘密