单细胞分析:数据整合(九)

news2025/1/4 19:58:16

导读

本文将学习跨条件执行单细胞整合,以识别彼此相似的细胞。

1. 目标

  • 跨条件对齐相同的细胞类型。

2. 挑战

对齐相似细胞类型的细胞,这样就不会因为样本、条件、模式或批次之间的差异而在后续分析中进行聚类。

3. 推荐

建议先不整合分析,再决定是否进行整合。

4. 整合与否

通常,在决定是否需要执行任何对齐之前,我们总是在没有整合的情况下查看聚类。不要仅仅认为可能存在差异而总是先执行整合,探索数据。如果在 Seurat 对象中同时对两种条件进行归一化并可视化细胞之间的相似性,会看到特定条件的聚类情况:

alt

细胞在特定条件下聚类表明需要跨条件整合细胞以确保相同类型的细胞聚集在一起。

  • 为什么相同细胞类型的细胞聚集在一起很重要?

想要识别存在于数据集中所有的细胞类型,因此希望观察每个簇中两个样本/条件/模态中的细胞表示。这将使下游的结果更具可解释性(即 DE 分析、配体-受体分析)。在本课中,将介绍跨条件的样本整合,该教程改编自 Seurat v3 Guided Integration Tutorial[1]

注意:Seurat 有一个关于如何在不整合的情况下运行工作流程的小插图。工作流程与此工作流程非常相似,但样本不一定在一开始就被拆分,也不会执行整合。

如果不确定在条件(例如肿瘤和对照样本)之间会出现什么簇或预期某些不同的细胞类型,则首先单独运行会有所帮助,然后将它们一起运行以查看两种条件下是否存在针对细胞类型的特定条件簇。通常,当对来自多个条件的细胞进行聚类时,会有特定于条件的聚类,而整合有助于确保相同的细胞类型聚类在一起。

5. 整合

利用共享的高可变基因跨条件整合或对齐样本。

如果细胞按样本、条件、批次、数据集、模态进行聚类,则整合步骤可以极大地改善聚类和下游分析。

为了整合,将使用来自每个组的高可变基因(使用 SCTransform 识别),然后,将“整合”或“协调”这些组以覆盖相似或具有“共同生物特征集”的细胞团体。例如,可以整合:

  • 不同条件(例如对照和处理):
alt
  • 不同数据集(例如,来自在相同样本上使用不同文库制备方法生成的 scRNA-seq数据集):
alt
  • 不同的组学数据(例如 scRNA-seqscATAC-seq):
alt
  • 不同批次(例如,当实验条件需要对样品进行批量处理时)

整合是一种强大的方法,它使用这些最大变异的共享源,来识别跨条件或数据集的共享亚群。整合的目标是确保一个条件/数据集的细胞类型与其他条件/数据集的相同细胞类型对齐(例如,控制巨噬细胞与受刺激的巨噬细胞对齐)。

具体来说,这种整合方法期望组中至少一个单细胞子集之间存在“对应”或共享的生物状态。整合分析的步骤如下图所示:

alt
  • 应用的不同步骤如下:
  1. 典型相关分析 ( CCA):

CCA 识别条件/组之间的共享变异源。它是 PCA 的一种形式,因为它可以识别数据中最大的变异来源,但前提是它在条件/组之间共享或保存(使用来自每个样本的 3000 个变异最多的基因)。

此步骤使用最大的共享变异源大致对齐细胞。

注意:使用共享的高度可变基因是因为它们最有可能代表那些区分存在的不同细胞类型的基因。

  1. 跨数据集识别 anchorsmutual nearest neighbors ( MNN)(有时会识别出不正确的 anchors):

MNN 可以被认为是best buddies。对于一个条件下的每个细胞:

  • 在另一种情况下,细胞最近的邻居是根据基因表达值确定的。
  • 执行相互分析,**如果两个细胞在两个方向上都是 best buddies,那么这些细胞将被标记为 anchors**,以将两个数据集“锚定”在一起。

MNN 对细胞之间表达值的差异提供了对批次效应的估计,通过对许多这样的对进行平均可以更加精确。获得一个校正向量并将其应用于表达式值以执行批量校正。”

  1. 过滤 anchors以删除不正确的 anchors

通过本地邻域中的重叠来评估anchors对之间的相似性(不正确的anchors得分会很低)

  1. 整合条件/数据集:

使用anchors和相应的分数来转换细胞表达式值,允许整合条件/数据集(不同的样本、条件、数据集、模态)。

注意:每个细胞的转换使用跨数据集anchors的每个anchors的两个细胞的加权平均值。权重由细胞相似度得分(细胞与 k 个最近anchors之间的距离)和anchors得分确定,因此同一邻域中的细胞应该具有相似的校正值。

如果细胞类型存在于一个数据集中,但不存在于另一个数据集中,则细胞仍将显示为单独的样本特定簇。

现在,使用 SCTransform 对象作为输入,执行跨条件的整合。

首先,需要指定使用 SCTransform 识别的所有 3000 个可变基因进行整合。默认情况下,此函数仅选择前 2000 个基因。

# 选择用于整合的可变性最大的特征,
integ_features <- SelectIntegrationFeatures(object.list = split_seurat, 
                                            nfeatures = 3000

现在,需要为整合准备SCTransform对象。

# 准备 SCT 列表对象以进行整合
split_seurat <- PrepSCTIntegration(object.list = split_seurat, 
                                   anchor.features = integ_features)

现在,将执行 CCA,找到best buddiesanchors并过滤不正确的anchors。请注意控制台中的进度条将保持在 0%,但它实际上正在运行。

# 寻找`best buddies` - 可能需要一段时间才能运行完毕
integ_anchors <- FindIntegrationAnchors(object.list = split_seurat, 
                                        normalization.method = "SCT"
                                        anchor.features = integ_features)

最后,跨条件整合。

# 跨条件整合
seurat_integrated <- IntegrateData(anchorset = integ_anchors, 
                                   normalization.method = "SCT")

6. UMAP 可视化

整合后,为了可视化整合数据,可以使用降维技术,例如 PCAUMAP。虽然 PCA 将确定所有 PC,但一次只能绘制两个。相比之下,UMAP 将从任意数量的顶级 PC 获取信息,以在这个多维空间中排列细胞。它将在多维空间中获取这些距离,并将它们绘制成二维,以保持局部和全局结构。这样,细胞之间的距离代表了表达的相似性。如果想更详细地探索 UMAP[2],这篇文章是对 UMAP 理论的一个很好的介绍。

生成这些可视化,首先运行 PCAUMAP 方法。从 PCA 开始。

# 运行 PCA
seurat_integrated <- RunPCA(object = seurat_integrated)

# 画图 
PCAPlot(seurat_integrated,
        split.by = "sample")  
PCA
PCA

通过 PCA 映射,可以看到 PCA 很好地覆盖了这两个条件。

现在,使用 UMAP 进行可视化。

# 运行 UMAP
seurat_integrated <- RunUMAP(seurat_integrated, 
                             dims = 1:40,
        reduction = "pca")

# 画图                              
DimPlot(seurat_integrated)     
UMAP
UMAP

当将上图中的 ctrl 和 stim 细胞类群之间的相似性与未整合数据集(下图)进行比较时,很明显整合有益于分析!

未整合
未整合
  • 细胞类群的并排比较

有时,如果在条件之间拆分绘图,则更容易查看所有细胞是否对齐良好,可以通过将 split.by 参数添加到DimPlot()函数来做到这一点:

# 通过样本分割 UMAP
DimPlot(seurat_integrated,
        split.by = "sample")  
alt

7. 保存

由于整合可能需要一段时间,因此保存整合的 seurat 对象通常是一个好主意。

saveRDS(seurat_integrated, "results/integrated_seurat.rds")

参考资料

[1]

Seurat: "https://satijalab.org/seurat/v3.0/immune_alignment.html"

[2]

UMAP: https://pair-code.github.io/understanding-umap/

本文由 mdnice 多平台发布

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

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

相关文章

2020下半年软件设计师上午题错题总结

2020下半年 1、以下关于两个浮点数相加运算的叙述中&#xff0c;正确的是 &#xff08;3&#xff09; 。 A. 首先进行对阶&#xff0c;阶码大的向阶码小的对齐 B. 首先进行对阶&#xff0c;阶码小的向阶码大的对齐 C. 不需要对阶&#xff0c;直接将尾数相加 D. 不需要对阶…

[附源码]java毕业设计网上购物商城

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

33.nacos客户端读取多配置文件实例(springcloud)

1.配置文件的读取方式【重点】nacos 配置中心通过 namespace、dataId 和 group 来唯一确定一条配置。 Namespace&#xff1a;即命名空间。默认的命名空间为 public&#xff0c;我们可以在 Nacos 控制台中新建命名空间&#xff1b;dataId&#xff1a;即配置文件名称 Group &…

比 O(nlog(n)) 做得更好——创造合适的条件

我们可以比 O(nlog(n)) 更快地排序。 长按关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 扫码关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 介绍 我将介绍一种我称之为 groupSort 的排序方法。我没有直接解决排序问题…

基于小波变换编码的纹理图像分割

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 我们使用11或13维特征向量表示图像中的每个像素。两个特征用于表示像素之间的空间关系&#xff1b;由图像尺寸规格化的x和y像素坐标。对于灰度图像&#xff0c;一个特征是低通表示&#…

Python编程从入门到实践 第十一章:测试代码 练习答案记录

Python编程从入门到实践 第十一章&#xff1a;测试代码 练习答案记录 练习题导航Python编程从入门到实践 第十一章&#xff1a;测试代码 练习答案记录11.1 测试函数11.1.1 单元测试和测试用例11.1.2 可通过的测试11.1.3 未通过的测试11.1.4 测试未通过时怎么办11.1.5 添加新测试…

Flutter/Dart 中的 extension 方法

Flutter Dart 中的 extension 方法 前言 我们将讨论 extension 方法如何对我们有用&#xff0c;以及为什么您的代码因为它们而变得更加精确和可读的原因。 简介 在本文中&#xff0c;我们将学习 Dart 中的 extension 方法。也许你想知道那是什么&#xff0c;它是如何工作的&…

HIve数仓新零售项目DWS层的构建(Full join)模型

HIve数仓新零售项目 注&#xff1a;大家觉得博客好的话&#xff0c;别忘了点赞收藏呀&#xff0c;本人每周都会更新关于人工智能和大数据相关的内容&#xff0c;内容多为原创&#xff0c;Python Java Scala SQL 代码&#xff0c;CV NLP 推荐系统等&#xff0c;Spark Flink Kaf…

全自动调节灯光强度的实现(仿真+程序+文档)

目 录 摘 要 I Abstract II 绪论 1 1.1 选题背景及意义 1 1.2 国内外研究现状 1 1.3 研究主要内容 3图书馆学习桌台灯智能控制系统简介与方案分析 4 2.1 大学图书馆照明控制现状 4 2.2 图书馆学习桌台灯智能控制系统简介 4 2.3 系统控制方案分析 4 2.4 本章小节 5系统硬件设计…

JavaScript练手小技巧:我破解了原神官网全屏滚动的秘密

这个标题有点夺人眼球&#xff0c;哈啊哈~骗点击率的。 “原神”官网当真的做的很漂亮&#xff0c;虽然我没玩过这个游戏&#xff0c;但是禁不住喜欢这个网站啊。 https://ys.mihoyo.com/ 最近居家教学上网课。除了上课&#xff0c;实在不想做学校安排的其它任务&#xff0c…

热量衡算习题课

第一部分 --- 传热计算综合例题 1.qm是质量流量&#xff0c;T1&#xff0c;2和 t1,2对应的是热流体和冷流体分别在管道进口和出口的温度 2.吊塔tm是传热温差 3.α1是热流体的对流传热系数&#xff0c;α2是冷流体的对流传热系数&#xff0c;K是整个对流传热过程的总的传热系…

【Linux】在Xilinx平台上实现UVC Gadget(2)- 解决dwc3驱动bug

【Linux】在Xilinx平台上实现UVC Gadget&#xff08;2&#xff09;- 解决dwc3驱动bug一、bug描述二、具体修改方法1. 找到内核源码位置并复制到其他目录2. Petalinux里面设置使用自定义内核源码1) 选第2个Linux Components Selection2) 选linux-kernel&#xff0c;回车&#xf…

【笔试题】【day22】

文章目录第一题&#xff08;循环队列的元素个数&#xff09;第二题&#xff08;二叉排序树插入规则&#xff09;第三题&#xff08;线性探测的平均查找长度&#xff09;第四题&#xff08;关键字比较次数与初始序列无关的&#xff09;第一题&#xff08;循环队列的元素个数&…

m短波宽带通信系统的信道建模matlab仿真

目录 1.算法概述 1.1 Watterson信道模型理论简介 1.2 Nakagami信道模型 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 宽带短波信道的研究是设计宽带大容量短波通信的基础&#xff0c;但是传统的短波信道的研究仅限于窄带信号传输&#xff0c;这已经…

论文阅读-Whisper语音识别(OpenAI)

一、论文信息 论文名称&#xff1a;Robust Speech Recognition via Large-Scale Weak Supervision 代码地址&#xff1a;https://github.com/openai/whisper 官方博客&#xff1a;https://openai.com/blog/whisper 作者团队&#xff1a;OpenAI 二、介绍 Whisper是一个通用…

HAProxy实现负载均衡

目录 一、HAProxy介绍 二、环境准备 三、实验拓扑 四、HAProxy部署 五、配置HAProxy状态页面 一、HAProxy介绍 ha-proxy是一款高性能的负载均衡软件&#xff0c;主要是做7层负载均衡&#xff0c;也可以做4层负载均衡。因为其专注于负载均衡这一些事情&#xff0c;因此与ng…

8、如何使用FactoryBean向Spring容器中注册bean?

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

openEuler快速入门-openEuler命令行基础操作

系列文章目录 第一章 openEuler快速入门(一)-openEuler操作系统介绍 文章目录系列文章目录前言一、shell是什么二、Linux命令行操作技巧三、基础命令3.1、Linux命令分类3.2、目录和文件3.2.1 相对路径和绝对路径3.2.2 处理目录的常用命令ls&#xff1a;cd&#xff1a;pwd&…

tkinter绘制组件(36)——树状图

tkinter绘制组件&#xff08;36&#xff09;——树状图引言布局函数结构内容数据格式整体框架绘制元素与重绘宽度标识元素展开与闭合完整函数代码效果测试代码最终效果github项目pip下载结语引言 TinUI的第38个元素控件&#xff0c;也是TinUI-4.0-添加的第一个组件&#xff0c…

Rsync下行同步+inotify实时同步介绍和部署

一、Rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09; 是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&#xff0c;传输前执行压缩&#xf…