2019-04-17浏览量:1384

转录组分析深度挖掘-TCGA数据库(一)

很多小白表示TCGA好深奥,找不到下载地址的,看不懂数据格式。今天小锐就从零开始,讲解TCGA数据库和下载方法。在下载数据之前,小锐阅读了多篇文献,总结如下的利用公开数据库分析的思路。

一般得到疾病诊断相关的BioMarker后,还要想发更高水平的文章,可以再做一下动物模型、敲除、过表达等分子机理的研究,知其然也要知其所以然,干湿结合,文章明显上升一个档次。另外,还有其他套路组合,例如做一下WGCNA,或者关联分析等等。

那么这种充满"套路"的文章到底好发吗?2018年,利用TCGA公开数据库就发了1400+篇文章,其中也有影响因子为30+的好文章,也不乏8-9分的好文章。相比于通过做实验出的文章,这类通过对公共数据库的数据挖掘,往往能发出短平快的文章。

当你日日夜夜在实验室奋战的时候,别人就在默默地利用你公开的数据,开始整理自己的文章了!是不是觉得很不舒服呢?那么就先定一个小目标吧,两篇SCI走起。下面就让我们开启探索之旅。

一、数据库简介

TCGA (The Cancer Genome Atlas)是一个非常重要的癌症数据库,其主要收录各种人类癌症(包括亚型在内的肿瘤)的临床数据、基因组变异、mRNA表达、miRNA表达、甲基化等数据,是癌症研究者很重要的数据来源。

TCGA

TCGA官网:https://www.cancer.gov/about-nci/organization/ccg/research/structural-genomics/tcga

(图片来自TCGA网站 2019.04.01)

1.数据等级

TCGA上储存的数据分为三个级别:

• level-1为原始的测序数据(fasta,fastq等)

• level-2为比对好的bam格式文件

(这两级别为controlled-access,需要向TCGA申请使用权限)

• level-3为经过处理及标准化的数据

(三级也分为controlled-access和open-access)

level-1/2数据下载需要向TCGA申请使用权限,并且由于文件较大,推荐使用官方提供的小小软件:gdc.cancer.gov/access-data/gdc-data-transfer-tool,如果要想获得下载资格,需要申请账号并通过NIH/NCI资格审核,并且需要提供account ID,但是由于网站的限制,只能国外PI才可能申请通过。不过level-3上面的数据也能满足我们我们发SCI的需求。

2.样本分类

TCGA样本分类:

除了要知道数据等级外,我们还需要了解TCGA的样本分类,比如哪个是正常样本,哪个是肿瘤样本。

一般我们可以看到样品名称如:TCGA-DD-A1EL-11A,我们需要关注的是最后一位11A,一般来说01代表癌症样本,11代表癌旁样本。其实从01-09是tumor,癌症样本;10-29是normal,癌旁样本。只是其中分的比较细。

具体可参考官网说明:https://wiki.nci.nih.gov/display/TCGA/TCGA+barcode

二、数据下载

TCGA数据下载很多,但是大部分都是基于官方网站上的数据进行的变身,有3种方法进行数据的下载,分别是官网数据下载、python脚本法下载、R脚本法下载。由于篇幅原因,本次我们先介绍官网数据下载方法,其他两种方法请看下回分享。

官网数据下载

1.登录TCGA官网

登录TCGA官方网站TCGA,在网页内容部分选择 'Access TCGA Data' 进入数据选择页面 GDC(Genomic Data Commons);也可以直接登录GDC的DATA PORTAL网站(https://portal.gdc.cancer.gov/)直接进行数据下载。

2.选择要下载的数据

可以选择下载的癌症类型:

1、ACC 腺样囊性癌;2、BLCA 膀胱癌;3、BRCA 乳腺癌;4、CESC 宫颈鳞状细胞癌;5、CHOL 胆癌;6、COAD 结肠癌;7、DLBC 淋巴癌;8、ESCA 食管癌;9、GBM 脑癌;10、LGG 脑癌;11、HNSC 头颈部鳞癌;12、KICH 嫌色细胞癌;13、KIRC 肾透明细胞癌;14、KIRP 乳头状肾细胞癌;15、LAML 骨髓癌;16、LIHC 肝癌;17、LUAD 肺腺癌;18、LUSC肺鳞状细胞癌;19、MESO 胸膜癌;20、OV 卵巢癌;21、PAAD 胰腺癌;22、PCPG 肾上腺癌;23、PRAD 前列腺癌;24、READ 直肠癌;25、SARC 软组织癌;26、SKCM 皮肤癌;27、STAD 胃癌;28、TGCT 睾丸癌;29、THCA 甲状腺癌;30、THYM 胸腺癌;31、UCEC 子宫内膜癌;32、UCS 子宫癌;33、UVM 眼癌

步骤1

在搜索框内输入目标项目源,选择并进入。

步骤2

页面的右下角部分是项目相关数据信息,如miRNA-Seq项目,共有373个样本和1275个相关的文件。点击进入。

步骤3

页面左侧,选择筛选条件,如下图所示,可以看到有425条miRNA表达相关数据。

那么问题来了,我们可以看到样本的数量是373个,为什么会有425个表达文件呢?原因是有些样本会进行多次计算,会有重复。

步骤4

将经过筛选的样本,加入Cart中,然后查看页面右上角的Cart按钮,可以看到里面已经有425个内容。接下来我们可以Cart按钮,进入下载页面。

步骤5

选择Download的Manifest进入到下载页面,下载得到一个gdc_manifest_日期_.随机码.txt的文件。该文件作为官方提供的 gdc-client 软件的配置文件。进行数据的下载。

另外,在Clinical的内可以下载到这些miRNA数据的生存信息文件,供我们进行接下来的生存分析。可以选择下载TSV和JION两种格式的任意一种,我们这里下载TSV格式,会得到一个clinical.cart.日期.tar.gz的压缩包文件。

步骤6:下载

安装Data Transfer Tool工具,我是选择windows系统来安装的,下载后解压缩即可使用。在当前文件夹下,右键 “在此处打开powershell窗口”,将Manifest下载的文件复制到当前文件夹下输入:

.\gdc-client.exe download -m  .\gdc_manifest_20190401_013618.txt

进行下载。下载数据较慢,有可能也会出现一些报错,一般都是网络的限制,重新下载或者换个时间下载都可以。下载后的数据需要我们进行矩阵化,才能适合我们接下来分析,如差异分析,生存分析等。

3.数据矩阵化

矩阵化的方式有很多,可以下载一个josn格式的manifest,然后使用R语言的rjson包,很快速的处理,也可以使用perl或python等脚本语言进行处理。这里我使用python脚本进行处理。直接上代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*- #
import sys, glob, re
first = sys.argv[1]  # ./tcga
second = sys.argv[2]  # gdc_sample_sheet.2019-04-01.tsv
with open(second) as inf:

    dic_sample = {}
    for lines in inf:
        # print(lines)
        tabs = lines.strip().split("\t")
        if 'mirnas.quantification.txt' in tabs[1]:
            dic_sample[tabs[0]] = tabs[6]
dict_mirna = {}
all_dict = {}
sample_name_lst = ['']
for dir in glob.glob(r'%s/*' % first):
    dir1 = re.sub('%s'% first, '', dir)
    if dir1 in dic_sample:
        if glob.glob(r'%s/%s/*annotations.txt' % (first, dir1)):
            continue
sample_name = dic_sample[dir1]
        sample_name_lst.append(sample_name)
        all_dict[sample_name] = {}

        mirna_rpkm = glob.glob(r'%s/%s/*mirbase21.mirnas.quantification.txt' % (first, dir1))
        for file in mirna_rpkm:
            with open (file) as inf3:
                for line in inf3:
                    tabs = line.strip().split("\t")
                    if "miRNA_ID" in tabs[0]:
                        continue
                    dict_mirna[tabs[0]] = 1
                    all_dict[sample_name][tabs[0]] = tabs[1]
print("%s" % '\t'.join(sample_name_lst))
for mirna in dict_mirna:

    print('%s' % mirna, end="")
    for sample in sample_name_lst:

  if sample not in all_dict:
            continue
        if mirna not in all_dict[sample]:
            print('\t0',end='')
        else:
            print('\t%s' % all_dict[sample][mirna], end='')
    print()

python test_reads_num.py ./tcga/ gdc_sample_sheet.2019-04-01.tsv > reasd_nums.txt

其中,gdc_sample_sheet.2019-04-01.tsv文件是步骤5的Sample_Sheet选择框内下载的样本信息文件。

精彩不停

看完其中一种的数据下载方法,是不是也很期待另外两种呢?别急,下期同一时间精彩继续!

下一篇

版权所有 上海锐翌生物科技有限公司 沪ICP备16022951号