好的,我们先做一个ASCII流程图来概述Seurat V4的数据结构和分析流程,然后逐步讲解每个部分。

ASCII流程图

+-------------------+       +-------------------+       +-------------------+
|  加载数据          |       |  创建Seurat对象   |       |  数据预处理       |
|  (Read10X)        |       |  (CreateSeuratObject) |       |  (过滤、标准化)   |
+-------------------+       +-------------------+       +-------------------+
            |                           |                           |
            |                           |                           |
            |                           |                           |
            v                           v                           v
+-------------------+       +-------------------+       +-------------------+
|  高可变基因筛选   |       |  数据缩放         |       |  细胞聚类          |
|  (FindVariableFeatures) | |  (ScaleData)      |       |  (FindNeighbors,  |
|                         | |                   |       |  FindClusters)    |
+-------------------+       +-------------------+       +-------------------+
            |                           |                           |
            |                           |                           |
            |                           |                           |
            v                           v                           v
+-------------------+       +-------------------+       +-------------------+
|  PCA降维          |       |  非线性降维       |       |  差异表达基因分析 |
|  (RunPCA)         |       |  (RunUMAP, RunTSNE)|       |  (FindAllMarkers) |
+-------------------+       +-------------------+       +-------------------+
            |                           |                           |
            |                           |                           |
            |                           |                           |
            v                           v                           v
+-------------------+       +-------------------+       +-------------------+
|  细胞簇命名        |       |  结果可视化       |       |  保存分析结果     |
|  (RenameIdents)   |       |  (绘图)           |       |  (保存对象)       |
+-------------------+       +-------------------+       +-------------------+

逐步讲解

1. 加载数据
library(Seurat)
library(dplyr)

# 设置工作目录
setwd("D:\\Document\\Programe\\RProjrct\\R-4.2.3")

# 加载10X Genomics格式的数据
pbmc.data <- Read10X(data.dir = "./filtered_gene_bc_matrices/hg19/")
  • 功能:加载单细胞数据,通常来自10X Genomics平台。
  • 输出:pbmc.data,一个稀疏矩阵,存储基因表达量。
2. 创建Seurat对象
# 创建Seurat对象
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)
  • 功能:将稀疏矩阵转换为Seurat对象,设置项目名称和过滤参数。
  • 输出:pbmc,一个Seurat对象,包含原始表达矩阵和细胞元数据。
3. 数据预处理
# 计算线粒体基因百分比
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")

# 过滤细胞
pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)
  • 功能:计算每个细胞中线粒体基因的百分比,并根据基因数和线粒体基因百分比过滤低质量细胞。
  • 输出:过滤后的Seurat对象。
4. 数据标准化
# 数据标准化
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)
  • 功能:对数据进行标准化处理,通常使用Log-Normalize方法。
  • 输出:标准化后的表达矩阵存储在@assays$RNA@data中。
5. 高可变基因筛选
# 高可变基因筛选
pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)
  • 功能:筛选高可变基因,这些基因在细胞间的表达差异较大。
  • 输出:高可变基因列表存储在@assays$RNA@var.features中。
6. 数据缩放
# 数据缩放
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes)
  • 功能:对所有基因进行缩放,使基因表达量具有可比性。
  • 输出:缩放后的数据存储在@assays$RNA@scale.data中。
7. PCA降维
# PCA降维
pbmc <- RunPCA(pbmc, features = VariableFeatures(pbmc))
  • 功能:使用高可变基因进行PCA降维,提取主要的变异方向。
  • 输出:PCA结果存储在@reductions$pca中。
8. 细胞聚类
# 计算细胞间的距离
pbmc <- FindNeighbors(pbmc, dims = 1:10)

# 细胞聚类
pbmc <- FindClusters(pbmc, resolution = 0.5)
  • 功能:计算细胞间的距离,并根据距离进行聚类。
  • 输出:聚类结果存储在@meta.data$RNA_snn_res.0.5中。
9. 非线性降维
# 非线性降维
pbmc <- RunUMAP(pbmc, dims = 1:10)
pbmc <- RunTSNE(pbmc, dims = 1:10)
  • 功能:使用UMAP和t-SNE进行非线性降维,以便在二维空间中可视化细胞。
  • 输出:降维结果存储在@reductions$umap和@reductions$tsne中。
10. 差异表达基因分析
# 寻找差异表达基因
pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE)
  • 功能:寻找每个细胞簇中显著差异表达的基因。
  • 输出:差异表达基因列表存储在pbmc.markers中。
11. 细胞簇命名
# 重命名细胞簇
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)
  • 功能:将聚类结果重命名为具体的细胞类型。
  • 输出:重命名后的细胞簇存储在@meta.data中。
12. 结果可视化
# 绘制细胞簇的UMAP图
DimPlot(pbmc, reduction = "umap")
  • 功能:绘制细胞簇的二维可视化图。
  • 输出:可视化图展示细胞簇的分布。
13. 保存分析结果
# 保存Seurat对象
saveRDS(pbmc, file = "pbmc_analysis.rds")
  • 功能:保存完整的Seurat对象,以便后续分析。
  • 输出:保存的文件pbmc_analysis.rds。

总结

通过以上步骤,你可以完成一个完整的单细胞数据分析流程,从加载数据到保存结果,每一步都详细记录了数据结构的变化。希望这个流程图和逐步讲解能帮助你更好地理解Seurat V4的数据结构和分析流程。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐