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

news2024/10/6 8:32:54

目录

①数据读取

②计算线粒体基因比例

③分开进行质控

④两组单细胞数据合并

⑤细胞周期评分

⑥降维标准流程

降维

UMAP可视化

选择分群

⑦marker基因

分析marker基因

marker基因可视化

⑧细胞定群命名

单细胞的数据格式学习:单细胞 10X 和seurat对象学习-CSDN博客

①数据读取

数据集:GSE164241

rm(list = ls()) 
library(Seurat)
folders=list.files('./',pattern='[123]$')
folders
scList = lapply(folders,function(folder){ 
  CreateSeuratObject(counts = Read10X(folder), 
                     project = folder,
                     min.cells = 3, min.features = 200)
})

BM <- merge(scList[[1]], 
            y = c(scList[[2]],scList[[3]]), 
            add.cell.ids = c("BM1","BM2","BM3"), 
            project = "BM")
BM
GM <- merge(scList[[4]], 
            y = c(scList[[5]],scList[[6]]), 
            add.cell.ids = c("GM1","GM2","GM3"), 
            project = "GM")
GM##两部分数据进行读取合并
②计算线粒体基因比例
  • 细胞基因检出数,低质量细胞基因检出数通常较低,双细胞或者同时捕获多个细胞会有很高的基因数。所以要去除低质量的,和过高的细胞。

  • 细胞检测出的分子数

  • 线粒体基因比例,一般低质量细胞或者死细胞线粒体基因检出数很高。但是特殊情况特殊对待,有些细胞功能活跃,线粒体活跃,检出数自然也会很高。所以不能一刀切。

GM[["percent.mt"]] <- PercentageFeatureSet(GM,pattern = "^MT-")#分别计算线粒体
BM[["percent.mt"]] <- PercentageFeatureSet(BM,pattern = "^MT-")
preQC_GM <- VlnPlot(GM, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), 
                    ncol = 3, 
                    group.by = "orig.ident", 
                    pt.size = 0)
preQC_BM <- VlnPlot(BM, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), 
                    ncol = 3, 
                    group.by = "orig.ident", 
                    pt.size = 0)
preQC_GM
preQC_BM
dev.off()


③分开进行质控

nCount_RNA:每个细胞的UMI数量
nFeature_RNA:基因数
percent.mt:线粒体基因百分比

GM、BM分开,涉及后期QC参数有可能不同。

单细胞质控是指对单细胞测序数据进行质量控制和过滤,保证数据的准确性和可靠性。单细胞测序数据存在许多干扰因素,如PCR扩增偏差、杂交、RNA降解等,这些因素可能导致数据出现噪声、低表达、脱落细胞等问题。因此,单细胞质控的主要任务是过滤出质量高、可靠的单细胞数据,以便进行下一步的数据分析和挖掘。

单细胞质控通常包括以下几个方面的内容:

  1. 基础质控:包括测序质量、mapping率、reads数、UMI数等基本指标的计算和分析。
  2. 细胞质控:包括细胞表达量、基因检测率、rRNA比例、mapping率等细胞特异性指标的计算和分析,用于确定是否保留该细胞的数据。
  3. 基因质控:包括基因表达量、基因检测率、基因表达异质性等指标的计算和分析,用于确定保留哪些基因。
  4. 附加质控:包括PCA分析、t-SNE分析、聚类分析等附加分析,用于确定哪些细胞可以被合并或排除。
#设定各指标阈值使用subset函数取子集
#进行质控
GM <- subset(GM, subset = nFeature_RNA > 200 & nFeature_RNA < 5000 & percent.mt < 15)
BM <- subset(BM, subset = nFeature_RNA > 200 & nFeature_RNA < 5000 & percent.mt < 15)
postQC_GM <- VlnPlot(GM, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), 
                     ncol = 3, 
                     group.by = "orig.ident", 
                     pt.size = 0)
postQC_BM <- VlnPlot(BM, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), 
                     ncol = 3, 
                     group.by = "orig.ident", 
                     pt.size = 0)
postQC_GM#这时线粒体基因比例都小于15%
postQC_BM

接下来就是将两个数据合并,去除批次效应,整合成一个seurat对象进行下游降维。

④两组单细胞数据合并
#FindIntegrationAnchors合并数据
BM <- NormalizeData(BM)
BM <- FindVariableFeatures(BM, nfeatures = 4000)#数据标准化及计算高变基因
GM <- NormalizeData(GM)
GM <- FindVariableFeatures(GM, nfeatures = 4000)

#整合成一个seurat对象进行下游降维,IntegrateData去除批次效应
sampleList <- list(GM, BM)
scedata <- FindIntegrationAnchors(object.list = sampleList, dims = 1:50)
scedata <- IntegrateData(anchorset = scedata, dims = 1:50)
save(scedata, file = "scedata.RData")
⑤细胞周期评分

作者还计算了细胞周期评分,因为我们收集到的细胞可能处于不同的分裂时期,所以看周期是很有必要的,尤其是针对具体的研究目的。

rm(list = ls()) 
library(Seurat)
load("scedata.RData")
s.genes <- cc.genes$s.genes#细胞周期查看(根据需求)
g2m.genes <- cc.genes$g2m.genes
scedata <- CellCycleScoring(scedata, 
                            s.features = s.genes, 
                            g2m.features = g2m.genes,
                            set.ident = TRUE)
VlnPlot(scedata,features = c("S.Score","G2M.Score"),group.by = "orig.ident")

⑥降维标准流程
降维

单细胞数据RunPCA降维分析前的scale操作,通常指对数据进行标准化或归一化处理,旨在消除不同基因或细胞之间的量纲或数量级的差异。这样做可以使得不同基因或细胞在降维后对PCA的贡献更加均衡,避免了那些具有高表达量的基因或高测序深度的细胞对PCA结果产生过大影响的情况。数据标准化与wilcox分析_wilcox检验的数据必须log2吗-CSDN博客

# 标准流程(vars.to.regress进行降维)
scedata <- ScaleData(scedata, vars.to.regress = c("S.Score", "G2M.Score"), verbose = FALSE)
scedata <- RunPCA(scedata, npcs = 50, verbose = FALSE)
scedata <- FindNeighbors(scedata, reduction = "pca", dims = 1:50)
scedata <- FindClusters(scedata, 
                        resolution = seq(from = 0.1, 
                                         to = 1.0, 
                                         by = 0.1))
scedata <- RunUMAP(scedata, reduction = "pca", dims = 1:50)


library(clustree)
clustree(scedata)

PCA流程结束。我们需要挑选合适的PCs进行后续的细胞亚群鉴定
这里官方给出了两种方法,JackStraw()ElbowPlot()
实际上该选择多少并没有一个明确的规定,往往只能通过继续向下游分群注释去做,出现问题了回来调整或者往下做之后更换几个PC再做一次看结果的重复性是否良好

scedata <- JackStraw(scedata, num.replicate = 100)#JackStraw方法
scedata <- ScoreJackStraw(scedata, dims = 1:20)
JackStrawPlot(scedata, dims = 1:15) #可视化前15个PC
ElbowPlot(scedata)#肘型图
##默认都是计算50个PC可根据需求调整参数

关于单细胞降维最佳PC数量选取 - 简书 (jianshu.com)的筛选。

1.主成分累积贡献大于90%;2.PC本身对方差贡献小于5%;3.两个连续PCs之间差异小于0.1%

UMAP可视化
DimPlot(scedata)#UMAP降维进行可视化

选择分群
#选择好合适的细胞分群,将其设置为active.ident
Idents(scedata) <- "integrated_snn_res.1"#这里根据上面的分析进行选择
scedata$seurat_clusters <- scedata@active.ident
DimPlot(scedata,label = T,
        split.by = "orig.ident",ncol = 3)#每个样本进行性可视化

⑦marker基因
分析marker基因
#使用FindAllMarkers鉴定各个细胞群的高表达基因
DefaultAssay(scedata) <- "RNA"
all.markers  <- FindAllMarkers(scedata, 
                               only.pos = TRUE, 
                               min.pct = 0.25, 
                               logfc.threshold = 0.75)
significant.markers  <- all.markers [all.markers $p_val_adj < 0.2, ]
#write.csv(significant.markers, file = "significant.markers.csv")#保存
marker基因可视化
markers <- c("ACKR1","RAMP2","SELE","VWF","PECAM1",
             "LUM","COL3A1","DCN","COL1A1","CFD",
             "KRT14","KRT5","S100A2","CSTA","SPRR1B",
             "CD69","CD52","CXCR4","PTPRC","HCST")
DotPlot(scedata,features = markers)+coord_flip()

#UMAP图
FeaturePlot(scedata,features = c("ACKR1","LUM","KRT14","CD69"))
#热图
alldata <- ScaleData(scedata, 
                     features = markers, 
                     assay = "RNA")
p <- DoHeatmap(alldata, 
               features = markers,
               group.by = "seurat_clusters",
               assay = "RNA")
p
dev.off()

⑧细胞定群命名

#对各个细胞群命名:自动定群结果不一定完全正确
scedata <- subset(scedata, idents = c("21"), invert = TRUE)#去掉低质量细胞群
new.cluster.ids <- c("0"="Fibroblast", 
                     "1"="Endothelial", 
                     "2"="Endothelial", 
                     "3"="Endothelial", 
                     "4"="Immune", 
                     "5"="Immune", 
                     "6"="Endothelial", 
                     "7"="Fibroblast", 
                     "8"="Other", 
                     "9"="Immune", 
                     "10"="Epithelial", 
                     "11"="Endothelial", 
                     "12"="Fibroblast", 
                     "13"="Immune", 
                     "14"="Other", 
                     "15"="Immune", 
                     "16"="Fibroblast", 
                     "17"="Endothelial", 
                     "18"="Fibroblast", 
                     "19"="Epithelial", 
                     "20"="Endothelial", 
                     "22"="Immune",
                     "23"="Immune", 
                     "24"="Immune", 
                     "25"="Epithelial",
                     "26"="Immune",
                     "27"="Immune", 
                     "28"="Immune", 
                     "29"="Other")
scedata <- RenameIdents(scedata, new.cluster.ids)                        
scedata$celltype <- scedata@active.ident
DimPlot(scedata, group.by = "celltype")
save(scedata, file = "scedata1.RData")##进行降维和清洗后的数据


感谢:TS的美梦

跟着Cell学单细胞转录组分析(八):单细胞转录组差异基因分析及多组结果可视化_单细胞测序差异基因显著性怎么看-CSDN博客

感谢:Biomamba-生信基地的个人空间-Biomamba-生信基地个人主页-哔哩哔哩视频 (bilibili.com)

感谢:03.单细胞数据质控及降维标准流程 - 简书 (jianshu.com)

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

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

相关文章

从0到100,渠道码如何成为SaaS企业增长的加速器

在当今数字化时代&#xff0c;企业的增长策略已不再是单一和线性的。渠道码的出现&#xff0c;为SaaS&#xff08;软件即服务&#xff09;企业提供了一种全新的、多维度的增长途径&#xff0c;真正实现了从0到100的快速增长。 一、渠道码的高可定制性和灵活性&#xff0c;为Sa…

人脸识别——Webface-OCC遮挡人脸识别算法解析

1. 概述 自2019年被誉为人脸识别技术的元年&#xff0c;各地纷纷引入这项技术。然而&#xff0c;自2020年起&#xff0c;为了抵御冠状病毒&#xff08;COVID-19&#xff09;的全球传播&#xff0c;人们普遍开始佩戴口罩。众所周知&#xff0c;现有人脸识别模型在面对遮挡物&am…

生成式AI模型大PK——GPT-4、Claude 2.1和Claude 3.0 Opus

RAG(检索增强生成)系统的新评估似乎每天都在发布&#xff0c;其中许多都集中在有关框架的检索阶段。然而&#xff0c;生成方面——模型如何合成和表达这些检索到的信息&#xff0c;在实践中可能具有同等甚至更大的意义。许多实际应用中的案例证明&#xff0c;系统不仅仅要求从上…

Docker安装Redis的详细教程

以下是一个使用Docker安装Redis的详细教程 1. 拉取Redis镜像 运行以下命令来从Docker Hub上拉取最新的Redis镜像&#xff1a; docker pull redis:latest如果您需要特定版本的Redis&#xff0c;可以指定版本号&#xff1a; docker pull redis:6.2.72. 运行Redis容器 以下命…

基于AT89C52单片机的智能窗帘系统

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/89276984?spm1001.2014.3001.5503 C 源码仿真图毕业设计实物制作步骤07 智能窗户控制系统学院&#xff08;部&#xff09;&#xff1a; 专 业&#xff1a; 班 级&…

前端响应式期末作品

网页设计成品_前端响应式 主题&#xff1a;租房网站&#xff0c;共6个html页面&#xff0c;包含首页&#xff0c;登录注册&#xff0c;租房新闻&#xff0c;租房精选&#xff0c;租房详情&#xff0c;数据可视化页面&#xff08;可以修改内容&#xff09; 采用技术&#xff1a;…

香橙派KunpengPro测评之使用C语言操控40pin引脚

香橙派KunpengPro测评之使用C语言操控40pin引脚 香橙派KunpengPro介绍香橙派实物图香橙派登录界面香橙派KunpengPro的登录界面香橙派KunpengPro的原始桌面香橙派KunpengPro内安装了VScode等软件香橙派KunpengPro的终端 香橙派硬件参数核心性能图形与显示接口丰富性扩展与兼容性…

刷代码随想录有感(81):贪心算法——分发饼干

题干&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index s.size() - 1;int res 0;for(int i g.size() - 1; i > 0; i--){if(index >…

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

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

远程户外监控组网方案,工业4G路由器ZR2000

户外监控无人值守4G工业路由器组网应用涉及工业自动化、数据传输和远程监控的重要领域。在户外没有光纤的情况下&#xff0c;想要让监控或传感器等设备联网&#xff0c;仅需一台4G工业路由器即可解决。以下是关于远程监控户外组网的详细分析与应用&#xff1a; 物联网应用场景 …

Java多线程(02)

一、如何终止线程 终止线程就是要让 run 方法尽快执行结束 1. 手动创建标志位 可以通过在代码中手动创建标志位的方式&#xff0c;来作为 run 方法的执行结束条件&#xff1b; public static void main(String[] args) throws InterruptedException {boolean flag true;Thr…

SERVER-----查询(1)

目录 Scott库下载&#xff1a; 一. 查询 1. 计算列 2. distinct 3. betwee... and... 4. in Scott库下载&#xff1a; 在大家学习数据库后期需要使用Scott库进行辅助学习&#xff0c;下面是我从一个叫做 yuhan_Li的博主那复制过来的&#xff0c;大家尽可能访问原文章吧&am…

南卡、韶音、Cleer开放式耳机如何选?全面对比测评拒绝智商税!

随着开放式耳机在生活中日益流行&#xff0c;市场上的多样化选择有时也伴随着质量参差不齐的问题&#xff0c;部分产品因成本控制而牺牲了材质和音质&#xff0c;给消费者在寻找高质量耳机时增添了困扰。 作为一名耳机评测领域的从业者&#xff0c;近期我投入大量精力对多款开…

基于STM32实现智能饮水机控制系统

目录 引言环境准备智能饮水机控制系统基础代码示例&#xff1a;实现智能饮水机控制系统 温度传感器数据读取水泵和加热器控制水位传感器数据读取用户界面与显示应用场景&#xff1a;家庭和办公室的智能饮水管理问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在S…

1---Linux下进程的概念(逻辑推导,全干货无废话)

一、进程和程序&#xff1a; 1.1什么是程序&#xff1f; 程序由代码、数据、逻辑、接口和文档组成的一组按特定顺序执行的计算机指令&#xff0c;用于实现特定功能或解决问题。程序存储在磁盘上。 1.2什么是进程&#xff1f; 进程是一个正在执行的程序实例&#xff0c;包含程…

数据库查询——kettle开发20

一、数据库查询 数据库查询就是数据库里面的左连接&#xff0c;左连接就是两张表执行左关联查询&#xff0c;把左边的表数据全部查询出来。 如图所示我们在进行数据库查询操作时&#xff0c;我们首先需建立数据库连接&#xff0c;输入表名和查询需要的关键字&#xff0c;最后…

LAMP源码编译安装——CentOS7

文章目录 LAMP是什么LAMP软件组件LinuxApacheMySQLPHP 源码安装Apache一、准备工作二、安装环境依赖包三、配置软件模块四、编译及安装五、优化配置文件路径六、添加httpd系统服务&#xff08;有两种方法&#xff09;方法一&#xff1a;方法二&#xff1a; 七、修改httpd 服务配…

WEB安全:Content Security Policy (CSP) 详解

Content Security Policy (CSP) 是一种强大的网页安全机制,用于防止跨站脚本 (XSS) 和其他注入攻击。通过设置一系列的内容安全策略,CSP 可以限制网页可以加载的资源,从而保护用户数据和网站的安全性。 什么是 XSS 攻击? 跨站脚本攻击 (XSS) 是一种常见的安全漏洞,攻击者…

Svad:一个鲁棒、低功耗、轻量级的语音活动检测与尖峰神经网络

SVAD: A ROBUST, LOW-POWER, AND LIGHT-WEIGHT VOICE ACTIVITY DETECTION WITH SPIKING NEURAL NETWORKS 第二章 目标说话人提取之《Svad:一个鲁棒、低功耗、轻量级的语音活动检测与尖峰神经网络》 文章目录 SVAD: A ROBUST, LOW-POWER, AND LIGHT-WEIGHT VOICE ACTIVITY DETE…

京东二面:Sychronized的锁升级过程是怎样的

引言 Java作为主流的面向对象编程语言&#xff0c;提供了丰富的并发工具来帮助开发者解决多线程环境下的数据一致性问题。其中&#xff0c;内置的关键字"Synchronized"扮演了至关重要的角色&#xff0c;它能够确保在同一时刻只有一个线程访问特定代码块或方法&#…