marker基因注释热图可视化函数(视频教程-通用函数)

这里我们分享一个热图函数,是一个可视化的函数,您只需要提供作图的matrix数据即可。最近对于图形注释使用点比较上头,所以我们这个函数的列注释使用设置的·是点的注释形状。我们的函数解决了以下几个问题:

  • 数据的自动排序和列的自定义排列,数据会按照你需要的列顺序自动从大到小排列,让热图可视化更加美观。

  • 热图的列自动注释,我们采用了点的注释。

  • legend的修改,包括刻度等修饰。

  • 行的注释,行的注释需要自行 调整,函数设置了可选择选项。

  • 行的标签,在函数中我们设置了如果矩阵nrow行数大于100自动不显示行名,应为那样都挤在一起也没啥用。后续可自 行挑选需要的行进行展示。

  • 需要注意一下,函数有一个参数data_scale,假设你的数据不需要scale标准化,那么参数选择T,作图使用你的原始数 据。如果需要scale标准化,那么选择F,会对你的数据进行标准化处理。

看一下函数参数:(未标注参数与Complexheatmap::Heatmap一致)

参考链接:
marker基因注释热图可视化函数(视频教程-通用函数)_哔哩哔哩_bilibili

接下来我们看看函数具体的使用,首先我们用一个ATAC TF分析的数据,这个矩阵是已经导出的,行是celltype,列是TF。其 实就是我们平时做热图的时候一样的数据。Order_col就是设置列的顺序,我这里直接演示就使用了数据的列名排列,如果 需要自己设置,这里传入一个向量,设置顺序即可。颜色也是可以设置的。

setwd("D:/KS项目/公众号文章/scATAC-scRNA marker基因注释热图")
#=================================================================================
#---------------------------------------------------------------------------------
TF <- c("JUND (264)","FOSB (190)","JDP2 (178)","TAL1 (42)","TAL2 (42)","TCF21 (21)","TCF23 (21)","BCL11A (799)","BCL11B (799)","ELF2 (364)","NFIX (89)","GBX2 (87)","SOX9 (145)","SOX4 (95)","SOX13 (92)","SOX12 (91)","NHLH2 (149)","TCF12 (159)","ZBTB7A (98)")plot_atac <- read.csv('plot_atac.csv', header = T, row.names = 1)pdf('heatmap1.pdf', width=4, height=6)
heata = ks_Heatmap(mat = plot_atac,data_scale = T,Order_col = colnames(plot_atac),legendTitle = "Norm.Enrichment -log10(P-adj)[0-Max]",point_size = 5,heat_col = c("#E6E7E8","#3A97FF","#8816A7","black"),TitlePosition = "leftcenter-rot",legend_at = c(0,50,100),legend_Lab = c(0,50,100),column_names_gp = gpar(fontsize = 6),row_names_gp = gpar(fontsize = 6),customRowLabel=TF,colanno_color = c("#7DD06F","#844081","#688EC1","#C17E73","#484125","#6CD3A7","#597873",'#3361A5'),rowAnn = T,rowAnno_num = c(16,3,1,4,12,9,8,11))draw(heata, merge_legends = TRUE,heatmap_legend_side = "right") 
dev.off()

接下来我们用单细胞转录组的数据进行演示:我们这里的演示选择的是每个celltype的top10marker基因。首先计算 marker基因,并计算每个celltype的平均值。获得作图数据。

library(Seurat)
library(dplyr)
#单细胞数据的演示\先找marker基因
DefaultAssay(sce) <- "RNA"
Idents(sce) <- "celltype"
all.markers  <- FindAllMarkers(sce, only.pos = TRUE, min.pct = 0.5, logfc.threshold = 0.5)
top10 <- all.markers %>% group_by(cluster) %>% top_n(n=10, wt=avg_log2FC)
table(top10$cluster)
# SMC  LY UEC  SF CEC  EC MAC 
# 10  10  10  10  10  10  10 
#计算平均表达量
gene_cell_exp <- AverageExpression(sce,features = top10$gene,group.by = 'celltype',slot = 'data') 
gene_cell_exp <- as.data.frame(gene_cell_exp$RNA)

作图:


genes = c("ACTA2","ADIRF","MYL9","TPM2","CCL4","CCL5","NKG7","CD96","RHEX","NPAS3","SFRP4","COL3A1","COL1A1","IGF1","RORB","CAPS","CFAP299","CFAP47","RSPH1","DNAH11","PTPRB","INSR","ENPP2","IL1B","HLA-DQA1","HLA-DRA","HLA-DPA1","HLA-DRB1","HLA-DPB1","CXCL8")#plot
pdf('heatmap2.pdf', width=4, height=6)
heata = ks_Heatmap(mat = gene_cell_exp,data_scale = F,Order_col = colnames(gene_cell_exp),legendTitle = "Expression",point_size = 5,heat_col = c('#e0f3db','#a8ddb5','#4eb3d3','#0868ac','#084081'),TitlePosition = "leftcenter-rot",legend_at = c(-1,0,1,2,3),legend_Lab = c(-1,0,1,2,3),column_names_gp = gpar(fontsize = 6),row_names_gp = gpar(fontsize = 6),customRowLabel=genes,colanno_color = c("#7DD06F","#844081","#688EC1","#C17E73","#484125","#6CD3A7","#597873"),rowAnn = T,rowAnno_num = c(10,10,10,10,10,10,10))draw(heata, merge_legends = TRUE,heatmap_legend_side = "right") 
dev.off()

这里我们可能会发现一个问题,明明是每个celltype10个gene,为什么行注释好像不是很对,这是应为有些基因不仅在一 中celltype中高表达,而数据是按照表达从高到低排序的,所以才会出现这个问题,可以自行调整注释的数目,或者不采用注释等。一个函数不可能完成所有的事情,但是我们提供了框架和思路,可自行修改拓展。觉得分享有用的点个赞,分享一下再走呗!

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

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

相关文章

【实训项目】“优品果园”-线上水果商城小程序

1.项目背景 随着现代人对消费水平的追求以及对食物安全的需要&#xff0c;无污染、产地直销的有机水果受到越来越多市民的喜欢。交易过程的简洁化是现代消费者的追求&#xff0c;产地直销也是近期流行的一种新型的交易模式。产地直销的交易模式使得交易过程更加简便快捷&#…

电容笔什么牌子好?比较好用的ipad手写笔推荐

哪一种电容笔适合学生党&#xff1f;作为一名数字爱好者&#xff0c;我对电容笔还是有所了解的。其实苹果的电容笔&#xff0c;与一般的电容笔最大的不同之处&#xff0c;就是在于压感方面上。因为苹果的电容笔具有独一无二的“重力压感”&#xff0c;所以我们可以在绘图时使用…

Nacos(替代Eureka)注册中心

Nacos初步学习 Nacos 是一个开源的服务注册和配置中心&#xff0c;它允许您注册、注销和发现服务实例&#xff0c;并提供了配置管理的功能。下面是Nacos的最基础用法&#xff1a; 1. 服务注册和发现&#xff1a; 首先&#xff0c;您需要将您的应用程序或服务注册到Nacos中。…

termius mac版无需登录注册直接永久使用

1. 下载地址&#xff1a;termius下载 2. 解压安装 3. 当出现 “termius”已损坏,无法打开 则输入以下命令即可&#xff1a;sudo xattr -r -d com.apple.quarantine /Applications/Termius.app 最后去 系统设置-> 隐私与安全性-> 仍要打开 4. 删除app-update.yml文件&…

Ant Design Form.List基础用法

使用 Form.List 使用 项目中需要在新增可以多个如图 代码如下 // An highlighted block <Card title"产品信息" bordered{false}><Form.List name"productList" >{(fields, {add, remove}) > (<>{fields.map((field) > (<Ro…

佳音通讯400电话中心:在线自选,惠及企业

在当今竞争激烈的商业环境中&#xff0c;企业需要提供卓越的客户服务来脱颖而出。而一个高效的400电话中心则成为了越来越多企业的选择。佳音通讯400电话中心官方网站是企业选择400电话服务的首选平台&#xff0c;提供了在线自选功能&#xff0c;让企业能够根据自身需求灵活选择…

集群分发脚本xysnc

一、scp&#xff08;secure copy&#xff09; 安全拷贝 1.定义 scp&#xff08;Secure Copy&#xff09;是一个用于在不同计算机之间安全地复制文件和目录的命令行工具。它使用 SSH 协议进行连接和文件传输&#xff0c;提供了加密和身份验证机制&#xff0c;确保数据传输的安…

Excel 规范录入数据

文章目录 录入日期录入百分比 快捷键&#xff1a; tab&#xff1a;向右切换单元格 enter&#xff1a;向下切换行 shift tab&#xff1a;向左切换单元格 shiftenter&#xff1a;向上切换行 录入日期 输入今天的日期的快捷键&#xff1a;Ctrl ; 输入当时的时间的快捷键&a…

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、了解GPIB-USB-HS4、软件调试-代码编写 4、熟悉协议-SCPI协议5、实验过程-熟悉软件&#xff08;1&#xff09;去官网NI&#x…

【踩坑】hive脚本笛卡尔积严重降低查询效率问题

前一阵子查看我们公司的大数据平台的离线脚本运行情况, 结果发现有一个任务居然跑了一天多, 要知道这还只是几千万量级的表, 且这个任务是每天需要执行的 于是我把hive脚本捞出来看了下, 发现无非多join了几个复杂的子查询, 应该不至于这么久, 包括我又检查了是不是没有加上每…

使用 KubeSkoop exporter 监测和定位容器网络抖动问题

作者&#xff1a;遐宇、溪恒 本文是 8 月 17 日直播的文字稿整理&#xff0c;文末可观看直播回放。除去文章内容外&#xff0c;还包括针对实际网络问题的实战环节。 容器网络抖动问题发生频率低&#xff0c;时间短&#xff0c;是网络问题中最难定位和解决的问题之一。 不仅如…

项目文件上传到行云codeup teambition

接手公司好几年的老项目&#xff0c;在行云上已经有1.9G的大小所以被限制上传了 只有花钱扩容或者重新建库。 1.重新建库&#xff1a;登录你的行云账户在代码库中新建代码库&#xff08;网上有详细的&#xff09; 创建成功后的库中只有readme文件。 2.复制代码库的下载地址 …

【计算机网络-自顶向下方法】应用层(SMTP、POP3、DNS)

目录 1. Electronic Mail电子邮件应用画像1.1 电子邮件系统1.2 邮件报文格式1.3 邮件访问 2. DNS&#xff08;Domain Name System&#xff09;2.1 DNS提供的服务2.2 DNS工作机理2.3 DNS资源记录2.4 DNS协议&#xff0c;报文2.5 小结 1. Electronic Mail 电子邮件应用画像 应用…

jmeter 请求发送加密参数

最近在做http加密接口&#xff0c;请求头的uid参数及body的请求json参数都经过加密再发送请求&#xff0c;加密方式为&#xff1a;ase256。所以&#xff0c;jmeter发送请求前也需要对uid及json参数进行加密。我这里是让开发写了个加密、解密的jar&#xff0c;jmeter直接调用这个…

React的类式组件和函数式组件之间有什么区别?

React 中的类组件和函数组件是两种不同的组件编写方式&#xff0c;它们之间有一些区别。 语法和写法&#xff1a;类组件是使用类的语法进行定义的&#xff0c;它继承自 React.Component 类&#xff0c;并且需要实现 render() 方法来返回组件的 JSX。函数组件是使用函数的语法进…

Godot 添加Nuget 引用

前言 我的Godot 专栏 我在之前的文章中&#xff0c;解决了Visual Studio 如何去调试正在运行的Godot 程序。Godot 对于C# 的支持只剩下一个&#xff0c;那就是Nuget 添加。 Godot VisualStudio外部编辑器设置 添加Nuget Nuget 添加还是非常的容易的。我们直接添加一个最常用的…

怎么通过Fiddler对APP进行抓包?以及高级应用场景分析

前言 我们经常需要用到Fiddler做代理服务器对Web、APP应用进行抓包&#xff0c;以便我们对接口功能进行测试调试&#xff0c;定位问题等。这篇将讲述怎么通过Fiddler对APP进行抓包&#xff0c;以及简单介绍一些高级应用场景。 首先&#xff0c;附上Fiddler使用的环境配置清单…

实验1机器学习之线性回归实验

一、实验目的&#xff1a; &#xff08;1&#xff09;理解一元线性回归和多元线性回归的数学原理&#xff0c;能够利用sklearn中相关库解决现实世界中的各类回归问题&#xff1b; &#xff08;2&#xff09;掌握利用matplotlib对一元线性回归模型进行可视化的方法&#xff0c…

Vuex的简介以及入门案例

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏…

有root权限的共享服务器,返现福利

以下是目前各类型服务器配置与价格目录&#xff1a; 可咨询文末微信号领取返现福利&#xff0c;注册链接&#xff1a; 西柚云超算https://www.xiyoucloud.net/aff/YADJJHWA 微信号&#xff1a;生信小博士