单细胞分析(九)——使用sctransform函数标准化

单细胞 RNA-seq 数据的生物异质性常常受到测序深度等技术因素的影响。每个细胞中检测到的分子数量在细胞之间可能存在显着差异,即使在同一细胞类型内也是如此。 scRNA-seq 数据的解释需要有效的预处理和标准化,以消除这种技术变异性。在 Hafemeister 和 Satija,2019 年,seurat实验室引入了一个建模框架,用于对 scRNA-seq 实验中的分子计数数据进行归一化和方差稳定。该过程省略了对启发式步骤的需要,包括伪计数加法或对数转换,并改进了常见的下游分析任务,例如变量基因选择、降维和差异表达。

在这个tutorial中,演示了如何使用基于 sctransform 的标准化来恢复与对数标准化相比更清晰的生物学差异。

加载Rpackage

library(Seurat)
library(ggplot2)
library(sctransform)

加载数据创建seurat对象

### sample list
samples <- read_excel("../data/metadata/patients_metadata.xlsx", range = cell_cols("A:A")) %>% .$sample_id
# 根据研究情况,确定研究样本即可

### import cellranger files from different data sets
for (i in seq_along(samples)){
  assign(paste0("scs_data", i), Read10X(data.dir = paste0("../data/cellranger/", samples[i], "/filtered_feature_bc_matrix")))
}

### create seurat objects from cellranger files
for (i in seq_along(samples)){
  assign(paste0("seu_obj", i), CreateSeuratObject(counts = eval(parse(text = paste0("scs_data", i))), project = samples[i], min.cells = 3))
}

### merge data sets
seu_obj <- merge(seu_obj1, y = c(seu_obj2, seu_obj3, seu_obj4, seu_obj5, seu_obj6, seu_obj7, seu_obj8, seu_obj9, seu_obj10, seu_obj11, seu_obj12, seu_obj13, seu_obj14, seu_obj15, seu_obj16, seu_obj17, seu_obj18, seu_obj19, seu_obj20), add.cell.ids = samples, project = "SC")
# 根据研究内容,输入相应的project即可

使用sctransform进行标准化

  • 这个命令取代了 NormalizeData()、ScaleData() 和 FindVariableFeatures()。
  • 转换后的数据将在 SCT 测定中可用,运行 sctransform 后设置为默认值。
  • 在标准化过程中,我们还可以消除混杂的变异来源,例如线粒体作图百分比
# store mitochondrial percentage in object meta data
seu_obj[["percent.mt"]] <- PercentageFeatureSet(seu_obj, pattern = "^MT-")

# run sctransform
seu_obj <- SCTransform(seu_obj, vars.to.regress = "percent.mt", verbose = FALSE)

参数学习
seu_obj: 这是你之前提到的Seurat对象,表示你要对这个对象中的数据执行SCTransform处理。

SCTransform(): 这是一个函数调用,用于执行SCTransform处理。

verbose = T: 这个参数设置为TRUE,表示在执行SCTransform时会输出一些详细的信息,通常用于调试和监控处理进度。

vars.to.regress = “percent.mt”: 这是一个用于回归的参数,它指定了要从数据中回归掉的变量。在这里,选择了变量:“percent.mt”。这通常是为了排除一些技术因素对数据的影响。

conserve.memory = T: 这个参数设置为TRUE,表示在处理时尽量减少内存的使用,以避免内存不足的问题。

# These are now standard steps in the Seurat workflow for visualization and clustering
seu_obj <- RunPCA(seu_obj, verbose = T)
seu_obj <- RunUMAP(seu_obj, dims = 1:30, verbose = T)

seu_obj <- FindNeighbors(seu_obj, dims = 1:30, verbose = FALSE)
seu_obj <- FindClusters(seu_obj, verbose = FALSE)
DimPlot(seu_obj, label = TRUE) + NoLegend()

SCTransform() 函数的主要作用是用于对单细胞RNA测序数据进行数据预处理和归一化,以便在后续的分析中减少技术噪音和批次效应的影响,同时使数据更具可比性。以下是 SCTransform() 函数的主要作用:

数据变换:SCTransform() 使用单细胞RNA测序数据,对每个细胞的基因表达数据进行变换。这种变换通常采用对数变换,如对每个细胞的基因表达值取自然对数,以减小数据中的技术噪音。

去批次效应:SCTransform() 可以校正或去除实验中不同批次(如不同时间点、不同样本等)导致的批次效应,从而使数据更加可比。

潜在变量调整:该函数支持通过指定潜在变量(latent variables)来进一步调整数据,以考虑潜在的来源于细胞特性或其他因素的变异性。

数据缩放和中心化:SCTransform() 可以选择性地对数据进行缩放和中心化,以使数据的均值和方差达到一致性,这在许多单细胞分析中是重要的。

返回变量特征:函数通常返回一个包含变量特征的数据集,以便在后续分析中选择重要的基因进行进一步研究。

可视化和分析:SCTransform() 还可以作为准备数据以进行单细胞RNA测序数据分析和可视化的重要步骤,帮助研究人员理解数据并进行后续的数据挖掘和探索。

SCTransform() 函数是单细胞RNA测序数据分析中的重要工具,用于预处理数据,降低噪音,校正批次效应,并为后续分析提供更可靠和可比的数据。这有助于揭示单细胞数据中的生物学信息,如细胞类型、基因表达模式等。

参考文献

SCTransform:单细胞样本的标准化
SCTransform到底做了什么
Normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression

tutorial:Using sctransform in Seurat

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信小鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值