主要分析步骤:
原始数据处理与质控:
原始测序文件(FASTQ格式)。
步骤:
比对: 将测序读段定位到参考基因组(如STAR, Cell Ranger)。
计数: 统计每个细胞中每个基因的分子数(UMI/reads),生成“表达矩阵”(行为基因,列为细胞,值为表达量)。
关键质控指标:
每个细胞的检测基因数: 过低可能代表死细胞或空液滴。
每个细胞的分子总数(UMI计数): 过低同上,过高可能代表双细胞。
线粒体基因比例: 高比例通常表明细胞受损或死亡。
核糖体基因比例: 异常高低可能提示特定状态。
输出: 过滤掉低质量细胞/基因后的干净表达矩阵。
数据标准化:
目的: 消除技术偏差(如测序深度差异),使细胞间表达量可比。
常用方法: LogNormalize(Seurat), SCTransform(正则化负二项回归 - Seurat), 或基于深度的缩放因子(如Scanpy)。
特征选择:
目的: 识别最能代表细胞间生物学变异的基因(高变基因),用于后续降维,减少噪音。
方法: 通常选择表达变异系数高(均值-方差关系)的基因(如Seurat的FindVariableFeatures, Scanpy的pp.highly_variable_genes)。
数据缩放与线性降维:
缩放: 对基因表达进行中心化(均值为0)和标准化(方差为1),使所有基因在后续分析中权重相等(PCA要求)。
主成分分析: 将高维数据投影到低维空间(主成分PCs),捕获主要的变异来源。通常选择前10-50个PCs用于下游分析。
细胞聚类:
目的: 基于基因表达谱的相似性,将细胞划分为不同的群体(簇)。
步骤:
构建细胞邻域图: 在PC空间(或缩放后的基因空间)计算细胞间的相似性(如K近邻图)。
聚类算法: 在邻域图上识别紧密连接的细胞群体(如Louvain, Leiden算法 - Seurat的FindClusters, Scanpy的tl.leiden)。
输出: 每个细胞被分配到一个簇。
非线性降维与可视化:
目的: 在2D或3D空间中直观展示细胞之间的关系和聚类结构。
常用方法:
t-SNE: 擅长保留局部结构,簇间距离无意义。
UMAP: 通常能更好地保留全局结构,运行更快,是目前主流。
输出: 散点图(如UMAP图),每个点代表一个细胞,颜色代表其所属的簇。
细胞类型注释:
目的: 为每个聚类簇赋予生物学意义(如细胞类型、状态)。
方法:
Marker基因鉴定: 寻找在每个簇中特异性高表达的基因(如Seurat的FindAllMarkers)。
参考数据库比对: 利用已知细胞类型的单细胞参考图谱(如Human Cell Atlas, Mouse Cell Atlas)进行自动注释(如SingleR, scmap, Seurat的Azimuth)。
手动注释: 结合Marker基因、已知生物学知识和文献进行判断。
关键: 这是将数据转化为生物学洞见的核心步骤!
差异表达分析:
目的: 比较不同细胞群(如不同细胞类型、处理组 vs 对照组、疾病 vs 健康)之间基因表达的差异。
方法: 专门为单细胞数据设计的统计方法(如MAST, Wilcoxon rank-sum test, DESeq2 - 需谨慎使用)。
下游分析:
轨迹推断: 重建细胞在连续过程(如分化、激活、细胞周期)中的动态变化(如Monocle3, PAGA, Slingshot)。
细胞通讯分析: 预测不同细胞类型之间通过配体-受体对的相互作用(如CellChat, CellPhoneDB)。
功能富集分析: 对差异表达基因或特定细胞群的基因集进行通路、功能注释(如GO, KEGG, GSEA)。
整合分析: 合并多个样本或批次的数据,以进行比较或增加统计功效(如Harmony, Seurat的IntegrateData, BBKNN, scVI)。
亚群再分析: 对感兴趣的特定细胞类型进行更精细的亚聚类和分析。
常用工具:
Seurat (R): 目前最流行、功能最全面的工具包。
Scanpy (Python): 功能强大且灵活的Python生态系统工具包。
Cell Ranger (10x Genomics): 官方配套软件,处理10x数据从原始FASTQ到表达矩阵。
其他:Monocle (R - 轨迹), CellPhoneDB (Python - 通讯), SCANPY (Python), Scater/Scran (R), Bioconductor生态等。
总结: 单细胞数据分析是一个迭代探索的过程,从原始数据出发,经过严格质控、标准化、降维、聚类、注释,最终通过各种下游分析揭示细胞异质性、动态变化和功能关系,从而深入理解组织、发育和疾病的复杂性。选择合适的工具和参数,并结合生物学背景知识进行解读至关重要。
|
|