科研星球

强大的肿瘤研究数据库,ICGC数据库使用指南

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


0.png


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

1.ICGC表达数据的下载

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


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


0 (2).png


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


0 (1).png


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


0 (3).png


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


0 (4).png


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


0 (5).png


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


0 (8).png


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

2.基因表达数据清洗

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


0 (6).png


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


0 (7).png


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


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行组成的数据框。


0 (9).png



head(exp)


0 (10).png


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


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


0 (11).png

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为分组信息。


0 (12).png


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()函数类似,只是前者针对多个列内容的合并。


0 (13).png


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)


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


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


没有账号?