单细胞分析(10)——scRNA-seq 双细胞(Doublet)筛选

scRNA-seq 双细胞(Doublet)筛选

1. 背景介绍

1.1 什么是双细胞?

在单细胞转录组测序(scRNA-seq)过程中,实验技术的不完美可能会导致两个或多个细胞共享相同的条形码(barcode),形成 双细胞(doublets)。这些细胞会影响数据分析的准确性,导致错误的细胞类型鉴定、伪影(artifacts)和假阳性信号。

1.2 为什么需要去除双细胞?

双细胞的存在会对单细胞分析造成以下影响:

  • 扰乱细胞聚类(clustering),影响细胞类型定义
  • 影响差异表达基因分析(DEG)
  • 误导轨迹推断(trajectory inference)
  • 影响肿瘤微环境和免疫细胞的正确解析

1.3 现有的双细胞鉴定工具

目前有多种方法用于双细胞鉴定,例如:

  • DoubletFinder(推荐,准确性较高)
  • Scrublet(适用于 Python)
  • DoubletDetection
  • cxds/bcds/hybrid
  • DoubletDecon

根据Cell Systems 2021年的研究,DoubletFinder 在准确性上表现最佳,因此本教程采用 DoubletFinder 进行双细胞去除。


2. DoubletFinder 过滤双细胞的流程

DoubletFinder 主要基于 PCA 降维 + KNN 近邻搜索,通过模拟伪双细胞(artificial doublets)来预测真实数据中的双细胞。

2.1 数据预处理

在去除双细胞之前,首先需要对 scRNA-seq 数据进行标准的预处理。

# 读取数据
sc_data = readRDS(file = './tmp/scRNA_qc_list.RDS')# 合并多个样本
sc_merged <- sc_data[[1]]
for (i in 2:length(sc_data)) {sc_merged <- merge(sc_merged, y = sc_data[[i]], project = "merged")
}
sc_merged$samples = sc_merged$orig.ident
rm(sc_data)# 数据标准化和降维
combo <- sc_merged
combo <- SCTransform(combo, vars.to.regress = c("nCount_RNA", "nFeature_RNA", "percent.hb", "percent.platelet", "percent.heatshock"), verbose = TRUE)
combo <- RunPCA(combo, npcs = 100)# 选择 PCA 维度
ElbowPlot(combo)

2.2 选择最佳 PCA 维度

使用 ElbowPlot 选择合适的 PCA 维度,通常选择拐点处的维度,例如 前 50-60 个主成分

combo <- FindNeighbors(combo, reduction = "pca", dims = 1:60)
combo <- FindClusters(combo, resolution = 0.7)
combo <- RunUMAP(combo, reduction = "pca", dims = 1:60, seed.use = 123)

2.3 运行 DoubletFinder

DoubletFinder 需要 计算最佳 pK 值,这是用于识别双细胞的关键参数。

(1) 计算最佳 pK
combo.list <- SplitObject(combo, split.by = "samples")pkchoose.list <- list()
for (i in 1:length(combo.list)) {seu_temp <- combo.list[[i]]sweep.res.list <- paramSweep_v3(seu_temp, PCs = seu_temp@commands$RunUMAP.SCT.pca$dims, sct = TRUE)sweep.stats <- summarizeSweep(sweep.res.list, GT = FALSE)# 计算最佳 pKsweep.stats.pk <- find.pK(sweep.stats)pK=as.numeric(as.character(sweep.stats.pk$pK))BCmetric=sweep.stats.pk$BCmetricpK_choose = pK[which(BCmetric %in% max(BCmetric))]
}
(2) 计算双细胞比例
nExp_poi <- 0.0059 * nrow(seu_temp@meta.data)
(3) 运行 DoubletFinder
seu_temp <- doubletFinder_v3(seu_temp, PCs = seu_temp@commands$RunUMAP.SCT.pca$dims, sct = TRUE, pN = 0.25, pK = as.numeric(pK_choose), nExp = nExp_poi, reuse.pANN = FALSE)combo.list[[i]] <- seu_temp

2.4 整合双细胞结果

doublet.cell.list <- list()
doublet.df <- list()
for (i in names(combo.list)) {seu_temp <- combo.list[[i]]doublet.sub <- seu_temp@meta.data[, grepl("DF", colnames(seu_temp@meta.data)), drop = F]doublet.df[[i]] <- doublet.subdoublet.cell.list[[i]] <- rownames(doublet.sub)sc_merged <- AddMetaData(sc_merged, doublet.sub, paste0("Doublet.", i))
}# 汇总双细胞识别结果
sc_merged$Doublet.Call <- apply(sc_merged@meta.data[, c(9:16)], 1, function(x) x[!is.na(x)][1])

3. 结果可视化

DimPlot(sc_merged, group.by = "Doublet.Call", reduction = "umap") + ggtitle("Doublet Identification")
table(sc_merged$Doublet.Call)

4. 结果保存

saveRDS(sc_merged, file = './tmp/scRNA_qc_withDoublet.RDS')

5. 结论

  • 双细胞(doublets)是 scRNA-seq 分析中的常见问题,需要在分析流程中加以去除。
  • DoubletFinder 是目前准确性较高的方法,适用于 Seurat 处理的单细胞数据。
  • 正确选择 pKnExp 计算参数,可以显著提高双细胞检测的准确性。
  • 去除双细胞后,数据的聚类、差异分析、轨迹推断的可信度将会更高。

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

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

相关文章

第二节 docker基础之---镜像构建及挂载

查看当前镜像&#xff1a; [rootdocker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [rootdocker ~]#很明显docker是咱们新搭建的所以目前还没有镜像 1&#xff0c;搜索镜像&#xff1a; [rootdocker ~]# docker search centos 搜索镜像并过滤是官…

在 Vue 中实现图表数据的动态展示

随着数据可视化技术的蓬勃发展&#xff0c;图表在前端开发领域的地位愈发重要。Vue.js 作为一款备受欢迎的前端框架&#xff0c;凭借其出色的灵活性与易用性&#xff0c;成为实现图表动态展示的绝佳之选。在本篇博客中&#xff0c;将详细介绍如何在 Vue 3 中借助 Composition A…

人工智能:从概念到未来

人工智能&#xff1a;从概念到未来 一、引言 在当今数字化时代&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;已从科幻小说和电影中的幻想逐渐走进现实&#xff0c;成为推动社会进步和经济发展的关键力量。它正在深刻地改变着我们的生活…

GitHub Pages + Jekyll 博客搭建指南(静态网站)

目录 &#x1f680; 静态网站及其生成工具指南&#x1f30d; 什么是静态网站&#xff1f;&#x1f4cc; 静态网站的优势⚖️ 静态网站 VS 动态网站 &#x1f680; 常见的静态网站生成器对比&#x1f6e0;️ 使用 GitHub Pages Jekyll 搭建个人博客&#x1f4cc; 1. 创建 GitHu…

字符设备驱动开发

驱动就是获取外设、传感器数据和控制外设。数据会提交给应用程序。 Linux 驱动编译既要编写一个驱动&#xff0c;还要编写一个简单的测试应用程序。 而单片机下驱动和应用都是放在一个文件里&#xff0c;也就是杂在一块。而 Linux 则是分开了。 一、字符设备驱动开发流程 Lin…

参数映射服务完整解决方案

参数映射服务完整解决方案 1. 背景说明 在复杂的工作流程中&#xff0c;后续程序需要动态构造输入参数&#xff0c;这些参数源自多个前序程序的 JSON 数据输出。为了增强系统的灵活性和可扩展性&#xff0c;需要一个通用的参数映射服务来处理这种复杂的数据转换需求。 1.1 主…

SpringCloud - Nacos注册/配置中心

前言 该博客为Nacos学习笔记&#xff0c;主要目的是为了帮助后期快速复习使用 学习视频&#xff1a;7小快速通关SpringCloud 辅助文档&#xff1a;SpringCloud快速通关 一、简介 Nacos官网&#xff1a;https://nacos.io/docs/next/quickstart/quick-start/ Nacos /nɑ:kəʊ…

IDEA安装离线插件(目前提供了MavenHelper安装包)

目录 1、离线安装方式2、Maven Helper 1、离线安装方式 首先访问 IDEA插件网站 下载离线插件安装包&#xff0c;操作如下&#xff1a; 然后打开IDEA的Settings配置&#xff0c;点击Plugins&#xff0c;点击右侧设置按钮&#xff08;齿轮&#xff09;&#xff0c;选择Install P…

科技赋能数字内容体验的核心技术探索

内容概要 在数字化时代&#xff0c;科技的迅猛发展为我们的生活和工作带来了深刻的变革。数字内容体验已经成为人们获取信息和娱乐的重要途径&#xff0c;而这背后的技术支持则扮演着至关重要的角色。尤其是在人工智能、虚拟现实和区块链等新兴技术的推动下&#xff0c;数字内…

【LeetCode 刷题】贪心算法(2)-进阶

此博客为《代码随想录》贪心算法章节的学习笔记&#xff0c;主要内容为贪心算法进阶的相关题目解析。 文章目录 135. 分发糖果406. 根据身高重建队列134. 加油站968. 监控二叉树 135. 分发糖果 题目链接 class Solution:def candy(self, ratings: List[int]) -> int:n l…

工业相机,镜头的选型及实战

工业相机和镜头的选型是机器视觉系统中的关键步骤&#xff0c;选型不当可能导致成像质量差或系统性能不达标。&#xff08;用于个人的学习和记录&#xff09; 一、工业相机选型方法 确定分辨率 分辨率需求&#xff1a;根据被测物体的尺寸和检测精度要求计算所需分辨率。 公式…

探索robots.txt:网站管理者的搜索引擎指南

在数字时代&#xff0c;网站如同企业的在线名片&#xff0c;其内容和结构对搜索引擎的可见性至关重要。而在这背后&#xff0c;有一个默默工作的文件——robots.txt&#xff0c;它扮演着搜索引擎与网站之间沟通桥梁的角色。本文将深入探讨robots.txt的功能、编写方法及其在现代…

使用WebUI访问本地Deepseek(Ollama集成Open WebUI)

在《deepseek本地部署和使用&#xff08;Linux虚拟机&#xff09;》中&#xff0c;我们使用Ollama部署了Deepseek-r1&#xff0c;但是只能通过命令行方式交互&#xff0c;默认Ollama启动后&#xff0c;会启动一个监听到127.0.0.1&#xff0c;用以接收POST 请求&#xff0c;服务…

windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件

邻近感应检测是蓝牙低功耗 (LE) 的常见用途。 本部分提供了创建可用于开发 UWP 设备应用的邻近感应配置文件的设备实现的指南。 在开发此应用之前&#xff0c;应熟悉蓝牙 LE 函数和蓝牙 LE 邻近感应配置文件规范。 示例服务声明 蓝牙低功耗引入了一个新的物理层&#xff0c;…

模型 冗余系统(系统科学)

系列文章分享模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。为防故障、保运行的备份机制。 1 冗余系统的应用 1.1 冗余系统在企业管理中的应用-金融行业信息安全的二倍冗余技术 在金融行业&#xff0c;信息安全是保障业务连续性和客户资产安全的关键。随着数字化…

AI绘画社区:解锁艺术共创的无限可能(9/10)

AI 绘画&#xff1a;不只是技术&#xff0c;更是社交新潮流 在科技飞速发展的今天&#xff0c;AI 绘画早已不再仅仅是一项孤立的技术&#xff0c;它正以惊人的速度融入我们的社交生活&#xff0c;成为艺术爱好者们交流互动的全新方式&#xff0c;构建起一个充满活力与创意的社…

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天&#xff0c;DeepSeek 作为一款极具创新性和实用性的 AI&#xff0c;在众多同类产品中崭露头角&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能&#xff0c;它基于先进…

IDEA - 一个启动类多次启动方法

More Run/Debug -> Modify Run Configuration -> modify options -> Allow mutiple instances

Android Studio 配置 Gerrit Code Review

很多大厂&#xff08;华为、荣耀&#xff09;的大型项目都有gerrit代码审查流程&#xff0c;那么我们如何实现不手动敲命令行&#xff0c;就在Android Studio中像平常开发一样&#xff0c;只需要用鼠标点点点&#xff0c;就能将代码推送到gerrit审查仓呢&#xff0c;现在就来跟…

TypeScript 中的对象类型:深入理解接口和类型别名

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…