单细胞Seurat - 数据处理 (2)

简介: 单细胞Seurat - 数据处理 (2)

本系列持续更新Seurat单细胞分析教程,欢迎关注!

标准化

从数据集中删除不需要的细胞后,下一步是数据标准化。默认情况下,我们采用全局缩放标准化方法“LogNormalize”,该方法将每个单元格的特征表达测量值标准化为总表达,将其乘以比例因子(默认为 10,000),并对结果进行对数转换。在 Seurat v5 中,标准化值存储在 pbmc[["RNA"]]$data 中。

pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)

为了清楚起见,在前面的代码行中,我们为函数调用中的某些参数提供了默认值。

pbmc <- NormalizeData(pbmc)

虽然这种标准化方法是标准方法并广泛用于 scRNA-seq 分析,但全局缩放依赖于每个细胞最初包含相同数量的 RNA 分子的假设。我们和其他人已经为单细胞预处理开发了替代工作流程,但不做出这些假设。对于感兴趣的用户,请查看 SCTransform() 标准化工作流程,论文中描述了该方法。

特征选择:识别高度可变的特征

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

默认情况下Seurat每个数据集返回 2,000 个特征。这些将用于下游分析,例如 PCA。

pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)

# Identify the 10 most highly variable genes
top10 <- head(VariableFeatures(pbmc), 10)

# plot variable features with and without labels
plot1 <- VariableFeaturePlot(pbmc)
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
plot1 + plot2

缩放数据

接下来,我们应用线性变换(“缩放”),这是 PCA 等降维技术之前的标准预处理步骤。 ScaleData() 函数:

  • 改变每个基因的表达值,使细胞间的平均表达为 0
  • 缩放每个基因的表达,使细胞间的方差为 1
    • 此步骤在下游分析中给予同等的权重,因此高表达的基因不会占主导地位
  • 结果存储在 pbmc[["RNA"]]$scale.data 中
  • 默认情况下,仅缩放可变特征。
  • 您可以指定 features 参数来缩放附加功能
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes)
  • 如何消除不需要的变异源

在 Seurat 中,使用 ScaleData() 函数从单细胞数据集中删除不需要的变异源。例如,我们可以“回归”与细胞周期阶段或线粒体污染相关的异质性,即:

pbmc <- ScaleData(pbmc, vars.to.regress = "percent.mt")

但是,特别是对于想要使用此功能的高级用户,我们强烈建议使用新的规范化工作流程 SCTransform()。与 ScaleData() 一样,函数 SCTransform() 也包含 vars.to.regress 参数。

线性降维

接下来我们对缩放后的数据执行 PCA。默认情况下,仅将先前确定的可变特征用作输入,但如果您希望选择不同的子集,则可以使用 features 参数进行定义(如果您确实想使用自定义的特征子集,请确保首先将它们传递给 ScaleData )。

对于第一个主成分,Seurat 输出具有最大正负载荷的基因列表,代表在数据集中的单细胞之间表现出相关(或反相关)的基因模块。

pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))

Seurat 提供了几种有用的方法来可视化定义 PCA 的单元格和特征,包括 VizDimReduction()、DimPlot() 和 DimHeatmap()

# Examine and visualize PCA results a few different ways
print(pbmc[["pca"]], dims = 1:5, nfeatures = 5)

## PC_ 1 
## Positive:  CST3, TYROBP, LST1, AIF1, FTL 
## Negative:  MALAT1, LTB, IL32, IL7R, CD2 
## PC_ 2 
## Positive:  CD79A, MS4A1, TCL1A, HLA-DQA1, HLA-DQB1 
## Negative:  NKG7, PRF1, CST7, GZMB, GZMA 
## PC_ 3 
## Positive:  HLA-DQA1, CD79A, CD79B, HLA-DQB1, HLA-DPB1 
## Negative:  PPBP, PF4, SDPR, SPARC, GNG11 
## PC_ 4 
## Positive:  HLA-DQA1, CD79B, CD79A, MS4A1, HLA-DQB1 
## Negative:  VIM, IL7R, S100A6, IL32, S100A8 
## PC_ 5 
## Positive:  GZMB, NKG7, S100A8, FGFBP2, GNLY 
## Negative:  LTB, IL7R, CKB, VIM, MS4A7

VizDimLoadings(pbmc, dims = 1:2, reduction = "pca")

DimPlot(pbmc, reduction = "pca") + NoLegend()

特别是 DimHeatmap() 允许轻松探索数据集中异质性的主要来源,并且在尝试决定包含哪些 PC 进行进一步的下游分析时非常有用。细胞和特征均根据其 PCA 分数进行排序。将细胞设置为数字会在频谱两端绘制“极端”细胞,这会显着加快大型数据集的绘图速度。虽然是一种监督分析,但我们发现这是探索相关特征集的宝贵工具。

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

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

未完待续,持续更新,欢迎关注!

相关文章
|
11月前
|
数据可视化 数据挖掘
Scanpy 分析 scRNA-seq:降维与聚类
Scanpy 分析 scRNA-seq:降维与聚类
Scanpy 分析 scRNA-seq:降维与聚类
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
9月前
|
安全 网络协议 Java
Apache Log4j远程代码执行漏洞详解与利用指南
在尝试连接至192.168.0.1的9999端口时,采用base64编码可以进一步提升连接的安全性。通过将连接命令进行base64编码,然后在目标系统上执行解码操作,从而实现对9999端口的隐蔽且安全的连接。但请务必在合法且获得明确授权的前提下使用此方法,同时需严格遵循相关法规和道德规范。
|
数据可视化 关系型数据库 数据挖掘
scRNA分析|一(尽)文(力)解决你的单细胞火山图问题
scRNA分析|一(尽)文(力)解决你的单细胞火山图问题
2069 0
都8102年了,还用fastq-dump,快换fasterq-dump吧
之前写过一篇文章Fastq-dump: 一个神奇的软件, 详细介绍了fastq-dump的用法。 虽然fastq-dump参数很多,而且一直被吐槽参数说明写的太差,但是如果真的要用起来其实也就是一行代码 fastq-dump --gzip --split-3 --defline-qual &#39;+&#39; --defline-seq &#39;@$ac-$si/$ri&#39; SRRXXXXX| SRRXXXX.sra # 加上--gzip后需要时间进行文件压缩 当然除了参数问题,还有一个让人诟病的地方就是他只能单个线程,所以速度特别的慢。
5657 0
都8102年了,还用fastq-dump,快换fasterq-dump吧
|
机器学习/深度学习 算法 数据可视化
【机器学习】比较分层聚类(Hierarchical Clustering)和K-means聚类算法
【5月更文挑战第12天】【机器学习】比较分层聚类(Hierarchical Clustering)和K-means聚类算法
|
存储 Go 数据库
R|clusterProfiler-富集分析
R|clusterProfiler-富集分析
1056 0
|
监控 测试技术 Shell
APP的CPU,内存和流量如何测试?
APP的CPU,内存和流量如何测试?
756 0
|
存储 Java 关系型数据库
|
SQL 搜索推荐 Linux
Seurat -> RunPrestoAll 替代FindAllMarkers 加速DE 搜索
本文分享了一种在Seurat 流程里面加速大型数据集执行 DE 分析的方法 RunPrestoAll 的用法示例,以供参考学习
2440 0