之前对TCGA做了简单的了解,粗略了解了什么是TCGA,TCGA是做什么的等,接下来肯定是要学会如何下载TCGA数据,毕竟只有下载了数据才能继续学习

官网常规下载

TCGA自2016年改版后,下载方式变得大为不同,数据都整合在GDC(Genomic Data Commons)的DATA PORTAL中,所以先进网址https://portal.gdc.cancer.gov/。

以乳腺癌(BRCA)为例,进入TCGA-BRCA界面,这次选择下载的是RNA-Seq数据,点击RNA-Seq的1092个case,然后在点击Files自行设定筛选条件(我选择下载count数据)。

最后加所有样本都加入购物车Cart(总共会有1222个文件)。为什么会比case数多呢,说明一些case不止对应1个RNA-Seq样本的count文件,有些是重复。

接下来就稍微有点不同了,如果只是比较少量的样本,直接点击 Download即可下载,每个样本都是一个压缩文件。但是,TCGA数据库在数据下载有规定:让Cart文件夹大于50M时(这个依据网络情况,和下载用户数目),只能通过Data Transfer Tool工具进行下载。所以我这次要使用Data Transfer Tool工具来下载数据。

首先是要安装Data Transfer Tool,总共工具很简单,我是选择windows系统来安装的,下载后解压缩即可使用。至于怎么用,我刚开始看到是.exe文件,就以为是软件界面的,后来才发现原来是通过命令行下载的。先从刚才是Cart界面点击Download选择下载Manifest,然后在windows的cmd中输入下载命令:

gdc-client download-m gdc_manifest_20171102_125645.txt

然后就是慢慢下载了,如果断了,一般就是网络不好的原因,重新下载或者换个时间段就行了,由于下载的结果是一个个样本的压缩文件,1222个样本就是1222个压缩包,所以我要解压缩这些文件并合并成1个矩阵文件,主要可以分为3步:首先我们下载后的结果是一个个文件夹,如:cb16f668-0e9c-4a0c-ae9b-eaefa0118dde;文件夹里面是count数据的压缩包,如:9b529e72-7a69-4843-828c-f6ad6d1ee99b.htseq.counts.gz;而我们需要将这个看不懂的名称改为TCGA-AR-A0TZ-01A这种形式,方便后续处理。

这种对应关系可以从Cart界面下载metadata文件中获取,然后提取出三者的对应关系。最开始是用perl的,但是感觉perl会比较繁琐,所以改用R来处理。选择的是rjson这个包,也试了下jsonlite包,基本功能是差不多的。

library(rjson)

data<>fromJSON(file='metadata.cart.2017-10-30T08-39-11.222982.json')

data2<>sapply(data,function(x){

file_name<>x$file_name

file_id<>x$file_id

submitter_id<>x$case[[1]]$samples[[1]]$submitter_id

tmp<>c(file_name,file_id,submitter_id)

})

data2<>t(data2)

colnames(data2)<>c('filename','fileid','submitterid')

write.table(data2,file='sample2id.txt',sep='\t',col.names=F,quote=F,row.names=F)

输出的sample2id.txt文件中总共有3列,第一列为我们需要解压的文件名,第二列为我们下载下来的每个压缩包所在的文件夹的名称,第3列则是submitter id,就是我们需要的样品ID。接下来要对下载的文件进行批量解压缩,并输出到file文件夹中,该shell脚本输入参数为上述的sampleid.txt文件。这个代码有个问题就是如果遇到样品ID相同的两个样品的,后者文件会覆盖前者文件。当然只要将每个样本的count文件输出在各自文件夹中就不会有这个错误了(但反正后续还是打算去掉重复样本,所以先这么处理着)。

#!/bin/bash

cat $1|whileread line

do

arr=($line)

filename=${arr[0]}

folder=${arr[1]}

submitterid=${arr[2]}

gunzip-c./${folder}/${filename}>./file/${submitterid}.count

done

运行上述 bash extract_files.sh./sample2id.txt脚本后,1222个TCGA乳腺癌的样本变成了1217个样本(说明有5个样本是重复样本,由于样品名是有重复的,所以这些文件被覆盖了),这是在file文件夹中有1217个样本的count文件。最后将每个样本的count数进行合并,这次我用perl来整合成一个count矩阵文件,并且只保留01A和11A结尾的样本(01A表示肿瘤细胞,11A表示癌旁样本)。如果以B结尾的样品名,则表明是重复,其实还有C结尾的,这次都先选择去除(如果都保留的话,略微修改下代码即可)。

#!/bin/perl -w

usestrict;

my$path=shift@ARGV;

opendir DIR,$pathordie;

my@dir=readdir DIR;

my$header;

my@sample;

my%hash;

my%rm_rep;

foreachmy$file(@dir){

if($file=~/^(\w+.*-\d+)[A-Z]\.count/){

my$sample_id=$1;

nextunless($sample_id=~/01$/||$sample_id=~/11$/);

if($rm_rep{$sample_id}){

next;

}else{

$rm_rep{$sample_id}=1;

}

push@sample,$sample_id;

$header.='\t$sample_id';

openmy$fh,$path.$fileordie;

while($fh>){

chomp;

nextif($_=~/^_/);

my@array=split/\t/,$_;

$hash{$array[0]}->{$sample_id}=$array[1];

}

close $fh;

}

}

print'$header\n';

map{

my$gene=$_;

print'$gene';

foreachmy$file(@sample){

print'\t'.$hash{$gene}->{$file};

}

print'\n';

}keys%hash;

运行 perl merged_count.pl./file/,代码看起来有点繁琐,但是还是可以用的~~最后输出一个整合后的count矩阵文件,后续分析(比如差异分析)就可以根据这个count矩阵来了。

Firehose下载

第一种方式个人觉得比较可控,下载的数据的准确性也是有保证的。但是如果觉得麻烦的话,可以使用Broad Institute's GDAC Firehose,该网站不仅提供TCGA数据的下载还有其分析后的数据的展示。这里我只用过其下载的功能,所以其他功能自行去网站http://gdac.broadinstitute.org/逛逛吧。

进入网站后,点击上方的Dashboards下的Standard Data,然后再点击网页上的乳腺癌(BRCA)对应的open按钮,结果会出现一系列文件可供下载,为什么更好的跟第一种方法进行比较,我选择了下载RNA-Seq的count数据对应的文件,可以选择下载gdac.broadinstitute.orgBRCA.MergernaseqilluminahiseqrnasequnceduLevel3geneexpression_data.Level3.2016012800.0.0.tar.gz,其实还有个rnaseqv2对应文件,刚开始我也是下载错了,后来查了下才发现前者和后者是有区别的,官方给的解释是:rnaseqv2相比rnaseq采用不同的算法(我看了下似乎是用RSEM进行定量的?因为rnaseq是采用htseq来定量的),但是呢rnaseqv2相比rnaseq样本数多一点。

RNASeq Version 2 is similar to RNASeq in that it uses sequencing data to determine gene expression levels. RNASeq Version 2 uses a different set of algorithms to determine the expression levels are the results are presented in a slightly different set of files.

下载后将文件夹解压,里面有不少文件,我先只拿count文件来看看,这里就显示出Firehose下载的好处了,不用像第一种方法那样将一个个样本合并,其下载结果就是合并好的数据,而且已经将Ensembl id 转化成entrez id/gene symbol,很是方便。

但是我发现一个问题!就是Firehose下载下来的文件的样本数跟第一种方法下载后并不一致,粗略看了下,大概少了几百个样本。。就算是rnaseqv2也少了几个样本。然后我将两个下载方法获得的样本名都进行去重,然后比较发现有几个样本虽然在第二个方法中出现,但是在TCGA官网上并没有RNA-Seq的数据了!!!!这时我才想起来Firehose数据并不是跟TCGA官方数据更新同步的,现在下载的Firehose的数据是2016年初的。。。

所以Firehose下载操作确实方便,但是数据并不是时时更新开放下载,如果不在意样本数目的话,这个方式确实是一个比较方便的下载TCGA数据的方法

生信人开发的小工具

我是听朋友介绍了才知道'生信人'做了一个下载TCGA数据的小工具,初步尝试了下,感觉不错,操作蛮简单的,并且不仅提供了数据下载功能,还有合并样本、临床信息还有ID转化的功能。

具体操作还是看生信人的宣传文章:https://www.shengxin.ren/article/27

这个优点我觉得在于下载数据的实时性有保证,因为它也是从官网下载的,最主要它还支持断点下载。就算你网再不稳定,睡一觉总能下好了,比第一种下载方式方便(因为第一种网不好容易断,导致一些文件无法被正常下载),而且最后整合的样本数目(去重后)跟第一种方法一致,这让我心里也有了底。

linux下TCGA数据下载,TCGA数据下载方式小结相关推荐

  1. linux下导入、导出mysql数据库命令 下载文件到本地

    一.下载到本地 yum install lrzsz sz filename  下载 rz filename  上传 linux下导入.导出mysql数据库命令 一.导出数据库用mysqldump命令( ...

  2. linux下利用RTMP协议接收数据

    在windows下利用RTMP接收数据的代码有很多的例子可以参考,但是在linux下利用rtmp协议接收数据,例子特别少.在无计可用的情况下,只能自己写代码了. 在写代码之前需要做一点事情,去rtmp ...

  3. linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据

    本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: ...

  4. linux mysql插入中文乱码_解决Linux下Tomcat向MySQL插入数据中文乱码问题

    一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一 直接在linux上面使用 ...

  5. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql。

    0.说明 Linux下更改yum默认安装的mysql路径datadir. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql. 假如要把MySQL目录移到/home/data ...

  6. linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结

    Linux下常见文件格式的压缩.解压小结 .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ...

  7. linux误删 bin目录,记linux下rm误删bin文件的解决方式

    平常有个坏习惯,删文件为了快点,喜欢用rm xx*,删除一些关键词文件.今天为了删/bin下几个含有mix关键词的文件,使用命令rm mix*.手贱,mix和*之间多了个空格...灾难发生了!bin下 ...

  8. 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.3节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  9. linux 下的 service 和systemctl 服务管理方式

    linux 下的 service  和systemctl 服务管理方式 man service 得到:执行一个system V 风格的启动脚本 service - run a System V ini ...

  10. linux下c使用lzma_linux lzma软件包下载 ...lzma-sdk.updatestar.com/

    如何让 linux yum 安装已有的软件包? linux yum 安装已有的软件包方法:1. 下载软件的安装包. 2. 然后在命令行(CTRL+ALT+F1)输入以下代码:yum update -y ...

最新文章

  1. Windows10上使用VS2017编译MXNet源码操作步骤(C++)
  2. PS色调均化滤镜的快捷实现(C#源代码)。
  3. FPGA基础知识极简教程(8)详解三态缓冲器
  4. BTrace实现浅析
  5. java store()_Java.util.Properties.store()
  6. android 自定义属性 双向绑定,如何解决:“在使用自定义视图实现双向数据绑定时,找不到属性’android:text’”的getter?...
  7. java8 stream遍历_Java8中用法优雅的 Stream,性能也优雅吗?
  8. 自己构建React项目
  9. 不是方阵有逆矩阵吗_Lecture 3 | 乘法和逆矩阵
  10. C++中的XML配置文件编程经验
  11. c语言回文字符串判断函数的奇偶性,C语言拓展训练编程题.doc
  12. python全局变量的修改 线程共享全局变量
  13. emacs常用配置-Hippie-expand自动补全
  14. “穿的越少越好”在夏天说和在冬天说是不一样的
  15. NetSuite Account Register报表详解
  16. STM32驱动陀螺仪MPU6050的应用实例
  17. C 语言实现面向对象编程
  18. 计算机上画正比例函数,信息技术应用 用计算机画函数图象教案1
  19. SLAM导航机器人零基础实战系列:(四)差分底盘设计——5.底盘PID控制参数整定
  20. 虚拟手机硬件环境,Xposed的特征修改,APP读取虚拟硬件信息,伪造数据读取硬件标识信息

热门文章

  1. 永磁同步电机恒压频比(V/F)开环控制系统Matlab/Simulink仿真分析及代码生成到工程实现(二)
  2. 资深老师傅讲解六轴机器人机械臂的特征和优缺点!
  3. Mybatis的工厂工具类Util
  4. 人工智能到底是风口还是泡沫?它能否改变未来“钱景”
  5. 如何让你的共享软件成为印钞机-最新内幕大暴光
  6. C++ 最难学?最易/难学习的编程语言 TOP 5 来了!
  7. solaris oracle zfs 调优,使用闪存存储时调优 ZFS
  8. 最近火爆了的对话ChatGPT
  9. BUUCTF [BSidesCF 2020] Had a bad day
  10. 基于LC3模拟器的简单游戏设计:简易四子棋