【单细胞高级绘图】09.细胞通讯_两组比较_连线图

2024-01-11 07:30

本文主要是介绍【单细胞高级绘图】09.细胞通讯_两组比较_连线图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上周一位读者联系我,让我帮忙发一个绘图的单子。在朋友圈发单后,感兴趣的朋友很多,有十几位还私聊我让我分享一下代码,可见大家还是很感兴趣的。不过等了两天,依旧没有勇士接单,可能是因为这种图比较少见,大家画得少。

先来理解一下这张图,在b图中:

  • 左边是EC细胞表达的ligand,右边是mNEUR细胞表达的receptor
  • ligand这一列对应的基因会排序,依据是两个group(比如young和old两组)在EC细胞中找完差异基因后,能知道这些基因的log(FC_young_to_old),从大到小依次往下排,并涂色。同时,找差异基因也能知道p值,原文表示显著性用的是圆环的颜色,越显著,圆环颜色越深。
  • receptor这一列类似ligand列,不过是在mNEUR细胞中,两组之间找差异基因。
  • 图中的线段,表示ligand-receptor对,而这个信息(谁和谁构成受配体)是已知的,数据库可以下载到(也就是说,这个图即便不做细胞通讯分析,只要能下载到ligand-receptor信息,也能画)。cellphonedb的输出结果也间接含有这个信息,我的代码基于这个。
  • 至于连线的颜色,我看了一下,没怎么变化,所以我推测线段的颜色取决于线段两侧ligand-receptor是高表达还是低表达,高表达时线段用浅红色,低表达时线段用浅蓝色。

以上解读均为我的理解,我没有看原文。我的图会略作更改,下文会说。

另外,因为一些互作关系没法用一个ligand一个receptor去表示,这样的pair不适合用这个图展示。


此篇推文的代码一共有3个:CCC_compare2.RCCC_line.RCCC_line2.R。每个代码都能出一张有意义的图。

准备数据

source("CCC_compare2.R")
CCC_compare2(group1.name = "Old",group2.name = "Young",group1.pfile = "cellphonedb/Old/pvalues.txt",group1.mfile="cellphonedb/Old/means.txt",group2.pfile="cellphonedb/Young/pvalues.txt",group2.mfile="cellphonedb/Young/means.txt",p.threshold = 0.05,thre=0.5,cell.pair="EC|APC", #指定ligand产生的细胞|receptor产生的细胞plot.width=15,plot.height=30,filename = "test3_"
)

前几行代码跟上一节是类似的,也能输出一个表格(test3_Old2Young.xlsx)和对应的气泡图
后续的连线图基于这个表格的数据。

连线图有个特点,就是"谁是ligand,谁是receptor,ligand和receptor分别由什么细胞产生"非常明确,CCC_compare2.R这个代码比CCC_compare.R (在上一节)增加一百多行去理清这个事情,输出的图和表格pair左边的就是ligand(产生的细胞),右边的就是receptor(产生的细胞)

连线图的绘制 第1种方法

source("CCC_line.R")
CCC_line(table.path="test3_Old2Young.xlsx",ligand.cell="EC",receptor.cell="APC",group1.name = "Old",group2.name = "Young",#这五个参数和上一步对应ligand.color="#4dbbd6",receptor.color="#90d1c1",pt.size=6,line.thre1=0.5,line.thre2=6,#line.thre1和上一步的"thre"参数一致,line.thre2可以用来调整线的粗细,值越大,线越细file.name="test3_",plot.width=25,plot.height=20)

第一种方法不涉及差异基因,因此左右两列是统一的圆点。线段粗颜色红,表示(相较于group2)group1的互作强;线段粗颜色蓝,表示(相较于group2)group1的互作弱。

连线图的绘制 第2种方法

library(Seurat)
testseu=readRDS("testseu.rds")
# 此次演示为了加快运行速度,人为减少了数据量,实际分析中找差异基因不建议这么做
selectedCB=sample(testseu@meta.data$CB,1000)
testseu=testseu%>%subset(CB %in% selectedCB)# 基于分组找差异基因
marker_group=data.frame()
Idents(testseu)="celltype_age"
for ( ci in c("EC","APC") ) {tmp.marker <- FindMarkers(testseu, logfc.threshold = 0, min.pct = 0.01,only.pos = F, test.use = "wilcox",ident.1=paste0(ci,"_Old"),ident.2=paste0(ci,"_Young"))tmp.marker$gene=rownames(tmp.marker)tmp.marker$cluster_group=ifelse(tmp.marker$avg_log2FC > 0,paste0(ci,"_Old"),paste0(ci,"_Young"))tmp.marker$cluster=citmp.marker=tmp.marker%>%arrange(desc(avg_log2FC))marker_group=marker_group%>%rbind(tmp.marker)
}
#本次演示的数据集为小鼠数据集,在运行cellphonedb时,进行了基因symbol的转换。
#此处找差异基因得到的symbol为真实基因名,为了让两个分析匹配,DEG表格也应该做基因名转换。
#但是为了简化,此处只是简单地将小鼠基因名转为大写,不是很精确。大家在分析的时候建议严格一点。
marker_group$gene=marker_group$gene %>% toupper()

第二种方法需要不设置筛选条件去找差异基因,然后用CCC_line2函数就可以了

source("CCC_line2.R")
CCC_line2(cpdb.table.path = "test3_Old2Young.xlsx",marker_group = marker_group,ligand.cell = "EC",receptor.cell = "APC",group1.name = "Old",group2.name = "Young",line.size = 2,file.name = "test3_",plot.width = 25,plot.height = 20)

这种方法得到的图,左右两列添加了差异基因相关的信息,p值、log2FC。线段的粗细固定了,线段的颜色表示(相较于group2)group1的互作强弱。


本文代码编写(3个函数)花费大量时间,故不无偿提供,有需要的朋友可以公粽号后台回复2022B

这篇关于【单细胞高级绘图】09.细胞通讯_两组比较_连线图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_38774801/article/details/126615898
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/593589

相关文章

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。