TCGA数据分析流程梳理总结(含目录)
细数下来,写了17篇TCGA相关的笔记,现对其进行完整梳理,一篇年度精品推文横空出世。再次重申:本系列是我的TCGA
学习记录,跟着生信技能树B站课程学的,已获得授权。课程链接:https://www.bilibili.com/video/av49363776
一.数据下载
有三种下载方式,他们的目的是一样的,就是整理出表达矩阵和临床信息两个表格,使用体验各有不同。
形如:
expr[1:4,1:4]
#> TCGA-A3-3307-01A-01T-0860-13 TCGA-A3-3308-01A-02R-1324-13
#> hsa-let-7a-1 5056 14503
#> hsa-let-7a-2 10323 29238
#> hsa-let-7a-3 5429 14738
#> hsa-let-7b 17908 37062
#> TCGA-A3-3311-01A-02R-1324-13 TCGA-A3-3313-01A-02R-1324-13
#> hsa-let-7a-1 8147 7138
#> hsa-let-7a-2 16325 14356
#> hsa-let-7a-3 8249 7002
#> hsa-let-7b 28984 6909
clinical[1:4,1:4]
#> patient.vital_status patient.days_to_death
#> TCGA-3Z-A93Z alive <NA>
#> TCGA-6D-AA2E alive <NA>
#> TCGA-A3-3306 alive <NA>
#> TCGA-A3-3307 alive <NA>
#> patient.days_to_last_followup patient.race
#> TCGA-3Z-A93Z 4 black or african american
#> TCGA-6D-AA2E 135 black or african american
#> TCGA-A3-3306 1120 white
#> TCGA-A3-3307 1436 <NA>
1.官方工具GDC
需要去官网下载对应系统版本的GDC软件,存放在工作目录下。
关于这个工具前后写了三篇:
(1)GDC数据下载
(2)GDC数据整理
(3)GDC数据整理续集
这个方法需要扎实的的linux命令行和R语言基础,仅仅是理解代码,也是需要花费一些时间的。
2.R包TCGA-biolinks
R包TCGAbiolinks下载数据
这是一个完全基于R语言的流程,下载的是最新的数据,其实还是基于GDC,更加集成化,操作简单很多,除了参数研究比较费时间,没有发现什么缺点。
3.R包RTCGA
使用RTCGA包获取数据
这是一个数据库式的包,把所有数据都包装进去了,导致包很大,不是最新的数据,但最简单。
总结一下这三种方法,都是分别下载表达矩阵和meta信息,但由于有的病人既有肿瘤样本,又有正常样本,导致他们并非是一一对应的关系,需要一定的R语言技巧。
二.差异分析
TCGA(转录组)差异分析三大R包及其结果对比
使用转录组三大R包deseq2,limma和edgeR分别进行差异分析,他们的差异基因可视化如下。
下面这张图是表达矩阵的主成分分析图、差异基因表达量热图以及三个R包得到的差异基因韦恩图。
跨界拼图不简单呦。
三.生存分析
两种方法批量做TCGA生存分析
单个基因的生存分析可视化是很简单的,有非常好的R包可用,画出来的图要颜值有颜值,要内涵有内涵。
由于拿到的数据是几百个甚至几万个基因的表达矩阵,可以先进行初步筛选,批量生存分析走起。
cox回归和log-rank方法均可用于批量生存分析,会对每个基因计算p值。
四.生存模型构建
课程中共使用了四种算法构建模型:
- cox(可做单因素和多因素)
TCGA的cox模型构建和风险森林图 - lasso回归
用lasso回归构建生存模型+ROC曲线绘制 - 随机森林
听起来很霸气用起来并不难的随机森林 - 支持向量机
听起来很霸气用起来并不难的 支持向量机
不管用了那种算法,核心都只是几句代码而已。一听就高大上的机器学习,开发很难,应用不难。得到的生存模型可用于另一数据集的预测,即根据构建模型所使用的基因表达量,预测对应的病人生死。如果只有一个数据集,可使用机器学习包caret进行切割,一半是训练集,用于构建模型;另一半是测试集,用于验证模型。
使用了两种评估指标对模型进行评估
- C-index
- AUC值,可用ROC曲线可视化。
他们的取值都在0.5-1之间,越大越好。其中,ROC曲线还可以将生存时间考虑在内,只是换一个R包(timeROC)。
考虑生存时间的ROC曲线-timeROC
还有一个风险因子关联图
TCGA风险因子关联,那天讲直播课讲到晚上11点,在豆豆的逼迫下完成这篇推文,到最后一刻23:59慌忙发出去,又忘了改标题。
从上向下三个图分别表示:
1.每个病人的预测值,按照从小到大排序
2.每个病人的生存时间,颜色区分生死
3.热图,挑出的基因在每个样本中的表达量
五.突变数据
首先是数据下载。
TCGA突变数据的下载、整理和可视化
突变数据在TCGA数据库中存储为maf格式,需要将其读入R语言,有很好的R包可以一键展示数据特征,形如:
有哪些基因在较多样本中发生了突变,哪个样本突变的基因较多,所占的比例等等都可以一目了然。
还可以进行mutation signafiture分析
TCGA突变数据分析-mutation signafiture
得到如下的图:
展示了30个signafiture 在所有样本中的分布。
我们还可以根据某个基因是否突变对样本进行分组,比较指定的基因在两组之间的表达量:
任意基因的任意分组比较(标题忘记改了)
也可以比较指定的两个基因在任意分组下的相关性:
表达矩阵任意两个基因的相关性分析和绘图
如果有幸发现两个基因本身表达量是相关的,但在根据突变分组后发现这种相关性被打破了,就有可能得到一个新故事,几率很小,可以用循环来筛选。
只要R语言基础牢固,想要根据什么分组都只是改改代码的问题,包括但不局限于是否突变、人种、性别等等。
如果需要提问,请先看生信星球答疑公告
又一个系列完结,接下来我打算学习甲基化芯片了。如果本篇推文对你有用,再看转发赞赏,友谊三连走起呀!