
做单细胞测序的实验室十有八九在免疫组库分析时遇到过这样的怪象表达谱的t-SNE/UMAP聚类明明很正常细胞分群也很干净但一下钻到TCR/BCR数据里要么是一大批细胞没有比对到任何VDJ序列要么是克隆型数量忽高忽低要么是同一个样本重复建库两次克隆结构对不上。你开始怀疑是测序深度不够于是加测结果发现问题依旧。作为经常和5转录组平台、免疫组库数据分析打交道的从业人员我可以负责任地说大多数免疫组库数据翻车都不是测序仪和钱的锅而是从样本状态、建库扩增到克隆型定义之间的细节出了问题。这篇文章我会把5转录组跑免疫组库的底层逻辑讲透然后拆解七个最容易被忽略、却能直接毁掉数据的细节。无论你是刚接触单细胞测序的科研新手还是正在做肿瘤免疫、疫苗评估、自身免疫病等课题的老手这篇内容都值得你在建库前和数据分析前各看一遍。1. 5转录组跑免疫组库的底层逻辑以及最容易被忽略的三个边界1.1 模板转换机制决定了VDJ信息的完整度5转录组方案比如10x Genomics的Chromium Single Cell Immune Profiling、BD Rhapsody的免疫图谱方案之所以能同时拿到基因表达谱和免疫组库信息核心依赖的是模板转换template switching机制。简单来说反转录酶从RNA模板合成cDNA到达5端时会在末端加上几个非模板的C碱基这时体系里的模板转换引物TSO通过互补的G碱基结合上去反转录酶顺势换模板继续延伸把TSO序列也复制进cDNA。这样最后得到的cDNA不仅包含了从poly(A)到5端的全长转录本信息还会在5端带上一段已知的人工序列后续的cDNA扩增、文库构建以及VDJ富集都以这段序列作为锚点。这个机制看起来顺理成章但它有一个隐蔽的隐患模板转换效率并不是100%。如果细胞状态差、RNA降解严重或者反转录体系里有杂质抑制了酶活性很多转录本根本没有走到5端就被提前终止。对于表达谱来说你可能只是看到基因检出数偏低但对于免疫组库来说这是致命的——因为VDJ富集依赖的正是“全长V(D)J转录本完整的5端”这个结构。转录本不完整模板转换没发生后面的VDJ扩增就根本没有可用的模板细胞自然就被判为“无VDJ信息”。所以很多免疫组库数据出问题的根源其实是前面表达谱这一层就已经出了问题只是表达谱的容错率比免疫组库高太多掩盖了真相。1.2 表达谱和VDJ数据同源但不等价第二个容易忽略的边界是表达谱和免疫组库数据虽然来自同一次反转录但它们的分流逻辑完全不同。表达谱是直接从全转录组cDNA中切片段、加接头、测序而免疫组库需要在cDNA基础上再走一轮甚至两轮靶向PCR把TCR/BCR的恒定区C区和J基因片段富集出来再加测序接头。这也就是说VDJ数据的质量不仅取决于反转录还取决于富集PCR的特异性和扩增效率。很多人的误区是只要表达谱质量好VDJ就一定好。我见过不少项目拿到Sample QC报告看到基因中位数、UMI中位数都挺漂亮便默认免疫组库数据也没什么问题。结果一跑Cell Ranger VDJ发现只有50%不到的细胞有有效的TCR链再回头看原始数据cDNA扩增峰形倒是没毛病但富集后的文库浓度极为不均匀说明靶向扩增环节出了问题。所以请记住一句话免疫组库数据是一条独立的质量流水线必须单独把QC做扎实。1.3 5端捕获对不同V基因存在天然偏向第三个边界容易被忽略但偏偏最影响下游注释。5转录组做免疫组库捕获的是转录本的5端而一个完整的TCR/BCR转录本很长大约1kb甚至更长我们的测序读长通常只覆盖5端的一部分。这意味着V基因的CDR1、CDR2区域以及框架区会有很好的覆盖但靠3端的CDR3区域往往依赖组装assembly把多个短片段拼起来才能确定完整的克隆型序列。如果这个转录本在样本制备或PCR过程中发生了断裂、降解或者测序读长偏向性问题导致CDR3区覆盖度不足克隆型拼接就会出现缺口。另外不同V基因的转录本表达水平、5端结构稳定性存在差异有的V基因在模板转换后能高效进入富集体系有的则效率偏低。这种偏倚在个体样本里可能不明显但当你拿两组样本做克隆多样性比较时如果一组样本的V基因分布和另一组显著不同先别急着下生物学结论要排查一下是不是建库偏倚造成的系统性差异。2. 样本准备阶段的三个致命细节细胞量、活性和混样策略2.1 细节一起始细胞量免疫组库的特殊敏感性表达谱实验里如果你的投入细胞量偏低顶多是捕获细胞数少数据还能用但免疫组库对起始细胞量敏感得多。原因在于TCR/BCR的克隆多样性呈现长尾分布——高频克隆占了大头低频克隆数量庞大且每种的细胞数极少。如果你的样本起始只有5000个T细胞稀有克隆的细胞数往往只有1到2个这时一次交通意外掉几个细胞克隆多样性看起来就会“断崖式下降”。从实际经验来说如果研究目标是高频克隆的克隆型追踪5000个细胞勉强能看但如果要评估克隆多样性、计算Chao1这类多样性指数或者做组间克隆结构差异比较至少要有1万到2万个目标细胞进入建库环节。需要特别提醒这里的“目标细胞”指的是TCR/BCR阳性的细胞不是你上机的总细胞数。比如你研究肿瘤浸润T细胞组织里可能混有大量肿瘤细胞、巨噬细胞起始细胞量要按“预期T细胞占比”倒推。想清楚这一点你才不会被样本制备后的细胞计数表骗了。2.2 细节二细胞活性怎么影响克隆占比细胞活性这个参数在普通转录组实验里已经很受重视到了免疫组库这里它的重要性再上一个台阶。死亡细胞会释放游离RNA这些RNA一旦进入凝胶微滴GEM体系就可能被当成某个“活细胞”的转录本进行标记。在表达谱层面这些游离RNA通常表现为线粒体基因比例升高、基因检出数低下清洗时很容易被过滤掉但在免疫组库层面如果游离RNA恰好是TCR/BCR转录本它们会混入真实细胞的VDJ数据中造成“幽灵克隆型”和细胞barcode串扰。更麻烦的是死亡细胞的TCR/BCR转录本往往是降解的、不完整的。这些不完整转录本进入富集PCR后要么扩增失败导致细胞被判为无VDJ信息要么扩增出截短的产物在后续克隆型拼接时制造一堆拼接失败的contig。我个人的阈值经验是冻存样本复苏后活性低于80%时非常不建议直接上免疫组库最好用85%以上的活性样本。同时在计算分析时务必要配合线粒体基因比例、细胞复杂度基因检出数等指标做联合过滤不能只看细胞活性就完事。2.3 细节三混样测序与深度规划的“成本陷阱”免疫组库的测序深度需求和你想象的可能不太一样。10x Genomics官网给出的建议是每个细胞大约5000 read pairs用于VDJ富集文库这看起来不多但别忘了你同时还要测表达谱文库表达谱通常是每个细胞2万到5万 read pairs。两个文库叠加一个细胞的总数据需求量并不低。如果项目样本多为了省钱把多个样本混到一个测序lane里就得先算清楚每个样本需要多少reads再乘以预期细胞数不然总会有样本在测序深度上吃亏。混样时还有个隐性陷阱reads按样本出现比例分配如果A样本的文库复杂度明显高于B样本那么A样本摊到的有效reads比例可能远比B样本低结果B样本克隆型轻轻松松测到饱和A样本却一直处于欠采样状态。判断免疫组库是否饱和一个简单实用的方法是看新增测序量是否还能带来新增克隆型。如果你的低频克隆尾巴还没有趋于平缓说明这个样本的测序深度仍不足。很多人的免疫组库数据“不可重复”不是因为技术水平不行只是因为每次测序深度都不一样低频克隆被随机捕获的程度完全不同。3. 建库扩增与UMI处理克隆型数量虚高的真正来源3.1 细节四cDNA扩增循环数多了不等于好5转录组方案中cDNA扩增一般叫cDNA amplification不同平台叫法略有差异是决定后续所有数据质量的关键一步。这一步的循环数通常建议在12到14个循环左右具体要根据起始RNA量来调整。我的经验是很多实验室为了提高产量把cDNA扩增循环数往上加了两三个循环结果产量是上去了但数据质量反而变差了。高循环数会导致两个问题。第一指数扩增会放大不同转录本之间的扩增效率差异高丰度转录本被进一步放大低丰度转录本被稀释低频克隆的检出率直线下降。第二扩增循环数多了同一样本的相同cDNA分子会产生大量重复拷贝这些重复会让后续的UMI去重变得困难甚至出现UMI碰撞详见细节五。判断cDNA扩增是否处于合理区间可以看扩增曲线的CT值或者Bioanalyzer峰形。如果主峰右侧出现明显的高分子量拖尾往往就是过度扩增的信号。3.2 细节五UMI去重与克隆型分组的同源序列陷阱UMIUnique Molecular Identifier唯一分子标识符设计的初衷是区分PCR重复和原始分子。但到了免疫组库这里事情变复杂了同一个TCR克隆的多个细胞共享完全相同的V(D)J重排序列。也就是说在同一个样本里不同细胞可能带有相同的UMI因为UMI是随机合成并标记到每个RNA分子上的和相同的克隆型序列。常规的UMI去重逻辑会把这些“不同细胞的相同克隆”误判为“同一个原始分子的PCR重复”导致克隆型对应细胞数量被系统性压缩。实际操作中Cell Ranger VDJ处理这个问题的方式是先做细胞barcode分组再做UMI去重然后根据克隆型序列的相似性把cells聚成克隆型。但如果你用的分析流程或自定义脚本没有正确区分“细胞barcode”和“分子UMI”就很容易把克隆型数量算错。我见过不止一个项目因为自定义分析时把UMI去重做得太激进同一个真实克隆被拆成十几个“克隆型”然后还能在热图里看出虚假的“克隆扩增”。要避免这个坑务必确认你的克隆型分组是在细胞barcode层面上进行而不是在分子层面上进行。3.3 细节六V基因引物池的覆盖盲区免疫组库富集PCR依赖V基因引物池V基因引物和C基因引物把5端带TSO序列的TCR/BCR转录本拉出来。这个引物池并不能覆盖所有V基因的所有等位基因尤其在非人源样本或者少见单倍型中引物池覆盖盲区可能导致部分V基因家族的转录本完全扩增不出来。比如人类TCR的TRAV基因家族不同等位基因在某些位点上存在单核苷酸多态性如果引物池的引物结合位点正好落在这个多态区域就可能漏掉一部分等位基因。这个问题的可怕之处在于它不会让你完全“没有数据”只会让某些V基因家族的克隆系统性地变少从而扭曲克隆谱系结构。判断是否存在这类偏倚可以用参考数据库比对后计算出每个样本的V基因使用频率再与公共数据库的同组织/同疾病V基因使用频率做对比。如果某一个V基因家族在所有样本里都异常偏低先别急着写进文章说“这个V基因家族被抑制”先检查一下引物池覆盖度。这是很多人踩过但很少主动报告的坑。4. 数据分析的“最后一道坑”参考库、比对参数与克隆型定义4.1 细节七参考数据库和比对参数的选择免疫组库分析里参考数据库的选择直接决定注释结果的准确率。很多初学者直接用Cell Ranger VDJ自带的参考库对人和小鼠样本来说问题不大但如果你的样本来自其他物种或者你研究的是转基因动物模型、抗体工程改造过的细胞系必须自己构建带完整等位基因信息的参考库。IMGT数据库是免疫组库序列注释的黄金标准建议在构建参考库时从IMGT下载最新的V、D、J、C基因序列再结合你要研究的物种使用Cell Ranger的mkvdjref命令构建。比对参数也需要特别注意。Cell Ranger VDJ对TCR/BCR的比对策略和普通转录组比对是不一样的它允许一定程度的跨基因比对和多位置比对因为V(D)J重排产生的序列本来就不完全等同于基因组上的某一段。如果把比对参数设置得太严格会漏掉很多真实的重排事件太宽松又会产生大量假阳性。我个人的习惯是在跑完Cell Ranger VDJ后额外检查一下“无比对no mappingcontig”的比例和“部分比对partial mappingcontig”的比例如果前者超过10%说明要么参考库有问题要么建库产物中存在大量非特异性扩增。4.2 克隆型定义不理解所有下游统计都是空中楼阁克隆型clonotype的定义看起来简单就是“同一个V(D)J重排”的细胞集但不同软件和不同协议对“同一个”的定义并不一致。Cell Ranger VDJ默认使用CDR3核苷酸序列加上V、J基因来定义克隆型同时允许一定比例的序列错配来做模糊聚类fuzzy clustering。MiXCR这类工具则使用独立的克隆型装配算法和过滤阈值。你用不同软件分析同一个样本得到的克隆型总数可能差距巨大——这不一定是谁算错了而是定义标准不同。更隐蔽的问题是“克隆型拆分”和“克隆型合并”两个方向上的错误。克隆型拆分指同一个真实克隆因为CDR3区域有少量测序错误被分成多个克隆型克隆型合并则指两个不同克隆因为CDR3序列相似度高被聚成了一个克隆型。对免疫组库分析而言克隆型拆分是高估多样性的元凶之一尤其是当你测序深度高、单细胞覆盖度不均的时候克隆型合并则主要影响低频克隆的检出。建议在对比不同样本的克隆结构时固定同一个版本的分析软件和参数不要中间换参数、换版本不然你根本分不清组间差异是真生物学差异还是分析参数差异。4.3 多样性指数和克隆扩增的统计坑分析的最后一步是计算多样性指数和克隆扩增程度。这里最常见的错误是直接拿样本A的Shannon指数和样本B的Shannon指数比较完全忽略了样本间测序深度的差异。多样性指数本质上对采样深度极其敏感测序深度越高检出的低频克隆越多S Shannon指数天然就更大。正确的做法是使用标准化方法消除测序深度影响比如基于稀疏化的重抽样rarefaction、或使用Chao1、ACE这类基于物种估计的指数来估算真实的克隆多样性。克隆扩增程度也有类似的坑。你计算“top10克隆占据比例的累积频率”如果样本A测序深度比样本B低那么样本A的高频克隆比例看上去会更高因此得出“样本A克隆扩增更明显”的结论——这是典型的采样偏差导致的假象。另一个容易忽略的点是某个克隆在样本里出现两个细胞和出现一百个细胞对扩增程度的贡献完全不是一个量级建议在报告中同时展示克隆型频率分布柱状图和累积曲线而不要只给一个平均扩增倍数。写在最后每次处理免疫组库数据前我都会强行要求自己先回答三个问题样本的细胞活性和细胞量有没有达到免疫组库要求的门槛构建参考库用的V/D/J/C基因注释是不是和样本物种一致克隆型定义的参数是不是和上批次分析保持一致这三个问题只要有一个回答不上来我就知道后面的分析要出幺蛾子。最后再分享一个很实用的小技巧分析完VDJ数据后画一张rank-abundance曲线横轴是克隆型排名纵轴是该克隆型的细胞数如果曲线右端拖尾的部分没有趋于平缓基本可以断定这个样本的测序深度还不足如果你看到曲线呈平滑下降且尾部逐级稀疏到个位数说明数据质量是可靠的这时候再做多样性和克隆结构比较才不会心虚。