快速获取50多个肿瘤亚型数据,就靠它撑门面,谁用谁高级


一文学会ICGC数据库使用

更多数据库干货知识

私信我回复“数据库”即可免费领取哦


大家好,我是阿琛。俗话说,巧妇难为无米之炊。除了我们所熟知的TCGA数据库和GEO数据库,我们可以见到另一个强大的肿瘤研究数据库,即ICGC数据库。今天,我们一起来看下ICGC数据库的使用方法和部分数据清洗内容。


首先,简单介绍一下这个优秀的数据库。ICGC数据库(https://daco.icgc.org/),即国际肿瘤基因组协作组(International Cancer Genome Consortium),收集了50种不同癌症类型或不同亚型的肿瘤数据,其中包括基因表达数据,体细胞突变数据(单核苷酸突变和拷贝数变异),以及相关的临床数据等。当然,在ICGC数据集中,同样囊括了TCGA数据库和TARGET数据库中的相关数据。在使用过程中,我们往往把TCGA数据库分析得到的模型或者结论,使用ICGC数据库中的数据进行外部验证拓展。



下面,我们一起来看下ICGC数据库的使用方法。


1.ICGC表达数据的下载

首先,我们先来看下如何下载其中的数据。提醒一下,这个网站对网络可能会有一点点的要求,使用过程中耐心等待一下。


1.1 点击ICGCData Protal进入数据储存地址



1.2 点击DCC Data Release,查看数据更新版本信息



1.3 在此,我们可以看到不同时间更新的数据版本信息;在使用过程中,我们一般选择最新版本的数据来进行后续的分析。点击current,查看最新版本数据



1.4 点击project,进入数据集存储界面



在该页面,可看到其中包含的各个项目内容,根据研究的疾病类型及相关具体需求来进行选择;



接下来,我们选择其中一个数据集中的数据内容来进行接下来的演示和整理,来自韩国的乳腺癌数据集。



在该数据集中,包括基因表达exp_seq.BRCA-KR.tsv.gz,临床数据specimen.BRCA-KR.tsv.gz,Somatic突变数据simple_somatic_mutation.open.BRCA-KR.tsv.gz,以及一些其他的相关病史,包括家族史,手术史,接触史等等。下载基因表达文件和临床数据文件用于后续的分析使用。


2.基因表达数据清洗

在数据整理前,我们先来看看下载得到的基因表达文件。可以看到,该表达文件和我们以前常规使用的表达矩阵并不一样;其中,每一行都代表一个病人中一个基因的表达值。



同时,在临床数据中,展示了每个样品对应的患者来源(specimens)和组织样品类型(Type)。



接下来,我们将对这两个文件进行清洗,以得到平时使用的表达矩阵格式。


2.1 表达数据的提取


rm(list=ls())   #清空环境变量
options(stringsAsFactors = F)
library(data.table)
exp <- data.table::fread("exp_seq.BRCA-KR.tsv",data.table = F)
exp <- exp[,c(1,3,8,9)]


首先,将exp_seq表达文件读取进来;由于文件相对较大,在此我们选择使用data.table包中的fread()函数来快速读取大文件内容。同时,根据需要,我们只提取包含样品信息和基因表达信息的列。可以看到,最终得到一个由1336550行组成的数据框。



head(exp)



#查看样品数量
length(unique(exp$icgc_donor_id))


随后,经统计,其中包含了50个不同的样品数量。



2.2 样品信息的读取


cli <- data.table::fread(file="specimen.BRCA-KR.tsv",data.table = F)
library(tidyverse)
cli_2 <- cli %>%
 mutate(specimen_type = ifelse(specimen_type=="Primary tumour - solid tissue","C","N")) %>%
 select(1,5,7)


整理好表达数据后,我们接着对临床信息进行提取和整理。并且,根据样品的不同来源,我们分别对其重新命名,即肿瘤组(C)和正常组(N)。


str(cli_2)


结果显示,一共包含100个不同的样品信息,其中spcimen_type为分组信息。



2.3 将两文件合并


exp_max <- merge(exp, cli_2, by="icgc_specimen_id",all.x=TRUE)


根据icgc_specimen_id信息,使用merge()函数将表达文件和临床信息文件进行合并。


rt <- exp_max[,c(1,5,6,3,4)] %>%
 unite(sample_id,icgc_specimen_id,icgc_donor_id.y,specimen_type,sep="-")


随后,我们进一步使用unite()函数将几列信息内容合并成一列。其中,关于unit()函数的使用原理,与paste0()函数类似,只是前者针对多个列内容的合并。



2.4 构建表达矩阵


exp_matrix <- rt %>%
 group_by(sample_id) %>%
 mutate(id=1:n()) %>% 
 spread(sample_id,normalized_read_count) %>%
 select(-"id")


最后,使用spread()函数,将表达数据进行拆分,最终得到我们常见的表达矩阵格式。


##保存结果
write.table(exp_matrix, file = "ICGC.BRCA_KR.exp.txt", sep = "\t", row.names = F, quote = F)


将最终得到的表达矩阵进行保存,即可用于后续分析使用。


这样,从数据的下载到清洗,整个步骤都完成了~接下来的分析使用,就可以参考测序数据的分析过程,快速进行差异分析,功能聚类等一系列的标准操作。


—END—

原文链接:,转发请注明来源!