seuratv4数据结构
好的,我们先做一个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的数据结构和分析流程。