接着上一次的分享,这一次将会分享怎样批量处理TCGA下载下来的数据和提取相应矩阵~~
# TCGA数据库的使用(下)
上次提到了怎样批量应用TCGA自带的界面下载工具下载数据,那么接下来会讲到怎样批量修改样本名和提取需要的表达矩阵等🤩😍
## 批量更改样本名
处理这些下载完成的数据,第一步就是要对下载的数据名进行更改为TCGA-xx-xxxx-(0-9)/(10-19)A(B)的形式,这样我们才能判断出样本中哪些是属于肿瘤样本哪些是属于癌旁的正常样本(一般情况下如果匹配癌症和正常样本在十对以上的则可提取这些数据进行差异分析,如果正常样本很少甚至没有的情况下则需要借助别的正常样本的数据库例如GTEx数据库,后期的分享中会提到怎么来用这些数据)。接下来如果你有一定的python基础会很容易,不过不会也没关系,我会详细注释,你只需要按要求准备文件即可呀(同时关于python处理文本文件我也会在后期其他的专题分享中专门分享一次哈,毕竟是要朝最敬业的生信博主方向努力滴✨✨✨)
话不多说代码如下:
```
import json
import os
# obtain names list from meta json file
name_list = open("E:\\XX\\XX\\metadata.cart.2019-11-13_rna.json", 'r') #此处为从TCGA数据库上下载的meta文件,不需要做任何修改
names = json.load(name_list)
file_id_list = []
entity_submitter_id_list =[]
for i in range(0,N): #此处的N为研究的对应癌症的样本个数,即需批量转换文件名的样本个数
file_idname= names[i]['file_id']
entity_submitter_idname = names[i]['associated_entities'][0]['entity_submitter_id']
file_id_list.append(file_idname)
entity_submitter_id_list.append(entity_submitter_idname)
# change folder name as TCGA-XX-XXXX-XXX
sample_file_dir = "E:\\xx\\xxx\\xx\\" #此处问下载好的样本文件夹的路径
for dir in os.listdir(sample_file_dir):
for file_id in file_id_list:
if dir == file_id:
ind = file_id_list.index(dir)
newdir = entity_submitter_id_list[ind]
os.rename(sample_file_dir+ dir, sample_file_dir + newdir)
```
## 提取表达矩阵
此处以提取基因表达矩阵为例(至于miRNA的表达矩阵中间会有小点差别,需要的小伙伴可以留言私信我哈~),对于上述得到转换了文件名的样本,接下来最重要的就是提取表达信息。
具体的代码如下:
```
import xlsxwriter
import os
xlfile = "E:\\XX\\XX\\XX\\rna.xlsx"
test_book = xlsxwriter.Workbook(xlfile)
worksheet = test_book.add_worksheet()
folder_list = os.listdir(RNA_file_dir) # RNA_file_dir为RNA样本的路径(此处指转换文件名后的路径)
for i in range(0, len(folder_list)):
pa = RNA_file_dir + folder_list[i]
worksheet.write(0, i, folder_list[i])
for root, dirs, files in os.walk(pa, True):
for file in files:
if file.endswith("quantification.txt"):
txt = os.path.join(pa, file)
with open(txt, 'r') as f:
lines = f.readlines()
for j in range(0, len(lines)):
expression = lines[j].split('\t')
# rna data
value = expression[1].strip()
value = float((value))
worksheet.write(j+1, i, value)
#脚本是很久之前写的了😳,此处的excel文件不包含基因名,可以自行添加,或者修改一下代码(主要是我太懒了🤣~~)
```
## 关于文本的解读
在下载TCGA数据的时候我们会根据不同的需要下载不同类型的数据,此处要特别注意自己所需的数据类型,例如RNA和miRNA转录组的表达数据就有FPKM和Count的形式,一定请注意选择,当然提取完表达矩阵后还要对基因名进行修改,因时间关系,需要的同学请留言评论哈~~~
NOTE:本博客的所有代码全为原创,转载请注明出处~~~