生信入门(六)——单细胞分析(Seurat)

2023-10-31

生信入门(六)——单细胞分析(Seurat)

一、数据导入

1、数据来源

点击此处下载数据
数据说明:分析10X Genomics提供的外周血单细胞(PBMC)数据集,有2700个单细胞在illuminate NextSeq500上测序

2、数据导入

setwd("D:/RData/prac004")
# BiocManager::install("Seurat")
library(Seurat)
library(dplyr)
library(patchwork)
# 导入数据
pbmc.data<-Read10X(data.dir = "./filtered_gene_bc_matrices/hg19")
# 初始化seurat数据
pbmc<-CreateSeuratObject(counts = pbmc.data,project = "pbmc3k",min.cells = 3,min.features = 200)
# pbmc

运行结果
在这里插入图片描述

二、标准预处理

该处包括基于QC指标(质控分析)、数据标准化和缩放以及高度可变特征检测的细胞选择和过滤

1、QC和选择细胞进行进一步分析

常用的QC指标包括:

  • 在每个细胞中检测到的独特基因的数量。

     	低质量细胞或空液滴通常只有很少的基因
     	细胞双联体或多重联体可能表现出异常高的基因计数
    
  • 同样,在细胞内检测到的分子总数(与独特的基因密切相关)

  • 映射到线粒体基因组的读数百分比

     低质量/垂死的细胞通常表现出广泛的线粒体污染
     我们使用该PercentageFeatureSet()函数计算线粒体 QC 指标,该函	数计算源自一组特征的计数百分比
     我们使用所有基因MT-的集合作为一组线粒体基因
    
#使用PercentageFeatureSet函数计算线粒体QC指标
pbmc[['percent.mt']]<-PercentageFeatureSet(pbmc,pattern = "^MT-")
# 使用violin plot可视化  QC指标,并使用这些指标过滤单元格
VlnPlot(pbmc,features = c("nFeature_RNA","nCount_RNA","percent.mt"),ncol = 3)
# FeatureScatter 通常用于可视化两个特征之间的关系
plot1<-FeatureScatter(pbmc,feature1 = "nCount_RNA",feature2 = "percent.mt")
plot2<-FeatureScatter(pbmc,feature1 = "nCount_RNA",feature2 = "nFeature_RNA")
plot1+plot2
# 将QC指标可视化,并使用这些指标过滤单元格
# 过滤具有2500或少于200的独特特征计数的单元格,过滤线粒体计数>5%的细胞
pbmc<-subset(pbmc,subset=nFeature_RNA>200 & nFeature_RNA<2500 & percent.mt<5)

运行结果
在这里插入图片描述
在这里插入图片描述

2、规范化数据

默认情况下,采用全局缩放归一化方法(LogNormalize),该方法将每个单元格的特征表达式测量值按总表达进行归一化,将其乘以比例因子(默认为10000),并对结果进行对数转换。标准化值存储在pbmc[[“RNA”]]@data中

# 数据规范化
pbmc<-NormalizeData(pbmc,normalization.method = "LogNormalize",scale.factor = 10000)

运行结果
在这里插入图片描述

3、识别高度可变的特征(特征选择)

计算在数据集中表现出高细胞间变异的特征子集(即,他们在某些细胞中高度表达,而在其他细胞中表达低)——有研究发现,在下游分析中关注这些基因有助于突出单细胞数据集中的生物信号

# 识别高度可变的特征(特征选择)
pbmc<-FindVariableFeatures(pbmc,selection.method = "vst",nfeatures = 2000)
# 确定高表达的前十个基因
top10<-head(VariableFeatures(pbmc),10)
plot1<-VariableFeaturePlot(pbmc)
plot2<-LabelPoints(plot = plot1,points = top10,repel = TRUE)
plot1+plot2

运行结果

4、缩放数据

应用线性变换(“缩放”),这是在降维计数(如PCA)之前的标准预处理步骤。ScaleData()函数:

  • 改变每个基因的表达,使跨细胞的平均表达为0

  • 缩放每个基因的表达,使细胞间的方差为1

      该步骤在下游分析中给予同等权重,因此高表达基因不会占主导地位
    
  • 结果存储在pbmc[[“RNA”]]@scale.data

# 缩放数据
all.genes<-rownames(pbmc)
pbmc<-ScaleData(pbmc,features = all.genes)

运行结果
在这里插入图片描述

三、主成分分析(PCA)

1、线性降维

# 线性降维
pbmc<-RunPCA(pbmc,features = VariableFeatures(object=pbmc))
print(pbmc[["pca"]],dims = 1:5,nfeatures = 5)

运行结果
在这里插入图片描述
可视化处理

# Seurat提供可视化细胞和定义PCA,包括功能的几种有用的方法ViziDimReduction(),DimPlot()和DimHeatmap()
VizDimLoadings(pbmc,dims = 1:2,reduction = "pca")
DimPlot(pbmc,reduction = "pca")
DimHeatmap(pbmc,dims = 1,cells = 500,balanced = TRUE)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DimHeatmap()允许轻松探索数据集中异质性的主要来源,并且在尝试决定包含哪些PC以进行进一步下游分析时非常有用。单元格和特征都根据其PCA分数进行排序。设置cells为一个数字会在频谱的两端绘制极端单元格,这加快了大型数据集的绘制速度。

DimHeatmap(pbmc,dims = 1:15,cells=500,balanced = TRUE)

运行结果
在这里插入图片描述

2、确定数据集的“维度”

为了克服scRNA-seq数据的任何单个特征中的广泛技术噪音,Seurat根据其PCA分数对细胞进行聚类。每个PC基本代表一个“元特征”,该“元特征”组合了相关特征集的信息。因此,顶部主成分代表数据集的稳健压缩。但是,应该选择包含多少个组件?10?20?100?

# 确定数据集的维度
pbmc<-JackStraw(pbmc,num.replicate = 100)
pbmc<-ScoreJackStraw(pbmc,dims = 1:20)

运行结果

JackStrawPlot()函数提供了一个可视化工具,用于将每个PC的p值分布于均匀分布(虚线)进行比较。“显着”PC将显示出大量具有低p值得特征(虚线上方的实线)。在这种情况下,在前10-12个PC之后,重要性似乎急剧下降

# 可视化处理
JackStrawPlot(pbmc,dims = 1:15)

在这里插入图片描述
另一个启发式方法会生成一个“肘图”:根据每个(ElbowPlot()函数)解释的方差百分比对主成分进行排名。在这个例子中,我们可以观察到PC9-10周围的“肘部”,这表明大部分真是信号是在前10个PC中捕获的

ElbowPlot(pbmc)

在这里插入图片描述
识别数据集的真实维度——对用户来说可能具有挑战性/不确定性。因此,我们建议考虑这三种方法。第一个是更受监督的,探索 PC 以确定异质性的相关来源,例如可以与 GSEA 结合使用。第二个实现了基于随机空模型的统计测试,但对于大型数据集很耗时,并且可能无法返回清晰的 PC 截止值。第三种是常用的启发式方法,可以即时计算。在这个例子中,所有三种方法都产生了相似的结果,但我们可能有理由选择 PC 7-12 之间的任何东西作为截止点。
我们在这里选择了 10 个,但鼓励用户考虑以下几点:

  • 树突状细胞和 NK 爱好者可能会认识到与 PC 12 和 13 密切相关的基因定义了罕见的免疫亚群(即 MZB1 是浆细胞样 DC 的标志物)。然而,这些群体非常罕见,在没有先验知识的情况下,很难将这种规模的数据集与背景噪声区分开来。
  • 鼓励用户使用不同数量的 PC(10、15 甚至 50 台!)重复下游分析。正如您将观察到的,结果通常不会有太大差异。
  • 建议用户在选择此参数时将错误偏高。例如,仅使用 5 台 PC 执行下游分析会对结果产生显着的不利影响。

四、聚类细胞

# 聚类细胞
# 建立KNN图,并基于其局部领域中的共享重叠细化任意两个单元之间的边权重
pbmc<-FindNeighbors(pbmc,dims = 1:10)
#对细胞进行聚类,应用模块化优化技术,Louvain算法(默认)或SLM
# 以迭代方式将细胞分组在一起,目标是优化标准模块化函数
pbmc<-FindClusters(pbmc,resolution = 0.5)
head(Idents(pbmc),5)

运行结果
在这里插入图片描述

五、非线性降维(UMAP/tSNE)

Seurat提供了多种非线性降维技术,例如tSNE和UMAP,以可视化和探索这些数据集。这些算法的目标是学习数据的底层流形,以便将相似的单元格放在低维空间中。上面确定的基于图形的集群中的单元格应该共同定位在这些降维图中。作为UMAP和tSNE的输入,建议使用相同的PC作为聚类分析的输入

# 运行非线性降维(UMAP/tSNE)
pbmc<-RunUMAP(pbmc,dims = 1:10)
DimPlot(pbmc,reduction = "umap")

在这里插入图片描述

六、寻找差异表达的特征(簇生物标志物)

Seurat可以帮助找到通过差异表达定义聚类的标记。

# 寻找差异表达的特征(簇生物标志物)
# findmarkers为所有集群自动执行此过程,也可以测试集群组之间的对比,或针对所有单元格进行测试
# 默认情况下,ident.1与所有其他细胞相比,他识别单个簇的阳性和阴性标记。
# min.pct参数要求在两组细胞中的任何一组中以最小百分比检测到一个特征
# 而 thresh.test 参数要求一个特征在两组之间差异表达(平均)一定量
# 寻找cluster2的所有markers
cluster2.markers<-FindMarkers(pbmc,ident.1 = 2,min.pct = 0.25)
head(cluster2.markers,n=5)

# 寻找cluster5中与cluster0和cluster3n不同的所有markers
cluster5.markers<-FindMarkers(pbmc,ident.1 = 5,ident.2=c(0,3),min.pct = 0.25)
head(cluster5.markers,n=5)

# 找出每个细胞簇的标记物,与所有剩余的细胞进行比较,只报告阳性细胞 
pbmc.markers<-FindAllMarkers(pbmc,only.pos = TRUE,min.pct = 0.25,logfc.threshold =0.25 )
pbmc.markers %>%
  group_by(cluster) %>%
  slice_max(n=2,order_by = avg_log2FC)

运行结果
在这里插入图片描述
在这里插入图片描述

# 还有用于可视化标记表达的工具,Vlnplot(显示跨集群的表达概率分布)和FeaturePlot()(在tSNE或PCA图上可视化特征表达)是最常用的可视化,建议探索RidgePlot(),CellScatter(),和DotPlot()作为查看数据集的其他方法
VlnPlot(pbmc,features = c("MS4A1","CD79A"))
# 可以绘制行数据
VlnPlot(pbmc,features = c("NKG7","PF4"),slot = "counts",log = TRUE)

运行结果
在这里插入图片描述
在这里插入图片描述

FeaturePlot(pbmc,features = c("MS4A1", "GNLY", "CD3E", "CD14", "FCER1A", "FCGR3A", "LYZ", "PPBP",
                              "CD8A"))

在这里插入图片描述

#DoHeatmap()为给定的细胞和特征生成一个表达热图。在这种情况下,我们为每个集群绘制前 20 个标记(或所有标记,如果小于 20)。
pbmc.markers%>%
  group_by(cluster)%>%
  top_n(n=10,wt=avg_log2FC)->top10
DoHeatmap(pbmc,features = top10$gene)+NoLegend()

在这里插入图片描述

# 将细胞类型标识分配给集群
new.cluster.ids<-c("Naive CD4 T", "CD14+ Mono", "Memory CD4 T", "B", "CD8 T", "FCGR3A+ Mono",
                   "NK", "DC", "Platelet")
names(new.cluster.ids)<-levels(pbmc)
pbmc<-RenameIdents(pbmc,new.cluster.ids)
DimPlot(pbmc,reduction = "umap",label = TRUE,pt.size = 0.5)+NoLegend()
saveRDS(pbmc,file = "./pbmc3k_final.rds")

在这里插入图片描述
告一段落

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生信入门(六)——单细胞分析(Seurat) 的相关文章

  • Navicat for MySQL客户端启动报missing required library libmysq_e.dll126 错误

    Navicat for MySQL客户端启动报missing required library libmysq e dll126 错误 是因为缺少libmysq e dll 文件所致 下载libmysq e dll 文件拷贝到到Navica
  • Stata输出统计结果到Excel或word

    目录 一 安装外部包 二 相关命令 三 实例 1 描述性统计结果输出 2 相关性结果输入 3 回归结果输出 1 单模型结果 2 多模型结果 参考 一 安装外部包 在Stata内安装外部包 estout和logout ssc install
  • Error in createDataPartition(...):y must have at least 2 data points

    项目场景 在R中使用caret包 划分训练集和测试集时 出现错误Error in createDataPartition data OS STATUS p 0 5 list FALSE y must have at least 2 data
  • 【生信原理】初探芯片表达谱分析

    初探芯片表达谱分析 文章目录 初探芯片表达谱分析 实验目的 实验内容 实验题目 实验过程 数据的获取 解压与读取 数据预处理 背景纠正 标准化和探针信号汇总等 数据过滤 探针过滤 探针注释 添加基因注释信息 limma差异分析 差异表达基因
  • R语言 数据处理(一)

    数据合并 提取及降维处理 install packages dplyr 数据处理包dplyr library dplyr name1 lt c Bob Mary Jane Kim name2 lt c Bob Mary Kim Jane w
  • r语言写九九乘法表并保存为txt文件

    r语言写九九乘法表并保存为txt文件 代码 for i in 1 9 for j in 1 i cat j x i i j t file 九九乘法表 txt append TRUE cat n file 九九乘法表 txt append T
  • R语言的Rattle可视化BI数据挖掘分析工具

    Rattle介绍 Rattle是一个免费的开源数据挖掘工具包 使用 Gnome 图形界面以统计语言 R编写 它在GNU Linux Macintosh OS X和MS Windows下运行 Rattle正在澳大利亚和国际上用于商业 政府 研
  • 如何用R分析CNKI文献关键词词频?

    疑惑 如何用VOSviewer分析CNKI数据 一文发布后 有同学问我 王老师 我有个问题 我用cnki导出关键词后 想统计关键词的词频 我应该用什么样的工具 如果不利用citespace和python 做出excel那种的统计表格 该怎么
  • 第六章课后习题及答案

    第六章习题答案 转载于 https www cnblogs com hhdn archive 2007 05 27 761356 html
  • 802.11K/V/R协议介绍

    802 11K V R协议介绍 1 传统无线漫游介绍 1 1 什么是无线漫游 一台无线终端备 STA 通过连接Wi Fi获取上网体验 Wi Fi名称 又称为SSID 是由无线接入网 AP 提供的 因为一台AP设备的覆盖范围有限 所以无线网络
  • 使用R语言中的survival包进行生存分析是一种常见的统计方法

    使用R语言中的survival包进行生存分析是一种常见的统计方法 在生存分析中 我们经常需要创建一个生存对象来存储事件发生时间和事件状态 在本文中 我们将介绍如何使用survival包中的Surv函数来创建生存对象 并解读其结果 Surv函
  • R语言基础——缺失数据

    R语言基础 缺失数据 缺失数据的分类 统计学家通常将缺失数据分为三类 它们都用概率术语进行描述 但思想都非常直观 我们将用sleep研究中对做梦时长的测量 有12个动物有缺失值 来依次阐述三种类型 1 完全随机缺失 若某变量的缺失数据与其他
  • R语言中用于计算Rsquare的包rsq

    文章目录 理论介绍 线性模型情形 广义线性模型情形 函数介绍 rsq 的介绍 实例 rsq partial 的介绍 相关文献 pcor 函数介绍 vresidual 函数介绍 实例 理论介绍 线性模型情形 R squared 值范围 0 1
  • Class 06 - 良好的编码习惯(保持代码的可读性)

    Class 06 良好的编码习惯 保持代码的可读性 保持代码的可读性 编码风格 命名的注意事项 文件名 对象名称 语法 运算符 逗号 中括号和小括号 大括号 代码缩进 代码的长度 赋值 注释 调试报错 保持代码的可读性 在编写 R语言 或任
  • 统计学三大分布(卡方、t、F)即相应概率密度图的R语言实现

    三大统计分布 1 2 chi 2 2分布 设随机变量 X 1
  • 使用lattice包的bwplot函数绘制箱图比较多个模型在不同指标上的性能差异(R语言)

    使用lattice包的bwplot函数绘制箱图比较多个模型在不同指标上的性能差异 R语言 箱图是一种常用的数据可视化方法 用于表示一组数据的分布特征 包括中位数 四分位数 异常值等 在比较多个模型在多个指标上的性能差异时 箱图可以提供直观的
  • [R语言] R语言PCA分析教程 Principal Component Methods in R

    R语言PCA分析教程 Principal Component Methods in R 代码下载 主成分分析Principal Component Methods PCA 允许我们总结和可视化包含由多个相互关联的定量变量描述的个体 观察的数
  • 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)<转>

    干货 Chrome插件 扩展 开发全攻略 不点进来看看你肯定后悔 写在前面 我花了将近一个多月的时间断断续续写下这篇博文 并精心写下完整demo 写博客的辛苦大家懂的 所以转载务必保留出处 本文所有涉及到的大部分代码均在这个demo里面 h
  • 计算机科学丛书(2014-2018.Q1)

    ISBN 名称 作者 出版时间 978 7 111 53451 8 数学设计和计算机体系结构 原书第2版 美 戴维 莫尼 哈里斯 莎拉 L 哈里斯著 978 7 111 44075 8 嵌入式计算系统设计原理 美 Marilyn Wolf著
  • 4. 统计描述和基线表格绘制

    目录 1 连续型变量统计描述 单变量统计描述 1 summary函数 2 psych包中的describe 函数 3 Hmisc包中的describe 函数 4 pastecs包的stat desc 的函数 分组统计描述 1 doBy包的s

随机推荐

  • 2020暨南大学计算机专硕考研经验分享

    具体的研究生招生录取情况 初试复试比例 和初复试的流程可以看下面链接这篇 总结得很好 2020暨南大学计算机考研经验分享 精品 含录取名单 学习等资料获取 前期都是各位学长的帮助 真的非常感谢 尤其了知乎上分享经验的18级李学长 集中资料
  • stata怎么判断是否存在异常值_异常值的识别与处理,看这一篇就够了

    原标题 异常值的识别与处理 看这一篇就够了 在数据分析工作中 面对收集而来的数据 数据清洗是首要环节 而异常值处理是其中的一个重要部分 下面就给大家介绍一下如何处理数据中的异常值 一 异常值判断 何为异常值 异常值 指的是样本中的一些数值明
  • 关于CLion有时找不到标准库的解决方案

    关于CLion有时找不到标准库的解决方案 CLion是linux下C 开发的利器 出色的语法高亮 支持cmake工程让同类IDE望尘莫及 但是我在实际开发中遇到了标准库 STL 相关的语法高亮不能正常运行的问题 问题情境 我们用UBUNTU
  • PyQt QTextEdit 详细用法示例 Python

    PyQt QTextEdit 详细用法示例 Python QTextEdit 是 PyQt 中用于显示和编辑文本的小部件之一 它提供了丰富的功能 包括文本格式化 文本样式 撤销和重做操作等 在本文中 我们将探讨 QTextEdit 的详细用
  • unity could not produce class with id 210 --- TerrainInstance 其实是 UnityEngine.CoreModule.Sorting

    Strip Engine Code 幾重 張 巡 罠 https qiita com warapuri items e2562e9535bfae5013d0 More than 1 year has passed since last up
  • 在windows下详解:大端对齐和小端对齐

    计算机的内存最小单位是什么 是BYTE 是字节 一个大于BYTE的数据类型在内存中存放的时候要有先后顺序 高内存地址放整数的高位 低内存地址放整数的低位 这种方式叫倒着放 术语叫小端对齐 电脑X86和手机ARM都是小端对齐的 高内存地址放整
  • IP地址、子网掩码、网络地址、广播地址、IP网段

    文章目录 IP地址 IP地址分类 子网掩码 网络地址 广播地址 IP网段 本文主要讨论iPv4地址 IP地址 实际的 IP 地址是一串32 比特的数字 按照 8 比特 1 字节 为一组分成 4 组 分别用十进制表示然后再用圆点隔开 这就是我
  • 关于CMAKE 报错CMAKE_CUDA_ARCHITECTURES的问题

    背景 新版本cmake 增加了CMAKE CUDA ARCHITECTURES检测 某些手动安装cuda的同学会遇到该报错问题 该问题不影响代码 只是cmake内部的编译设置 cmake 3 23版本该问题报错为 CMAKE CUDA AR
  • java渗透测试基础之——RMI

    一 概述 RMI全称是Remote Method Invocation 远程方法调用 是专为Java环境设计的远程方法调用机制 远程服务器提供API 客户端根据API提供相应参数即可调用远程方法 由此可见 使用RMI时会涉及到参数传递和结果
  • 利用python建立股票量化交易系统(一)——小市值选股票模型

    从今天开始正式开启我的博客之旅 博客内容全部是我自己的量化心得 主要还是为自己将来中工作之中遇到相似问题 可以方便的找到答案 如果能帮到有相似问题的其他同学 我也很开心 如果帮不到的话 不喜勿喷 如果文章中有什么不对的地方 欢迎批评指正 建
  • 新版QQ代挂系统源码四套模板

    介绍 代挂源码 代挂对接教程源码已简洁版优化框架数据 对接代挂教程均在 压缩文件里 源码进行了优化 原后门已清楚掉 上传源码解压即可安装访问网址 网盘下载地址 https zijiewangpan com VylBgT70aLu 图片
  • 连接Charles后,小程序无法打开,提示“运行失败”解决方法

    今天在使用Charles抓包的过程中 手机端安装了证书 并且证书安装成功 使用手机浏览器可以正常抓包 但是在使用微信打开小程序准备测试时 无法打开 并且提示 运行环境失败 于是做了以下几个操作 最后可以成功抓包 1 微信版本升级 将微信卸载
  • Java代码中如何判断一个HashMap对象是否为空呢?

    转自 Java代码中如何判断一个HashMap对象是否为空呢 下文讲述检测HashMap集合对象是否无元素的方法分享 如下所示 实现思路 使用isEmpty方法即可检测HashMap中的元素是否为空 isEmpty 语法 hashmap i
  • 学习Javascript的书籍

    原文地址 http www ruanyifeng com blog 2008 01 javascript book recommendation html 作者 阮一峰 日期 2008年1月 9日 昨天 ppip同学留言 你的js主要是用什
  • SQL Server(2019)数据库----数据查询(数据库系统概论第五版)

    目录 一 课本例题查询 1 查询全体学生的姓名及其出生年份 2 查询全体学生的姓名 出生年份和所在的院系 要求用小写字母表示系名 3 查询选修了课程的学生学号 4 查询不是数学系 计算机系学生的姓名和性别 5 查询选修了3号课程的学生的学号
  • Redis面试题(四)

    文章目录 前言 一 锁互斥机制 二 watch dog 自动延期机制 三 可重入加锁机制 四 释放锁机制 五 上述 Redis 分布式锁的缺点 六 使用过 Redis 分布式锁么 它是怎么实现的 总结 前言 锁互斥机制 watch dog
  • QT中信号与槽的连接

    本文章主要通过代码的形式讲解QT中connect函数对于信号和槽函数的连接 include mainwindow h include ui mainwindow h include
  • 搞事情之使用七牛云的注意事项

    原文地址 PJ 的 iOS 开发日常 前言 本博客最初所采用的图床就是七牛 当时因为第一次使用图床之类的服务 没有进行一个比较好的筛选 并且没有考虑过多的细节 所以直接采用了七牛 经过一段时间后 因为博客访问量上去了 超出七牛每月的免费流量
  • C++ malloc/free/new/delete详解(内存管理)

    这里写目录标题 malloc free 典型用法 内存分配 实现过程 brk和mmap 申请小于128k的内存 申请大于128k的内存 释放内存 brk和mmap的区别 new delete 典型用法 内存分配 实现过程 new delet
  • 生信入门(六)——单细胞分析(Seurat)

    生信入门 六 单细胞分析 Seurat 文章目录 生信入门 六 单细胞分析 Seurat 一 数据导入 1 数据来源 2 数据导入 二 标准预处理 1 QC和选择细胞进行进一步分析 2 规范化数据 3 识别高度可变的特征 特征选择 4 缩放