在最近的工作中,笔者遇到了一个问题。笔者从TCGA数据库中下载了全部癌症病人的whole genome的RNA-seq数据。但是利用TCGA提供的gdc-client下载工具下载后,每个病人都单独成为一个文件夹,每个文件夹里有以tz格式压缩的RNA-seq数据和annotations。这给进一步的分析带来了困难。
为了解决这个问题,我打算将所有文件解压到一个文件夹中。做法是:
1、得到所有RNA-seq tz文件的路径,具体可参见“get_all_gz_path”函数。我们可以通过对于文件的后缀名进行约束,选择我们需要的文件。
2、遍历所有选择出的文件,利用python自带的gzip,将压缩文件解压到我们希望的路径中。
import os
import gzip
#原始数据的路径
path ='/home/openuser/zhaoyimin/TCGA/Raw'
def get_all_gz_path(root):
results = []
for dirpath, dirnames, filenames in os.walk(root):
dirpath = dirpath+'/'
print(dirpath)
for filename in filenames:
if filename[-3:] == '.gz':
results.append(dirpath + filename)
return results
#input 文件的绝对路径、想要保存的路径
def un_gz(file_name,dest_dir):
f_name = dest_dir + '/' + os.path.basename(file_name).replace(".gz", "")
# 获取文件的名称,去掉
g_file = gzip.GzipFile(file_name)
# 创建gzip对象
open(f_name, "wb+").write(g_file.read())
# gzip对象用read()打开后,写入open()建立的文件中。
g_file.close()
# 关闭gzip对象
return 0
gz_files = get_all_gz_path(path)
for i in range(len(gz_files)):
un_gz(gz_files[i],'/home/openuser/zhaoyimin/TCGA/FPKM_data')