大佬靠这个数据库撑门面!快速获取50多个肿瘤亚型数据,谁用谁高级!
一文学会ICGC数据库使用
大家好,我是阿琛。俗话说,巧妇难为无米之炊。除了我们所熟知的TCGA数据库和GEO数据库,我们可以见到另一个强大的肿瘤研究数据库,即ICGC数据库。今天,我们一起来看下ICGC数据库的使用方法和部分数据清洗内容。
首先,简单介绍一下这个优秀的数据库。ICGC数据库(https://daco.icgc.org/),即国际肿瘤基因组协作组(International Cancer Genome Consortium),收集了50种不同癌症类型或不同亚型的肿瘤数据,其中包括基因表达数据,体细胞突变数据(单核苷酸突变和拷贝数变异),以及相关的临床数据等。当然,在ICGC数据集中,同样囊括了TCGA数据库和TARGET数据库中的相关数据。在使用过程中,我们往往把TCGA数据库分析得到的模型或者结论,使用ICGC数据库中的数据进行外部验证拓展。
下面,我们一起来看下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,以及一些其他的相关病史,包括家族史,手术史,接触史等等。下载基因表达文件和临床数据文件用于后续的分析使用。
在数据整理前,我们先来看看下载得到的基因表达文件。可以看到,该表达文件和我们以前常规使用的表达矩阵并不一样;其中,每一行都代表一个病人中一个基因的表达值。
同时,在临床数据中,展示了每个样品对应的患者来源(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)
将最终得到的表达矩阵进行保存,即可用于后续分析使用。
这样,从数据的下载到清洗,整个步骤都完成了~接下来的分析使用,就可以参考测序数据的分析过程,快速进行差异分析,功能聚类等一系列的标准操作。
回复“阿琛47”获得本次的代码和示例数据~
系列传送门
R语言小白入门课|一刻钟带你学会R数据转化
—
END—
撰文丨阿 琛
排版丨四金兄
值班 | 火 火
主编丨小雪球
长按识别二维码免费包邮领取!
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。