r 保留之前曲线_生存曲线居然能够批量绘制了

9cc0386cd56324e3073a6e270e8666ab.png生信分析第三步:生存曲线批量绘制

各位解螺旋的小伙伴大家好,我是先锋宇,欢迎大家来到每周日的先锋宇专栏,经过前两期推文的学习,很多小伙伴都私信我说从先锋宇助教的专栏很接地气,自己能够开始慢慢处理数据,并且希望先锋宇助教能够继续把这条线走通。听到解螺旋小伙伴积极正向的反馈,小编心理也是非常开心,那么今天咱们继续往下走,我们在前两期推文中完成数据的下载以及差异分析和单因素COX回归,那么今天小编就带大家进行生存曲线的绘制,先锋宇助教还是本着科研效率第一的原则,我们当然不是一次就绘制一条生存曲线,这样与我的风格不符,这次我就来教大家直接批量出图,收获满满的批量生存曲线图。

写在前面

相信很多小伙伴在看文献的时候总是能够看到作者拿一张figure放置多个生存曲线图,不知道大家想过没有,如果作者一张小图一张小图的画,那可能图还没有画完就直接开始拍桌子了。肯定为了提升科研的效率,我们还是希望把这些重复的工作都交给计算机不厌其烦地去做,然后留更多的时间给我们自己享受生活。好啦,言归正传,我们开始今天批量生存曲线绘制的讲解。

代码演示

经过前面两期专栏的处理(没有跟上的同学赶快去前两期专栏看看,打牢基础才能走得更远),我们现在已经得到了单因素COX回归的结果。

0565d923b84abdda68391db20ab3a67a.png

接下来我们筛选p值小于0.05的基因进行保留,这里我们使用dplyr包中的filter函数进行过滤:

uniTab % dplyr::filter(pvalue < 0.05)

9e93e257f10a2fc42b6b36c12f7471c8.png

接着我们把单因素COX回归有意义的基因再提取出来,因为刚刚得到的是数据库,我们把第一列取出来即可:

unicox_gene 

a3150f1c700914be29745652b98e8bc2.png

得到了单因素COX回归有显著统计学意义的基因之后,我们就要开始进行生存曲线绘制即K-M分析,关于K-M分析和COX回归到底有啥区别,大家可以参考风师兄在生信下篇段位3有详细的讲解。如果用我自己的实用的理解那就是,COX分析筛选变量太多的话我们就再加上K-M分析再筛选一次,相当于双重过滤标准;但是如果你COX回归筛选之后就只有几个基因了,那就没有必要再用K-M分析去筛选了,因为筛选了完了你可能就没有基因了。

接下来我们从单因素COX回归的数据框中把pvalue小于0.05的基因提取出来,这里我们使用dplyr包中的select函数,注意这里要记得使用all_off函数把向量放在函数里面,这样才能提取对应的列:

unicoxSig % dplyr::select(1,2,3,all_of(unicox_gene))unicoxSig$futime 

df82f626e11073806da87cd011398fe2.png

接下来我们进行生存曲线的绘制,首先绘制生存曲线,我们首先需要解压两个强大的包,survival包和survminer包。

library(survival)library(survminer)

首先为了降低难度,我们先来进行一条生存生存曲线的绘制,我们先提取一个基因的表达量:

single_gene % dplyr::select(1,2,3,4)

dfed3c7a29e000cf5e6092fae36d24f6.png

然后我们构建一个分组文件,根据基因表达量的中位值进行高低两组的划分:

group  median(single_gene[[4]]),               "high", "low")

然后我们计算高低表达两组之间的生存的p值大小:

diff=survdiff(Surv(futime, fustat) ~ group2, data = gene_surv)pValue=1-pchisq(diff$chisq,df=1)if(pValue<0.001){ pValue="p<0.001"}else{ pValue=paste0("p=",sprintf("%.03f",pValue))}

接下来拟合一个生存函数,这里我们使用survfit函数进行拟合:

fit 

最后我们使用ggsurvplot函数来绘制生存曲线,代码参考来自于生信体系课下篇,需要进一步学习的同学可以参看我们的生信体系课,里面有更多丰富的知识等待大家。

ggsurvplot(fit,           data=single_gene,          conf.int=TRUE,          pval=pValue,          pval.size=5,          legend.labs=c("High", "Low"),          xlab="Time (years)",          ylab="Overall survival",          break.time.by = 1,          risk.table.,          palette=c("#d7191c", "#2b83ba"),          risk.table=T,          risk.table.height=.25)

一张可用于文章发表的生存曲线图就绘制好了:

9d603d8492de75588ec48232afa23d9a.png

虽然一张绘制好了,但是我们本期的问题还没有解决,我们不仅要一张,我们要很多张。套用一句经典的话就是,只要小孩子才做选择,成年人是全部都要,而且越多越好,图多了我们才有选择的余地。

接下来我们进行批量绘制,批量绘制的原理无非就是循环,而循环就是一列一列循环,然后每一列绘制一个生存曲线。

for(gene in colnames(unicoxSig)[4:ncol(unicoxSig)]){group  median(unicoxSig[[gene]]),               "high", "low")diff=survdiff(Surv(futime, fustat) ~ group, data = unicoxSig)pValue=1-pchisq(diff$chisq,df=1)if(pValue<0.001){ pValue="p<0.001"}else{ pValue=paste0("p=",sprintf("%.03f",pValue))}fit surPlot=ggsurvplot(fit,           data=unicoxSig,          conf.int=TRUE,          pval=pValue,          pval.size=5,          legend.labs=c("High", "Low"),          legend.title=gene,          xlab="Time (years)",          ylab="Overall survival",          break.time.by = 1,          risk.table.,          palette=c("#d7191c", "#2b83ba"),          risk.table=T,          risk.table.height=.25)pdf(file=paste0("surv/",gene,".pdf"), onefile=FALSE, width=6.5, height=5.5)print(surPlot)dev.off()}

f1e628e9c58e49f884e9b41db49cebee.png

写在最后

先锋宇助教每次在跑循环的时候总感觉就是在收获财富,因为每跑一张图,就有可能放到论文里面,然后构成一个完成的figure,希望大家也能和我有同样的感受!希望继续继续关注挑圈联靠公众号,继续关注我的专栏,希望大家都能在这里学有所获,收到满满的干货,好啦,这期的内容就到这里啦,我们下周日再见~

往期传送门:

让生信工作者失业的神器——DrBioRight,真舍不得告诉你!

高效数据清洗!这个R包太强大了!你一定要试试!(文末附赠小彩蛋)

一站式分析R包来了,承包了生信各种分析!太全能了!

搞定这一步,说明你学R有天赋!TCGA数据从下载到差异分析(附代码)

别走,baby,COX森林需要你

6bec73fc0ac57d9ed14aafdf47828f92.png

欢迎大家关注解螺旋生信频道-挑圈联靠公号~

fac33c697ceb47f42b5f46fc5214f3c3.png

—END—撰文丨先锋宇排版丨四金兄值班 | 弘  毅主编丨小雪球

0eeffb7189c1cf023ced1166aaaff0aa.png

9cc0386cd56324e3073a6e270e8666ab.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于vue自动化表单实践

背景 B端系统表单较多&#xff0c;且表单可能含有较多字段字段较多的表单带来了大片HTML代码在大片HTML中&#xff0c;混杂着参数绑定、事件处理等逻辑&#xff0c;不利于维护技术栈 Vue&#xff0c;Element(默认表单布局)适合中后台项目快速开发 目标 通过json配置快速生成表单…

天津科技大学计算机学院复试分数线,2021天津科技大学研究生复试分数线

2021天津科技大学研究生复试分数线已经公布&#xff0c;包含学术学位、专业学位、专项计划复试分数线&#xff0c;供大家参考&#xff0c;如意了在此祝广大考研学子都能顺利上岸。一、2021年天津科技大学研究生分数线1&#xff0e;专业分数线各学院严格执行《2021年全国硕士研究…

使用Eclipse Hibernate插件逐步为POJO域Java类和hbm自动生成代码

概述&#xff1a; 在本教程中&#xff0c;我们将使用Eclipse Hibernate工具自动生成域对象和相应的hbm xml文件。 如果您正在处理大型或中型项目&#xff0c;并且开始时有超过5个以上的表&#xff0c;则可能会发现此插件是自动生成映射域对象java文件和相应* .hbm.xml的绝佳工具…

idea本地跑如何看gc日志_线上故障如何快速排查?来看这套技巧大全

简介&#xff1a;有哪些常见的线上故障&#xff1f;如何快速定位问题&#xff1f;本文详细总结工作中的经验&#xff0c;从服务器、Java应用、数据库、Redis、网络和业务六个层面分享线上故障排查的思路和技巧。较长&#xff0c;同学们可收藏后再看。前言线上定位问题时&#x…

从零打造在线版H5页面生成器

想必你一定使用过易企秀或其它微场景生成工具制作过炫酷的h5页面&#xff0c;除了感叹其神奇之处有没有想过其实现方式呢&#xff1f;从设计者的角度来看待问题&#xff0c;会有不一样的收获&#xff0c;本文将从零开始&#xff0c;使用node技术来设计实现一款精简版的易企秀 G…

使用Struts2,Hibernate和MySQL BLOB开发个人迷你相册应用程序–第1部分

概述&#xff1a; 在本研讨会中&#xff0c;我们将开发一个Web应用程序&#xff0c;可用于创建漂亮的照片库。 您可以将其托管在Web服务器中&#xff0c;也可以在自己的PC中使用以维护和管理照片集。 使用本教程&#xff0c;您将能够了解与Struts2和Hibernate相关的以下重要内容…

基于 Webpack2、Vue2、iView2 的可视化脚手架 iView Cli 发布 2.0 版本

谷歌今天发布了一系列“性感”的软件&#xff0c;我们也发布了一款大家期待已久的开发者工具&#xff0c;同样很性感 &#xff1a;) iView 2.0 已经发布有两个月了&#xff0c;在 2.0 发布后&#xff0c;npm 下载量、issues 数量都提升了很多&#xff08;可以 watch 下项目&…

在OSGi中为Karaf构建Camel-CXF REST服务–组播和聚合

请查看我在Karaf的OSGi中构建普通CXF服务&#xff08;不使用Camel&#xff09;的其他文章 。 这是有关如何 创建一个CXF REST服务 使用骆驼多播&#xff08;并并行化&#xff09;传入的请求 来自两个不同服务的源数据 汇总响应并 最后将合并结果作为JSON返回给最终用户。…

cgcs2000大地坐标系地图_为什么要从北京54和西安80统一到CGCS2000?测绘人必知!...

导 读北京54坐标和西安80坐标&#xff0c;使用了很多年&#xff0c;为何要统一成CGCS2000坐标&#xff1f;启用CGCS2000坐标有何重大意义&#xff1f;概述北京54坐标系和西安1980坐标系的建立极大的促进了新中国测绘的发展,然而随着空间大地测量技术的兴起,这两种经典的局部大地…

Amazon Elastic Map Reduce使用Apache Mahout计算建议

Apache Mahout是一个“可扩展的机器学习库”&#xff0c;其中包含各种单节点和分布式推荐算法的实现。 在我的上一篇博客文章中&#xff0c; 我描述了如何在单个节点上实现在线推荐系统来处理数据。 如果数据太大而无法放入内存&#xff08;> 100M首选项数据点&#xff09;怎…

基于element-ui实现table可配置化

写在前面 感谢 饿了么前端团队提供组件化框架elememt-ui&#xff0c;本文基础组件使用element-ui。 大背景 在开发一些系统过程中&#xff0c;使用table作数据展示在所难免。先来看看el-table组件。 非常简单易用的组件&#xff0c;根据提供的data数据&#xff0c;配置table…

麟龙指标通达信指标公式源码_通达信指标公式源码波段极限副图源码

做价值的传播者&#xff0c;一路同行&#xff0c;一起成长问题&#xff1a;怎样才能每天都收到这类文章&#xff01;答案&#xff1a;只需点击上方《通达信公式指标》{买卖公式}AA:(2*CHIGHLOW)/4;BB:AA-REF(C,12);CC:EMA(BB,13);DD:EMA(CC,2);EE:EMA(BB,34);FF:EMA(BB,55);GG:…

计算机系统备份的原则和策略,计算机系统数据备份机制与策略

计算机系统数据备份机制与策略20年第5 05期华中电力第 l卷 8计算机系统数据备份机制与策略耿煜(樊学院机械系&#xff0c;北襄樊襄湖 4 15 ) 4 03摘要&#xff1a;针对当今计算环境中不断增长的数据量&#xff0c;系统地分析、论述了完整的数据备份机制&#xff0c;出了相应的策…

[译] 帮助你成为一名成功的 Web 开发工程师的 21 步

前言 随着 Web 开发的蓬勃发展&#xff0c;许多人都在问这样一个问题&#xff1a;我如何才能成为一名 Web 开发者&#xff1f;我认为这个问题不应该这样问&#xff0c;而应该是&#xff1a;我如何才能成为一名成功的 Web 开发者&#xff1f;这样的问题是很有必要的&#xff0c;…

循环卷积和周期卷积的关系_基于单口RAM读写的卷积电路(下)

这是迟到很久的卷积电路verilog设计的下篇。。。你看我还有机会吗。。。上回我们给出系统的层次结构、卷积计算模块以及用于数据缓存的fifo模块&#xff0c;今天我们首先回顾一下上一次的关键内容。系统结构回顾RTL代码文件可以分为结构如下所示 ~|--top_conv_tb.v|--top_conv.…

浅析 PHP 中的 Generator

浅析 PHP 中的 Generator Miss Wang php开发案例 前天 何为 Generator 从 PHP 5.5 开始&#xff0c;PHP 加入了一个新的特性&#xff0c;那就是 Generator&#xff0c;中文译为生成器。生成器可以简单地用来实现对象的迭代&#xff0c;让我们先从官方的一个小例子说起。 xrange…

注意安全!XSS 和 XSRF

[Tips] 本文是从 jianshu 平台重新修改编辑后移植来的&#xff0c;比上一版本做了些修订。 最近在看一些关于网络安全的问题&#xff0c;当然许多是跟前端相关的&#xff0c;包括且不局限于xss和xsrf 了&#xff0c;那么小编就结合最近的学习实践谈一些粗浅的认识。&#xff08…

go分析和kegg分析_干货预警:3分钟搞定GO/KEGG功能富集分析(2)

在 3分钟了解GO/KEGG功能富集分析 一文中给大家讲解了GO和KEGG的基本概念和内涵,并且给大家介绍了DAVID这一神奇网站。今天我们就把GO/KEGG功能富集分析的详细教程按部就班地呈现给大家,有请小猎豹。 多图预警,轻点图片,查看高清大图 1 Step1: 打开DAVID官网:https://dav…

如何在本地开发环境调试微信 JS-SDK

以下篇幅将会描述不同前提下对应的调试策略&#xff0c;当然也有可能不是最优解&#xff0c;望斧正 →_→ 前言 何谓「安全域名限制」&#xff1f; 以微信 JS-SDK 的使用为例&#xff0c;每个公众号被限制最多可设置三个安全域名&#xff0c;且必须能被腾讯服务器所验证&#…

云南省农村信用社计算机岗位待遇如何,云南农村信用社薪资待遇如何?

在云南如果去存钱&#xff0c;相信大多数人都会把自己的小钱钱存在农村信用社而不是XX银行。在这一块风景秀丽&#xff0c;人美山美水美的地方&#xff0c;就金融行业来说云南农村信用社要是说自己差&#xff0c;那基本没有谁敢说自己做的好。所以在云南农信社这家企业里做一名…