Seurat包学习:如何查看R包函数源代码

​我们很多时候都很好奇作者的r包是如何写出来的,手痒的时候就想学习一下源码,顺便改一改

问题来源

为什么要写今天这个推文呢?

起因是因为我想使用seurat自带函数画热图,奈何这个图不是那么好看

 DoHeatmap(pbmc,features = features,draw.lines = FALSE )

于是,我想自己手动改一下这个热图

   p= DoHeatmap(pbmc,features = features  )       p$data  %>%head()

提取p中的数据,这个时候我们就可以自己利用提取到的数据,去个性化的画图。这里可能用到长数据和宽数据转换的技巧:ggplot2画图精髓——宽数据转为长数据

或者你可以直接看我之前另外一种画单细胞热图的方法:20万单细胞的热图要这么画吗?

但是我发现环境栏中的p和通常的p好像不太一样(就是感觉

为什么我有这个感觉呢,于是我自己画了一下热图

结果发现,我的p2和seurat的p在环境栏中确实不一样

于是就有了今天的故事,我就很想知道这究竟是什么原因,顺便学习一下

查找DoHeatmap源代码

  • 查找源码,方法如下

源码在github上:https://github.com/satijalab/seurat/tree/release/5.0.2

依次单击 master - Tags - v5.0.2,下载zip并解压到本地

可以看到它的主要文件夹如下

  • 通过正则表达式来查询感兴趣的函数

find . | grep "R$" | xargs grep -n "DoHeatmap" --color=auto

发现, DoHeatmap函数在visualization.R 和mixscape.R都出现了,感觉是visualization.R定义了DoHeatmap函数

  • 我们接下来使用r,打开两个文件看一下看一下

file.edit('~/gzh/seurat_codes_learning/seurat-release-5.0.2/R/mixscape.R')file.edit('~/gzh/seurat_codes_learning/seurat-release-5.0.2/R/visualization.R')

最后就顺利找到了源代码,可以看到DoHeatmap的画图功能其实来自于另外一个函数SingleRasterMap,同时作者还是用其他几个自定义的函数,最终达成了DoHeatmap的画图功能。

那为什么两个p不一样呢

主要还是因为两个数据格式不一样嘛,一个是seurat产生的对象,另外一个是pheatmap产生的对象。如果感兴趣,可以去看看pheatmap的源码是什么,然后比较一下。在此不表。

最后,附源代码于下一篇推文,供参考

看完记得顺手点个“在看”哦!

参考:

https://blog.csdn.net/qq_52813185/article/details/122003446

https://zhuanlan.zhihu.com/p/463532779

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

编译GreatSQL with RocksDB引擎

GreatSQL里也能用上RocksDB引擎 1. 前言 RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点: 高性能: LSM 树结构使得RocksDB在写入密集型负载下表现…

2024-02-23 作业

作业要求: 1.自己实现单向循环链表的功能 2.整理思维导图 3.复习前面顺序表和链表的代码,重写链表逆置函数 1.自己实现单向循环链表的功能 运行代码: main.c #include "loop_list.h" int main(int argc, const char *argv[]) {loop_p H cr…

07 STL 简介

目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…

互联网广告投放与IP地理位置定位

随着互联网的发展和普及,互联网广告投放成为各行业推广营销的重要方式之一。而结合IP地理位置定位技术,可以实现精准定向,提高广告投放的效果和精准度。IP数据云将探讨互联网广告投放与IP地理位置定位的关系,分析其优势和应用场景…

Window部署SkyWalking

SkyWalking mysql的驱动依赖 选择下载版本 v9.4 现在后解压缩目录结构 一、修改config目录文件 application.yml 修改1: selector: ${SW_STORAGE:h2} 修改后: selector: ${SW_STORAGE:mysql} 修改2:使用mysql数据库 mysql: properti…

鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解

MouseBoost Pro mac版是一款简单实用的鼠标右键助手专业版,MouseBoost Pro for Mac只要轻点你的鼠标右键,就可以激活你想要的各种功能,让你的工作效率大幅度提高,非常好用。 软件下载:MouseBoost PRO for Mac v3.3.6中…

Electron实战之环境搭建

工欲善其事必先利其器,在进行实战开发的时候,我们最终的步骤是搞好一个舒服的开发环境,目前支持 Vue 的 Electron 工程化工具主要有 electron-vue、Vue CLI Plugin Electron Builder、electron-vite。 接下来我们将分别介绍基于 Vue CLI Plu…

【算法与数据结构】417、LeetCode太平洋大西洋水流问题

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:题目要求雨水既能流向太平洋也能流向大西洋的网格。雨水流向取决于网格的高度。一个比较直接的方式是对…

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析: IPv4:AR…

社交媒体变革者:剖析Facebook对在线互动的贡献

随着数字化时代的蓬勃发展,社交媒体已经成为人们日常生活中不可或缺的一部分。在这个领域的发展中,Facebook作为先行者和领导者,对在线互动的演变和发展产生了深远的影响。本文将深入剖析Facebook在社交媒体领域的贡献,以及它对在…

MySql-DQL-条件查询

目录 条件查询修改数据 查询 姓名 为 Name10 的员工查询 id小于等于5 的员工信息查询 没有分配职位 的员工信息查询 有职位 的员工信息查询 密码不等于 password1 的员工信息查询 入职日期 在 2000-01-01 (包含) 到 2010-01-01(包含) 之间的员工信息查询 入职时间 在 2000-01-0…

跨区互联组网怎么做?SD-WAN专线可以实现吗?

在当今数字化时代,企业不断扩张,跨区域互联成为业务发展的必然需求。然而,跨区互联组网涉及到复杂的网络架构和连接,传统的网络方案往往难以满足高性能、高可靠性和低成本的要求。SD-WAN专线技术的出现,为跨区互联组网…

C++:Level2阶段测试

总结。 只要你看过我的文章,哪怕只是一半,一定能够过关! 准备好开始测试氻吗? 判断题,每题4分,共100分 1、Red Panda Dev C Maker【3.0自创黑客版】添加的头文件有Heike.h() 2、在…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法: 1)在普通方法中,this总是指向调用该方法的对象。在普通方法中,它是作为一种隐式参数一直就存在着(这句话的意思,就是其实在普通方法中,编译器一直就…

go使用trpc案例

1.go下载trpc go install trpc.group/trpc-go/trpc-cmdline/trpclatest 有报错的话尝试配置一些代理(选一个) go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://goproxy.io,direct go env -w GOPROXYhttps://goproxy.baidu.com/…

Django学习笔记-forms使用

1.创建forms.py文件,导入包 from django import forms from django.forms import fields from django.forms import widgets2. 创建EmployeeForm,继承forms.Form 3.创建testform.html文件 4.urls.py添加路由 5.views中导入forms 创建testform,编写代码 1).如果请求方式为GET,…

go 1.18 不同目录package引用问题

go 1.18开始使用module了 不同的package在vs code中引用的话 需要先开启 是Go1.11版本之后 推出的版本管理工具 有点类似java的 maven工具 可以引入依赖使用 go env -w GO111MODULEon 先把这个打开 然后在创建的vs code工作目录下 执行 module gomdoule module 模块名 会生…

如何将新标注的三元组数据转换成unicoqe可以处理的格式

目录 问题描述: 问题解决: 问题描述: 原始的标注的三元组格式如下: 需要转换的格式如下: tips:有一个小的难点: 1. 针对多三元组的情况,需要额外考虑 2. 最后一个样本,也记得需要…