c++ 合并2个txt_多个表达矩阵文件合并
前些天群主给了我们学徒一个任务,下载数据集: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.call 和 lapply 函数 批量读取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_多个表达矩阵文件合并相关推荐
- linux下将多个文件去除文件头合并_shell命令实现当前目录下多个文件合并为一个文件的方法...
当前目录下多个文件合并为一个文件 1.将多个文件合并为一个文件没有添加换行符 find ./ -name "iptv_authenticate_201801*" | xargs c ...
- r语言合并多个csv文件_PDF合并怎么做?分享多个PDF文件合并的方法
PDF合并怎么做?我们在工作中经常会碰到多个散落独立的文件,当我们需要将它们整合在一起时该怎么办呢,是不是还有不少小伙伴会选择去打印店将文件打印出来再逐一校对?不用这么麻烦啦!只需要将这些PDF文件合 ...
- winfrom axacropdf预览pdf怎么一直显示_PDF合并怎么做?分享多个PDF文件合并的方法...
PDF合并怎么做?我们在工作中经常会碰到多个散落独立的文件,当我们需要将它们整合在一起时该怎么办呢,是不是还有不少小伙伴会选择去打印店将文件打印出来再逐一校对?不用这么麻烦啦!只需要将这些PDF文件合 ...
- python 合并工作簿_将多个csv文件合并到一个xls工作簿Python 3中
我们正处于从python 2.7到python 3.5的过渡期.这是一个公司范围内的变化,我们当前的大多数脚本都是用2.7编写的,没有额外的库.我已经利用了我们正在使用的Anaconda发行版,并且已 ...
- python合并多个pdf_pypdf将多个pdf文件合并到一个pd中
我最近遇到了一个完全相同的问题,所以我深入PyPDF2,看看发生了什么,以及如何解决它. 注意:我假设filename是格式良好的文件路径字符串.假设我所有的代码都是一样的 简短的回答 使用PdfFi ...
- hadoop合并日志_【hadoop】24.MapReduce-shuffle之合并
简介 shuffle机制中的合并(Combiner)并不是我们之前将的文件合并,他是一种依附于业务性质的调优手段.这里回顾一下我们之前的参考图 留意图中第11步的合并过程,这样做之后可以合并一些同ke ...
- 手机怎么把几个PDF文件合并到一起?教你一分钟搞定
怎么用手机把几个PDF文件合并到一起呢?大家在阅读浏览PDF文件的时候,如果收到别人发来的几个短小又精简的PDF文件时,浏览时就需要挨个打开,有时可能连打开的顺序都会弄混淆,十分影响我们阅读体验.那么 ...
- Java合并流实现简单的文件合并示例
合并流: SequenceInputStream: 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,以此类推,知道到达包含的最 ...
- 基因探针c语言编程,如何零代码实现芯片探针表达矩阵转化为基因表达矩阵?...
GEO下载到的标准化后的表达矩阵(Series Matrix File(s)文件)或是下载原始.CEL文件自己归一化后形成的表达矩阵,每行的标注是以探针的形式给出的,例如. 这样在分析差异基因之后,并 ...
最新文章
- 2013年3月百度之星B题
- 使用二代矫正三代全长转录组数据
- .net OCX 无法获取“****”控件的窗口句柄,不支持无窗口的ActiveX控 新解决方法...
- 小程序webview不全屏_有赞微信商城和有赞微信小程序什么不一样
- STM32启动文件分析
- Linux命令pdm -cli,pdm下载器下载 Persepolis Download Manager(aria2下载器) v3.1.0 Linux 官方安装免费版 下载-脚本之家...
- 硬盘的原理以及SQL Server如何利用硬盘原理减少IO
- python实现oa系统_技术讨论 | 利用Python程序实现某OA系统的自动定位
- springboot定时任务
- nginx php 配置
- 绝地求生2月19服务器维护,绝地求生2月19日停机维护几点结束_2020绝地求生2月19日开服时间介绍_求知软件网...
- C#中使用MongoDb
- linux scp命令 将数据从一台linux服务器复制到另一台linux服务器
- C语言华氏摄氏度转换
- 测试方案和测试计划区别
- 快速当前目录下打开cmd命令窗口
- 使用vue-giant-tree根据id定位位置
- idea本地项目上传至远程仓库及一些常见问题的解决办法
- 《NFL橄榄球》:田纳西泰坦·橄榄1号位
- 深入理解Linux启动过程 0号进程,1号进程