暑假后
other-other暑假后新项目和之前项目的推进
full-length HERV transcripts
Systematic characterization of the disease-relevant regulation of putatively full-length HERV transcripts in Alzheimer’s cortex
- 收集尽可能多的数据(AD的单细胞数据,不同脑区,有没有配套SNP的)
- 定义“全长转录本”和“嵌合转录本”(“它为什么表达变化、它和gene是什么关系”)
- 嵌合转录本:HERV被纳入宿主基因转录本中,作为alternative promoter、new exon、internal exon、3’UTR或terminator
- putatively full-length:不用特别标准的拼接方法,稍微简单一点,去掉只在其中一端有reads的,要求在LTR/exon都有reads(和嵌合区分,嵌合可能是只剪接了其中一段)
- (regional表观驱动型:所在区域在AD中变得更开放(通过表观遗传标记识别),导致HERV表达上升)
- (复杂调控型:同时受到邻近gene转录读穿、局部开放、TF结合、遗传变异、细胞状态变化等多因素影响)
- 选出值得研究的转录本
- AD-NC差异表达的HERV
- 不同细胞类型中特异变化的HERV(以及hERV表达是否有细胞类型特异性),参考2024 NC–Single-cell eQTL mapping of human endogenous retroviruses reveals cell type-specific genetic regulation in autoimmune diseases / stellarscope原文:A single-cell transposable element atlas of human cell identity
- 共表达网络+GO看功能,参考2024 NC–Integrating human endogenous retroviruses into transcriptome-wide association studies highlights novel risk factors for major psychiatric conditions
- 前述分类中各类别是否有功能偏好?比如嵌合转录本型更容易和邻近基因表达有关、表观驱动型更多受炎症、抗病毒等细胞通路激活影响、复杂调控型更能体现细胞状态?
- 挖掘上游调控因素
-
TF层面:看这些HERV/LTR附近是否富集某些TF motif,比如炎症相关TF、干扰素相关TF、神经元/胶质细胞特异TF;再结合TF自身表达或TF活性,解释为什么某类HERV在某些细胞类型里被激活
参考Single-nucleus chromatin accessibility and transcriptomic characterization of Alzheimer’s disease
-
(如果有SNP数据)SNP层面:看是否有遗传变异调控HERV表达,即HERV-eQTL;再看这些SNP是否也和AD风险相关
-
- 与AD疾病作相关:
- (可以先算一下)如果找不到有基因型的数据,可以用别人做好的HERV-QTL+cortex AD GWAS summary做SMR:SNP → HERV表达 → AD风险,参考2024 NC–Single-cell eQTL mapping of human endogenous retroviruses reveals cell type-specific genetic regulation in autoimmune diseases
- HERV~SNP的QTL:某个SNP是否调控某个HERV表达
- AD~SNP的GWAS summary:某个SNP是否影响AD风险
- 用自己的HERV~gene关系+公开gene eQTL,间接推断AD状态下HERV~SNP关系
- 自己的表达矩阵:
HERV表达≈β₁×gene表达 - 公开cortex gene eQTL:
gene表达≈β₂×SNP - 上述两个结合:
SNP对HERV的间接影响≈β₂×β₁
优点是可以利用自己在AD cortex中得到的HERV-gene关系,所以更贴近AD状态;缺点是HERV~gene相关性不一定代表gene调控HERV,也可能是共同受细胞状态、表观调控等的影响
- 自己的表达矩阵:
-
把两条证据合并:直接遗传证据
公开HERV-eQTL+AD GWAS→SMR+间接遗传证据自己的HERV-gene关系+公开gene eQTL→推断HERV调控SNP如果某个HERV同时
在AD中差异表达(或者还有细胞类型特异性)+判明转录本类别(邻近gene也和AD机制有关)+有共表达功能解释+有HERV-eQTL/SMR或推断SNP支持,那么它就可以作为更高可信的AD疾病相关HERV候选
- (可以先算一下)如果找不到有基因型的数据,可以用别人做好的HERV-QTL+cortex AD GWAS summary做SMR:SNP → HERV表达 → AD风险,参考2024 NC–Single-cell eQTL mapping of human endogenous retroviruses reveals cell type-specific genetic regulation in autoimmune diseases
数据:
- 已有:毕设的GSE157827、GSE174367
- 可以找一下:
- 包含脑在内的单细胞atac:https://health.tsinghua.edu.cn/human-scatac-corpus/download.php
- 看看有没有fastq或bam:Spatiotemporal transcriptome atlas of human embryos after gastrulation
- Integrated multimodal cell atlas of Alzheimer’s disease使用SEA-AD进一步提供MTG/A9的snRNA、snATAC、snMultiome、MERFISH和病理连续进展分数
碱基编辑
基础概念
碱基编辑(base editing, BE):传统Cas9通常造成DNA双链断裂,然后细胞修复时产生indel(核苷酸片段的插入或缺失)。碱基编辑器一般是把Cas9 nickase和一个脱氨酶deaminase融合起来,让它在不造成双链断裂的情况下,把某个碱基改成另一个碱基。常见几类是:
- ABE(adenine base editor):把A•T改成G•C
- CBE(cytosine base editor):把C•G改成T•A
- CGBE(C•G to G•C base editor):把C•G改成G•C
可以把CRISPR系统想象成“定位器+编辑器”:
-
sgRNA是定位器,它里面有一段通常20个核苷酸(20nt)长的序列,叫spacer,这段序列和目标DNA互补配对,DNA上被它识别的那段互补序列叫protospacer
很多模型说“输入20nt protospacer”,本质上就是输入目标DNA序列附近的信息
- PAM是Cas9识别目标时需要的短序列,比如经典SpCas9常见PAM是NGG。没有合适PAM,即使sgRNA和DNA能配对,Cas9也不一定能稳定结合。所以PAM会影响一个位点能不能编辑,也会影响目标碱基落在编辑窗口的哪个位置
- scaffold是sgRNA中不与DNA配对、负责和Cas9结合的结构部分

↑以CBE的工作原理为例,参考文章
编辑任务里有三个层次:
-
第一,能不能编辑,也就是效率高不高
编辑效率(editing efficiency):在某个位点,有多少比例的测序reads发生了目标类型的碱基转换
- 比如某个ABE实验中,一个目标A位点测到1000条reads,其中300条A变成G,那么这个位置的A-to-G编辑效率可以理解为30%
- 不同论文的具体定义有细微差别,有的看总编辑效率,有的看某个位点的编辑频率,有的看所有编辑产物中某种产物的比例
-
第二,编辑哪里,也就是窗口在哪些位置
编辑窗口(editing window):在sgRNA对应的protospacer中,哪些位置最容易被碱基编辑器改到
- 例如经典ABE可能在protospacer的第4-8位附近编辑比较高。假设第5位和第7位都有A,那么ABE可能不只改你想要的第5位,也会顺手改第7位。这个“顺手改掉的附近碱基”就是bystander edit
-
第三,是否精准,也就是只改目标碱基,还是把旁边的A/C也改掉
bystander和off-target:
- Bystander edit:同一靶点内部的不精准——发生在同一个目标位点附近。比如你想改protospacer第5位的A,但第6位、第7位也有A,ABE也把它们改了
- Off-target edit:靶点外编辑——发生在基因组其他位置。也就是sgRNA本来应该去A位点,但它跑到相似序列的B位点也发生结合和编辑
R-loop可以理解为Cas9-sgRNA识别DNA后形成的“打开状态”。正常DNA是双链配对的。Cas9带着sgRNA来到目标位点后,sgRNA会和DNA中的一条链配对,另一条DNA链被挤开,于是局部DNA双链被打开,这个结构就叫R-loop
- 碱基编辑器里的脱氨酶要接触到目标碱基,DNA必须在局部处于比较可接近的状态。或者说,某个位置DNA双链打开得越充分,脱氨酶越可能接触到那个碱基,编辑效率可能越高
-
distance就是DNA两条链之间的距离(三维结构里的空间距离)
C1-C1 pdb Cas9 absolute:大概率指的是在结构中计算两条DNA链对应碱基的C1’原子之间的距离,C1’是核糖/脱氧核糖上的一个原子。正常双链DNA中,互补碱基靠得很近;当R-loop打开后,两条链距离变大
短sgRNA:
-
短sgRNA形成的R-loop可能不那么稳定,可能让编辑窗口变窄、bystander减少,编辑更精准(18-nt或16-nt sgRNA能减少bystander)
标准sgRNA一般是20nt,短sgRNA比如18nt或16nt,和DNA互补配对的长度变短,R-loop可能变短或不稳定;如果R-loop打开范围变小,那么脱氨酶能接触到的DNA区域可能也变窄,可能减少不想要的bystander
- 短sgRNA也可能降低整体on-target效率,因为定位和结合变弱
- 是否会降低脱靶:
- R-loop稳定性降低后,非目标位点不容易被Cas9打开,会降低脱靶
- 匹配核苷酸更少,可能反而更容易匹配到其他位置
- 后续需要数据支持
AF3:AlphaFold3。这里不是直接用AF3预测编辑效率,而是用AF3预测Cas蛋白+sgRNA+DNA复合体的三维结构
- 在这里,20-nt真实结构只有两个,18-nt、16-nt这些只能用AF3预测;他们把Cas蛋白、RNA、DNA复合体拿去AF3预测,然后从结构中提取DNA双链distance
空间构象转移映射:不是标准名词,按聊天内容理解,它大概是
- 先在20-nt条件下建立关系:
20-nt R-loop distance → 20-nt真实编辑效率/窗口 - 然后把这个关系迁移到18-nt条件:
18-nt R-loop distance → 预测18-nt编辑效率/窗口 -
它假设“distance和编辑效率之间的关系”在不同sgRNA长度之间可以部分复用。这个思路直观,但有一个关键假设:18-nt和20-nt的主要差别可以由R-loop distance解释
distance是否只和长度有关?还是也和target sequence本身有关?目前只试了一个位点的不同长度,所以这个假设还不能算稳
论文主要思路
2020Cell_Determinants of Base Editing Outcomes from Target Library Analysis and Machine Learning:比较早、比较经典的碱基编辑预测工作。在哺乳动物细胞中分析了38,538个整合到基因组中的靶点
- BE-Hive包含两个主要部分:
- efficiency model,预测这个靶点总体编辑效率高不高。它用到的特征包括sgRNA melting temperature、G/C比例、dinucleotide motif、activity window等
- bystander editing model,预测具体会产生哪些编辑产物。比如第5位A被改、第7位A被改、两个都改,分别占多少比例。这个部分用了deep conditional autoregressive model,可以预测bystander pattern
- 关心“编辑效率+旁观者编辑+精准性”,非常适合拿来理解短sgRNA如何减少bystander。但它原始输入主要还是序列,不是R-loop三维结构
2023NBT_Deep learning models to predict the editing efficiencies and outcomes of diverse base editors:编辑器和Cas9变体太多了,怎么选最合适的组合。系统比较了7种base editor和9种Cas9变体,开发了两个模型
- DeepCas9variants:预测不同Cas9变体在某个目标序列上的活性。也就是先判断“哪种Cas9更适合这个PAM/这个序列”
- DeepBE:进一步预测63种BE的编辑效率和结果。63来自7种base-converting domain×9种Cas9 nickase变体
- 这篇文章是“选择编辑器/选择Cas9变体/选择sgRNA”的工具,重点是PAM和Cas9变体带来的差异。也说明了一个概念:sgRNA设计和效率预测是两件事,但常常被集成在一个工具里
2025Genome Biology_Predicting adenine base editing efficiencies in different cellular contexts by deep learning:主要研究adenine base editing,也就是ABE,而且特别关注不同细胞环境和递送方式,比如HEK293T细胞、mRNA-LNP、AAV、小鼠肝脏等。有两个输出层面的模型
- Efficiency Model:预测总编辑效率
- Proportion Model:预测编辑产物在edited reads中的分布
- 两个模型的输出结合起来得到最终编辑效率预测
- 对我们的研究价值比较高:
- 是ABE方向,和ABE8e、短sgRNA窗口比较贴近
- 有比较丰富的实验数据,可以拿来训练“distance→编辑窗口”的简化模型
- 它本身的主要创新点不是sgRNA长度,而是不同细胞/递送环境下ABE预测,尤其是mRNA递送数据更能保持in vivo预测准确性
2025NC_Deep learning models simultaneously trained on multiple datasets improve base-editing activity prediction:“效果最好”的模型。把多个来源的数据一起训练,并且保留每条数据来自哪个dataset的信息。整合了ABE7.10、ABE8e、BE4等多个数据集,开发了CRISPRon-ABE和CRISPRon-CBE,用于预测gRNA编辑效率和outcome frequency
- 输入不只是20nt protospacer,还包括
- 30nt target sequence = 20nt protospacer + PAM + 两侧flanking sequence
- gRNA-DNA binding energy ΔGB
- predicted Cas9 efficiency
- target nucleotide editing position
- dataset one-hot encoding:告诉模型这条数据来自SURRO-seq、Song、Arbab、Kissling ABE7.10还是Kissling ABE8e。让模型可以学习不同数据集之间的共性和差异;预测时还可以给不同dataset设置权重
| 模型/论文 | 主要解决什么 | 输入主要是什么 | 输出是什么 | 和现任务的关系 |
|---|---|---|---|---|
| 2020Cell BE-Hive | 预测BE效率和bystander pattern | target sequence、sgRNA特征、base editor、cell type等 | 编辑效率、编辑产物分布 | 经典、相对早、适合理解bystander和precision |
| 2023NBT DeepBE | 在很多Cas9/BE组合里选最合适的 | 序列、PAM、Cas9变体、BE类型 | 63种BE的效率和outcome | 适合理解“sgRNA设计”和“BE选择” |
| 2025Genome Biology BEDICT2.0 | 预测ABE在不同细胞/递送环境中的效率 | protospacer+PAM等序列输入 | ABE效率和产物比例 | A已用其数据做初步尝试,适合短期推进 |
| 2025NC CRISPRon-ABE/CBE | 多数据集联合训练,提高ABE/CBE预测 | 30nt序列、ΔGB、Cas9效率、dataset标签等 | gRNA效率和outcome frequency | 更像当前最强参考框架,适合后续做严肃模型 |
“sgRNA设计工具”和“efficiency预测工具”是什么关系:概念上是两件事,实际工具里经常合在一起
- sgRNA设计是先找候选项。例如给你一个想编辑的A,程序会找附近有没有合适PAM,设计哪些sgRNA能让这个A落在编辑窗口里
- efficiency预测是给这些候选sgRNA打分。例如sgRNA1预测效率30%,sgRNA2预测效率5%,sgRNA3虽然效率高但bystander很多
- 实际应用时一般是:先生成候选sgRNA → 再预测每条sgRNA的效率和bystander → 排序选择最优方案
如果只是把sgRNA长度加进模型sequence特征 + sgRNA长度 → 编辑效率,那创新性比较弱,因为长度只是一个普通条件变量,更完整的模型是sgRNA长度改变 → R-loop结构改变 → DNA打开程度改变 → 编辑窗口改变 → bystander减少、精准性提高
- 新特征不是“18”或“20”这个数字,而是18-nt/20-nt条件下每个位置的R-loop distance曲线
- 比较可创新的地方是把结构信息引入碱基编辑预测模型。过去这些模型主要用序列、PAM、编辑器类型、Cas9活性、binding energy、dataset来源等特征,没有显式用三维结构信息
R-loop distance到底是主要由sgRNA长度决定,还是也受target sequence影响:
- 如果distance只和长度有关,那么18-nt所有位点都用同一条distance曲线,这更像是一个“全局窗口校正因子”
- 如果distance和每条sgRNA/target sequence都有关,那么就需要给每条sgRNA都预测结构,再提取position-specific distance,这样才是真正的结构增强模型
四篇论文已经能根据序列、PAM、编辑器类型、Cas9活性、数据集来源预测20-nt sgRNA下的碱基编辑效率和产物分布,现在想加入的是sgRNA变短后R-loop三维构象变化产生的DNA双链distance特征,用它把模型从20-nt条件扩展到18-nt/16-nt条件,并重点解释为什么短sgRNA可能让编辑窗口变窄、bystander减少、精准性提高
2025NC crispron-BE
module load miniconda3/base
conda activate crispronbe
conda create -n crispronbe python=3.10 tensorflow=2.10.0 biopython=1.79 viennarna=2.5.1 pandas=2.2.2 matplotlib openpyxl gemmi scikit-learn -y
cd ~
git clone https://github.com/RTH-tools/crispron-BE.git
cd crispron-BE
bash bin/download_and_test.sh
大致流程:
- 输入一段DNA序列
- 找出符合NGG PAM的30nt target
- 计算一些辅助特征
- 枚举可能的碱基编辑产物
- 把这些东西转成神经网络能读的矩阵
- 加载训练好的模型
- 输出编辑效率和各编辑产物频率
项目结构
bin/CRISPRonBE.sh:总入口,负责串联全部步骤bin/get_30mers_from_fa.py:从输入FASTA中找30mer和23merbin/CRISPRspec_CRISPRoff_pipeline.py:计算CRISPRoff特征bin/DeepCRISPRon_eval.py:预测Cas9活性,生成crispron.csvbin/DeepCRISPRonBE_eval.py:主预测脚本,加载CRISPRon-BE模型(控制“预测时”怎么构建输入特征)bin/DeepCRISPRonBE_train.py:训练脚本,定义模型结构(控制“训练时”模型结构是什么)data/CRISPRonBE_models/ABE/:训练好的ABE模型data/CRISPRonBE_models/CBE/:训练好的CBE模型
总入口:./bin/CRISPRonBE.sh ABE input.fa outdir weight
ABE/CBE:选择碱基编辑器类型input.fa:输入DNA序列outdir:输出目录weight:可选,dataset权重
先生成30mers.fa和23mers.fa,然后用CRISPRoff生成CRISPRparams.tsv,然后用DeepCRISPRon生成crispron.csv,最后用DeepCRISPRonBE_eval.py生成最终预测结果
get_30mers_from_fa.py生成模式需要输入的FASTA:4nt upstream + 20nt protospacer + 3nt PAM + 3nt downstream格式
- 扫描输入序列
- 找到符合NGG PAM的位置
- 取这个位置附近的30nt
- 同时输出23nt guide+PAM
PRE_GUIDE=4
GUIDE=20
PRE_PAM=1
PAM='GG'
POST_PAM=3
TOTAL=30
- PAM实际是NGG:其中PRE_PAM=1代表PAM第一个任意碱基N,
PAM='GG'代表后两个碱基必须是GG - 后续所有模型输入都围绕这个30nt target展开
get_30mers_from_fa.py-CRISPRparams.tsv:给每个target加一个“gRNA-DNA结合/结构稳定性相关”的数值特征,包含RNA-DNA hybridisation energy、DNA-DNA opening energy、spacer self-folding energy和CRISPRoff score等特征,但实际上CRISPRon-BE主模型实际只取了CRISPRoff_score这一列(从30mer中截取20nt protospacer + 3nt PAM,然后用这个23mer去这个文件里查对应的CRISPRoff_score)
DeepCRISPRon_eval.py-crispron.csv:Cas9活性预测(也是模型的输入特征),包含30nt序列和CRISPRon预测的Cas9 indel frequency。读取30mer和CRISPRoff特征,构建两个输入30nt one-hot序列+CRISPRoff相关数值,然后加载CRISPRon模型预测Cas9活性,输出ID,30mer,CRISPRon
one-hot编码:神经网络不能直接读A/T/G/C这些字符,所以要把序列转成数字矩阵
-
一条简化的4nt序列ATGC会变成
A [1,0,0,0] T [0,1,0,0] G [0,0,1,0] C [0,0,0,1]这样的4×4二维矩阵
-
实际的模型输入:
one_hot: (None,30,4),None表示样本数量可以变化,比如预测10个outcome,shape就是10 × 30 × 4
outcome_properties:CRISPRon-BE不是只预测“某条gRNA总体效率是多少”,它还预测不同编辑产物的频率
- 同一个target可能产生多个outcome:例如ABE编辑窗口内有2个A,会有3种编辑产物
- 第1个A被编辑
- 第2个A被编辑
- 两个A都被编辑
- outcome_properties是一个8维向量,表示编辑窗口内每个位置是否被编辑:比如窗口长度是8,如果第2和第5个位置被编辑,就可以表示成
[0,1,0,0,1,0,0,0]
模型的输入是所有target的所有possible outcomes数量:假设有一条target窗口里有3个A,那么可能outcome有7种,程序会生成一个dataframe
seq_id target outcome1 outcome_feature1
seq_id target outcome2 outcome_feature2
seq_id target outcome3 outcome_feature3
...
seq_id target outcome7 outcome_feature7
| 输入名 | 形状 | 内容 | 来源 |
|---|---|---|---|
one_hot |
n × 30 × 4 |
30nt target序列 | 30mers.fa |
outcome_properties |
n × 8 |
编辑窗口中哪些位点被编辑 | 程序枚举outcome |
energy_properties |
n × 1 |
CRISPRoff score | CRISPRparams.tsv |
cas9 |
n × 1 |
CRISPRon预测Cas9活性 | crispron.csv |
dataset |
ABE:n × 5; CBE:n × 3 |
数据集权重 | 命令行weight |
- dataset weight:该模型不是把所有数据混在一起当成同一种实验
- ABE需要5个weight,依次代表SURRO-seq、Song、Arbab、Kissling ABEmax、Kissling ABE8e;CBE需要3个weight,依次代表SURRO-seq、Song、Arbab
0-0-0-0-1代表完全按Kissling ABE8e数据集来做dataset条件,0.5-0.5-0-0-0就是SURRO-seq和Song数据集各占50%- 如果gRNA是为ABE8e设计的,建议给Kissling ABE8e数据集100%权重;如果是ABE7.10或BE4且平台不清楚,则根据scaffold和实验平台选择不同权重
模型结构:以ABE模型为例。ABE模型的one_hot输入先进入三个卷积分支Conv1_1D/Conv2_1D/Conv3_1D;它们分别输出不同长度和filter数量的序列特征,然后经过pooling、flatten,拼接成一个6140维向量,再进入Dense层
one_hot输入
→ Conv1D分支1
→ Conv1D分支2
→ Conv1D分支3
→ Flatten
→ 拼接
→ Dense1
→ 拼接outcome/energy/cas9/dataset
→ Dense2
→ Dense3
→ Output:2个数
- 卷积分支
Conv1_1D/Conv2_1D/Conv3_1D:相当于用三种不同的“扫描器”看同一条30nt序列- Conv1_1D → 输出(None,28,240)
- Conv2_1D → 输出(None,26,140)
- Conv3_1D → 输出(None,24,80)
输出长度不同,通常意味着卷积核大小不同。卷积核越大,一次看的序列片段越长;卷积核越小,更关注短motif。然后模型把这些不同尺度的信息拼起来
- Dense层和拼接层:分两步处理信息
- 只用30nt序列提取序列特征:
one_hot → CNN → Dense1 - 把序列特征和其它非序列特征拼起来:
Dense1结果 + outcome + CRISPRoff + CRISPRon + dataset weight → Dense2/Dense3 → 输出(后面加特征可以加在这里)
- 只用30nt序列提取序列特征:
- 输出的两个数
pred_eff:这条gRNA的总体编辑效率,同一个target的不同outcome会共享一个最终pred_eff。程序会在normalize_dataset()中对同一个seq_id下的pred_eff取平均pred_freq:当前这个outcome的预测频率
- 结果表
- 一行 = 一个target的一种可能编辑产物
- pred_eff = 这条target/gRNA总体有多少比例会被编辑
- pred_freq = 具体变成这一种产物的比例
关键组成部分:
- 训练脚本
DeepCRISPRonBE_train.py:负责读取训练数据、定义模型结构、把输入X和真实标签y喂给模型、不断调整模型参数、保存表现最好的模型model.fit(tx,ty,validation_data=(vx,vy),...):训练过程。ty/vy是真实实验值,代表真实editing efficiency和真实outcome frequencyModelCheckpoint(args.m,save_best_only=True):保存最佳模型
- 预测脚本
DeepCRISPRonBE_eval.py:加载已经训练好的模型、准备输入X、预测、输出预测结果keras.models.load_model(path)和model.predict(X):预测- 为什么有很多模型
model_1_1/model_1_2/...:用多个模型分别预测,取平均作为最终预测。这样通常比单个模型更稳定
- 训练数据格式
- refs:20nt gRNA sequence
- outcomes:20nt outcome sequence
- editingeff:gRNA editing efficiency
- outcomefreq:outcome frequency
- surro_target:30nt target DNA sequence
- source:数据来源
- partition:分区
总结:
| 阶段 | 文件/函数 | 输入 | 输出 | 作用 |
|---|---|---|---|---|
| 找靶点 | get_30mers_from_fa.py |
任意FASTA | 30mers.fa,23mers.fa |
找NGG PAM并提取固定长度序列 |
| 算能量 | CRISPRspec_CRISPRoff_pipeline.py |
23mers.fa |
CRISPRparams.tsv |
计算CRISPRoff相关特征 |
| 算Cas9活性 | DeepCRISPRon_eval.py |
30mers.fa,CRISPRparams.tsv |
crispron.csv |
预测Cas9 indel/活性 |
| 枚举outcome | DeepCRISPRonBE_eval.py |
30mers.fa |
内部df | 生成所有可能编辑产物 |
| 构建模型输入 | create_feature_X() |
df+两个特征表 | X=[5类输入] |
转成神经网络能读的矩阵 |
| 预测 | predict_X() |
X+SavedModel | pred_eff,pred_freq | 预测编辑效率和产物频率 |
| 归一化输出 | normalize_dataset() |
原始预测 | crispronABE_prediction.tsv |
保证outcome频率加和合理 |
plan
sgRNA变短后R-loop三维构象变化产生的DNA双链distance特征,并把模型从20-nt条件扩展到18-nt/16-nt条件
- 先跑原模型ABE8e baseline:直接用CRISPRon-BE原模型批量预测一批候选序列(论文中的
2025Genome Biology_Predicting adenine base editing efficienc.xlsx,得到“原模型在20-nt sgRNA条件下的预测结果”,作为后续所有改进的对照(后续加入distance特征时可以以此判断有无提升) - 构建输入:把真实编辑效率和R-loop distance整理到同一张表中,每行表示一个sgRNA的一个编辑窗口位置
- 真实编辑效率:在上述xlsx中有SpRY-ABE8e相关的真实编辑效率(需筛选PAM为NGG的数据)
- 还需要20-nt/18-nt/16-nt sgRNA对应的R-loop distance
- 还需要18-nt真实编辑效率
- 真正修改CRISPRon-BE模型结构:修改DeepCRISPRonBE_train.py和DeepCRISPRonBE_eval.py,把distance作为第6类输入加入神经网络,然后重新训练模型
- 需要原CRISPRon-BE训练数据,且每条训练样本都要补上distance特征,最好还要有18-nt/16-nt真实编辑结果,否则模型只能学习20-nt条件下distance和编辑效率的关系,再外推到短sgRNA
- 可能需要AF3在线预测distance
- cross-attention transformer
已有数据
2025Genome Biology_Predicting adenine base editing efficienc.xlsx:提供大规模真实ABE8e编辑效率数据
- 筛选ABE8e+NGG
- 构建CRISPRon-BE输入30mer
- 运行原模型得到baseline预测
- 用absolute_editing_efficiency和A1-A20_efficiency作为真实值对照
| 类别 | sheet | 含义 |
|---|---|---|
| 实验说明 | Oligos & BE |
高通量测序引物、oligo pool设计、ABEmax/ABE8e相关表达载体序列 |
| 数据总览 | Overview_Datasets |
每个实验条件的replicate名称、初始library size、过滤后library size、合并后的数据sheet名称 |
| 编辑效率数据 | 其余26个sheet | 不同Cas9变体、ABE版本、递送方式/时间条件下的逐sgRNA编辑效率数据 |
- 对baseline最重要的是
ABE8e相关sheet - 每个编辑效率数据sheet的列结构一致
rname:目标突变/疾病位点名称,通常包含转录本编号、基因名、突变形式和蛋白改变。例如类似NM_000021.4(PSEN1)c.1141CtoT...refSeq:与该sgRNA/目标位点相关的20nt序列字段PAM:该sgRNA对应的PAM序列,可选出NGG的来跑baselineTarget-Sequence:较长的目标序列上下文,需要整理出30nt序列作为输入Position:目标编辑碱基在protospacer中的位置,用于确认目标A对应哪个窗口位置absolute_editing_efficiency:实验真实值,该sgRNA的总体编辑效率,作为和原模型预测结果比较的真实值A1_efficiency-A20_efficiency:实验真实值,20nt protospacer每个位置的A-to-G编辑效率。如果某个位置不是A,表格中会写noA;如果是A,则给出该位置的编辑百分比
ABE8e summary V2.xlsx:短sgRNA实验总结和结构预测准备文件
Sheet1:每个小块对应一个实验靶点(ABE8、ABE25、HPE6等),每个靶点下面按A位点列出编辑效率,横向分成不同sgRNA长度(每个长度通常有3个重复值,ABE8e 20nt、ABE8e 18nt/19nt、ABE8e 16nt/17nt、ABE8e 14nt/15nt),表示某个靶点 在不同sgRNA长度下 各个A位置的ABE8e编辑效率Cas9:Cas9蛋白序列,给AF3或其它结构预测准备蛋白输入Cas9蛋白序列+sgRNA序列+DNA双链序列→AF3预测Cas9-sgRNA-DNA复合物→提取R-loop distance)
sgRNA DNA:每个靶点在不同长度下的spacer/sgRNA序列,以及对应的DNA双链序列,- spacer行是短sgRNA的靶向序列
- sgRNA行是在spacer后面接上scaffold后的完整sgRNA序列
- DNA1和DNA2是用于AF3输入的双链DNA序列
也是用于构建AF3输入
短sgRNA真实编辑窗口+提供AF3结构预测所需Cas9/sgRNA/DNA输入→后续整理distance→验证distance模型能否反映短sgRNA窗口收缩
总体编辑效率、位置编辑效率和outcome:假设某条20nt序列在编辑窗口内只有A5和A7两个A,实验可能观察到4种结果
| outcome | 含义 | 频率示例 |
|---|---|---|
| A5、A7都未编辑 | 未编辑序列 | 40% |
| 只编辑A5 | A5→G | 20% |
| 只编辑A7 | A7→G | 10% |
| A5和A7同时编辑 | A5、A7→G | 30% |
- 总体编辑效率=20%+10%+30%=60%
- A5位置效率=20%+30%=50%
- A7位置效率=10%+30%=40%
具体到模型的输入输出:
pred_eff:至少发生一次编辑的概率,即总体编辑效率pred_freq:某一种具体组合outcome的频率A5_efficiency:所有包含A5→G的outcome频率之和- 原模型输出的是
pred_eff+多个pred_freq,需要把多个outcome重新汇总成位置3–10的边际编辑效率
我们现在有的标签:某个target × 某种sgRNA长度 × 某个A位置 → 该位置的A-to-G效率,所以新模型最自然的输出是position_efficiency_mean
baseline
bash scripts/run_abe8e_baseline.sh
准备baseline输入:
- CRISPRon-ABE使用的目标DNA:
4nt上游+20nt protospacer+3nt PAM+3nt下游 - 其中
30mer第5–24位=20nt protospacer,第25–27位=PAM
| 项目 | 数量 |
|---|---|
| 原始记录 | 11,402 |
| 非NGG PAM排除 | 10,239 |
| 编辑窗口3–10位无A排除 | 58 |
| PAM无效排除 | 13 |
| 最终保留 | 1,092 |
| 唯一30mer | 1,091 |
总体编辑效率预测结果:

- 横轴为真实总体编辑效率,纵轴为原模型预测总体效率,虚线表示理想情况
预测值=真实值
| 指标 | 数值 | 含义 |
|---|---|---|
| 样本数 | 1,092 | - |
| Pearson | 0.728 | 衡量预测值和真实值之间的线性关系 |
| Spearman | 0.795 | 衡量排序关系 |
| MAE(平均绝对误差) | 5.26 | 每条记录预测误差绝对值的平均值 |
| RMSE(均方根误差) | 9.88 | 对大误差给予更高惩罚 RMSE为9.88,明显高于MAE,说明大部分点比较准确,但存在少数误差很大的离群点 |
- 图中间和右上方的大部分点靠近虚线,说明中高效率位点预测较好;但真实效率接近0的部分点,模型仍给出40%–70%的预测,说明原模型存在向数据平均值收缩的现象
- Kissling ABE8e训练数据本身主要集中在60%–80%高效率区域,因此模型不擅长输出极低值是可以理解的
- 需要注意的是,这批数据与CRISPRon-ABE训练使用的Kissling ABE8e数据存在重合,不是严格的独立外部测试结果
编辑窗口预测结果:全部位置合并相关性、各位置内部相关性、平均编辑窗口曲线三类结果都没有异常

- 横轴为protospacer位置3–10,纵轴为该位置所有可编辑A的平均效率
| 指标 | 数值 |
|---|---|
| 可编辑A位点数 | 2,687 |
| Pearson | 0.893 |
| Spearman | 0.872 |
| MAE | 6.98 |
| RMSE | 11.15 |
| 位置 | n | 真实均值 | 预测均值 | 差值 |
|---|---|---|---|---|
| A3 | 317 | 46.68 | 46.43 | −0.25 |
| A4 | 335 | 61.69 | 60.53 | −1.16 |
| A5 | 345 | 62.21 | 62.15 | −0.07 |
| A6 | 389 | 63.82 | 63.69 | −0.13 |
| A7 | 330 | 62.18 | 62.12 | −0.06 |
| A8 | 339 | 52.69 | 53.83 | +1.14 |
| A9 | 352 | 36.92 | 37.62 | +0.70 |
| A10 | 280 | 20.42 | 20.42 | +0.00 |
| 位置 | Pearson | Spearman | MAE |
|---|---|---|---|
| A3 | 0.864 | 0.862 | 8.78 |
| A4 | 0.738 | 0.758 | 6.99 |
| A5 | 0.741 | 0.779 | 6.80 |
| A6 | 0.740 | 0.780 | 6.28 |
| A7 | 0.745 | 0.775 | 6.51 |
| A8 | 0.883 | 0.890 | 6.91 |
| A9 | 0.921 | 0.906 | 6.92 |
| A10 | 0.880 | 0.819 | 6.88 |
- 说明原模型正确恢复了ABE8e的平均位置偏好
数据准备
把ABE8e summary V2.xlsx整理成标准长表:预览 | 下载
target_length.tsv:每个target×sgRNA长度一行position_long_all.tsv:保留所有实验位置,包括负位置、A11、A12等position_long_pos3_10.tsv:仅保留原CRISPRon-ABE编辑窗口3–10位(后续第一版模型使用这个文件)
python scripts/prepare_abe8e_short_dataset.py \
--xlsx "data/ABE8e summary V2.xlsx" \
--outdir data/ABE8e_short_sgRNA
| 项目 | 结果 |
|---|---|
| target数量 | 12 |
| target×长度条件 | 48(12个target×4组长度) |
| 全部位置记录 | 424 |
| 位置3–10记录 | 208 |
| 缺失重复值 | 0 |
| 重复记录 | 0 |
| 非NGG条件 | 0 |
-
长度不一致记录:
ABE25 18nt:序列19nt,开头有小写g ABE25 14nt:序列15nt,开头有小写a PT14 20nt:序列21nt,开头有小写g PT13 20nt:序列21nt,开头有小写g S16 15nt:序列实际14nt S12 15nt:序列实际14nt去掉开头的小写碱基后,所有序列都能正确匹配对应20nt protospacer的PAM近端后缀(小写g/a很可能是额外添加的5′端碱基,不属于主要的target-complementary spacer)。S16和S12标为15nt,但实际只有14nt,而且没有额外小写碱基,不过暂时不使用短的,所以不会影响
- ABE8的A2不一致:ABE8的20mer为
GTAAACAAAGCATAGACTGA,第2位是T,但原始实验表标为A2,不过A2不在将使用的3–10位窗口内 -
三组平均位置编辑效率分别为:
20nt:76.18% 18/19nt:59.49% 16/17nt:34.41%随着sgRNA缩短,编辑效率明显下降,说明当前数据提取符合实验的整体变化趋势
生成标准化建模表和distance模板:
- 统一处理小写5′附加碱基和target-matching spacer
-
生成后续填写R-loop distance的标准模板
有些sgRNA序列开头带额外小写g或a,例如
g+18nt真正互补序列,这个额外碱基可能用于转录启动或实验构建,但不与目标DNA互补。因此我们同时保存了raw_spacer_dna、extra_5p_dna、target_matching_spacer_dna、target_matching_length,模型中的“长度”采用真正与target互补的长度(20nt、18nt、16nt)
python scripts/prepare_abe8e_distance_inputs.py \
--target-length \
data/ABE8e_short_sgRNA/abe8e_short_target_length.tsv \
--position \
data/ABE8e_short_sgRNA/abe8e_short_position_long_pos3_10.tsv \
--outdir \
data/ABE8e_short_sgRNA/distance_input
| 检查项 | 结果 |
|---|---|
| target数量 | 12 |
| 全部target×长度条件 | 48 |
| 第一轮20/18/16组条件 | 36 |
| 第一轮位置级记录 | 156 |
| 每组位置记录 | 52(三组完全一致) |
| 缺失重复值 | 0 |
| 非A位置 | 0 |
| 非NGG PAM | 0 |
| 30mer长度错误 | 0 |
| DNA双链不互补 | 0 |
重复af3_id |
0 |
| 未解决长度条件 | 2(仅位于未使用的14/15nt组) |
- 三种长度使用同样的12个target和同样的A位置,因此组间差异不是因为“20nt组恰好测了更多容易编辑的位置”,而更可能来自sgRNA长度变化,提高了长度比较的可解释性
- 每条位置记录有
rep1-rep3,我们保存position_efficiency_mean和position_efficiency_sd,训练时目前用平均值作为标签,SD用于判断实验不确定性
使用AlphaFold网页版进行距离预测:上传的json文件 | 预测结果
-
输入:Cas9蛋白、完整sgRNA=spacer+scaffold、DNA1、DNA2
20nt、18nt、16nt任务中,Cas9、DNA双链和scaffold相同,只改变sgRNA与DNA互补的spacer长度
-
distance:互补DNA碱基之间
C1′原子到C1′原子的欧氏距离使用C1′的优点是每种DNA碱基都有该原子,并且可以较稳定地表示两条DNA糖环之间的间隔
- 约10–11Å:两条DNA仍接近正常双链配对状态
- 20Å以上:两条DNA明显分离
- 30–40Å:R-loop区域高度开放
(这里的20Å只是解释结构时的经验参考,不是已经通过实验确定的真实阈值)
-
最后对AF给出的5个可能模型的distance求均值和SD,作为新模型的输入
python scripts/prepare_all_abe8e_af3_server_jobs.py \
--xlsx "data/ABE8e summary V2.xlsx" \
--manifest \
data/ABE8e_short_sgRNA/distance_input/abe8e_af3_manifest_first_round.tsv \
--outdir \
data/ABE8e_short_sgRNA/af3_all_jobs \
--batch-size 6 \
--exclude-af3-ids \
ABE8_L20,ABE8_L18_19,ABE8_L16_17
以ABE8这个target为例:因为distance方差较大,所以又对16nt重新运行了两次以判断是不是AF的问题
-
15条distance曲线:

图中每一条线代表一次AF3候选结构中的位置3–10距离
- 位置3–7大多数模型约10Å,比较闭合
- 位置8–10开始分叉
- 部分模型在位置8后迅速打开
- 部分模型到位置10仍接近闭合
- 还有少数模型在位置5–7出现异常中间状态,说明AF3对16nt条件下R-loop边界没有给出唯一答案
- 但这不是说“AF3预测失败”,因为:
- 模型整体ipTM约0.78–0.84
- 链和碱基映射正确
- 不同预测轮次反复出现相似的开放型和闭合型构象
-
结论:16nt条件下,R-loop远端区域的相对构象不确定性高于20nt和18nt。这并不是由AF运行错误导致的,所以后续都使用运行一次、产生5个模型取均值的方法
但不能进一步直接断言真实分子一定在这些状态之间动态转换,因为AF3候选分布不等同于真实热力学构象分布
对12条target运行原始CRISPRon-ABE:获得每个target的CRISPRoff能量特征、CRISPRon活性分数、原模型总体效率预测、原模型位置3–10效率预测
- 原始CRISPRon-BE不包含sgRNA长度输入和distance,因此同一个target的20nt、18nt、16nt输出相同,只需运行12条唯一30mer
bash scripts/run_abe8e_short_original_model.sh
CRISPRparams.tsv:包含CRISPRoff相关能量(RNA_DNA_eng、RNA_DNA_eng_weighted、DNA_DNA_opening、spacer_self_fold、CRISPRoff_score)- 这里的
DNA_DNA_opening是CRISPRoff热力学模型中的双链打开能量,不是我们从AF3结构中测得的几何distance
- 这里的
crispron.csv:包含CRISPRon预测的Cas9活性分数,是说“这条20nt目标序列在标准Cas9系统中,本身是否容易被Cas9识别并发挥活性”crispronABE_prediction.tsv:包含pred_eff、每种outcome的pred_freq,再通过outcome汇总获得位置3–10预测编辑效率
合并上述结果构建新模型输入
- 样本身份:表示这行是哪一个target、哪一种长度、哪一个A位置(
record_id、target_id、length_group_id、reported_position) - 实验标签:真实实验结果(
rep1、rep2、rep3、position_efficiency_mean、position_efficiency_sd) - 序列信息:表示目标序列、PAM和sgRNA(
target_20mer、target_23mer、target_30mer、PAM、full_sgRNA_rna) - 长度信息:明确20nt、18nt、16nt条件(
target_matching_length、sgRNA_length_numeric、length_group_id) - 结构特征
distance_pos3–10:整条8维结构曲线distance_at_position:当前这行对应A位置的局部distancedistance_sd:AF3候选模型间不确定性
- 原模型特征和预测:CRISPRoff_score、CRISPRon_score、original_pred_total_eff、original_pred_position_efficiency
python scripts/extract_all_abe8e_target_distances.py \
--manifest \
data/ABE8e_short_sgRNA/distance_input/abe8e_af3_manifest_first_round.tsv \
--zip-dir \
data/ABE8e_short_sgRNA/af3_target_zips/primary \
--outdir \
data/ABE8e_short_sgRNA/af3_target_distance
abe8e_short_complete_model_table.tsv:后续训练直接使用abe8e_short_original_baseline_metrics.tsv:分别给出all_lengths、L20、L18_19、L16_17对应的Pearson、Spearman、MAE和RMSE
| 长度 | Pearson | Spearman | MAE | 真实均值 | 预测均值 |
|---|---|---|---|---|---|
| 全部长度 | 0.512 | 0.523 | 24.01 | 56.69% | 45.40% |
| 20nt | 0.787 | 0.862 | 31.35 | 76.18% | 45.40% |
| 18nt | 0.707 | 0.723 | 18.74 | 59.49% | 45.40% |
| 16nt | 0.378 | 0.358 | 21.95 | 34.41% | 45.40% |
可以看到,同一个target、同一个位置在3种长度下的原模型预测完全相同,最大差值为0:因为原模型输入只有30nt目标序列、编辑位置、CRISPRoff、CRISPRon和dataset信息,并没有sgRNA长度或R-loop distance
- 20nt:明显低估,平均低估30.77
- 18nt:平均低估14.08
- 16nt:平均高估11.00
先做一个小规模、按target分组的机器学习检查,确认distance是否提供可用信号:比较4组结果
- 使用了带标准化和L2正则化的Ridge回归,并采用按target留一交叉验证(每次把1个完整target作为测试集、另外11个target训练、重复12次)
- original_crispron:原CRISPRon-ABE直接给出的预测
- base:输入不包含长度
- 30mer one-hot:30×4=120个特征
- 位置3–10 one-hot:8个特征
- CRISPRoff:1个
- CRISPRon:1个
- length:base+sgRNA长度,即20、18、16
- distance:base+8维distance(3-10位置的distance)+当前位点distance
python scripts/replace_group_with_target_specific_distances.py \
--complete-table \
data/ABE8e_short_sgRNA/complete_model_input/abe8e_short_complete_model_table.tsv \
--distance-table \
data/ABE8e_short_sgRNA/af3_target_distance/abe8e_target_specific_distance_table.tsv \
--outdir \
data/ABE8e_short_sgRNA/complete_model_input_target_distance
结果图:每个点是该长度下、该位置所有可用target的平均效率,不是某一条sgRNA的单独窗口,而且各位置样本数不同
- 原模型在pos3–10几乎全部低估,说明原模型与当前短sgRNA实验数据的绝对效率尺度不一致
- length模型在20nt中整体表现最好,但pos3–4低估、pos8–10高估,pos4–6比length低估更多
- distance模型pos3比length更接近真实值,pos8–10的高估程度小于length
- 原模型pos3–4相对接近,pos5–8明显低估,pos9–10严重低估
- length模型能较好表现出pos3–7逐渐升高、os8–10下降,但对真实的pos6–7峰值估计不足、pos10又偏高
- distance模型在窗口中部表现较好,但pos4高估、pos10高估
- 与20nt相比,整体效率明显下降、编辑窗口变窄、高效率平台消失、pos3–4受到明显抑制,这与16nt条件下R-loop缩短、PAM远端开放程度下降的结构预期一致
- 原模型无法感知长度变化,仍然输出与20nt相同的窗口形状
- length模型明显改善了整体尺度,但它在pos4–6仍然高估
- distance模型更接近真实值,但在部分位置还有高估低估的情况
模型平均参数(20/18/16nt混合):
| 模型 | Pearson | Spearman | MAE | RMSE |
|---|---|---|---|---|
| 原CRISPRon-ABE | 0.512 | 0.523 | 24.01 | 28.29 |
| base | 0.267 | 0.305 | 24.04 | 28.81 |
| length | 0.621 | 0.667 | 18.69 | 23.41 |
| distance | 0.634 | 0.668 | 18.73 | 23.12 |
按20/18/16nt统计模型MAE:
| 模型 | 20nt MAE | 18nt MAE | 16nt MAE |
|---|---|---|---|
| length | 13.69 | 19.95 | 22.42 |
| distance | 15.22 | 20.51 | 20.44 |
- base模型只用12个target来训练,且同一输入对应多个效率(没有distance作区分),所以准确度很低
- 加入长度或distance后,整体性能明显优于没有长度信息的模型
- distance模型与length模型整体性能非常接近;distance在相关性和RMSE上略好,length在MAE上略好
- 20nt时length模型更好,18nt时length模型略好,16nt时distance模型明显更好
- distance最主要的价值出现在16nt短sgRNA条件下
具体到target层面:
-
MAE改善最明显的target为:
target length MAE distance MAE 改善 ABS4 15.96 9.95 6.01 HPE6 15.15 11.67 3.47 PT13 25.03 21.85 3.18 - distance与length接近的包括:sgANGPTL3-A6、S7、CS1P、S16
-
distance明显变差的主要是:
target length MAE distance MAE 变化 S12 20.03 25.52 变差5.49 S18 26.33 28.62 变差2.29 PT14 21.60 22.57 变差0.97 - 总体上,distance对5/12个target有改善,对7/12个target没有改善。这说明目前的结构特征存在真实的target-specific信号,但其稳定性还不足
总结:
- 原CRISPRon-ABE流程已经正确跑通
- 原模型能恢复标准ABE8e的平均编辑窗口
- 短sgRNA实验显示20nt→18nt→16nt时,位置编辑效率整体下降
- AF3预测显示sgRNA缩短时,R-loop远端区域开放程度下降
- 加入length或distance后,简单模型能够更好地区分20nt、18nt和16nt
- distance模型的整体结果略优于length模型,主要优势集中在16nt sgRNA条件,值得继续进入神经网络阶段
- 还不能证明AF3候选构象代表真实分子的动态构象比例
- 还没有直接预测bystander减少或脱靶降低
- 只有12个target,样本量很小,且16nt组AF结果不确定性较高;每个位置的target数量不一致,例如pos10只有3个target
新模型构建
问题:目前真正带有真实短sgRNA效率+target-specific AF3 distance的数据只有12个target×20/18/16nt×位置3–10中的可编辑A=156条position-level记录。但是原CRISPRon-ABE的训练规模完全不是这个量级,论文整合后的ABE模型涉及17,941条gRNA,而且原模型还是30nt CNN+多输入+双输出架构
- 如果直接把原模型所有参数重新随机初始化,只拿156条记录训练,CNN要重新学习sequence/position规律以及distance规律,几乎一定严重过拟合
GPT首先推荐了一个方案:基于预训练结果的adapter
- 假设原CRISPRon-ABE对某个target的A6预测:
序列+编辑位置+CRISPRoff+CRISPRon+dataset→A6预测效率=50% -
现在我们知道
20nt时distance=35Å 18nt时distance=25Å 16nt时distance=13Å真实实验值是
20nt:A6=75% 18nt:A6=60% 16nt:A6=30%原模型不知道sgRNA长度,所以不管20/18/16nt,它永远还是输出50%
-
adapter的做法不是修改原模型,而是
原CRISPRon-ABE ↓ 50% │ ├──────────────┐ │ │ sgRNA长度 R-loop distance │ │ └──────┬───────┘ ↓ adapter网络 ↓ 学习一个修正值例如它可能学出来
20nt:correction=+23 18nt:correction=+8 16nt:correction=-18即:ynew = yCRISPRon + f(distance,length,position)
20nt:50+23=73% 18nt:50+8=58% 16nt:50-18=32%这里真正训练的只有后面的
f()
之后问了GPT这种方法是否是前述的“真正修改模型”,又给出了一版新的方案:真正改结构,但冻结原模型
-
真的把distance加入CRISPRon-BE,同时不要求156条数据重新训练整个CRISPRon-BE
原CRISPRon-ABE ┌─────────────────────────────┐ 30mer ───→│ CNN │ outcome ─→│ │ energy ──→│ 原有hidden representation │ CRISPRon →│ │ dataset ─→│ │ └──────────────┬──────────────┘ │ pretrained hidden │ ├───────────┐ │ │ │ distance_pos3-10 │ ↓ │ Dense层 │ │ └─────concat┘ ↓ 新prediction head - 关键区别在于我们使用的不是“原模型最终预测结果”,而是原模型内部已经学好的hidden features
-
第一阶段:冻结CRISPRon-ABE原有参数,只训练distance branch+最后prediction head
如果效果正常,再尝试解冻最后1–2个Dense层进行fine-tuning
-
cross-attention:相当于把新输入融合进前面的参数,比如探究“sequence第6位应该重点看distance第几位”、“sequence不同碱基和R-loop不同位置之间有没有特异性交互”
理论上更漂亮,但现在数据的distance只有8个值、target只有12个,现在上attention基本没有必要
总结来说,GPT给出的最终方案是:保留CRISPRon-ABE的预训练backbone,把distance真正作为第6类输入加入网络;第一版冻结原有backbone,只训练新增distance branch和输出层
┌─ sequence CNN(原权重)
│
├─ outcome/position
│
CRISPRon-ABE ──────┼─ CRISPRoff
│
├─ CRISPRon
│
└─ dataset
│
原hidden layer
│
├──── distance branch ← 新增
│
↓
fusion Dense
↓
position efficiency
如果这个版本有效,再考虑解冻最后Dense层→小学习率fine-tuning→比较是否进一步改善