本文首发于“生信补给站”公众号 https://mp.weixin.qq.com/s/jsoDxf1FTMT2FyXV0lqgjw
预后模型在纯生信分析中绝对有一席之地,本文简单的介绍下常见的预后模型构建的思路,详细的代码和使用场景见文中对应的推文链接
常见的分析思路可以是,
(1)通过某种目的初步筛选出候选的基因集合(数目较多) ;
(2)在其中筛选预后显著的基因,然后通过机器学习的方式获得建模的基因集合(数目较少);
(3)构建预后模型,然后对模型进行一系列指标评价;
(4)进一步查看模型的临床意义 ;
(5)结合一下单细胞数据分析。
一 目的基因初筛
首先需要根据研究目的进行初步分析,比如入组的样本有哪些?分析的基因集是什么?
然后确定是通过分组计算DEGs 还是 找hub gene 来完成完成基因的初筛。
1,入组样本 和 基因集合
构建预后模型一般会设定一个分组,常见的是Tumor vs Normal ,患病 vs 不患病 ,临床特征1 vs 特征2(是否侵犯,是否转移),分子亚型1 vs 亚型2 等,免疫浸润程度 等根据研究方案和目的进行设定。
2,基因集合
1.2 基因方面可以直接使用全部的基因,也可以 筛选一下 已达到更好的目的,比如
(1)单独筛选mRNA 或者 lncRNA去做;
(2)使用免疫相关基因,铁死亡,凋亡,焦亡,铜死亡,溶酶体等“热点”通路的基因去做,这样预后模型风险评分就可以相应叫做 immune-riskscore ,Ferroptosis-riskscore 等 ,是不是就稍微“高大上”了一点。
通路基因集可以在MSigDB(GSEA | MSigDB (gsea-msigdb.org))中获得,方式可以参考scRNA分析|单细胞GSVA + limma差异分析-celltype分组?样本分组?
3,分组DEGs
关于分组的话一般是要契合文章主题的,常见的分组方式是Tumor vs Normal ,患病 vs 不患病 ,临床特征1 vs 特征2(是否侵犯,是否转移),分子亚型1 vs 亚型2 等,免疫浸润程度 等。
(1)分组是Tumor vs Normal ,患病 vs 不患病 等使用临床信息进行分组的可以直接根据下载到的临床数据进行分组;
(2)亚型分组指的是可以先将转录组数据进行 NMF 或者 一致性聚类,然后以得到的分子分型信息分组;
RNAseq|组学分型-ConsensusClusterPlus(一致性聚类), NMF(非负矩阵分解)
(3)免疫浸润程度分组是指先做免疫浸润分析,然后根据免疫得分高低进行分组;
RNAseq|免疫浸润也杀疯了,cibersoert?xCELL?ESTIMATE?你常用哪一个
确定分组后就可以进行差异分析以及火山图,热图,富集分析(GO,KEGG)的分析了。
4,Hub基因
使用WGCNA的方法获得和目标性状(分期,免疫,预后)等相关的hub基因作为初筛的结果。
RNAseq|WGCNA-组学数据黏合剂,代码实战-一(尽)文(力)解决文献中常见的可视化图
通过上面的DEGs或者Hub gene 就能获得初始的候选基因集合了。
二 构建预后模型
1,单因素生存分析
将上述得到的DEGs或者hub genes ,首先进行批量单因素生存分析 ,然后自定义阈值(一般p < 0.05)进行筛选,得到预后显著的基因集。RNAseq|批量单因素生存分析 + 绘制森林图
2,基因筛选获取最终的模型基因
输入上述单因素预后显著的基因进行Lasso分析,筛选出 重点基因,构建预后模型并可视化RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
Lasso筛选基因后构建预后模型得到每个样本的Riskscore,然后绘制KM曲线和ROC曲线初步检验下模型表现
当然也可以根据需求自定义KM曲线图,添加一些重点信息。
注:可以使用其他机器学习的方法进行筛选,如lasso,随机森林,SVM等,可以参考使用机器学习方法构建预后模型的集大成者文献,2010年NC的文章 Pan-cancer characterization of immune-related lncRNAs identifies potential oncogenic biomarkers。文中提供了示例代码Data availability :http://bio-bigdata.hrbmu.edu.cn/ImmLnc 。
三 预后模型评价
得到预后模型后的KM 和 ROC曲线还只是个开始,还需要通过一系列指标来评价该模型 。
1, ROC / AUC
ROC(Receiver Operating Characteristic Curve),主要是用来确定一个模型的阈值,同时在一定程度上也可以衡量这个模型的好坏。 一般情况下该曲线都应该处于(0, 0)和(1, 1)连线的上方(如果在下方改变marker的方向)。使用ROC 曲线可以比较直观的展示模型的好坏,处于ROC 曲线下方的那部分面积的大小越大越好,也就是Area Under roc Curve(AUC)值。
绘制ROC曲线的方式很多种,一般绘制 1年,3年和5年的ROC曲线。除特殊节点外,还可以绘制不同时间点的Time-AUC曲线 R|timeROC-分析
2 独立预后
预后模型需要 添加一些临床信息来进行独立预后验证,通常会绘制森林图来直观展示Forest plot(森林图) | Cox生存分析可视化
3 模型校准
确定riskscore是独立预后的风险因素后,可以进一步绘制列线图(诺莫图)以及校准曲线,当然可以再加个DCA决策曲线。
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
4,模型基因-预后模型联动
如果想展示riskscore中具体的基因表达与预后风险得分关系的话可以绘制风险因子联动图
5 外部数据集验证
涉及到模型构建,无疑需要外部验证,来源可以是GEO 或者 是其他文献中的数据。
6 多模型比较
确定构建的预后模型有意义后,还需要和当前经常使用的预后分层因素(比如stage,T ,N,M分期,其他的经典模型等)进行比较,确保我们得到的预后模型在准确性,稳定性等指标上更优。
常使用ROC曲线可视化比较结果,两种方式(A:1,3,5年ROC;B:timeROC) 。
四 预后模型特征
1,临床和免疫指标
经过上面的分析可以初步确定预后模型是有意义的,最好再加一些和常见临床指标(左侧两个)以及药物反应(IC50) 和 免疫反应(IPS,TIDE)等。
可以是复杂热图的展示形式
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下)
2,DEGs 和 通路
可以用riskscore 高低进行分组,然后进行前面提到的差异分析,火山图和热图,富集分析(GO,KEGG),GSEA,GSVA分析,免疫浸润差异等分析
五 结合单细胞
当前很多的文章会和单细胞进行结合,这时就涉及单细胞数据的下载,批次处理,细胞注释等
scRNA分析|Marker gene 可视化 以及 细胞亚群注释--你是如何人工注释的?
scRNA分析|单细胞文献Fig1中的分组umap图和细胞比例柱形图
scRNA分析|单细胞GSVA + limma差异分析-celltype分组?样本分组?
scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化
跟着NC学pseudotime| monocle2 拟时序分析 + 树形图
跟SCI学Pseudotime 2 | 将拟时序分析结果映射到 umap 中
scRNA分析 | 解决可能的报错,从0开始教你完成细胞通讯分析-cellphoneDB
scRNA分析|使用CellChat完成细胞通讯分析-简单且可视化出众,代码自取
六 数据处理和可视化
1,数据处理
虽然模块的分析和代码上面都给了,但是真实场景下还需要一些数据提取,过滤,筛选,处理来达到自己的分析目的,比如提取目标样本,只要癌症,筛选有预后信息的,基因过滤,各个模块输入数据要求不一致,需要根据实际情况进行处理。
这一步很繁琐但很关键,需要好好练习,介绍一下tidyverse 进行相关处理
Tidyverse|tidyr数据重塑之gather,spread(长数据宽数据转化)
tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)
Tidyverse| XX_join :多个数据表(文件)之间的各种连接
盘一盘Tidyverse| 只要你要只要我有-filter 筛选行
盘一盘Tidyverse| 筛行选列之select,玩转列操作
R-rbind.fill|列数不一致的多个数据集“智能”合并,Get!
2,可视化
可视化部分的话,多看一下具体特定函数的帮助文档,出现报错多使用??函数查看一下示例数据的格式 以及 函数等。
其中很多包是ggplot2的扩展包或者使用了很多ggplot2的函数
ggplot2|theme主题设置,详解绘图优化-“精雕细琢”
ggplot2-annotation|画图点“精”,让图自己“解释”
R-ggpmisc|回归曲线添加回归方程,R2,方差表,香不香?