搜索
查看: 8389|回复: 5

TCGA的metadata简介

[复制链接]

6

主题

36

帖子

467

积分

中级会员

Rank: 3Rank: 3

积分
467
发表于 2017-1-20 14:51:19 | 显示全部楼层 |阅读模式
本帖最后由 017中大普外 于 2017-1-21 00:06 编辑

    最近看到有同学刚接触tcga,从TCGA的GDC里面下载数据,本菜鸟就勉强讲解一波,以RNA-SEQ(counts)的数据为例。从TCGA的GDC官网(https://gdc-portal.nci.nih.gov/)上下载下来的是几百个压缩包,每个文件代表了一个病人的样本。其中所有样本的信息都保存在metadata这个json文件中,这个文件可以说是至关重要,其中包含了样本的TCGA id(非常重要)。
打开metadata,首先找到这个file的名字 QQ截图20170120143721.png


然后后面就找到TCGA的 id QQ截图20170120143704.png (barcode)
第四位如果是01A代表了癌症组织(tumor),如果第四位数字大于10,例如11A,表示该样本为正常组织(normal)。
通过case id和TCGA的ID的对应,通过写脚本合并所有的case成矩阵txt以进行后续的差异分析,至于脚本怎么写,真的不会。。。



metadata(元数组)

metadata(元数组)
回复

使用道具 举报

633

主题

1189

帖子

4054

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4054
发表于 2017-1-22 00:14:12 | 显示全部楼层
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

6

主题

36

帖子

467

积分

中级会员

Rank: 3Rank: 3

积分
467
 楼主| 发表于 2017-1-22 12:37:41 | 显示全部楼层
Jimmy 发表于 2017-1-22 00:14
很简单的一个问题:http://www.biotrainee.com/thread-603-1-1.html

谢群主,等会学会会写歌脚本放下面的。。嘎嘎
回复 支持 反对

使用道具 举报

6

主题

36

帖子

467

积分

中级会员

Rank: 3Rank: 3

积分
467
 楼主| 发表于 2017-1-28 21:04:55 | 显示全部楼层
这次附上脚本,先处理metadata的json文件,在按normal和tumor的顺序整理样本。
[Python] 纯文本查看 复制代码
import os
import sys
from collections import OrderedDict
import json
import re
import glob
 
 
gene_group=OrderedDict()
tcga_file=OrderedDict()
list_1=[]
normal=[]
tumor=[]
os.chdir("E:/z/files")
 
#处理TCGA metadata
with open('metadata.cart.2016-11-03T07_53_29.306026.json',"r") as f1:
    data=json.load(f1)
    for i in data:
        file_name=i["file_name"]
        file_name=re.sub("\.gz","",file_name)
        tcga_id=i["associated_entities"][0]["entity_submitter_id"]
        tcga_file[tcga_id]=file_name
        ID=tcga_id.split("-")
        if ID[3]=="11A":
            normal.append(tcga_id)              
        else:
            tumor.append(tcga_id)
list_1.extend(normal)
list_1.extend(tumor)
list_2=[]
for items in list_1:
    tcgafile=tcga_file[items]
    list_2.append(tcgafile)
##y=list_2[1]
#print(x,y)
def readfile(file):
    file_obj=open(file)
    try:
        while True:
            line=file_obj.readline().strip("\n")
            if not line:
                break
            arry=line.split("\t")
            if arry[0] in gene_group:
                gene_group[arry[0]].append(arry[1])
            else:
                gene_group[arry[0]]=[arry[1]]
    finally:
        file_obj.close()
    return gene_group
f3=open("TCGA-rnaseq-matrix.txt","w")
def main(): 
    for file in list_2:
        if glob.glob(file):           
            readfile(file)
    for gene_name,gene_expression in gene_group.items():
         
        f3.write(gene_name+"\t"+"\t".join(gene_expression)+'\n')
         
if __name__=="__main__":
    main()

回复 支持 反对

使用道具 举报

0

主题

29

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2017-3-1 14:42:55 | 显示全部楼层
默默的问下,楼主你的脚本是用什么运行的啊?
回复 支持 反对

使用道具 举报

3

主题

43

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
发表于 2017-3-22 10:33:14 | 显示全部楼层
第八天 发表于 2017-3-1 14:42
默默的问下,楼主你的脚本是用什么运行的啊?

显然是python!?
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-6-1 12:51 , Processed in 0.031923 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.