④-1单细胞学习-cellchat单数据代码补充版

目录

1,数据输入及处理

①载入包和数据

②CellChat输入数据准备

③构建CellChat对象

④数据预处理

2,细胞通讯预测

①计算细胞通讯概率

②提取配受体对细胞通讯结果表

③提取信号通路水平的细胞通讯表

④细胞互作关系可视化

1)细胞亚群间配受体数目网络图

2)细胞亚群间配受体概率/强度网络图

3)每个细胞亚群的配受体通讯概率进行单独展示

​编辑4)数量和强度弦图合并

3,信号通路水平的细胞通讯分析

4,信号通路相关配受体对水平的细胞通讯分析

5,多个配受体对/信号通路水平介导的细胞通讯可视化

①指定信号通路

②参与目标信号通路的基因在各细胞亚群的表达分布展示

③气泡图

1,数据输入及处理
①载入包和数据

官方学习:focuslyj/CellChat - 码云 - 开源中国 (gitee.com)

这里提供的应该是counts data数据

rm(list=ls())
library(CellChat)
library(patchwork)
library(ggplot2)
library(Seurat)
library(ggalluvial)#绘制桑基图
library(expm)
library(sna)
library(NMF)
options(stringsAsFactors = FALSE)##输入数据不自动转换成因子(防止数据格式错误)
load("data_humanSkin.Rdata")#数据加载:这里是count data数据
CellChat输入数据准备
#需标准化的基因表达量矩阵和细胞分组信息文件
#不同输入格式处理方式不同
data.input = data_humanSkin$data#需标准化的基因表达量矩阵和细胞分组信息文件
meta = data_humanSkin$meta
data.input[1:6,1:3]#表达count
head(meta);table(meta$condition) #含normal(NL)和diseases(LS)
cell.use = rownames(meta)[meta$condition == 'LS'] #提取LS的细胞名称
data.input = data.input[, cell.use]#提取LS表达矩阵
meta = meta[cell.use, ]#提取LS细胞信息
identical(rownames(meta),colnames(data.input)) #检查矩阵列名和分组文件行名是否一致
unique(meta$labels) #检查细胞亚群标签类型
构建CellChat对象
#接下来构建CellChat对象
cellchat <- createCellChat(object = data.input, #支持normalized表达矩阵,Seurat对象,和SingleCellExperiment对象meta = meta, #meta文件group.by = 'labels') #meta中的细胞分类列
#cellchat <- addMeta(cellchat, meta = meta)#创建CellChat对象未 cellmeta信息时添加信息
cellchat <- setIdent(cellchat, ident.use = 'labels') #将label设置为显示的默认顺序
levels(cellchat@idents) #查看celltype和factor顺序
table(cellchat@idents) #每个celltype中的细胞数#设置配受体数据库(CellChatDB):
CellChatDB <- CellChatDB.human #(CellChatDB.human) (CellChatDB.mouse)
showDatabaseCategory(CellChatDB) #查看描述该数据库组成的饼状图
dplyr::glimpse(CellChatDB$interaction) #查看数据库结构#直接使用CellChatDB全库进行细胞通讯分析:
##CellChatDB.use <- CellChatDB # simply use the default CellChatDB
#选择数据库中特定子集进行细胞通讯分析:
CellChatDB.use <- subsetDB(CellChatDB, search = 'Secreted Signaling') #可选择Secreted Signaling、ECM-Receptor或Cell-Cell Contact
cellchat@DB <- CellChatDB.use#将数据库添加到CellChat对象中(DB)
④数据预处理
#数据预处理;信号基因的表达矩阵子集化,节省计算成本
cellchat <- subsetData(cellchat) #必选的step,取上一步CellChatDB.use中信号基因的表达矩阵子集,赋值到cellchat@data.Signaling
#future::plan('multiprocess', workers = 4) # do parallel (可以不用选择平行计算)
#鉴定与每个细胞亚群相关的过表达信号基因:基于表达该基因的细胞比例、差异倍数和p值判定。
cellchat <- identifyOverExpressedGenes(cellchat,only.pos = TRUE, #仅返回positive markersthresh.pc = 0, #细胞比例阈值thresh.fc = 0, #差异倍数thresh.p = 0.05) #P-Value
#计算结果赋值到cellchat@var.features:
head(cellchat@var.features$features) #过表达信号基因名
head(cellchat@var.features$features.info) #差异计算结果表
#识别过表达基因配体-受体互作:
cellchat <- identifyOverExpressedInteractions(cellchat)
head(cellchat@LR$LRsig) #计算结果赋值位置
#将基因表达数据映射到PPI网络(可跳过):
cellchat <- projectData(cellchat, PPI.human) #返回结果:cellchat@data.project
2,细胞通讯预测
①计算细胞通讯概率
#细胞通讯预测##############################################
cellchat <- computeCommunProb(cellchat, raw.use = TRUE) #返回结果:cellchat@options$parameter
##默认使用原始表达数据(cellchat@data.Signaling),若想使用上一步PPI矫正数据,设置raw.use = TALSE
cellchat <- filterCommunication(cellchat, min.cells = 10) #细胞通讯过滤(设置每个亚群中进行细胞间通讯所需的最小细胞数)
提取配受体对细胞通讯结果表
#提取配受体对细胞通讯结果表:
df.net <- subsetCommunication(cellchat, slot.name = 'net')
head(df.net) #得到配受体对细胞通讯结果表#或访问其它感兴趣/特定的细胞通讯结果:
df.net1 <- subsetCommunication(cellchat,sources.use = c('LC'),targets.use = c('FBN1+ FIB')) #访问特定细胞对子集
head(df.net1)df.net2 <- subsetCommunication(cellchat, signaling = c('CD40')) #访问特定信号通路子集
head(df.net2)
提取信号通路水平的细胞通讯表

提取配受体对细胞通讯结果表:subsetCommunication函数

提取信号通路水平的细胞通讯表:computeCommunProbPathway函数

#提取信号通路水平的细胞通讯表:
cellchat <- computeCommunProbPathway(cellchat) #计算信号通路水平上的通讯概率
df.netp <- subsetCommunication(cellchat, slot.name = 'netP') #得到信号通路水平细胞通讯表
head(df.netp)
细胞互作关系可视化
1)细胞亚群间配受体数目网络图
cellchat <- aggregateNet(cellchat)#计算细胞对间通讯的数量和概率强度
#不同细胞亚群间的互作数量与概率/强度可视化:
groupSize <- as.numeric(table(cellchat@idents))##细胞亚群间配受体数目网络图:
par(mfrow = c(1,1), xpd = TRUE)
netVisual_circle(cellchat@net$count,vertex.weight = groupSize,weight.scale = T,label.edge = F,title.name = 'Number of interactions')

细胞通讯| 02.CellChat基础分析教程_哔哩哔哩_bilibili

2)细胞亚群间配受体概率/强度网络图
##细胞亚群间配受体概率/强度网络图:
par(mfrow = c(1,1), xpd = TRUE)
netVisual_circle(cellchat@net$weight,vertex.weight = groupSize,weight.scale = T,label.edge= F,title.name = 'Interaction weights/strength')

3)每个细胞亚群的配受体通讯概率进行单独展示

这里需要注意R绘图画板范围,可以将前面的绘图进行保存和devoff后再进行作图

#检查单个细胞亚群的互作信号强度;每个细胞进行单独展示##
mat <- cellchat@net$weight
par(mfrow = c(3,4), xpd = TRUE)
for (i in 1:nrow(mat)) {mat2 <- matrix(0, nrow = nrow(mat), ncol = ncol(mat), dimnames = dimnames(mat))mat2[i, ] <- mat[i, ]netVisual_circle(mat2, vertex.weight = groupSize, weight.scale = T, edge.weight.max = max(mat), title.name = rownames(mat)[i])
}
4)数量和强度弦图合并
#数量和强度弦图合并
par(mfrow = c(1,2), xpd = TRUE)
netVisual_circle(cellchat@net$count,vertex.weight = groupSize,weight.scale = T,label.edge = F,title.name = 'Number of interactions')
netVisual_circle(cellchat@net$weight,vertex.weight = groupSize,weight.scale = T,label.edge= F,title.name = 'Interaction weights/strength')

#保存cellchat对象:
save(cellchat, groupSize, file = c('humanSkin_CellChat.Rdata'))

3,信号通路水平的细胞通讯分析
cellchat@netP$pathways##信号通路查看
pathways.show <- c('GALECTIN')##以'GALECTIN'信号通路展示为例
#层级图(Hierarchy plot)绘制
levels(cellchat@idents)#查看细胞亚群及factor顺序:
#选择其中感兴趣的细胞亚群:
vertex.receiver = c(3,8,9,10)#为画图第一列的source列
par(mfrow = c(1,1))
netVisual_aggregate(cellchat,layout = c('hierarchy'), #"circle", "hierarchy", "chord"signaling = pathways.show,vertex.receiver = vertex.receiver)#选择展示的通路

别的图

par(mfrow = c(1,1))#展示网络图
netVisual_aggregate(cellchat,layout = c('circle'),signaling = pathways.show)
par(mfrow=c(1,1))#展示弦图
netVisual_aggregate(cellchat,layout = c('chord'),signaling = pathways.show)
par(mfrow=c(1,1))#展示热图
netVisual_heatmap(cellchat,signaling = pathways.show,color.heatmap = c("white", "#b2182b"))

4,信号通路相关配受体对水平的细胞通讯分析
netAnalysis_contribution(cellchat, signaling = pathways.show) #配受体对贡献条形图
pairLR.CXCL <- extractEnrichedLR(cellchat,  #提取细胞对signaling = pathways.show,geneLR.return = FALSE)
LR.show <- pairLR.CXCL[1,] #以贡献度top1的配受体对为例
pairLR.CXCL; LR.show

别的图

netVisual_individual(cellchat,#Hierarchy plot:layout = c('hierarchy'),signaling = pathways.show, #目标信号通路pairLR.use = LR.show, #目标配受体对vertex.receiver = vertex.receiver) #感兴趣的细胞亚群
#Circle plot:
netVisual_individual(cellchat,layout = c('circle'),signaling = pathways.show,pairLR.use = LR.show)
#Chord diagram:
netVisual_individual(cellchat,layout = c('chord'),signaling = pathways.show,pairLR.use = LR.show)

5,多个配受体对/信号通路水平介导的细胞通讯可视化
指定信号通路
多个配受体对/信号通路水平介导的细胞通讯可视化######
levels(cellchat@idents)#指定信号通路
netVisual_bubble(cellchat,sources.use = 4,targets.use = c(5:11),signaling = c("CCL","CXCL"), #指定CCL和CXCL两个信号通路remove.isolate = FALSE)
#指定配受体对:
pairLR.use <- extractEnrichedLR(cellchat, signaling = c("CCL","CXCL","FGF")) #确定在目标信号通路中有重要作用的配受体对
pairLR.use
netVisual_bubble(cellchat,sources.use = 4,targets.use = c(5:11),pairLR.use = pairLR.use,#指定的受体对remove.isolate = TRUE)

②参与目标信号通路的基因在各细胞亚群的表达分布展示
#参与目标信号通路的基因在各细胞亚群的表达分布展示:
plotGeneExpression(cellchat, signaling = 'GALECTIN', type = 'violin') #小提琴图

③气泡图
plotGeneExpression(cellchat, signaling = 'GALECTIN', type = 'dot', color.use = c("white", "#b2182b")) #气泡图

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

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

相关文章

IO流(缓冲流)

1.字节缓冲流 原理&#xff1a;字节缓冲输入流自带8KB缓冲池;字节缓冲输出流自带8KB缓冲池 public static void main(String[] args) throws IOException {try(InputStream is new FileInputStream("D:\\pt\\123.jpg");//1.定义一个字节缓冲输入流包装原始的字节输…

JAVA:在IDEA引入本地jar包的方法并解决打包scope为system时发布无法打包进lib的方案

一.引入本地Jar包的步骤 有时maven依耐的包是本地的jar包,此时需要进行以下步骤设置。 步骤1.在pom.xml中添加插件设置,将system范围包含进来,此设置是为了在打包时,本地jar包自动生成到部署包里。(若无法打进包,请参考下文的方案二) <plugin><groupId>org.…

Modbus主站和从站的区别

Modbus主站,从站 在工业自动化领域&#xff0c;Modbus是一种常用的通信协议&#xff0c;用于设备之间的数据交换。在Modbus通信中&#xff0c;主站和从站是两个关键的角色。了解主站和从站之间的区别对正确配置和管理Modbus网络至关重要。 Modbus主站的特点和功能 1.通信请求发…

硬盘坏了数据能恢复吗 硬盘数据恢复一般多少钱

在数字化时代&#xff0c;我们的生活和工作离不开电脑和硬盘。然而&#xff0c;硬盘故障是一个常见的问题&#xff0c;可能会导致我们的数据丢失。当我们的硬盘坏了&#xff0c;还能恢复丢失的数据吗&#xff1f;今天我们就一起来探讨关于硬盘坏了数据能恢复吗&#xff0c;硬盘…

Polar Web【困难】上传

Polar Web【困难】上传 Contents Polar Web【困难】上传探索&思路&效果进入环境绕过过程Webshell连接 EXPPayload 总结 探索&思路&效果 本题的主题可见为文件上传&#xff0c;详情在破解的过程中逐步发掘&#xff1a; 进入环境&#xff0c;为一个文件上传功界面…

苹果需要专注于让人工智能变得实用,而不是华而不实

谷歌和微软已将其开发者大会作为展示其生成式人工智能能力的平台&#xff0c;现在所有人的目光都集中在下周的全球开发者大会上&#xff0c;预计Apple Intelligence将在此首次亮相。 这家总部位于库比蒂诺的公司面临着巨大的压力。 苹果在人工智能竞赛中落后于同行&#xff0…

04-4.2.1 朴素模式匹配算法

&#x1f44b; Hi, I’m Beast Cheng&#x1f440; I’m interested in photography, hiking, landscape…&#x1f331; I’m currently learning python, javascript, kotlin…&#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

定个小目标之刷LeetCode热题(14)

了解股票的都知道&#xff0c;只需要选择股票最低价格那天购入&#xff0c;在股票价格与最低价差值最大时卖出即可获取最大收益&#xff0c;总之本题只需要维护两个变量即可&#xff0c;minPrice和maxProfit&#xff0c;收益 prices[i] - minPrice,直接用代码描述如下 class …

vscode中执行python语句dir(torch)不返回结果

输入半天&#xff0c;发现在IDLE运行后的shell界面输入语句就会返回一大串。但是在vscode中老是不返回值。 结果恍然发现这没加print&#xff08;&#xff09;。 无语惨了。 家人们&#xff0c;这是python&#xff0c;而不是matlab。思维还没转换过来&#xff0c;笑死

umap降维,c++用法纪实

全是血泪&#xff0c;可惜对于大量数据&#xff0c;速度还是太慢。 一、代码 // ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream>#include "knncolle/knncolle.hpp" #include "Umap.…

[数据集][图像分类]人种黄种人白人黑人等分类数据集56000张7类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;56000 分类类别数&#xff1a;7 类别名称:[“Black”,“East_Asian”,“Ind…

Vue3【十三】watch监视

Vue3【十三】watch监视 Vue3 中的watch祝你能监视以下四种数据 ref 定义的数据reactive定义的数据函数返回一个值一个包含上述内容的数组 案例截图 目录结构 案例代码 Person.vue <template><div class"person"><!-- <h1>Watch情况1&#xff…

大学生学习Java路线2024版

第一阶段&#xff1a;基础入门 了解计算机基础&#xff1a; 学习基本的计算机科学知识&#xff0c;如操作系统、数据结构和算法。 Java语言概述&#xff1a; 了解Java语言的历史、特点和应用领域。 安装开发环境&#xff1a; 安装JDK和IDE&#xff08;如IntelliJ IDEA或Eclipse…

C++基础编程100题-008 OpenJudge-1.3-06 甲流疫情死亡率

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/06/ 描述 甲流并不可怕&#xff0c;在中国&#xff0c;它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数&#xff0c;计算甲流在各省的死亡率。 输入 输入仅一行&#xff…

数据中心运维管理方案

数据中心运维管理方案 随着数据中心在现代信息社会中的重要性日益增加&#xff0c;高效、可靠的运维管理方案成为保障其稳定运行的关键。本文将探讨数据中心运维管理的策略和实践&#xff0c;旨在为运维团队提供全面、系统的管理方法&#xff0c;确保数据中心在任何情况下都能…

mysql高级用法常用函数

mysql高级用法 1、自定义排序 select * from movies order by field(actors, 成龙, 靳东, 刘亦菲, 范冰冰); // 字段中存在null值 select * from movies order by field (coalesce(actors,null),成龙, 靳东, 刘亦菲, 范冰冰,null)2、空值NULL排序&#xff08;ORDER BY IF(ISN…

python中字典和集合数据存储的异同分析

1. 字典的简单说明 字典&#xff08;Dictionary&#xff09;是Python中一种非常重要和常用的数据结构。以下是字典的主要特点&#xff1a; 字典以键值对&#xff08;key-value pair&#xff09;的形式存储数据。每个键&#xff08;key&#xff09;是唯一的&#xff0c;键和值&…

Word Split Line

Word Split Line 分割线 https://download.csdn.net/download/spencer_tseng/89413772

JSON.parse的使用方法和基本定义

JSON.parse()是JavaScript中用于将JSON字符串解析为JavaScript对象的方法。 一、基本用法 JSON.parse()方法接收一个有效的JSON字符串作为参数&#xff0c;返回一个对象或数组。 如果传入的参数不是有效的JSON字符串&#xff0c;则会抛出错误。 二、参数 JSON.parse()方法可…

小柴带你学AutoSar系列一、基础知识篇(5)makefile基础

Flechazohttps://www.zhihu.com/people/jiu_sheng 小柴带你学AutoSar总目录https://blog.csdn.net/qianshang52013/article/details/138140235?spm=1001.2014.3001.5501