单细胞分析(Signac): PBMC scATAC-seq 聚类

引言

在本教学指南中,我们将探讨由10x Genomics公司提供的人类外周血单核细胞(PBMCs)的单细胞ATAC-seq数据集。

加载包

首先加载 Signac、Seurat 和我们将用于分析人类数据的其他一些包。

if (!requireNamespace("EnsDb.Hsapiens.v75", quietly = TRUE))
    BiocManager::install("EnsDb.Hsapiens.v75")

library(Signac)
library(Seurat)
library(EnsDb.Hsapiens.v75)

library(ggplot2)
library(patchwork)

归一化和线性降维

在数据处理中,我们首先进行标准化处理,采用的是词频-逆文档频率(TF-IDF)方法。这个过程分为两步:首先在细胞层面进行标准化,以消除不同细胞测序深度带来的偏差;其次在峰值层面进行标准化,目的是让那些较为罕见的峰值获得更高的权重。

接下来是特征选择环节。由于单细胞ATAC-seq数据的动态范围较窄,这使得像单细胞RNA测序那样进行变量特征选择变得困难。因此,我们可以选择仅利用特征(峰值)的前n%来进行降维处理,或者通过FindTopFeatures()函数排除在少于n个细胞中检测到的特征。在本例中,我们将采用所有特征进行分析,尽管我们发现仅使用特征的一个子集(例如,将min.cutoff设置为‘q75’以选取所有峰值的前25%)也能获得非常相似的分析结果,并且计算速度更快。该函数还会自动将用于降维的特征标记为Seurat对象的VariableFeatures()

然后,我们对选定特征的TD-IDF矩阵执行奇异值分解(SVD)。这一步骤将为我们提供数据的降维表示,对于熟悉单细胞RNA测序的用户来说,这个过程类似于主成分分析(PCA)的输出结果。

将TF-IDF标准化与SVD相结合的步骤被称为潜在语义索引(LSI),这种方法最初由Cusanovich等人在2015年引入,用于单细胞ATAC-seq数据的分析。

pbmc <- RunTFIDF(pbmc)
pbmc <- FindTopFeatures(pbmc, min.cutoff = 'q0')
pbmc <- RunSVD(pbmc)

通常,潜在语义索引(LSI)的第一个主成分反映的是测序的深度(即技术层面的变异),而非生物学上的变化。如果确实如此,那么在后续分析中应该将这个成分剔除。我们可以通过DepthCor()函数来评估每个LSI主成分与测序深度之间的相关性。

DepthCor(pbmc)
alt

我们观察到,第一个潜在语义索引(LSI)主成分与细胞的总计数数之间具有极强的相关性。因此,在后续分析中,我们将排除这个主成分,目的是避免基于细胞的总测序深度来进行细胞分组,而应依据细胞在特定细胞类型峰值上的可访问性模式来进行分组。

非线性降维和聚类

细胞已经嵌入到一个低维度的空间里,这使得我们可以采用分析单细胞RNA测序数据(scRNA-seq)时常用的方法来进行基于图的聚类分析,并通过非线性降维技术进行数据可视化。RunUMAP()FindNeighbors()FindClusters()这些函数都是Seurat软件包提供的。

pbmc <- RunUMAP(object = pbmc, reduction = 'lsi', dims = 2:30)
pbmc <- FindNeighbors(object = pbmc, reduction = 'lsi', dims = 2:30)
pbmc <- FindClusters(object = pbmc, verbose = FALSE, algorithm = 3)
DimPlot(object = pbmc, label = TRUE) + NoLegend()
alt

创建基因活动矩阵

通过UMAP的可视化技术,我们可以清晰地看到人类血液中存在许多不同的细胞群体。如果您对单细胞RNA测序(scRNA-seq)分析的外周血单个核细胞(PBMC)有所了解,您可能会在单细胞ATAC-seq数据中辨认出特定的骨髓细胞和淋巴细胞群体。然而,由于我们对非编码基因区域的功能作用了解较少,因此在单细胞ATAC-seq数据中对聚类进行注释和解读会更加困难。

我们可以通过评估与基因相关的染色质可及性来尝试量化基因组中每个基因的活性,并基于单细胞ATAC-seq数据开发出一种新的基因活性检测方法。这里,我们将采用一种简便的方法,即累加与基因本体及其启动子区域相交的片段(我们也推荐使用Cicero工具,它能够实现类似的目标,并且我们提供了一个指南,展示如何在Signac工作流中运行Cicero)。

为了构建一个基因活性矩阵,我们首先提取基因的坐标,并将其扩展到包括上游2kb的区域(因为启动子的可及性通常与基因表达相关)。接着,我们利用FeatureMatrix()函数计算每个细胞中对应这些区域的片段数量。这些步骤都可以通过GeneActivity()函数自动完成。

gene.activities <- GeneActivity(pbmc)

# add the gene activity matrix to the Seurat object as a new assay and normalize it
pbmc[['RNA']] <- CreateAssayObject(counts = gene.activities)
pbmc <- NormalizeData(
  object = pbmc,
  assay = 'RNA',
  normalization.method = 'LogNormalize',
  scale.factor = median(pbmc$nCount_RNA)
)

现在我们可以通过展示标准标记基因的活性来帮助我们解读ATAC-seq的聚类结果。需要注意的是,这些活性数据的噪声会远大于单细胞RNA测序(scRNA-seq)的测量结果。这主要是因为它们来源于稀疏的染色质数据,并且基于一个假设——即基因体或启动子的可及性与基因表达之间存在普遍的对应关系,但这种假设并不总是成立。尽管如此,我们还是可以通过这些基因活性模式开始识别出单核细胞、B细胞、T细胞和自然杀伤细胞(NK细胞)的群体。然而,仅凭监督分析来进一步细分这些细胞类型是有难度的。

DefaultAssay(pbmc) <- 'RNA'

FeaturePlot(
  object = pbmc,
  features = c('MS4A1''CD3D''LEF1''NKG7''TREM1''LYZ'),
  pt.size = 0.1,
  max.cutoff = 'q95',
  ncol = 3
)
alt

本文由 mdnice 多平台发布

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

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

相关文章

JVM严镇涛版笔记【B站面试题】

前言 2023-06-19 18:49:33 出自B站 灰灰的Java面试 枫叶云链接&#xff1a;http://cloud.fynote.com/s/4976 JVM面试题大全 Lecturer &#xff1a;严镇涛 1.为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c…

C语言 数组——计算最大值的函数实现

目录 计算最大值 计算最大值的函数实现 应用实例&#xff1a;计算班级最高分​编辑​编辑 返回最大值所在的下标位置 返回最大值下标位置的函数实现​编辑 一个综合应用实例——青歌赛选手评分​编辑​编辑​编辑​编辑​编辑 计算最大值 计算最大值的函数实现 应用实例&…

音视频开发4-补充 FFmpeg 开发环境搭建 -- 在windows 上重新build ffmpeg

本节的目的是在windows 上 编译 ffmpeg 源码&#xff0c;这样做的目的是&#xff1a;在工作中可以根据工作的实际内容裁剪 ffmpeg&#xff0c;或者改动 ffmpeg 的源码。 第一步 &#xff1a;下载&#xff0c; 安装&#xff0c;配置 &#xff0c;运行 msys64 下载 下载地址&…

【paper】基于分布式采样的多机器人编队导航信念传播模型预测控制

Distributed Sampling-Based Model Predictive Control via Belief Propagation for Multi-Robot Formation NavigationRAL 2024.4Chao Jiang 美国 University of Wyoming 预备知识 马尔可夫随机场&#xff08;Markov Random Field, MRF&#xff09; 马尔可夫随机场&#xff…

域内 dcsync 权限维持

一、原理 DCSync 是域渗透中经常会用到的技术&#xff0c;其被整合在了 Mimikatz 中。在 DCSync 功能出现之前&#xff0c;要想获得域用户的哈希&#xff0c;需要登录域控制器&#xff0c;在域控制器上执行代码才能获得域用户的哈希。 Mimikatz的DCSync 功能&#xff1a; 该…

java8总结

java8总结 java8新特性总结1. 行为参数化2. lambda表达式2.1 函数式接口2.2 函数描述符 3. Stream API3.1 付诸实践 java8新特性总结 行为参数化lambda表达式Stream Api 1. 行为参数化 定义&#xff1a;行为参数化&#xff0c;就是一个方法接受多个不同的行为作为参数&#x…

【机器学习】前沿探索,如何让前端开发更加搞笑

在当今数字化时代&#xff0c;机器学习的崛起为前端开发带来了巨大的机遇和挑战。随着人工智能和数据科学的不断进步&#xff0c;前端工程师不再局限于传统的界面设计和交互体验&#xff0c;而是开始探索如何将机器学习技术融入到他们的工作中&#xff0c;以创造更加智能、个性…

面了一个程序员,因为6休1拒绝了我

人一辈子赖以生存下去的主要就考虑三件事&#xff0c;职业&#xff0c;事业&#xff0c;副业&#xff0c;有其1-2都是很不错的。如果还没到40岁&#xff0c;那不妨提前想下自己可能遇到的一些情况&#xff0c;提前做一些准备&#xff0c;未雨绸缪些。 今年整体就业大环境也一般…

【手写大跟堆详解】

文章目录 大跟堆介绍大跟堆的结构大跟堆的应用场景大跟堆的代码实现 大跟堆介绍 大根堆&#xff08;Max Heap&#xff09;是一种特殊的二叉树结构&#xff0c;它满足以下两个条件&#xff1a; 1.完全二叉树&#xff1a;大根堆是一棵完全二叉树&#xff0c;即除了最后一层外&am…

Qt_电脑wifi相关操作

项目描述: 在做项目时用到了获取wifi的操作。在网上查找了好久资料,这里做一些总结。 这里有显示当前电脑wifi连接状态,列出wifi列表,连接断开wifi等函数。欢迎大家留言添加文章内容。 使用范围: windows电脑(中文的环境) 使用技术:windows的cmd命令。和对字符串的解析…

C语言学习笔记--运算符与表达式(7521字爆肝)

上午好&#xff0c;本来想上午改简历下午学习c语言的&#xff0c;但想了一下上午精力充沛还是用来学习比较好&#xff0c;虽然现在失业了&#xff0c;但住在我姨家有吃有住的&#xff0c;再次感谢我姨&#xff0c;我要抓紧时间修改简历&#xff0c;然后找个工作搬出去&#xff…

【回忆版】数据科学思维与大数据智能分析 2024考试

填空&#xff08;18分&#xff09;18个 1.对数变换对大数值的范围进行压缩&#xff0c;对小数值的范围进行扩展 2.提取出大量高频率项与低频率项相关联的虚假模式&#xff0c;即交叉支持&#xff08;cross-support&#xff09;模式 3.信息论中&#xff08;&#xff09; 4.几种…

[数据集][目标检测]弹簧上料检测数据集VOC+YOLO格式142张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;142 标注数量(xml文件个数)&#xff1a;142 标注数量(txt文件个数)&#xff1a;142 标注类别…

yolov8训练自己数据集时出现loss值为nan。

具体原因目前暂未寻找到。 解决办法 将参数amp改成False即可。 相关资料&#xff1a; https://zhuanlan.zhihu.com/p/165152789 https://github.com/ultralytics/ultralytics/issues/1148

【BUG】Edge|联想电脑 Bing 搜索报错“Ref A: 乱码、 Ref B:乱码、Ref C: 日期” 的解决办法

文章目录 省流版前言解决办法 详细解释版前言问题描述与排查过程解决办法与总结 省流版 前言 我也不清楚咋滴了&#xff0c;Bing 搜索突然偶尔报错&#xff1a; 换了代理关了插件都报错。 参考&#xff1a; 我在用bing搜索时出现了如下代码&#xff0c;导致bing无法使用&am…

1 计算机硬件-CPU-校验码-存储系统-输入输出设备-总线结构

计算机硬件 考情分析&#xff1a;趋势很小&#xff0c;22年考过&#xff0c;根据趋势以后考的可能较小 基本组成&#xff1a;运算器&#xff0c;控制器&#xff0c;储存器&#xff0c;输入设备&#xff0c;输出设备运算器和控制器也统称为中央处理单元&#xff08;CPU&#xf…

深度学习——图像分类(CNN)—测试模型

测试模型 1.导入必要的库2.加载测试数据集3.假设CSV文件中的图像文件名是完整的路径4.随机选择一张图片进行展示5.加载图像6.使用模型进行预测7.设置模型的预测结果8.计算准确率9.指定test文件夹路径10.读取名为image_path的图片11.加载图像12.检查图像是否为空 训练的模型是上…

eNSP学习——OSPF单区域配置

目录 相关命令 实验背景 实验目的 实验步骤 实验拓扑 实验编址 实验步骤 1、基础配置 2、部署单区域OSPF网络 3、检查OSPF单区域的配置结果 OSPF——开放式最短路径优先 基于链路状态的协议&#xff0c;具有收敛快、路由无环、扩展性好等优点&#xff1b; 相关命令 […

【JAVA基础之内部类】匿名内部类

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;小林同学的专栏&#xff1a;JAVA之基础专栏 目录 1.内部类 1.1 概述 1.1.1 什么是内部类 1.1.2 什么时候使用内部类 1.2 内部类的分类 1.3 成员内部类 1.3.1 获取成员内部类对象的两种方式 1.3.2 经典面试…

用C语言把一棵普通二叉树安排得明明白白

1. 树的相关术语 结点的度&#xff1a;一个结点含有的子树的个数称为该结点的度&#xff1b; 如上图&#xff1a;A的为6 叶结点或终端结点&#xff1a;度为0的结点称为叶结点&#xff1b; 如上图&#xff1a;B、C、H、I...等结点为叶结点 非终端结点或分支结点&#xff1a;度不…