基因编辑器的特异性筛选,过去大多依赖序列比对和一轮又一轮实验验证。最近看到北大、华东师大等团队提出的ContactSeek,用AF3接触概率来增强基因编辑器特异性,第一反应是:这个思路把问题换了一个维度。你不是在序列相似性上继续打补丁,而是把“特异性”变成一个可以在三维结构上比较的指标。这听起来像是一个计算方法的升级,但背后真正改变的,是我们在实验前如何筛选候选位点、如何判断一个脱靶风险高低,以及如何把结构预测放进基因编辑器开发的工作流里。
先还原一个真实场景。你在设计一个引导编辑器,目标位点效率不错,但在脱靶检测实验里发现两个“计划外”的位点有明显编辑痕迹。按老办法,你回去看gRNA和这两个位点的序列错配,发现其中一个错配数很多,按序列相似度根本不应该排进高风险列表。这时你就知道,序列层面的特征不够用了。你真正想知道的是:编辑器蛋白、gRNA和这段DNA在三维空间里,是不是真的能形成类似目标位点的稳定接触。这个判断,传统计算工具给不了,但结构预测工具可能给一个近似答案。ContactSeek想做的事情,就是把这个近似答案变成可排序的分数。
这篇文章我会从三个方面展开:先说为什么基因编辑器特异性本质上是一个结构问题;再拆一下ContactSeek这类方法到底在计算什么;最后落回实际使用,聊聊怎么跑通、怎么避坑、怎么判断它适合不适合你。
1. 为什么基因编辑器特异性会是一个“结构问题”
1.1 序列层面的匹配分数为什么不够
早期做gRNA特异性筛选,最常用的是序列比对。把gRNA和基因组做一次错配容忍搜索,统计候选位点的错配数量,再把错配位置按权重处理。比如种子区错配权重更高、PAM远端错配权重更低,最后给每个位点一个分数。
这套流程在常规CRISPR实验中确实有用,但它有个天花板:它只能描述“序列像不像”,不能描述“结构能不能配合”。
一个典型的反直觉现象是:有些位点序列匹配度很高,但体内根本不编辑;有些位点错配数量不少,却会出现脱靶。原因是编辑过程不是一次简单的核酸杂交,而是一连串的事件。Cas9要先识别PAM,然后gRNA的种子区和DNA配对,DNA双链被打开形成R-loop,最后HNH和RuvC结构域切割。每一步都涉及蛋白-DNA接触、核酸构象变化和空间位阻。序列相似,不代表这个复合物能稳定形成;序列有错配,也不代表一定不能形成。
序列打分模型可以把位置权重做得越来越细,甚至引入机器学习,但它缺少一个信息维度:三维空间里,蛋白和核酸到底接触了哪些位置、接触强度如何。这个信息,只有结构预测或者实验结构能提供。
1.2 从AF3接触概率切入:逻辑是什么
AF3是AlphaFold3这一类结构预测模型,它和上一代最大的不同,是能预测蛋白-DNA-RNA三元复合物,而不是只能预测蛋白单体。对基因编辑器来说,这是个关键突破。因为编辑器的功能高度依赖蛋白、gRNA和DNA三者的协同相互作用。
传统结构生物学要研究这种复合物,通常需要冷冻电镜、X射线晶体学或者分子动力学模拟,周期长、成本高。AF3类模型让普通计算课题组也能在几小时到几天内生成一个可能的三维构象。
光有结构还不行,你还需要一个量化的信号。AF3输出里除了原子坐标,还有一系列置信度指标。ContactSeek强调的“接触概率”,在实际使用中通常可以理解成:模型预测某个残基与某个碱基之间形成空间接触的倾向性。它有点像给每个接触对打了一个分,分数高表示模型认为这两个位置更可能在空间上靠近并发生相互作用。
把这种接触概率用在特异性上,思路就顺了:你不再只问“这段候选DNA和gRNA是不是互补”,而是问“如果把编辑器和gRNA放到这段DNA上,形成接触的位置和强度,和目标位点像不像”。如果接触模式差异明显,说明即使序列上勉强能配对,三维结构层面也可能不稳定。ContactSeek大概率的做法,就是把这个“像不像”变成分数,再拿来做候选位点排序。
这个过程,本质上是把特异性问题转化成了结构特征比较问题。这是一个非常值得注意的转向。序列问题有无数噪声,结构接触问题至少给你一个更接近生物物理本质的视角。
1.3 我的判断:为什么这件事值得关注
我最欣赏ContactSeek这类工作的点,不是“又加了一个AI模型”,而是它给基因编辑器开发提供了一个可计算的中间指标。
过去,特异性是一个功能结果。你只能在实验做完之后,通过测序数据来判断某个位点脱靶多不多。现在有了结构接触概率,你可以把“特异性”提前到实验之前,变成一个可以排序、可以优化、可以设置阈值的特征。这个变化听起来温和,实际会改变整个开发节奏。
当然,结构预测不是实验测量,接触概率也不等于体内脱靶概率。但如果把它放在初筛阶段,它是有效的减负工具。它不能替你回答“这个位点在实际细胞里会不会被编辑”,但它可以帮你把“值得做实验验证”的候选名单缩得更小。对真实项目来说,这已经是很大的收益。
2. ContactSeek到底在计算什么
2.1 AF3接触概率:从“结构有没有”到“接触有多强”
要用好这类方法,先得理解AF3接触概率是什么。
AlphaFold3的输入可以包含蛋白序列、DNA序列、RNA序列,甚至一些离子和化学修饰。输出是预测的三维坐标,以及一系列置信度指标。这里面的contact,一般指两个空间上靠得很近的原子或残基-碱基对。接触概率不是一个统一的标准字段,不同类型的模型和不同版本可能对它有不同定义。但在通常理解下,你可以把它看成:模型在预测结构时,对某个接触对是否成立给出的概率化判断。
打个比方。判断两个人适不适合一起工作,简历是一个维度,但你更想观察他们开会时的距离、眼神交流、话语重叠情况。这些“接触特征”比简历更能反映实际的协作能否发生。基因编辑器、gRNA和DNA之间的关系也是这样。序列说明书写得再像,也不如看一下三维空间中它们到底靠近了哪些位置。
不过这个类比有个边界。AF3接触概率不是真实的物理距离观测,也不是结合亲和力,更不是分子动力学模拟的自由能。它只是结构预测模型给出的内部判断。所以它适合做排序,不适合做绝对结论。
2.2 ContactSeek的核心思路:构造差异得分
虽然项目公开信息没有给出完整实现细节,但从方法命名和常见流程看,这类结构辅助筛选的方案通常包含下面几步。
第一步,对目标位点构建编辑器蛋白、gRNA和DNA的复合物输入。第二步,运行AF3预测,获得目标位点的接触概率矩阵。第三步,对每一个候选脱靶位点重复同样的操作。第四步,比较候选位点接触图和目标位点接触图的差异,构造一个特异性得分。第五步,对所有候选位点按得分排序。
这里面最关键的,不是“跑AF3”这一步,而是“如何比较接触图”。
如果只是比较两张图是否一模一样,会有很多技术坑。比如候选位点的DNA序列不同,接触图天然有差异;比如不同位点长度不同,直接比会产生长度偏差;比如AF3对低置信度区域的预测波动很大。ContactSeek这类方法的价值,很大程度上在于它怎么处理这些比较问题。
一个合理的设计思路是:重点关注编辑器蛋白与DNA关键区域的接触模式,而不是全图所有接触。比如PAM识别区、gRNA种子区对应的DNA链位置、切割位点周围的接触。这些区域的接触模式越接近目标位点,脱靶风险越高。反过来,如果关键区域的接触概率明显下降,说明这个候选位点很难像目标位点那样被稳定加工。
2.3 一个可参考的最小流程示例
下面这个伪代码不是ContactSeek的源码,只是为了帮你理解这类方法的一般结构。
# 简化伪代码:理解ContactSeek思路用 def contact_seek_score(editor_seq, grna_seq, target_dna, candidate_dna): # 1. 预测目标位点复合物 target_model = run_af3(editor_seq, grna_seq, target_dna) # 2. 预测候选位点复合物 candidate_model = run_af3(editor_seq, grna_seq, candidate_dna) # 3. 提取接触概率矩阵 target_contact = extract_contact_probability(target_model) candidate_contact = extract_contact_probability(candidate_model) # 4. 比较差异 score = contact_difference_score(target_contact, candidate_contact) return score实际项目中,run_af3需要你准备复合物输入,extract_contact_probability需要从AF3输出文件里解析出接触信息,contact_difference_score则需要做位置对齐和归一化。这几个环节都会影响最终排序。
注意:AF3是结构预测模型,不是实验检测工具。跑出来的结构只是“模型认为最可能的构象”,不是细胞里真实存在的状态。所以这个分数只能用来做初筛,不能直接当脱靶证据。
3. 在实际项目中怎么用ContactSeek这类方法
3.1 先跑通一个最小用例,而不是直接批量
如果你是第一次接触这类流程,我最不建议的事情就是:一上来拿几百个候选位点跑批量预测。
我给你一个更稳的路径。先找一条你已经验证过的gRNA,一个目标位点,再找两个实验确认过的脱靶位点。这个最小集合不需要大,但必须有已知答案。接下来,把三个位点分别跑一遍完整流程,从构建输入到提取接触概率,再到算差异得分。
跑通之后,先看三件事。
第一,AF3是不是生成了完整的蛋白-DNA-RNA复合物结构,有没有因为输入格式或者序列方向问题直接失败。第二,接触概率矩阵里,目标位点的关键接触区域是不是明显高于其他区域,如果连目标位点都看不出信号,那整个流程需要重新检查输入。第三,排序结果是不是把两个已知脱靶位点排到了比无关位点更高的风险档位。如果这三个检查都通过,再扩大到更大的候选集合。
最小用例的目的不是证明流程没有问题,而是确认你对输入的理解是对的。很多时候,问题出在DNA链方向、PAM位置、gRNA是否选择正确,而不是算法本身。
3.2 输入准备和参数边界
结构辅助筛选和传统序列筛选有一个非常大的差异:输入格式更严格。
序列工具通常会容忍各种奇怪输入,少一个碱基、缺一个PAM,结果可能仍能跑出来。但AF3这类结构预测工具对输入非常敏感。蛋白序列要用编辑器全长,DNA序列要明确是正链还是反链,PAM位置不能放错,gRNA骨架也不能截断。候选位点最好取相同长度的上下文窗口,比如PAM两侧各取30个核苷酸。不一致的窗口长度会直接污染接触图比较。
关于参数,你需要关注这几个点:
- AF3版本:不同版本对核酸复合物预测能力有差异,接触概率分布也会漂移。定下一个版本后不要频繁切换。
- 随机种子:如果AF3支持采样,固定种子能提高可复现性。
- 接触概率阈值:太低的接触概率很可能只是噪声,不需要纳入差异分数。
- 计算资源:每个复合物预测都可能消耗较多显存和时间。先估计单个位点的成本,再决定批量大小。
如果你只是做学习或小规模验证,这些参数只要保守设置就行。如果要长期使用,最好把所有输入模板、版本号、种子、阈值都记录在项目配置文件里,否则三个月后你根本没法复现自己当时的结果。
3.3 一个落地流程:从脱靶检测数据到实验验证
在实际项目中,我不会把ContactSeek当成一个独立工具,而是把它放进一条更长的筛选流水线。
第一步,用常规序列工具生成候选脱靶位点列表。比如针对你的编辑器类型,搜索带PAM的错配容忍位点。这一步不需要用结构预测,因为整个基因组范围太大了,先用序列方法快速过滤一轮是合理的。
第二步,从候选列表里抽样形成的子集。不要在一开始就对全部候选位点跑结构预测。先抽几十个位点,尽量覆盖不同错配类型和不同序列相似度。
第三步,用ContactSeek风格流程对这几十个位点做排序。第四步,选择排序前几十位和后几十位,作为高风险和低风险两组,然后做细胞实验或体外切割实验,验证排序和真实脱靶之间的相关性。
第五步,如果相关性符合预期,再把整个流程推广到全部候选位点。如果相关性不好,不要急着加更多位点,先回去检查输入和特征定义。
这个流程的核心原则是:用小样本校准,大样本再执行。它既控制了计算成本,也给了你一个判断工具是否有效的窗口。
注意:别把计算排序当成直接证据。就算ContactSeek把一个位点排到最高风险,也不能直接写进论文或者产品结论,必须用独立实验验证。计算的价值是缩小实验范围,不是替代实验责任。
3.4 结果异常时的排查链路
如果排序结果和实验常识明显冲突,或者目标位点的接触概率反而低得离谱,不要急着调参。先按下面这个顺序排查。
第一,看输入序列。候选DNA链方向是否正确?gRNA序列是否和目标链匹配?PAM是不是被不小心删了?很多结构预测失败都来自这类低级错误。
第二,看接触概率提取位置。你提取的是蛋白-DNA接触,还是gRNA-DNA接触?编辑器特异性可能更依赖gRNA-DNA接触和PAM识别区接触。如果你选错了接触类型,排序自然乱。
第三,看长度标准化。候选位点的上下文窗口是否一致?如果有的位点取了20个碱基,有的取了80个碱基,接触图比较会失真。
第四,看AF3输出置信度。低置信度区域比较多的时候,接触概率可靠性会下降。你需要关注模型有没有给出异常结构,比如DNA链完全错位。
第五,看版本和随机种子。换过AF3版本或者没有固定随机种子,前后结果可能根本不可比。
第六,最后才回头调整分数定义。如果前五步都正常,但排序仍然不对,那就需要考虑是不是差异得分的权重设置不合适,或者需要引入更多特征。很多项目其实不是败在预测模型,而是败在输入和特征提取。
4. 它的局限和更远的工程意义
4.1 结构预测不是实验测量
这是使用ContactSeek这类方法时最需要记住的一句话。
AF3预测结构,本质是统计学习的结果。它擅长从大量已知结构中学到规律,但遇到特殊的编辑器突变、特殊的核酸修饰或者非典型构象时,预测结果可能偏离真实情况。更关键的是,细胞内的DNA不是裸露的线性双链。染色质包装、核小体占据、其他蛋白竞争、DNA甲基化,这些因素都会影响编辑效率,但AF3通常看不见。
所以ContactSeek给出的接触概率,可以说是一条“假设蛋白和DNA裸接触”的线索。它能帮你判断分子层面能不能形成稳定接触,但判断不了这个位点在基因组环境中是否真正可及。
这也是为什么你仍然需要实验,需要GUIDE-seq这类的脱靶检测,需要体外切割实验来做交叉确认。结构筛选是减少实验轮次,不是取消实验轮次。
4.2 适合谁,不适合谁
如果你正在做基因编辑器研发、gRNA设计平台、脱靶筛选流程优化,ContactSeek这类思路值得认真测试。它尤其适合那些需要批量评估大量候选位点的团队。因为你已经有计算资源,也已经有较系统的工程流程,多跑一个AF3只是时间和成本问题。
如果你所在团队没有GPU资源,也没有人愿意维护结构预测环境,只偶尔做一两个常规CRISPR位点,那么我不建议你强行引入这套流程。常规的序列特异性工具已经够用。结构预测增加的不是一点成本,而是批次管理和结果解析的复杂度。它适合解决问题,不适合制造新问题。
如果你正在做临床相关评估,那更要谨慎。结构预测分数只能作为研究阶段的前置参考,任何安全相关结论都需要严格实验和监管评估。
4.3 长期影响:把筛选从实验驱动变成计算辅助驱动
ContactSeek这类工作真正的长期意义,是让基因编辑器开发从“实验试错”逐渐变成“计算排序优先,实验验证兜底”。
在传统流程里,你想提高编辑器特异性,就要设计几十个突变体,然后一个一个做实验筛选。这个过程慢,而且结果很难直观解释。如果接触概率能够反映蛋白突变对靶位点和脱靶位点接触影响的差异,那它就可以被当作一个优化目标。你可以在计算机里先筛选一轮蛋白突变,选出那些保持靶位点接触、同时显著降低已知脱靶接触的候选突变,再进实验验证。这个逻辑一旦建立,就不仅是gRNA筛选,而是蛋白工程和gRNA设计都能获得结构层面的指导。
这会改变工作流的顺序。以前你可能是“先实验,再解释”,以后可能是“先计算,再验证”。后者不一定更准确,但一定更高效。
4.4 一个可复用的框架:三阶段结构辅助筛选
最后,把这次讨论沉淀成一个可以复用的框架,我叫它“三阶段结构辅助筛选法”,适合所有类似ContactSeek思路的工具。
| 阶段 | 目的 | 典型输入 | 关键检查 |
|---|---|---|---|
| 预处理 | 生成和规范候选位点 | 编辑器序列、靶位点、候选DNA列表 | PAM位置、链方向、窗口长度一致 |
| 结构预测 | 得到接触概率特征 | AF3复合物预测 | 输出完整、置信度可接受、种子固定 |
| 排序与验证 | 把分数变成可执行名单 | 差异得分、已知脱靶位点 | 用已知答案校准,再做实验验证 |
这个框架不绑定具体工具。今天你用的是ContactSeek,明天可能换成其他结构辅助筛选方法,框架仍然是成立的。核心动作就三件事:把候选位点变规范,用结构模型提取接触概率,再拿已知数据校准排序。
注意:如果你换了一个编辑器类型,比如从Cas9换成碱基编辑器或引导编辑器,接触概率的分布可能会完全不同。之前标定的阈值和权重不能直接迁移,需要重新用已知位点做一遍校准。
回到最开始的问题。基因编辑器的脱靶风险,过去只能靠实验来回答。ContactSeek这类用AF3接触概率来增强特异性的方法,试图在实验之前,先用结构信息给候选位点排一个序。它不是万能的,也不会让实验变得可有可无,但它很可能让实验变得更值钱,因为你把研究资源集中在了计算筛选出来的高价值位点上。
下一步,最该做的不是急着跑几千个候选位点,而是找一条已知gRNA、一个目标位点、两个验证过的脱靶位点,把从AF3接触到排序的完整流程跑通。跑通一次之后,你才能真正判断:对你手里的数据来说,接触概率到底有没有信息量。