新闻详情

新闻详情

首页 / 资讯中心 / 详情

单细胞转录组人工注释全流程:从marker筛选到功能验证

发布时间:2026/10/2 1:26:49来源:尧图网络
单细胞转录组人工注释全流程:从marker筛选到功能验证
在实际分析单细胞转录组数据的时候最磨人的往往不是跑流程反而是最后那一关拿到UMAP图面对一堆数字编号的cluster你要一个一个告诉别人这是什么细胞。这个环节做得好整篇文章的生物学故事就立得住做得糊弄审稿人随便一眼就能看出注释经不起推敲。关于单细胞亚群人工注释很多入门教程只讲“用FeaturePlot看一眼marker然后命名”但实操中远远不止这些。这篇我会把从标记基因搜集、特征可视化、打分验证到亚群功能分析的完整流程串起来每一步都讲清楚怎么做、为什么这么做以及最常见的坑在哪里。这套流程并不依赖高级编程技巧只要你会基础的Seurat操作耐心跟着做就能完成一个靠谱的人工注释。适合正在处理10x Genomics或类似平台单细胞数据、需要自己搞定细胞类型鉴定的朋友也适合想系统梳理注释思路、避免凭感觉命名的研究者。1. 注释前的准备不要把命运交给默认参数很多教程上来就教你用FindAllMarkers找差异基因然后查数据库但实际操作中这一步跑得太快往往会翻车。人工注释的第一步不是查基因而是先确认你拿到的聚类结果到底靠不靠谱。1.1 聚类质量检查是注释的大前提注释本质上是在给聚类结果贴标签所以聚类本身如果有问题后面所有注释都会失真。你至少需要确认三件事。第一聚类分辨率是否合理。不少默认流程用0.5或0.8固定的resolution跑完就完事了但不同组织、不同样本的最佳分辨率差异很大。判断标准很简单去看不同分辨率下的聚类数变化以及UMAP图上cluster边界是否清晰。如果一批细胞被切得稀碎或者完全分不开说明分辨率不合适需要重新聚类再注释。第二是否有明显的批次效应干扰。如果你合并了多个样本先看各个样本在UMAP上的分布。如果同一个生物学类型的细胞因为样本来源不同而各自聚成一团说明批次效应没有完全消除这时候注释出来的亚群很可能是“伪亚群”。建议先用Harmony或CCA整合后重新聚类再注释。第三有没有明显的低质量细胞群混在里面。通常低质量细胞表现为线粒体基因比例高、基因数少在图上会形成一个小而紧凑的独立cluster。这个集群如果不处理就注释经常会被误判成某种特殊细胞类型比如注释成巨噬细胞或应激细胞实际上就是死细胞碎片或破损细胞的聚合。我在实际项目中见过不少次这种情况一个cluster高表达线粒体基因、低表达核糖体基因看起来低质量但就是挤在细胞群里没有被过滤掉。这类cluster建议尽早去除或者在注释时明确标注为低质量群不要硬着头皮给一个生物学名字。1.2 用已知marker初步判断聚类是否正常在正式开始注释之前我会先用一批泛细胞类型marker快速扫一遍整体格局确认各主要谱系是否分开了。比如用PTPRCCD45看免疫细胞总群EPCAM看上表皮细胞PECAM1看内皮COL1A1看成纤维CD3D看T细胞MS4A1看B细胞LYZ看髓系细胞。这一步用FeaturePlot和DotPlot快速过一遍大致判断每个cluster属于哪个谱系。如果某个cluster同时高表达好几个谱系的marker很可能是双细胞或者是一个混杂群需要进一步细分或剔除。这一轮的目的不是精确注释而是确认大方向没搞错。如果这一步发现某些谱系的marker混杂严重我通常会回头重新做整合或重新选高变基因而不是硬着头皮继续注释。因为聚类如果在这个层面就没分开后面用已知marker怎么注释都是别扭的。2. 标记基因从哪来建立可靠的marker清单人工注释的核心资源就是标记基因清单。很多新手的做法是临时百度或者翻一两篇文献找几个基因然后就开始命名。这种做法风险很高因为不同组织、不同条件下的marker特异性差异很大。可靠的marker清单应该从多个来源交叉验证。2.1 常用单细胞标记基因数据库对比我平时最常查的数据库有这几个各有特点建议结合使用。CellMarker数据库算是比较经典的覆盖人和小鼠的多种组织每个细胞类型都标注了标记基因及支持文献注释到亚型级别也很方便适合先查大类和亚类的候选marker。PanglaoDB的特点是整理了单细胞测序实际验证过的marker而且支持直接下载适用于Seurat的marker基因列表文件用起来很方便。物种覆盖不如CellMarker全但人鼠常用组织足够用。SingleR则不太一样它是一个基于参考转录组的自动注释工具内置了多种参考数据集。虽然这个方法本身适合快速粗注释但我更喜欢把它当作“辅助建议”来用用来跟人工注释结果做印证。另外还有CellTypist这个是基于机器学习模型训练出来的覆盖了很多组织注释速度快尤其对免疫细胞效果还不错。这几个数据库我在做注释时都会有选择地参考。一般流程是先用CellMarker查经典文献支持的marker再用PanglaoDB看看有没有额外的候选基因最后跑一个SingleR或CellTypist看自动注释的结果跟我的判断是否一致。三方对得上这个注释就比较稳。表格整理一下这几个资源的特点方便你快速选型资源特点适合场景局限性CellMarker文献整理、人鼠覆盖广、支持亚型查询经典marker、写方法学描述有些marker特异性不够高需人工甄别PanglaoDB单细胞实测数据、支持Seurat格式导出快速拿一篮子marker列表组织覆盖有偏好某些罕见细胞类型缺失SingleR自动注释、多参考数据集作为人工注释的交叉验证结果依赖参考集罕见群体容易错CellTypist机器学习模型、免疫细胞效果好大批量快速初筛对非免疫细胞或特定组织支持有限2.2 从文献和差异基因中挖掘亚群marker数据库只是一个起点。对于你要研究的核心细胞类型我强烈建议专门花时间查一下该组织或疾病模型中近三五年的单细胞文献。理由很简单数据库里的marker往往是“普遍适用”的但你的数据可能来自特殊处理条件或罕见亚型这时候文献里特异性更高的marker组合会更可靠。比如注释肿瘤浸润T细胞时CD3D、CD8A只能告诉你这是CD8阳性T细胞但要区分耗竭T细胞和效应记忆T细胞你需要参考PDCD1、CTLA4、HAVCR2、LAG3这些抑制性分子的组合或者IL7R、TCF7区分记忆类群。这些细节在经典数据库里更新得不够及时但在最新文献里能找到很好的组合方案。另一个容易被忽视的marker来源是你的FindAllMarkers结果。有时候你的数据里存在一个基因高表达、又恰好是某类细胞的核心转录因子数据库里没收录但文献支持它的角色。这时候不要因为数据库里没有就忽略而是要在注释依据里写清楚“基于某基因表达及文献XX支持”合理引用即可。2.3 用差异表达结果甄别marker的辨别力拿到一份候选marker列表后在正式注释前我会做一个简单但很关键的验证看看这些marker在你自己的数据里到底有没有辨别力。有些marker在文献里很经典但在你的数据里可能因为测序深度、dropout效应等因素表达量低肉眼根本分不出来。做法很简单用FindAllMarkers跑出每个cluster的差异基因后把候选marker跟差异基因列表交叉对比。如果一个公认marker在对应的cluster里连top差异基因都排不进那它在注释时就不太能支撑结论。相反如果某个差异基因显著上调而且恰好有文献支持那就能作为补充依据。这个步骤能有效避免一个常见尴尬FeaturePlot画出来一片糊谁都分不出哪个是阳性群但你还是硬着头皮给它命名。使用数据本身去验证marker的有效性才是注释可靠的基础。3. 人工注释实操从粗放到精细的四步走拿到靠谱的聚类结果、整理好marker清单之后就可以正式开始注释了。我把这套流程拆成四个步骤每一步都有明确产出不容易混乱。3.1 第一步用FeaturePlot快速全局扫描这个阶段我用一组泛谱系marker对全UMAP做快速扫描判断每个cluster大致属于哪个细胞大类。我会把FeaturePlot的结果拼在一起看这一步用的是FeaturePlot函数代码很简单features - c(PTPRC, CD3D, CD14, MS4A1, PECAM1, COL1A1) FeaturePlot(seu, features features, ncol 3, order TRUE)注意order TRUE这个参数很关键它会让高表达细胞点叠加在低表达点上面视觉上阳性群更清楚尤其是表达量跨度大的基因。不加这个参数时高表达的零散亮点容易被低表达背景淹没。做完这一步我会在笔记本里画一个简单的关系表cluster编号对应可能的谱系。注意这一步不要求精确到亚型只要大类对应得上就行。如果某几个cluster在同一谱系内后面再用亚型marker细分。3.2 第二步用平均表达量打分量化判断光靠肉眼看图容易误判尤其是遇到表达水平模糊的marker。我的做法是在FeaturePlot之后再跑一个平均表达量打分把每个cluster的所有候选marker表达量算出来以矩阵形式查看。这一步的核心代码是利用AverageExpression函数avg - AverageExpression(seu, features all_markers, group.by seurat_clusters) avg_mat - as.matrix(avg$RNA) pheatmap::pheatmap(avg_mat, scale row, cluster_cols FALSE)这一步相当于把“哪个cluster表达哪些marker”变成了一个可量化的热图判断标准就不只是感觉了。比如某个cluster在CD3D上平均表达高、在CD14上低那它就比较像T细胞而不是髓系细胞。如果担心平均表达会把稀疏数据中的噪声也平均进去可以配合PercentageFeatureSet——计算每个cluster中阳性细胞的比例。比例高又表达量高才是真正值得采信的marker表达量高但只有极少数细胞阳性那更可能是某个小亚群的信号注释时要留意。实际上这个比例判断能帮你减少很多误注释。举例来说如果一个cluster在某个marker上的平均表达不低但阳性比例很低说明这个信号来自很少的细胞一种可能是该cluster里混入了少量其他类型的细胞另一种可能是这个marker对应的细胞类型并不是cluster的主流注释时应该以阳性比例高的其他marker为准。3.3 第三步用小提琴图和气泡图做最终确认平均表达矩阵看完了对初步注释有数了但还不能直接定稿。因为平均表达隐藏了单细胞的分布结构一个marker可能有几个极端高表达的细胞拉高了平均值而大多数细胞其实是阴性。这时候需要用VlnPlot和DotPlot做最终验证。VlnPlot(seu, features c(CD3D, CD8A, GZMB), group.by seurat_clusters, pt.size 0) DotPlot(seu, features c(CD3D, CD8A, GZMB), group.by seurat_clusters)小提琴图重点看表达分布的形状如果marker阳性信号的峰和阴性信号的峰明显分开说明这是一个像样的marker如果阳性细胞零零散散、整体分布跟阴性没有明显差距那就不要用这个marker支撑注释。DotPlot则是看两个维度点的大小表示阳性比例颜色深浅表示平均表达量。判断标准很直观一个cluster如果在该marker上既大又红说明这个marker对它来说是可靠的特征如果点很小或者颜色很浅哪怕热图里数值偏高也不能作为主要依据。这一步之后我会对每个cluster形成一个明确的注释意见它是哪种细胞依据是哪几个marker组合有没有疑虑。如果某个cluster始终找不到合适的marker说明身份先不要硬命名标记为unknown后面单独处理。3.4 第四步处理“注释不上”的细胞群每个做过单细胞分析的人应该都遇到过那种“什么marker都不明显”的cluster它在UMAP上孤立存在表达谱的差异基因又不太能说明身份。针对这种群我有几个处理建议。先排除技术因素。检查这个cluster的nFeature、nCount和percent.mt如果明显偏低大概率是低质量细胞或空液滴残留注释为低质量群即可。然后再排除双细胞可能。用DoubletFinder或scDblFinder看看该cluster的双细胞评分是否偏高如果高建议直接用subset去除避免干扰后续分析。如果排除技术因素后仍然存在我倾向于把它当作一类特殊状态来分析而不是硬性赋予细胞类型标签。有时候这类群代表细胞周期相关的增殖群检查MKI67、PCNA等增殖marker就能确认有时候则是应激或干扰素响应引起的转录状态改变代表性基因比如ISG15、IFI6等。命名时可以直接叫“增殖T细胞”或“干扰素响应细胞”只要描述的是转录状态而不强行套细胞类型审稿人也不会质疑。4. 注释之后不能停功能分析与验证让注释站得住脚人工注释的工作如果停留在“画个图、起个名”这一步其实还远没结束。一个注释结果是否能支撑后续的生物学结论需要功能分析来验证。更重要的是功能分析反过来还能验证你的注释是否准确这是一个双向强化的过程。4.1 用AddModuleScore做标记基因打分验证注释完成一个亚群后我做的第一件事是用AddModuleScore对每个细胞计算该亚群marker基因集的打分验证注释的可靠性。seu - AddModuleScore(seu, features list(CD8_T_markers), name CD8T_score) FeaturePlot(seu, features CD8T_score1)这个打分的基本逻辑是如果一个cluster被注释为CD8阳性T细胞那么该cluster里的细胞在这个marker基因集上的平均打分应该显著高于其他细胞。如果打分结果和注释不一致——比如被注释为CD8T的cluster在CD8marker打分上并不高——就需要回去重新审视注释了。我习惯用这个打分结果做两个验证一是看FeaturePlot上打分高的区域和注释cluster是否重合二是用箱线图按cluster比较打分分布确认注释的cluster打分显著更高。这个验证不需要复杂的统计学方法直观可视化就足够判断。4.2 用GSVA或GSEA看通路富集差异注释完亚群后一个常见问题是你这个亚群在功能上有什么特别之处单纯列marker基因是不够的审稿人会进一步追问这些基因富集在哪些通路里。这时候通路富集分析就很关键。对于单细胞数据我通常不用最朴素的GO分析因为单细胞表达矩阵稀疏性太强直接做差异基因富集容易受dropout影响。我比较推荐用GSVA或AUCell这类基于基因集打分的算法先把单个细胞的通路活性算出来再做组间比较稳健性会好很多。library(GSVA) gsva_res - gsva(expr_mat, gene_sets, method ssgsea)分析思路也很直接选定几个你关注的生物学通路或基因集比如炎症反应、糖酵解、氧化磷酸化、凋亡等比较不同亚群在这些通路上的活性差异。如果注释为调节性T细胞的亚群在TGF-β信号通路上显著富集这就能从功能层面支持注释结果。如果注释的某个亚群功能特征和它应有的角色完全矛盾那就需要警惕注释可能出了问题。4.3 细胞通讯分析让注释更有生物学意义单细胞分析做到后面多数人会在注释结果上再加一步细胞通讯分析。最常用的工具是CellChat和CellPhoneDB这类分析可以从配体受体层面解释不同细胞亚群之间如何相互作用。这一步对注释的验证作用是隐性的如果注释的细胞类型在通讯网络中显示出符合预期的相互作用关系比如巨噬细胞和T细胞之间存在趋化因子受体配体对那说明注释的细胞类型在生物学语境下是自洽的。反之如果某类细胞被注释得跟正常生理关系完全格格不入就需要重新考虑注释了。做细胞通讯分析时注意一个事项不是所有亚群都适合纳入分析建议先在较大群体层面比如CD4T、CD8T、巨噬细胞、B细胞、NK细胞等运行看主要信号关系是否合理然后再针对感兴趣的亚群做细分层面的通讯分析。如果一开始就堆了几十个亚群结果图会乱得根本读不出来反而影响了判断。4.4 复核差异marker与文献一致性功能分析跑完我最后一步是回到最基础的差异表达结果上把每个注释亚群的top差异基因完整过一遍和文献对比确认一致性。这一步是我雷打不动的习惯。具体来说我会用FindAllMarkers重新跑一遍注释后的亚群之间差异基因只保留avg_log2FC 0.5且p_val_adj 0.05的基因然后逐个亚群看top20的基因列表。对照已知文献每个亚群是否表达对应的核心转录因子和表面标志物能不能讲出一个合理的故事。这个复核看起来简单但能筛出不少问题。我印象最深的一次是有一个亚群的top markers列表确实符合某个细胞类型但仔细看发现关键转录因子表达水平其实很低反而另一个不那么出名的转录因子表达很高。查文献后确认这个亚群实际上是一个更罕见的状态重新注释之后整个后续分析逻辑都顺了很多。人工注释本质上是一个需要不断回头修正的过程而不是一次性搞定。5. 常见问题与排查技巧实录人工注释做到一定量以后遇到问题反而是常态。这一节我把平时踩过的坑和排查经验整理成速查表希望能省掉大家一些弯路。5.1 常见问题速查表问题现象可能原因排查与处理方法cluster没有明显marker低质量细胞/空液滴检查nFeature和percent.mt确认后直接剔除cluster同时表达多种谱系marker双细胞用DoubletFinder识别并移除同一细胞类型被拆成多个cluster聚类过度分辨率过高适当降低分辨率后重新聚类不同样本相同细胞类型没有聚在一起批次效应使用Harmony/CCA整合后再聚类注释结果与SingleR结果差异大参考数据集不匹配重新确认marker表达以数据本身为准marker表达量低但cluster明显测序深度不足或dropout同时查看阳性比例和表达分布避免单看平均表达5.2 两个高频“翻车”场景复盘场景一无辜的干扰素响应群我第一次独立做一批外周血单细胞数据时发现有一个cluster同时高表达所有干扰素刺激基因ISG15、IFI6、MX1、OAS1全都在。当时第一反应是找这个群的细胞类型marker结果什么经典marker都是阴性的愣是注释不出来。后来才知道这就是典型的干扰素响应状态这种转录状态会覆盖原本的细胞身份信号让细胞看起来像是失去特征了。处理办法是先用GetAssayData检查ISG基因在这群细胞的表达确认是高表达然后在注释时直接命名为“ISG阳性细胞群”在后续分析中要么单独讨论要么在功能分析前先排除否则会干扰其他亚群的信号。场景二强行命名的代价还有一次我把一群注释成了某个罕见的T细胞亚群图看起来一切都对因为marker确实表达了。但进一步做拟时序分析时这个群的定位跟生物学常识完全对不上回头一查才发现这个亚群其实是细胞周期S期的T细胞我用的那些“marker”恰好是细胞周期相关基因。从那以后我每次注释前都会先把MKI67、TOP2A、PCNA等增殖marker检查一遍避免把周期信号当成细胞身份信号。强烈建议你在注释前养成这个习惯。5.3 批量样本注释的一致性维护如果你手头的数据来自多个样本或者多个条件下批量注释一个容易被忽视的问题是不同批次注释标准不一致。比如一批数据里你把某个细胞群叫“CD8阳性效应T细胞”另一批数据里同样的群却叫“效应记忆T细胞”。这种情况在多人协同时尤其常见同一张UMAP图不同人注释出来的版本经常完全不一样。我的解决方案是在项目开始前统一制定一套注释规范明确使用哪些marker组合定义每一类细胞、每个细胞类型的筛选条件是什么、标记为unknown的标准是什么。然后所有样本使用同一套脚本、同一份marker列表做注释避免个人主观造成的差异。给每个亚群注释附上一句文字说明标记依据哪几个marker和哪些文献这样即使过段时间回头检查也能快速回忆起当时做判断的思路。这套方法虽然看起来费时间但长期做下来反而最省心。尤其在准备论文方法学部分时你会有充足的描述材料支撑注释依据审稿人也更容易信服。个人经验收尾做了不少单细胞注释项目之后我的体会是人工注释本质上不是在“识别”细胞类型而是在“论证”细胞类型。每一个命名都应该有数据支撑、有文献支撑、有逻辑支撑经得起追问。这个过程的诀窍不在于掌握高深算法而在于耐心和细致一遍遍验证marker表达情况把看起来正确的结论反复放到功能分析里去检验。花在这个环节上的时间永远不会白费因为它决定了你后续所有分析的生物学可信度也决定了审稿人对你方法和结果的第一印象。希望这篇流程能帮你把人工注释这个环节做得扎实又心安最后再分享一个小技巧注释过程中随时保存每个cluster的marker查看记录和判断理由你会发现最后写论文方法部分时这套记录简直是无价之宝。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

软著申请源代码整理:自动去注释排版的完整方案 2026/10/2 3:57:50

软著申请源代码整理:自动去注释排版的完整方案

简介:软著代码整理工具是一款面向软件著作权申请者的自动化代码预处理程序,支持一键提取项目源代码、自动清除空行与注释,并能统一代码格式,减少人工整理时间,使提交代码更符合软著申报要求。压缩包共18个文件&#xf…

阅读更多 →
LOD与PagedLOD深度解析:从屏幕误差到分页加载的渲染优化实战 2026/10/2 3:57:50

LOD与PagedLOD深度解析:从屏幕误差到分页加载的渲染优化实战

1. 弄清楚 LOD 省下的开销,才知道它为什么是刚需我最早做三维场景性能调优时,拿到的是园区级数字孪生项目。模型从建模软件直接导出来,一栋楼三万多三角形,沿街一整排建筑加起来轻松突破千万面。当时第一反应是换显卡,…

阅读更多 →
通达信主图波段指标设计原理与实盘优化 2026/10/2 3:57:50

通达信主图波段指标设计原理与实盘优化

1. 项目概述:为什么一个“主图波段指标”值得花三天重写三版?通达信抓波段指标(主图)——这八个字在股票软件圈里,几乎等同于“看得懂的K线语言”。我做量化工具开发和交易系统搭建十多年,经手过上千个指标…

阅读更多 →
Agent上下文工程:从记忆管理到LangGraph实战 2026/10/2 3:57:43

Agent上下文工程:从记忆管理到LangGraph实战

做 Agent 开发的这几个月,我最大的体会是:真正难的不是把模型调通,而是让 Agent 在多轮、多工具、多任务的状态下始终保持"清醒"。上下文工程,这个名词听起来像学术黑话,实际上就是解决 Agent 记忆力、注意力…

阅读更多 →
旅游评论情感分析系统:基于Python的完整实现与落地 2026/10/2 3:57:43

旅游评论情感分析系统:基于Python的完整实现与落地

简介:一套面向毕业设计场景的基于Python的旅游景点评论情感分析系统项目源码,聚焦携程、马蜂窝两大平台用户评论的采集与情感倾向识别,适合需要完成类似课题或研究爬虫、NLP结合应用的开发者参考。包内共有122个文件,以Python源码…

阅读更多 →
Claude Code 实战指南:从安装配置到第一次代码修改的完整流程 2026/10/2 3:57:43

Claude Code 实战指南:从安装配置到第一次代码修改的完整流程

1. 为什么我最终把主力开发环境切到了 Claude Code第一次听说 Claude Code 是在一个做后端的朋友群里,有人甩了张截图,说“这玩意儿能直接读你整个项目,改完代码还顺手把 commit 写了”。当时我的第一反应是:又一个套壳工具&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉