②单细胞学习-组间及样本细胞比例分析

目录

数据读入

每个样本各细胞比例

两个组间细胞比例

亚组间细胞比例差异分析(循环)

单个细胞类型亚新间比例差异

①单细胞学习-数据读取、降维和分群-CSDN博客

比较各个样本间的各类细胞比例或者亚组之间的细胞比例差异

①数据读入
#各样本细胞比例计算
rm(list = ls()) 
library(Seurat)
load("scedata1.RData")#这里是经过质控和降维后的单细胞数据
table(scedata$orig.ident)#查看各组细胞数
table(Idents(scedata))#查看各种类型细胞数目
#prop.table(table(Idents(scedata)))
table(Idents(scedata), scedata$orig.ident)#每个样本不同类型细胞数据
> table(scedata$orig.ident)#查看各组细胞数BM1  BM2  BM3  GM1  GM2  GM3 
2754  747 2158 1754 1528 1983 
> table(Idents(scedata))#查看各种类型细胞数目Fibroblast Endothelial      Immune       Other  Epithelial 2475        4321        2688         766         674 
> #prop.table(table(Idents(scedata)))
> table(Idents(scedata), scedata$orig.ident)#每个样本不同类型细胞数据BM1  BM2  BM3  GM1  GM2  GM3Fibroblast   571  135  520  651  312  286Endothelial  752  244  619  716  906 1084Immune      1220  145  539  270  149  365Other        142  161  194   55   79  135Epithelial    69   62  286   62   82  113

②每个样本各细胞比例
#换算每样样本每种细胞占有的比例:绘制总的堆积图
Cellratio <- prop.table(table(Idents(scedata),scedata$orig.ident),margin = 2)# margin = 2按照列计算每个样本比例
Cellratio <- as.data.frame(Cellratio)#计算比例绘制堆积图
library(ggplot2)#绘制细胞比例堆积图
colourCount = length(unique(Cellratio$Var1))
p1 <- ggplot(Cellratio) + geom_bar(aes(x =Var2, y= Freq, fill = Var1),stat = "identity",width = 0.7,size = 0.5,colour = '#222222')+ theme_classic() +labs(x='Sample',y = 'Ratio')+#coord_flip()+ #进行翻转theme(panel.border = element_rect(fill=NA,color="black", size=0.5, linetype="solid"))
p1
dev.off()
> head(Cellratio)Var1 Var2       Freq
1  Fibroblast  BM1 0.20733479
2 Endothelial  BM1 0.27305737
3      Immune  BM1 0.44299201
4       Other  BM1 0.05156137
5  Epithelial  BM1 0.02505447
6  Fibroblast  BM2 0.18072289

③两个组间细胞比例

这里比较BM和GM两个组间的细胞比例

##分成两个组进行比较:先查看每个样本的具体细胞数量
library(tidyverse)
library(reshape)
clusdata <- as.data.frame(table(Idents(scedata), scedata$orig.ident))
#进行长宽数据转换
clusdata1 <- clusdata %>% pivot_wider(names_from = Var2,values_from =Freq )
clusdata1 <- as.data.frame(clusdata1)
rownames(clusdata1) <- clusdata1$Var1
clusdata2 <- clusdata1[,-1]#[1] "BM1" "BM2" "BM3" "GM1" "GM2" "GM3"
#分别计算每个组每种细胞和
BM <- c("BM1","BM2","BM3")
clusdata2$BMsum <- rowSums(clusdata2[,BM])
GM <- c("GM1","GM2","GM3")
clusdata2$GMsum <- rowSums(clusdata2[,GM])#然后绘制堆积图
clus2 <- clusdata2[,c(7,8)]
clus2$ID <- rownames(clus2)
clus3  <- melt(clus2, id.vars = c("ID"))##根据分组变为长数据
p <- ggplot(data = clus3,aes(x=ID,y=value,fill=variable))+#geom_bar(stat = "identity",position = "stack")+    ##展示原来数值geom_bar(stat = "identity",position = "fill")+      ##按照比例展示:纵坐标为1scale_y_continuous(expand = expansion(mult=c(0.01,0.1)),##展示纵坐标百分比数值labels = scales::percent_format())+scale_fill_manual(values = c("BMsum"="#a56cc1","GMsum"="#769fcd"),       ##配色:"BMsum"="#98d09d","GMsum"="#e77381"limits=c("BMsum","GMsum"))+                            ##limit调整图例顺序theme(panel.background = element_blank(),          ##主题设置axis.line = element_line(),                   legend.position = "top")+                  #"bottom"labs(title = "single cell",x=NULL,y="percent")+           ##X,Y轴设置guides(fill=guide_legend(title = NULL,nrow = 1,byrow = FALSE))
p
dev.off()
> head(clus3)ID variable value
1  Fibroblast    BMsum  1226
2 Endothelial    BMsum  1615
3      Immune    BMsum  1904
4       Other    BMsum   497
5  Epithelial    BMsum   417
6  Fibroblast    GMsum  1249

④亚组间细胞比例差异分析(循环)
#组间差异分析:仍然是使用这个比例数据进行分析,不过却是在各个样本中进行比例比较
table(scedata$orig.ident)#查看各组细胞数
table(Idents(scedata))#查看各种类型细胞数目
table(Idents(scedata), scedata$orig.ident)#各组不同细胞群细胞数
Cellratio <- prop.table(table(Idents(scedata), scedata$orig.ident), margin = 2)#计算各组样本不同细胞群比例
Cellratio <- data.frame(Cellratio)
#需要进行数据转换,计算每个样本比例后进行差异分析
library(reshape2)
cellper <- dcast(Cellratio,Var2~Var1, value.var = "Freq")
rownames(cellper) <- cellper[,1]
cellper <- cellper[,-1]
###添加分组信息dataframe
sample <- c("BM1","BM2","BM3","GM1","GM2","GM3")
group <- c("BM","BM","BM","GM","GM","GM")
samples <- data.frame(sample, group)#创建数据框
rownames(samples)=samples$sample
cellper$sample <- samples[rownames(cellper),'sample']#R添加列
cellper$group <- samples[rownames(cellper),'group']#R添加列###作图展示
pplist = list()##循环作图建立空表
library(ggplot2)
library(dplyr)
library(ggpubr)
library(cowplot)
sce_groups = c('Endothelial','Fibroblast','Immune','Epithelial','Other')
for(group_ in sce_groups){cellper_  = cellper %>% select(one_of(c('sample','group',group_)))#选择一组数据colnames(cellper_) = c('sample','group','percent')#对选择数据列命名cellper_$percent = as.numeric(cellper_$percent)#数值型数据cellper_ <- cellper_ %>% group_by(group) %>% mutate(upper =  quantile(percent, 0.75), lower = quantile(percent, 0.25),mean = mean(percent),median = median(percent))#上下分位数print(group_)print(cellper_$median)pp1 = ggplot(cellper_,aes(x=group,y=percent)) + #ggplot作图geom_jitter(shape = 21,aes(fill=group),width = 0.25) + stat_summary(fun=mean, geom="point", color="grey60") +#stat_summary添加平均值theme_cowplot() +theme(axis.text = element_text(size = 10),axis.title = element_text(size = 10),legend.text = element_text(size = 10),legend.title = element_text(size = 10),plot.title = element_text(size = 10,face = 'plain'),legend.position = 'none') + labs(title = group_,y='Percentage') +geom_errorbar(aes(ymin = lower, ymax = upper),col = "grey60",width =  1)###组间t检验分析labely = max(cellper_$percent)compare_means(percent ~ group,  data = cellper_)my_comparisons <- list( c("GM", "BM") )pp1 = pp1 + stat_compare_means(comparisons = my_comparisons,size = 3,method = "t.test")pplist[[group_]] = pp1
}#批量绘制
plot_grid(pplist[['Endothelial']],pplist[['Fibroblast']],pplist[['Immune']],pplist[['Epithelial']],pplist[['Other']],#nrow = 5,#列数ncol = 5)#行数

⑤单个细胞类型亚新间比例差异
##数据处理
##单个细胞类型比例计算
rm(list = ls()) 
library(Seurat)
library(tidyverse)
library(reshape2)
library(ggplot2)
library(dplyr)
library(ggpubr)
library(cowplot)
load("scedata1.RData")#计算各个样本细胞,各种类型细胞
Cellratio <- prop.table(table(Idents(scedata), scedata$orig.ident), margin = 2)#计算样本比例
Cellratio <- data.frame(Cellratio)
cellper <- dcast(Cellratio,Var2~Var1, value.var = "Freq")##长数据转宽数据
rownames(cellper) <- cellper[,1]
cellper <- cellper[,-1]
sample <- c("BM1","BM2","BM3","GM1","GM2","GM3")###添加分组信息dataframe
group <- c("BM","BM","BM","GM","GM","GM")
samples <- data.frame(sample, group)#创建数据框
rownames(samples)=samples$sample
cellper$sample <- samples[rownames(cellper),'sample']#R添加列
cellper$group <- samples[rownames(cellper),'group']#R添加列dat <- cellper[,c(1,7)]#提取需要分析的细胞类型"Fibroblast" "group"  
#根据分组计算四分位及中位数
dat1 <- dat %>% group_by(group) %>% mutate(upper =  quantile(Fibroblast, 0.75), lower = quantile(Fibroblast, 0.25),mean = mean(Fibroblast),median = median(Fibroblast))
#table(dat1$group)#BM GM 

作图

#pdf("单个细胞类型组间比较.pdf",width = 4,height = 4)##一定添加大小
my_comparisons =list( c("BM","GM"))
P <- ggplot(dat1,aes(x=group,y= Fibroblast)) + #ggplot作图geom_jitter(shape = 21,aes(fill=group),width = 0.25) + stat_summary(fun=mean, geom="point", color="grey60") +theme_cowplot() +theme(axis.text = element_text(size = 10),axis.title = element_text(size = 10),legend.text = element_text(size = 10),legend.title = element_text(size = 10),plot.title = element_text(size = 10,face = 'plain'),legend.position = 'none') + labs(title = "group",y='Fibroblastage') +geom_errorbar(aes(ymin = lower, ymax = upper),col = "grey60",width =  1)+#误差棒#差异检验stat_compare_means(comparisons=my_comparisons,label.y = c(0.4),method="t.test",#wilcox.testlabel="p.signif")
P
dev.off()

感谢: TS的美梦-CSDN博客

参考:跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化 (qq.com)

跟着Cell学单细胞转录组分析(十四):细胞比例柱状图---连线堆叠柱状图_单细胞细胞占比图怎么画-CSDN博客

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

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

相关文章

三、Ollama导入大模型(.Net8+SemanticKernel+Ollama)本地运行自己的大模型

Ollama导入大模型 一、导入Ollama大模型1、使用run命令2、使用Modelfile方式 二、导入自定义大模型&#xff08;Ollama官网以外的大模型&#xff09;三、使用OpenWebUI导入大模型 Ollama可以导入官方提供的大模型&#xff0c;也可以导入huggingface上的自定义大模型&#xff08…

【加密与解密(第四版)】第十四章笔记

第十四章 漏洞分析技术 14.1 软件漏洞原理 缓冲区溢出漏洞&#xff1a;栈溢出 堆溢出、整型溢出&#xff08;存储溢出、计算溢出、符号问题&#xff09; UAF&#xff08;Use-After-Free&#xff09;漏洞 14.2 ShellCode 功能模块&#xff1a;下载执行、捆绑、反弹shell 14.3 …

【NumPy】使用NumPy计算相关系数:详解numpy.corrcoef函数及应用

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

基础8 探索JAVA图形编程桌面:邮件操作组件详解

在一个静谧的午后&#xff0c;卧龙和凤雏相邀来到一家古朴典雅的茶馆。茶馆内环境清幽&#xff0c;袅袅的茶香与悠扬的古筝声交织在一起&#xff0c;营造出一种宁静而祥和的氛围。 卧龙和凤雏坐在茶馆的一角&#xff0c;面前的桌子上摆放着一套精致的茶具。茶香四溢&#xff0c…

C++ STL 中的自定义比较:深入理解相等和等价

STL 中的自定义比较、相等和等价 一、简介二、STL 的排序部分三、STL 的未排序部分四、比较元素五、实现比较器六、总结 一、简介 本文主要讨论了在 STL 中使用自定义比较函数&#xff0c;以及比较操作中的相等和等价概念。 有如下的代码&#xff1a; std::vector< std::…

【C++】牛客——活动安排

✨题目链接&#xff1a; AB31 活动安排 ✨题目描述 给定&#x1d45b;个活动&#xff0c;每个活动安排的时间为[&#x1d44e;&#x1d456;,&#x1d44f;&#x1d456;)。求最多可以选择多少个活动&#xff0c;满足选择的活动时间两两之间没有重合。 ✨输入描述: 第一行…

北交所的股票交易佣金最低是多少?万分之二算低的吗?

北交所的佣金目前最低是万分之二&#xff0c;不过只有少数证券公司是这个标准。普通股票佣金万1&#xff0c;融资利率是4.0%~5.0%&#xff01; 北交所佣金一般是万分之6&#xff0c;北交所全称是北京证券交易所&#xff0c;是一家公司制交易所&#xff0c;北交所的佣金比普通股…

【JVM底层原理,JVM架构详解】

1. JVM简介 1.1 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 主流虚拟机: 虚拟机名称介绍HotSpotOracle/Sun JDK和OpenJDK都使用HotSPo…

人大金仓python驱动安装指引

最好使用虚拟环境&#xff0c;避免各种路径异常问题 在指定目录下创建虚拟环境 python3 -m venv myenv myenv可以是一个路径&#xff0c;当前命令会创建一个叫myenv的目录&#xff0c;目录里放的是虚拟环境所需的可执行文件 激活虚拟环境 source myenv/bin/activate 退出虚…

2024-05-28 服务器开发-不同vs版本的std::string的访问出错问题-记录

摘要: 有一个dll库是使用vs2010编译的, 使用这个dll动态库的工程是vs2019. 这个dll动态库返回一个结构体&#xff0c;其中有个成员使用了std::string。但是遇到了std::string的成员显示被赋值为NULL的情况。 本文对进行分析, 重点在于追踪问题的思路。 问题描述: dll使用vs20…

保护“第二生命线”,科技守护颈椎健康

脊柱支撑着人体重量&#xff0c;汇集着众多血管神经&#xff0c;素有“人体第二生命线”之称。在如今快节奏的时代&#xff0c;人们生活方式也在发生着变化&#xff0c;长期低头看手机、伏案久坐等不良生活习惯引发脊柱健康问题&#xff0c;且呈现年轻化趋势。目前&#xff0c;…

【加密与解密(第四版)】第十二章笔记

第十二章 注入技术 12.1 DLL注入方法 在通常情况下&#xff0c;程序加载 DLL的时机主要有以下3个&#xff1a;一是在进程创建阶段加载输入表中的DLL&#xff0c;即俗称的“静态输人”;二是通过调用 LoadLibrary(Ex)主动加载&#xff0c;称为“动态加载”&#xff1b;三是由于系…

核心三:正确的停止线程

3、核心三&#xff1a;正确的停止线程 3.1 如何正确的停止线程 3.1.1 原理介绍&#xff1a;使用interrupt来通知&#xff0c;而不是强制 线程中断的机制&#xff1a;一个线程来通知要中断线程&#xff08;你好&#xff0c;你现在应该停止了&#xff09;最后的决定是由要中断…

第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展&#xff1a;求二进制的每位数字 &#xff08;注意&#xff1a;进制转换、1的个数、位运算&#xff09; x…

主干网络篇 | YOLOv8更换主干网络之MobileNeXt | 新一代移动端模型MobileNeXt来了!

前言:Hello大家好,我是小哥谈。MobileNeXt是由微软研究院提出的一种高效的卷积神经网络结构,它在保持模型轻量级的同时,能够获得较高的性能。MobileNeXt采用了一种称为Inverted Residuals with Linear Bottlenecks(IRL)的结构,通过深度可分离卷积和快捷连接来减少模型的…

[Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件

如下&#xff0c;我们有一个platform.pk8和platform.x509.pem。为了打包&#xff0c;需要将私钥&#xff08;.pk8&#xff09;和公钥证书&#xff08;可能是.pem或.crt文件&#xff09;合并成一个PKCS#12 格式的密钥库文件 1.准备你的私钥和证书文件 确保你有以下两个文件&…

设计模型-系统架构师(三)

1、按照《中华人民共和国著作权法》的权利保护期&#xff0c;署名权和修改权 是永久保护的。 发表权、使用权和获取报酬权 保护期限 作者终生和死后的50年。 2、&#xff08;重要&#xff09;面向对象的分析模型主要由 顶层架构图、用例与用例图和&#xff08;&#xff09;构成…

2024年物理化学与工程技术发展国际会议(ICPCETD 2024)

全称&#xff1a;2024年物理化学与工程技术发展国际会议&#xff08;ICPCETD 2024&#xff09; 会议网址:http://www.icpcetd.com 会议时间: 2024.06.30 截稿时间&#xff1a;2024.06.21 会议地点: 上海 投稿邮箱&#xff1a;icpcetd_info163.com 投稿标题&#xff1a;ArticleT…

前端开发框架Angular

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Angular概述 Angular是由Google开发并维护的一款开源前端开发框架。它最初被设计为用于构建单页面应用&#xff08;SPA&#xff09;&#xff0c;但随着版本的更新和发展&am…

刚接触抖店并开通了个体店,怎么快速起店呢?运营思路参考如下

我是王路飞。 如果你刚接触抖店&#xff0c;并且开通了个体店&#xff0c;但不知道如何做店的话。 其实很简单&#xff0c;抖店的流程并没有这么复杂。 电商的核心无非就是产品&#xff0c;抖店的运营也都是围绕产品展开的。 我给你们说下抖店的运营思路你们可以作为参考&a…