RNAseq纯生信挖掘思路分享?不,主要是送你代码!(建议收藏)

简介: RNAseq纯生信挖掘思路分享?不,主要是送你代码!(建议收藏)

本文首发于“生信补给站”公众号  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)的分析了。

差异分析|DESeq2完成配对样本的差异分析

ggplot2-plotly|让你的火山图“活”过来

R|clusterProfiler-富集分析

ggplot2| 绘制KEGG气泡图

ggplot2|绘制GO富集柱形图

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曲线图,添加一些重点信息。

R|生存分析 - KM曲线 ,必须拥有姓名和颜值

注:可以使用其他机器学习的方法进行筛选,如lasso,随机森林,SVM等,可以参考使用机器学习方法构建预后模型的集大成者文献,2010年NC的文章 Pan-cancer characterization of immune-related lncRNAs identifies potential oncogenic biomarkers。文中提供了示例代码Data  availabilityhttp://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中具体的基因表达与预后风险得分关系的话可以绘制风险因子联动图

ggrisk|高效绘制风险因子联动图

5 外部数据集验证

涉及到模型构建,无疑需要外部验证,来源可以是GEO 或者 是其他文献中的数据。

6 多模型比较

确定构建的预后模型有意义后,还需要和当前经常使用的预后分层因素(比如stage,T ,N,M分期,其他的经典模型等)进行比较,确保我们得到的预后模型在准确性,稳定性等指标上更优

常使用ROC曲线可视化比较结果,两种方式(A:1,3,5年ROC;B:timeROC) 。

四 预后模型特征


1,临床和免疫指标

经过上面的分析可以初步确定预后模型是有意义的,最好再加一些和常见临床指标(左侧两个)以及药物反应(IC50) 和 免疫反应(IPS,TIDE)等。

可以是复杂热图的展示形式

跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下

pheatmap|暴雨暂歇,“热图”来袭!!!

2,DEGs 和 通路

可以用riskscore 高低进行分组,然后进行前面提到的差异分析,火山图和热图,富集分析(GO,KEGG),GSEA,GSVA分析,免疫浸润差异等分析

ggplot2-plotly|让你的火山图“活”过来

R|clusterProfiler-富集分析

ggplot2| 绘制KEGG气泡图

ggplot2|绘制GO富集柱形图

clusterProfiler|GSEA富集分析及可视化

五 结合单细胞


当前很多的文章会和单细胞进行结合,这时就涉及单细胞数据的下载,批次处理,细胞注释等

scRNA分析|多样本merge 和 harmony去批次

scRNA分析|Marker gene 可视化 以及 细胞亚群注释--你是如何人工注释的?

scRNA分析|单细胞文献Fig1中的分组umap图和细胞比例柱形图

scRNA分析|一(尽)文(力)解决你的单细胞火山图问题

scRNA分析|单细胞GSVA + limma差异分析-celltype分组?样本分组?

scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化

跟着NC学pseudotime| monocle2 拟时序分析 + 树形图

跟SCI学Pseudotime 2 | 将拟时序分析结果映射到 umap 中

scRNA分析 | 解决可能的报错,从0开始教你完成细胞通讯分析-cellphoneDB

scRNA分析|使用CellChat完成细胞通讯分析-简单且可视化出众,代码自取

六 数据处理和可视化


1,数据处理

虽然模块的分析和代码上面都给了,但是真实场景下还需要一些数据提取,过滤,筛选,处理来达到自己的分析目的,比如提取目标样本,只要癌症,筛选有预后信息的,基因过滤,各个模块输入数据要求不一致,需要根据实际情况进行处理。

这一步很繁琐但很关键,需要好好练习,介绍一下tidyverse 进行相关处理

数据处理 | R-tidyr包

Tidyverse|tidyr数据重塑之gather,spread(长数据宽数据转化)

tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)

Tidyverse| XX_join :多个数据表(文件)之间的各种连接

Tidyverse|数据列的分分合合,一分多,多合一

盘一盘Tidyverse| 只要你要只要我有-filter 筛选行

盘一盘Tidyverse| 筛行选列之select,玩转列操作

R-rbind.fill|列数不一致的多个数据集“智能”合并,Get!

R-apply| 基因表达量批量二分类,Get!(修正版)

数据处理|R-dplyr

2,可视化

可视化部分的话,多看一下具体特定函数的帮助文档,出现报错多使用??函数查看一下示例数据的格式 以及 函数等。

其中很多包是ggplot2的扩展包或者使用了很多ggplot2的函数

ggplot2|详解八大基本绘图要素

ggplot2|theme主题设置,详解绘图优化-“精雕细琢”

ggplot2 |legend参数设置,图形精雕细琢

ggplot2-annotation|画图点“精”,让图自己“解释”

R-ggpmisc|回归曲线添加回归方程,R2,方差表,香不香?

ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”

ggplot2|ggpubr进行“paper”组图合并

ggstatsplot绘图|统计+可视化,学术科研神器

相关文章
|
7月前
|
算法
算法:图解递归算法的应用场景和使用途径
算法:图解递归算法的应用场景和使用途径
|
3月前
|
存储 算法
智能算法 | 刷题的方法真的找到正确思路了嘛
智能算法 | 刷题的方法真的找到正确思路了嘛
|
10月前
|
存储 小程序 数据库
小程序整体的思路
小程序整体的思路
153 0
|
10月前
|
程序员
编写s=1+2+3+...+n思路打破认知
最近在和领导讨论架构设计,其中涉及到如何通过代码来体现面向对象?通过一个例子来打破了原有的认知,以此总结记录自己的提升和成长
|
开发者 Python
冒泡排序(难点非重点) | 学习笔记
快速学习 冒泡排序(难点非重点)
103 0
冒泡排序(难点非重点) | 学习笔记
|
存储 算法
算法不难的话,也挺简单的哈
算法不难的话,也挺简单的哈
86 0
|
监控 小程序 数据挖掘
5步法,快速找到数据分析思路
在工作中,经常有小伙伴遇到:做数据分析没思路的问题。如果是日常工作还好,可以对着以前的报表抄一份。但是面试时遇到没思路的问题,可能就含恨而终了。今天就分享下,如何快速找到思路。 比如被面试官问道:“你要如何分析一款APP”。此时忽然脑子短路,不知道从何说起,该怎么办呢?别着急,分五步,一步步来。
149 0
5步法,快速找到数据分析思路
|
数据库 开发者 Python
综合案例1-案例演示和思路分析 | 学习笔记
快速学习综合案例1-案例演示和思路分析
|
SQL 数据采集 分布式计算
用户画像有什么用?怎样用?6个场景案例给你讲明白
在大数据分析中,对用户行为进行分析挖掘又是一个重要的方向,通过对用户行为进行分析,企业可以了解用户从哪里来,进入平台后进行了哪些操作,什么情况下进行了下单付款,用户的留存、分布情况是怎样的等。
|
关系型数据库 数据库
我写项目的思路和“自然架构”
我写项目的思路       三层的思路是要把页面(UI、数据显示)、业务逻辑、数据处理(也叫持久化)分离开来处理,思路自然是好的,但是一到了实际应用中,好多人就会遇到一点小小的问题,于是产生了好多的争论。
928 0