搜索
查看: 8612|回复: 5

TCGA数据批量下载与整理

[复制链接]

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
发表于 2016-9-30 12:28:39 | 显示全部楼层 |阅读模式
分享一个自己用的Python小脚本,可以帮助自动完成数据批量下载与简单的数据整理工作。
大家如果有更好的方法可以一起讨论一下。

目前TCGA中每个sample无论是clinical data还是genotyping data都分别存在单个文件内。我们用manifest下载到这些数据之后会发现每个文件又各自存放在一个文件夹内。比如每个样本的RNAseq数据都是.txt.gz格式,该文件名既为后续分析使用的文件名,而存放该文件的文件夹名称则跟该文件没有任何关系。而miRNAs的数据则相反,所有样本的文件名均为mirna.quantification.txt,存放这些文件的文件夹名称却是我们后续分析需要用到的(语言组织能力不好,可能有点绕,见谅)。

因此在数据下载完成后需要对各个文件进行整理。
另外,当我们进行诸如DEG分析的时候,还需要把所有genotyping或者clinical数据整合到一个文件内。
当然手动做也是可以做的,一个个解压缩,一个个重命名,一个个copy paste到一个文件内。
不过既然Python作为非常容易入门的语言,学会一些基础的编程可以帮我们节省大量时间
。当你把脚本一跑看到数据突然就冒出来了,突然又转入另一个文件夹了,最后又神奇的整合成一个文件了,这时候一定会很有成就感。不好意思废话说多了,进入正题。

运行该脚本之前只需要做三件事情,第一,按要求建立文件夹;第二,将下载所需的gdc-client数据传输工具和manifest文件放入指定的文件夹。第三,在脚本内修改工作路径。Then you can run the script !

以TCGA Liver Cancer的RNAseq数据为例,首先将自己所需的数据添加到GDC购物车,下载对应的manifest文件。之后开始进行数据下载与整理

(1)建立文件夹。建立一个名为TCGA-LIHC的文件夹。
在该文件夹下建立Gene_Expression_Quantification文件夹,并在Gene_Expression_Quantification文件夹内建立Downloads,Clean和Analysis三个文件夹,便于数据管理。通常我用Downloads存放raw data,Clean文件夹内存放整理过的数据,Analysis文件夹用于存放各种分析结果。
(2)将gdc-client和manifest文件copy到Downloads文件夹
(3)将脚本中的变量project改为文件夹TCGA-LIHC所处位置的绝对路径。

脚本运行完成后,数据将下载到Downloads文件夹,所有数据文件均copy到Clean文件夹,并进行了解压处理。
对于miRNAs,同样数据下载到Downloads文件夹,每个数据文件copy到Clean文件夹之前都进行了重命名,使之可以匹配到对应的clinical data
目前该脚本只支持RNAseq和miRNAs的数据下载与整理,可以以此为模板在脚本内添加内容对其他类型的数据进行类似处理。

另外,我觉得自己organize文件夹的方式可能不是非常好,有更好的建议可以展开讨论。


[Python] 纯文本查看 复制代码
#########################################
#### Download and Organize TCGA data ####
#########################################

'''
### GDC DATA PORTAL: [url=https://gdc.cancer.gov/]https://gdc.cancer.gov/[/url]
### Create the following folders:
    Gene_Expression_Quantification
        Downloads
        Analysis
        Clean
    miRNA_Expression_Quantification
        Downloads
        Analysis
        Clean
       
### Put gdc-client into all Downloads folders
### Rename manifest and metadata using the following format:
    projectname_datacategory_manifest_xxx.txt
    projectname_datacategory_metadata_xxx.json
    
### move RNAseq_metadata and miRNA_metadata into their corresponding 'Analysis' folders

'''

import os
from os import system

#project = 'Your working directory', which is one layer upper than 'Gene_Expression_Quantification' etc ...
os.chdir(project) 

RNAseq = 'Gene_Expression_Quantification/'
miRNAs = 'miRNA_Expression_Quantification/'

downloads = 'Downloads/'
clean = 'Clean/'
analysis = 'Analysis/'

def downloadRawData(directory, manifest):
    print ('Start Downloading ...')
    os.chdir(project+directory)
    os.system('./gdc-client download -m '+ manifest)
    print ('Download completed !')

dataCategory = input('What kind of data are you going to download? (1.RNAseq; 2.miRNAs)\n')
manifest = input('Manifest file name:\n')

if dataCategory == '1':
    downloadRawData(RNAseq+downloads, manifest)

    ## copy downloaded data from 'Downloads' to the 'Clean' folder
    os.chdir(project+RNAseq)
    folders = os.listdir(downloads)
    for fd in folders:
        if os.path.isdir(downloads+fd):
            os.system('cp '+downloads+fd+'/*.gz '+clean)
    ### unzip the compressed .gz files
    os.system('gunzip '+clean+'*.gz')
    
elif dataCategory == '2':
    downloadRawData(miRNAs+downloads, manifest)
    os.chdir(project+miRNAs)
    folders = os.listdir(downloads)
    for fd in folders:
        if os.path.isdir(downloads+fd):
            os.system('cp '+downloads+fd+'/mirnas.quantification.txt '+clean+fd+'.txt')
else:
    #pass
    print ('Enn, Let me decide later ...\n')






You really shouldn't spend your time reinventing the wheel
回复

使用道具 举报

0

主题

2

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2017-2-13 21:36:57 | 显示全部楼层
你好,请教个问题,用您的脚本运行时候在提示输入 manifest文件名的时候,总是报错
Traceback (most recent call last):
  File "C:/Users/lony/Desktop/tcga_dowload.py", line 23, in <module>
    manifest = input('Manifest file name:\n')
  File "<string>", line 1
    'FTCGA-LIHC'_RNAseq_manifest.txt
                               ^
SyntaxError: invalid syntax

应该是我manifest文件名设置的不对?应该设置成什么样的文件名呢?
### Rename manifest and metadata using the following format:
    projectname_datacategory_manifest_xxx.txt
,可否对这句多解释下
我对Python基本不了解
回复 支持 反对

使用道具 举报

0

主题

2

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2017-2-13 23:02:30 | 显示全部楼层
捯饬好了,两个错误,一个是没有加‘’,这个太低级了,以后还是要学学Python,多谢楼主,等下好了,再去尝试你下一个整合的脚本
回复 支持 反对

使用道具 举报

0

主题

3

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2017-8-7 09:42:21 | 显示全部楼层
flovid 发表于 2017-2-13 23:02
捯饬好了,两个错误,一个是没有加‘’,这个太低级了,以后还是要学学Python,多谢楼主,等下好了,再去尝 ...

我也出现了这个问题,你怎么改的,能说具体点吗
回复 支持 反对

使用道具 举报

0

主题

2

帖子

33

积分

新手上路

Rank: 1

积分
33
发表于 2018-6-13 11:04:45 | 显示全部楼层
将脚本中的变量project改为文件夹TCGA-LIHC所处位置的绝对路径。具体是怎么操作的?能解答一下吗?感谢楼主了。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

33

积分

新手上路

Rank: 1

积分
33
发表于 2018-6-13 11:11:14 | 显示全部楼层
#project = 'D:/tcga-crc' 我把project那里全部变成这样子,但是不行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2018-12-12 05:29 , Processed in 0.032644 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.