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

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

TCGA(三)--采用GDC API进行数据查询和获取_云计算

可以看到数据包含了一个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.txt083148166f7c947387a23ca9a125df0e 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应该是指第一份。

TCGA(三)--采用GDC API进行数据查询和获取_云计算_02

TSS即Tissue Source Site code

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

TCGA(三)--采用GDC API进行数据查询和获取_肿瘤_03

AA是 Colon adenocarcinoma

具体可参看官方说明: 

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

来源:华为云社区  作者:benymorre