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

news2024/11/20 14:42:37

引言

在本教学指南中,我们将探讨由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.coloradmin.cn/o/1683008.html

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

相关文章

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

英语学习笔记24——Give me/us/him/her/them some ...

Give me/us/him/her/them some … 给我/我们/他/她/他们一些…… 词汇 Vocabulary desk n. 课桌&#xff08;有书桌堂&#xff09;&#xff0c;写字台 复数&#xff1a;desks 搭配&#xff1a;desk mate 同桌    构成&#xff1a;desk mate 桌子上的伙伴 同桌    cl…

FBB-Frontiers in Bioengineering and Biotechnology

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Frontiers in Bioengineering and Biotechnology是专注生物工程和生物技术领域的开放获取期刊。 研究范围涵盖生物材料、生物力学、生物工艺工程、生物安全和生物安保&#xff0c;生物传…

计算机系统基础 7 分支程序的实现

简单条件转移指令 根据单个标志位的值&#xff08;CF&#xff0c; SF&#xff0c;OF&#xff0c;PF&#xff0c;ZF&#xff09;来确定是否转移&#xff0c; 如果条件成立&#xff0c;则&#xff08;EIP&#xff09; 位移量 ➡ EIP&#xff0c;否则什么也不做。 注意&#xff0…

【Andoird开发】android获取蓝牙权限,搜索蓝牙设备MAC

<!-- Android 12以下才需要定位权限&#xff0c; Android 9以下官方建议申请ACCESS_COARSE_LOCATION --><uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name"android.permission.ACCES…

参考文献交叉引用两个文献,逗号隔开

1.引用两个参考文献&#xff0c;定位到word正文中需要引用的位置&#xff0c;然后插入-交叉引用&#xff0c;引好文献 2.选中两个参考文献&#xff0c;切换域代码&#xff0c;然后进行修改&#xff1a; 改为 上面的两张图片中的点是空格的含义&#xff0c;word中按ctrlshift8就…

【计算机网络实验】TCP协议的抓包分析:三次握手四次挥手UDP和TCP的区别(超详细教程)

计算机网络实验——TCP协议抓包分析 文章目录 计算机网络实验——TCP协议抓包分析一、基础知识点1、运输层两个重要协议的特点对比&#xff08;TCP和UDP&#xff09;2、TCP报文的格式3、常见的TCP报文标识字段&#xff08;FLAG字段&#xff09;4、TCP连接的建立过程及理解——三…

CTFshow之文件上传web入门151关-161关解密。包教包会!!!!

这段时间一直在搞文件上传相关的知识&#xff0c;正好把ctf的题目做做写写给自字做个总结&#xff01; 不过有一个确定就是所有的测试全部是黑盒测试&#xff0c;无法从代码层面和大家解释&#xff0c;我找个时间把upload-labs靶场做一做给大家讲讲白盒的代码审计 一、实验准…

多台Centos快速区分,让Centos开机自动显示它的IP地址!

背景说明&#xff1a;当公司拥有多台Centos服务器&#xff0c;管理员很容易弄混淆导致不好区分&#xff0c;在这样的情况下我们可以写个简单脚本来实现开机自动显示它的IP地址&#xff0c;从而达到区分开来的结果&#xff01; 首先我们来开下效果&#xff0c;登录之前的 下面是…

调试时JSON库一直提示 PDB找不到 使用需要对象文件来进行调试的 /DEBUG:Fastlink生成的

最近调试时一直提示上面的提示框&#xff0c;很是烦躁。 为什么会出现这个错误呢&#xff0c;我一直使用的是/DEBUG。出现原因没有找出来&#xff0c;理论上市使用了/DEBUG:Fastlink这个模式才会出&#xff0c;但是就是一直在报这个错误。 /DEBUG&#xff08;生成调试信息&am…

Linux进程的地址空间

Linux进程的地址空间 1. 前言 在编写程序语言的代码时&#xff0c;打印输出一个变量的地址时&#xff0c;这个地址在内存中是以什么形式存在的&#xff1f;一个地址可以存储两个不同的值吗&#xff1f; 运行以下代码&#xff1a; #include <stdio.h> #include <un…

云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会

作为中马建交50周年官方重点推荐的活动之一&#xff0c;2024中国智能科技与文化展览会&#xff08;第四届&#xff09;于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…

向郭老师学习研发项目管理

学习研发项目管理思路 通过以下思路来学习研发项目管理&#xff1a; 1、研发项目管理分3级 2、研发项目管理分4类 3、研发项目管理分5大过程组 4、新产品开发项目生命周期分6个阶段 5、研发项目管理分10大知识体系 项目组合、项目集、简单项目3级管理 针对Portfolio组合…

融合基因组序列识别scATAC-seq的细胞类型

利用scATAC-seq技术进行单细胞分析&#xff0c;可以在单细胞分辨率下深入了解基因调控和表观遗传异质性&#xff0c;但由于数据的高维性和极端稀疏性&#xff0c;scATAC-seq的细胞注释仍然具有挑战性。现有的细胞注释方法大多集中在细胞峰矩阵上&#xff0c;没有充分利用潜在的…

列表的创建和删除

目录 使用赋值运算符直接创建列表 创建空列表 创建数值列表 删除列表 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501\ 对于歌曲列表大家一定很熟悉&#xff0c;在列表中记录着要播放的歌曲名称…

精品UI响应式视频教程知识付费系统源码在线教育网络课程在线点播可二开分销分站功能

这是一款知识付费平台模板&#xff0c;后台可上传本地视频&#xff0c;批量上传视频连接&#xff0c; 视频后台可设计权限观看&#xff0c;免费试看时间时长&#xff0c;会员等级观看&#xff0c;付费观看等功能&#xff0c; 也带软件app权限下载&#xff0c;帮助知识教育和软件…

数据开放最全sql面试合集(leetcode)

关注公众号“大数据领航员"领取PDF版本和大数据面经 https://leetcode-cn.com/problemset/database/ 题目都是leetcode 上了可以点击题目会有相应的链接 由于个人比较喜欢用开窗函数&#xff0c;所以都优先用了开窗 &#xff0c;当然这些并不一定都是最优解&#xff0c…

【C++】多态(多态的原理)

在本篇博客中&#xff0c;作者将会带领你深入理解C中的多态。 声明&#xff01;&#xff01;&#xff01;本代码以及讲解都是在32位机器下进行完成的&#xff0c;64位机器下会有所不同&#xff0c;但大同小异。 一.多态的概念 什么是多态&#xff1f; 多态就是不同的对象去做…

patroni 部分源码阅读

问题1 /usr/local/lib/python3.9/site-packages/patroni/postgresql/init.py 964 contextmanager 965 def get_replication_connection_cursor(self, hostNone, port5432, **kwargs): 966 conn_kwargs self.config.replication.copy() 967 conn_kwar…

【Kubernetes】kubectl详解

陈述式资源管理方法&#xff1a; 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的…