学习笔记 — TCGA 临床数据的下载与整理

一、下载临床数据(LIHC为例)
GDC官网:https://portal.gdc.cancer.gov/  

新版TCGA数据库下载流程:

Cohort Builder → Program(TCGA)、 Project(LIHC)→ 点击Repository → 选择clinical,全部加入Cart → 下载Clinical:TSV 和 Metadata 文件。

二、临床数据整理

数据整理和清洗的代码如下:

remove(list = ls()) ##清空当前环境

#先把下载的临床数据文件解压
tar_file <- "D:/R/TCGA-LIHC/clinical.cart.2024-08-21.tar.gz"# 导入tar.gz文件
extract_dir <- "D:/R/TCGA-LIHC/clinical_data" #解压后存放位置
untar(tar_file, exdir = extract_dir) #解压tar.gz文件

# 提取临床数据整理生存分析需要的数据
setwd("D:/R/TCGA-LIHC/clinical_data") ##设置路径
library(readr)
library(dplyr)

#将下载好的metadata.json文件放入clinical文件夹
# install.packages("jsonlite")
# library(jsonlite)

json <- jsonlite::fromJSON("metadata.cart.2024-08-21.json") #读取JSON文件

entity_submitter_id <- sapply(json$associated_entities, function(x) unlist(x[, 1]))
case_id <- sapply(json$associated_entities, function(x) unlist(x[, 3]))
sample_case <- t(rbind(entity_submitter_id, case_id))

clinical <- read_tsv('clinical.tsv') #读取tsv文件
clinical <- as.data.frame(clinical[!duplicated(clinical$case_id),]) #去除重复的sample

str(sample_case)  # 查看sample_case的结构
str(clinical)     # 查看clinical的结构
sample_case <- as.data.frame(sample_case)

## 将sample_case$case_id和clinical$case_id转化为字符串格式,便于后续操作。
sample_case$case_id <- as.character(sample_case$case_id)
clinical$case_id <- as.character(clinical$case_id) 

matrix <- merge(sample_case,clinical,by="case_id",all.x=T)

colnames(clinical)

demo <- c("case_submitter_id","age_at_index","ethnicity","gender","race",
          "vital_status","days_to_death","days_to_last_follow_up",
          "ajcc_pathologic_stage","ajcc_pathologic_t","ajcc_pathologic_m",
          "ajcc_pathologic_n","treatment_type")

matrix = matrix[,demo] #筛选需要的临床信息
head(matrix)
colnames(matrix) <- c("ID","Age","Ethnicity","Gender","Race",
                      "Status","days_to_death","days_to_last_follow_up",
                      "Stage","T","M","N","Treatment") 

#排除结局为"Not Reported"的Sample,保留Alive和Dead的数据
matrix = matrix[matrix$Status %in% c('Alive','Dead'),] 

# 把matrix数值列转换为数值型,便于记录生存信息
matrix$days_to_last_follow_up <- as.numeric(matrix$days_to_last_follow_up)
matrix$days_to_death <- as.numeric(matrix$days_to_death)
matrix$Age <- as.numeric(matrix$Age)

# 去除NA,替换为0
matrix$days_to_last_follow_up[is.na(matrix$days_to_last_follow_up)] = 0
matrix$days_to_death[is.na(matrix$days_to_death)] = 0
matrix$Age [is.na(matrix$Age )] = 0

matrix$days <- ifelse(matrix$Status=='Alive',matrix$days_to_last_follow_up,matrix$days_to_death)

## 添加生存分析需要的信息:存活状态、月、年
matrix$OS <- ifelse(matrix$Status == "Alive", 0, 1)
matrix$month=round(matrix$days/30,0) #以month为单位,小数不保留
matrix$OS.time <- floor(matrix$month/12)

后续可以进一步进行生存分析及可视化等操作。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下载TCGA临床数据,你可以使用R语言中的GDCquery_clinic函数。通过指定项目(project)和数据类型(type),你可以获取到所需的临床数据。例如,要下载TCGA-PRAD项目的临床数据,你可以使用以下代码: cl_new <- GDCquery_clinic(project = 'TCGA-PRAD', type = 'clinical') 然后,你可以将新下载数据与已有的临床数据进行合并,使用merge函数,并指定合并的列名(by),以及处理相同列名的后缀(suffixes)。例如: clinical <- merge(clinical, cl_new, by = 'bcr_patient_barcode', all = T, suffixes = c('.old', '.new')) 最后,你可以根据特定的条件来筛选需要的数据并进行处理。根据你提供的代码,你可以根据时间数据和其他变量的条件来选择相关的生存信息,并将其写入CSV文件中。例如,你可以使用以下代码来处理数据并将结果写入CSV文件: clinical$dcf_time = with(clinical,ifelse(!days_to_new_tumor_event_after_initial_treatment=='',days_to_new_tumor_event_after_initial_treatment,'')) clinical_filt$dcf_time = with(clinical,ifelse(!days_to_first_biochemical_recurrence=='',days_to_first_biochemical_recurrence,dcf_time)) clinical$dcf_status = ifelse(!clinical$dcf_time=='',1,0) clinical$dcf_time = with(clinical,ifelse(dcf_time=='',os_time,dcf_time)) write.csv(clinical, file = 'clinical_with_os_dcf.csv') 以上是一个处理临床数据和导出CSV文件的示例。你可以根据你的具体需求进行相应的调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [TCGA_临床数据下载_全面数据](https://blog.csdn.net/weixin_59289660/article/details/125861350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值