细胞类型注释:标记基因与参考映射


文档摘要

3.6 细胞类型注释:标记基因与参考映射 本节摘要:聚类给出的编号没有生物学含义,注释是把"cluster 4"翻译成"CD8 效应 T 细胞"的过程。两条主路线:用已知标记基因人工判读(可控、见功夫),或用参考数据集自动映射(快速、可规模化),实践中最好两条都走、互相验证。本节给出外周血的完整注释演练与常见误判清单。 给 cluster 起名字 注释的底层逻辑是"看表达模式认细胞"。每种细胞类型都有一套稳定的标识基因:T 细胞必有 CD3D,B 细胞必有 CD79A 或 MS4A1,单核细胞看 LYZ、S100A8、CD14,NK 细胞看 NKG7 与 GNLY,树突细胞看 FCER1A、CST3。注释就是问每个 cluster:"你的高表达基因名单里,最像哪种细胞的指纹?

3.6 细胞类型注释:标记基因与参考映射

本节摘要:聚类给出的编号没有生物学含义,注释是把"cluster 4"翻译成"CD8 效应 T 细胞"的过程。两条主路线:用已知标记基因人工判读(可控、见功夫),或用参考数据集自动映射(快速、可规模化),实践中最好两条都走、互相验证。本节给出外周血的完整注释演练与常见误判清单。

给 cluster 起名字

注释的底层逻辑是"看表达模式认细胞"。每种细胞类型都有一套稳定的标识基因:T 细胞必有 CD3D,B 细胞必有 CD79A 或 MS4A1,单核细胞看 LYZ、S100A8、CD14,NK 细胞看 NKG7 与 GNLY,树突细胞看 FCER1A、CST3。注释就是问每个 cluster:"你的高表达基因名单里,最像哪种细胞的指纹?"常用工具形态是点图(dot plot):行是候选标记基因、列是 cluster,点的大小表示表达该基因的细胞比例、颜色深浅表示平均表达水平——一屏之内把十几群的指纹看全。

自动注释走参考映射路线:拿一套已注释好的参考数据(如 CellTypist、Azimuth 提供的图谱,或 SingleR 配套的 bulk 与单细胞参考),把你的数据投到参考空间里,按最近邻给每个细胞或 cluster 传标签。它的优势是快速、标准化、覆盖面广(参考集里有几十种免疫细胞亚型),劣势是继承参考集的类型体系(你的数据里可能是参考集没见过的状态)、跨平台批次效应会干扰映射。稳妥的工作流:自动注释先跑一版,再人工用标记基因逐群复核,两者矛盾的 cluster 优先怀疑你的数据的特异性,而不是工具出错。

import scanpy as sc # 第一步:找出每个 cluster 的差异基因(伪批量思想的粗版) sc.tl.rank_genes_groups(adata, groupby="leiden", method="wilcoxon") sc.pl.rank_genes_groups(adata, n_genes=10, sharey=False) # 第二步:候选标记基因画点图,人工判读 markers = ["CD3D", "CD8A", "IL7R", "MS4A1", "CD79A", "LYZ", "S100A8", "NKG7", "GNLY", "FCER1A", "CST3", "PPBP"] sc.pl.dotplot(adata, markers, groupby="leiden")

Seurat 侧的对应动作是 FindAllMarkers(pbmc) 找差异基因、DotPlot(pbmc, features = markers) 出点图;自动注释则常配 SingleR:singler <- SingleR(test = pbmc, ref = hpca.se, labels = ref_labels),一行给所有细胞传标签。

图:标记基因点图(注释的主要依据)

图:标记基因点图(注释的主要依据)

误判清单:注释时最容易错的几种情况

注释的错误有固定套路,逐条防。其一,cluster 不等于细胞类型:一个"群"可能是两种细胞的混合(分辨率不足)、一种细胞的两个状态(分辨率过头)、或者是双联体与周期细胞凑出的假群。判据是差异基因名单——前几名既有 T 细胞标记又有 B 细胞标记的群,先怀疑混合或双联体,而不是起个"混合淋巴细胞"的名字了事。其二,只认一个标记就下结论:CD3D 阳性只能说明是 T 谱系,CD4 与 CD8 互斥表达、FOXP3 与 IL7R 的组合才能继续分亚型;单基因证据永远是弱的。其三,忽略状态与谱系的区别:干扰素刺激基因(IFIT 系列)高的群可能是任何谱系的细胞进入抗病毒状态,别把"应激状态"注释成新细胞类型——对照应激与周期基因集得分是最后一步。

注释完成后有两道验收:比例合理性(外周血里 T 细胞占半数上下、树突细胞在个位数百分比,偏离过多先查注释而不是先当新发现)与连续性(同一样本重复处理,各类型比例应大致复现)。图谱加上标签之后,才真正从"一堆点"变成"一个样本的细胞普查结果"。

注释结果的写回与交付

注释做完要落到数据对象上才算完成:给 obs 加 celltype 列,按置信度分级存储(确定的类型直接写,存疑的加"候选"前缀),然后用带标签的点图与 UMAP 出一版终图。交付物不止一张图——注释依据要打包带走:每个类型依据的标记基因清单、参考映射的版本与参考集名称、人工修正的记录。三个月后你或合作者追问"为什么把这个群叫成非经典单核细胞",这些就是唯一的答案。跨工具流转时同样有讲究:注释完的 h5ad 转给 R 侧做通讯分析时,celltype 列作为因子要保证各批次水平一致,否则下游按类型聚合的统计会错位。

# 注释落盘的标准动作 annotation = { "0": "CD4 T cells", "1": "CD8 T cells", "2": "B cells", "3": "CD14 Monocytes", "4": "NK cells", "5": "Dendritic cells", } adata.obs["celltype"] = adata.obs["leiden"].map(annotation).astype("category") sc.pl.umap(adata, color="celltype", save="_annotated.png") adata.write("pbmc_annotated.h5ad")

常见疑问两则

cluster 数和细胞类型数对不上正常吗

非常正常,而且通常是对的。一个细胞类型可以是多个 cluster(分辨率把 T 细胞裂成十几个亚群),多个类型也可能挤在一个 cluster 里(分辨率不足或类型本身过渡连续)。正确的对应关系靠标记基因建立而不是靠数量凑平——注释的产出是"每个 cluster 是什么",而不是"把 cluster 数凑成类型数"。反过来,如果注释完发现某类型横跨的 cluster 们彼此差异基因寥寥,提示分辨率可以降一点,减少无意义的碎片。

自动注释能完全替代人工吗

短期内不能,原因在参考集的覆盖边界。血液免疫样本的参考成熟(PBMC 类样本自动注释几乎可直接用),而肿瘤、发育、罕见组织里大量状态是参考集没见过的——自动注释把它们硬塞进最近的已知类型,错得"有模有样"反而更难被发现。可靠用法是三段式:自动注释打底、标记基因逐群复核、结果不一致的 cluster 进人工深查。参考集的边界就是自动注释的边界,这条边界会随数据积累外扩,但"最终责任在人"这一点不变。

本节要点回顾

  • 注释两条腿走路:标记基因人工判读管可信,参考映射自动注释管效率,互为校验。
  • 点图是主战场:行基因列 cluster,比例看点大小、强度看颜色,一屏读完全部指纹。
  • 单标记不下结论:谱系要多个标记一致,亚型要组合模式,假群看差异基因名单的纯度。
  • 比例与连续性验收:偏离常识比例先查注释,新"细胞类型"的宣告要比想象中谨慎得多。

到这里,一张带标签的细胞图谱正式完成——第三章的全链条走通。第四章开始让图谱说话:细胞沿什么路径分化、细胞之间在传递什么消息、哪个基因在哪个群里被扰动,轨迹、通讯与差异表达依次登场。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U