TCGA<三>--采用GDC API进行数据查询和获取

举报
benymorre 发表于 2019/06/02 13:30:25 2019/06/02
【摘要】 TCGA的数据可以通过API访问, 每个数据都有对应的多个属性,比如文件id(file_id), 病人编号(case_id以及barcode),case_id 和file_id 都是采用的UUID进行标记, barcode即submitter_id.在GDC的首页选中一些DNA甲基化数据,如下:可以看到数据包含了一个Cases, 两个Files,这里面选择的项目是TCGA-COAD,这是来自...

TCGA的数据可以通过API访问, 每个数据都有对应的多个属性,比如文件id(file_id), 病人编号(case_id以及barcode),case_id 和file_id 都是采用的UUID进行标记, barcode即submitter_id.


在GDC的首页选中一些DNA甲基化数据,如下:


Screenshot 2019-06-02 at 11.34.46 AM.png


可以看到数据包含了一个Cases, 两个Files,这里面选择的项目是TCGA-COAD,这是来自结肠癌的一个病人的数据结果。


通过下载这个Manifest文件(红圈标记), 得到一些数据的id信息,文件名信息以及,primary_site信息(肿瘤的发生部位),肿瘤也会发生转移,可以通过自定义查询API的字段去获取, 以下是根据case_id查询primary_site 以及barcode (submitter_id)的用法:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import requests
import json

cases_endpt = 'https://api.gdc.cancer.gov/cases'

fields = [
    "submitter_id",
    "case_id",
    "primary_site",
    "disease_type",
    "diagnoses.vital_status"
    ]
field = ",".join(fields)

filters = {
    "op": "in",
    "content":{
        "field": "case_id",
        "value": ["dde411b2-5d2b-4638-8149-89bc1eb3c7ad"]
        }
    }

params = {
    "filters": json.dumps(filters),
    "fields": field,
    "format": "TSV",
    "size": "100"
    }

response = requests.get(cases_endpt, params = params)

print(response.content)


如果要根据manifest文件中的file_id 查询case_id以及barcode 该怎么做呢?


Manifest示例文件如下:


id filename md5 size state

25e8048f-1601-4d1f-9d1a-4c9f002d9365 jhu-usc.edu_COAD.HumanMethylation450.3.lvl-3.TCGA-AA-3697-11A-01D-1721-05.gdc_hg38.txt 083148166f7c947387a23ca9a125df0e 141289374 released

3a42822b-9c71-4663-ab02-8d140f8935a6 jhu-usc.edu_COAD.HumanMethylation450.3.lvl-3.TCGA-AA-3697-01A-01D-1721-05.gdc_hg38.txt d453729be73e7300e8876ac2aa45e775 141289883 released


可以看到,第一列是file_id, 也可以采用API,python的代码如下:


import requests

import json


def get_paras_filter_fileID(file_ids):

    params ={

                "filters":{

                        "op":"in",

                        "content":{

              "field":"files.file_id",

              "value":file_ids

     }

                },

    "format":"TSV",

    "fields":"file_id,file_name,cases.case_id,cases.submitter_id,cases.samples.sample_id,cases.samples.submitter_id",

    "size":len(file_ids)

        }

    return params


def saveFile(file_ids):

    out = open("test_barcodes_id.txt", 'w')

    files_endpt = "https://portal.gdc.cancer.gov/auth/api/files"

    params = get_paras_filter_fileID(file_ids)

    response = requests.post(files_endpt, json = params)

    out.write(response.text)

    out.close()


saveFile(['25e8048f-1601-4d1f-9d1a-4c9f002d9365', '3a42822b-9c71-4663-ab02-8d140f8935a6'])


这样结果就能保存在 test_barcodes_id.txt 文件中, 如下:


file_id file_name       cases.0.submitter_id    cases.0.samples.0.submitter_id  cases.0.case_id id      cases.0.samples.0.sample_id

25e8048f-1601-4d1f-9d1a-4c9f002d9365    jhu-usc.edu_COAD.HumanMethylation450.3.lvl-3.TCGA-AA-3697-11A-01D-1721-05.gdc_hg38.txt

  TCGA-AA-3697    TCGA-AA-3697-11A        dde411b2-5d2b-4638-8149-89bc1eb3c7ad    25e8048f-1601-4d1f-9d1a-4c9f002d9365    2121d215-5078-4273-8eb2-29273f90a361

3a42822b-9c71-4663-ab02-8d140f8935a6    jhu-usc.edu_COAD.HumanMethylation450.3.lvl-3.TCGA-AA-3697-01A-01D-1721-05.gdc_hg38.txt

  TCGA-AA-3697    TCGA-AA-3697-01A        dde411b2-5d2b-4638-8149-89bc1eb3c7ad    3a42822b-9c71-4663-ab02-8d140f8935a6    c8a9e194-fbb4-4cc5-8cda-665540e8acdc


如果要下载文件,可以参考以下内容:

https://docs.gdc.cancer.gov/API/Users_Guide/Python_Examples/#a-simple-download-request


barcode的前三个字段即病人的编号, 第四个字段是组织的类型,01就是实体瘤(solid tumor),11就是这个人的正常组织,A则是指这块组织的份数的编号,从A-Z, A应该是指第一份。


barcode.png


TSS即Tissue Source Site code

https://gdc.cancer.gov/resources-tcga-users/tcga-code-tables/tissue-source-site-codes


Screenshot 2019-06-02 at 1.23.29 PM.png

AA是 Colon adenocarcinoma


具体可参看官方说明: 

https://docs.gdc.cancer.gov/Encyclopedia/pages/TCGA_Barcode/


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。