本项目复现论文:
Kimura K, Subramanian A, Yin Z, Khalinezhad A et al.
Immune checkpoint TIM-3 regulates microglia and Alzheimer's disease.
Nature, 2025, 641(8063):718–731.
数据来源:
GEO 数据集 GSE267764
本项目主要复现论文中的单细胞转录组(scRNA-seq)分析流程,包括:
- Seurat 数据预处理
- Harmony 批次矫正
- UMAP 聚类分析
- 细胞类型注释
- DoubletFinder 双细胞检测
- 差异表达分析(DGE)
- 火山图可视化
由于原始数据规模较大,本项目主要针对论文中的核心单细胞分析流程进行复现与验证。
本项目基于 Seurat v5 单细胞分析框架,对 GSE267764 数据集进行了完整的 scRNA-seq 标准分析流程复现。
相较于传统 Seurat v4 教程,本复现特别针对 Seurat v5 的 Layer 机制进行了兼容性修复,包括:
- 使用
LayerData()代替旧版 counts 提取方式 - 使用
JoinLayers()解决差异分析中的多图层问题 - 修复 DoubletFinder 与 Seurat v5 的兼容问题
- Harmony 批次校正整合多样本
- 构建 microglia 亚群注释体系
- 复现论文中的 DEG 火山图
| 模块 | 复现结果 |
|---|---|
| 数据类型 | 单细胞转录组(scRNA-seq) |
| 分析框架 | Seurat v5 |
| 批次矫正 | Harmony |
| 双细胞检测 | DoubletFinder |
| 聚类参数 | npc = 50, resolution = 0.4 |
| 差异分析方法 | Wilcoxon rank-sum test |
| 可视化结果 | UMAP、火山图 |
| 输出文件 | DEG_of_HMG.pdf |
成功复现内容包括:
- UMAP 聚类结果
- 小胶质细胞(Microglia)亚群划分
- DoubletFinder 双细胞识别
- 差异表达基因筛选
- HMG vs CC HMG1 火山图
| 成员 | 学号 | 分工 | github |
|---|---|---|---|
| 邹林 | 2025303110139 | 合适论文寻找、初始框架建立、README 编写 | @huanyu8 |
| 林观清 | 2025303120114 | 论文图复现 | @LGQ559492 |
| 郑永琪 | 2025303120147 | 论文图复现 | @zcguksjv65 |
| 李迁 | 2025303120110 | 论文图复现 | li20010229-eng |
| 黄子凯 | 2025303110141 | 项目整理、Quarto 文档转换、最终提交 | @hirasauayui |
scRNAseq-GSE267764/
├── README.md
├── requirements.txt
├── environment.yml
├── .gitignore
├── data/
│ └── README.md # 数据获取说明
├── notebooks/
│ ├── 01_preprocessing.qmd # 数据预处理
│ ├── 02_harmony_cluster.qmd # Harmony 聚类分析
│ ├── 03_cell_annotation.qmd # 细胞类型注释
│ ├── 04_doubletfinder.qmd # 双细胞检测
│ ├── 05_DGE_analysis.qmd # 差异表达分析
│ └── 06_volcano_plot.qmd # 火山图绘制
├── outputs/
│ ├── figures/
│ └── DEG_of_HMG.pdf
└── scripts/
└── utils.R
git clone https://github.com/your-repo/scRNAseq-GSE267764.git
cd scRNAseq-GSE267764本项目使用:
R version 4.6.0
推荐使用:
- RStudio
- Quarto
- Rtools(Windows)
在 R 中运行:
install.packages(c(
"Seurat",
"ggplot2",
"dplyr",
"patchwork",
"harmony",
"DoubletFinder",
"tibble",
"ggrepel"
))从 GEO 下载原始数据:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE267764
解压后目录结构如下:
GSE267764_RAW/
├── GSMxxxxxxx_barcodes.tsv.gz
├── GSMxxxxxxx_features.tsv.gz
├── GSMxxxxxxx_matrix.mtx.gz
└── ...
运行如下代码:
data_dir <- "你的数据路径/GSE267764_RAW"
fs <- list.files(data_dir, pattern = "GSM", full.names = FALSE)
samples <- substr(fs, 1, 10)
lapply(unique(samples), function(x) {
y <- fs[grepl(x, fs)]
folder <- file.path(
data_dir,
paste(strsplit(y[1], split = "_")[[1]][1:2], collapse = "_")
)
dir.create(folder, recursive = TRUE, showWarnings = FALSE)
file.rename(file.path(data_dir, y[1]), file.path(folder, "barcodes.tsv.gz"))
file.rename(file.path(data_dir, y[2]), file.path(folder, "features.tsv.gz"))
file.rename(file.path(data_dir, y[3]), file.path(folder, "matrix.mtx.gz"))
})该步骤第二次运行时会报错。
原因是原始文件已经被移动。
解决办法:
- 重新解压 GEO 原始文件
- 或备份原始数据目录
主要步骤包括:
- 创建 Seurat 对象
- 合并样本
- 线粒体比例计算
- 质量控制过滤
过滤条件:
nCount_RNA >= 1000
nFeature_RNA >= 200
percent.mt < 80核心参数:
npc = 50
resolution = 0.4主要流程:
NormalizeData()
FindVariableFeatures()
ScaleData()
RunPCA()
RunHarmony()
RunUMAP()
FindNeighbors()
FindClusters()随后去除低质量 Cluster6:
scRNAseq_cortex <- subset(
scRNAseq_cortex,
seurat_clusters %in% c(0:5, 7:10)
)根据原论文定义 microglia 亚群:
| Cluster | Cell Type |
|---|---|
| 0 | HMG |
| 1 | HMG |
| 2 | MGnD 0 |
| 3 | MGnD1 |
| 4 | CC HMG1 |
| 5 | CC HMG2 |
| 7 | IFN HMG |
| 8 | IFN HMGD |
| 9 | CC MGnD |
| 10 | MGnD 2 |
本项目特别修复了 Seurat v5 与 DoubletFinder 的兼容问题。
关键修改:
counts_sub <- LayerData(
sc_sub_cortex,
assay = "RNA",
layer = "counts"
)sc_sub_simple <- CreateSeuratObject(
counts = counts_sub,
meta.data = metadata_sub
)sc_sub_simple <- doubletFinder(
sc_sub_simple,
PCs = 1:50,
pK = pK,
nExp = nExp_poi.adj
)使用:
FindMarkers()统计方法:
Wilcoxon rank-sum test
关键修复:
subset_obj <- JoinLayers(subset_obj)用于解决 Seurat v5 多 Layer 差异分析问题。
显著性筛选条件:
p_val_adj < 0.05
abs(avg_log2FC) > 0.25
pct.1 > 0.3复现内容:
- HMG vs CC HMG1
- 上调基因
- 下调基因
- 基因标签标注
输出文件:
DEG_of_HMG.pdf
A:请确认目录结构为:
sample/
├── barcodes.tsv.gz
├── features.tsv.gz
└── matrix.mtx.gz
A:请确认已安装:
install.packages("harmony")A:必须使用:
LayerData()
JoinLayers()避免 multi-layer 报错。
A:因为原始文件已被移动。
请重新解压 GEO 原始数据。
A:需要先执行:
subset_obj <- JoinLayers(subset_obj)@article{kimura2025tim3,
title={Immune checkpoint TIM-3 regulates microglia and Alzheimer's disease},
author={Kimura, K and Subramanian, A and Yin, Z and Khalinezhad, A},
journal={Nature},
volume={641},
number={8063},
pages={718--731},
year={2025}
}