DeltaSpliceModel —— 有效卷积(valid-convolution)膨胀残差 1D CNN(24 层),两侧各 15,000 nt 上下文填充,5 个 seed 检查点集成平均DeltaSplice(Xu et al., 2025)是一种参考信息感知(reference-informed)的剪接位点使用 预测模型:以两侧 15 kb 基因组上下文中的原初序列为输入,预测每个核苷酸位置作为 3' 剪接受体(acceptor,内含子末端 AG)或 5' 剪接供体(donor,内含子起始 GT)的 概率;并提供参考/替代序列对的 delta-SSU 预测,用于评估剪接改变突变。
| 组件 | 版本 |
|---|---|
| torch | 2.9.0 |
| torch-npu | 2.9.0.post1 |
| transformers | 5.9.0 |
| multimolecule | 0.2.1 |
| fastapi | 0.123.10 |
| CANN | 8.5.1 |
| NPU | Ascend 910(64GB HBM) |
DeltaSplice 采用有效卷积膨胀残差编码器:one-hot 编码(ACGU,N 为全零掩码)后两侧
各补 context/2 = 15000 nt 零填充,经 24 层膨胀残差卷积块(每块 BN→ReLU→Conv1d×2,
kernel 1185、dilation 132)后中心裁剪回输入长度,5 个 seed 成员输出平均。关键配置:
| 配置项 | 值 |
|---|---|
| 模型类型 | DeltaSpliceModel |
| 层数 | 24(膨胀残差卷积) |
| hidden_size | 64 |
| context(两侧填充) | 30000(15000 + 15000) |
| 集成成员(num_ensemble) | 5 |
| 输出通道 | 3(no_splice / acceptor / donor) |
| 输出形式 | softmax 概率(无 logits 面) |
| 词汇表 | 4(A/C/G/U + N 填充,RnaTokenizer T→U) |
| 权重文件 | model.safetensors(161,828,436 B) |
| 权重 sha256 | fe25addd7c36dacef788c8b0457b01d85c11c0c10bba45ada8ffcc3faa5d42b2 |
模型为全卷积结构,输入长度任意(输出长度 = 输入长度)。
[demo] 未提供序列,使用 HBB pre-mRNA 演示序列(1401 nt)
设备: npu:0
模型加载完成,耗时 8.6s,参数量 40.376M
推理耗时: 278.8 ms
输出概率矩阵: (1401, 3) (行=碱基位置, 列=['no_splice', 'acceptor', 'donor'])
NaN 检查: False
候选剪接位点数(threshold=0.5): 3
最高 acceptor 概率: 0.8756 @ pos 617
最高 donor 概率: 0.8875 @ pos 839
候选剪接位点 Top-K:
pos 839 donor score=0.8875 上下文: ...CTTCAGGGTGAGT...
pos 617 acceptor score=0.8756 上下文: ...CCTTAGGCTGCTG...
pos 486 donor score=0.5316 上下文: ...TGGGCAGGTTGGT...
SUCCESS预测结果与人类 beta-globin(HBB,NCBI NG_000007.3)真实剪接位点完全吻合:
- acceptor @ pos 617 = intron1/exon2 受体位点(
AG|G)- donor @ pos 839 = exon2/intron2 供体位点(
GT)- donor @ pos 486 = exon1/intron1 供体位点(
GT)
$ curl -s -X POST http://127.0.0.1:8000/v1/predict -H "Content-Type: application/json" -d '{}'
{
"length": 1401, "context": 30000,
"top_acceptor": {"position": 617, "nucleotide": "G", "score": 0.8756},
"top_donor": {"position": 839, "nucleotide": "G", "score": 0.8875},
"splice_sites": [{"position": 839, "type": "donor", "score": 0.8875}, ...],
"inference_ms": 285.74
}以完整 HBB pre-mRNA(1401 nt)为参考序列,在 exon2/intron2 供体位点(pos 839)
处做 G->A 点突变(破坏规范 GT),模型正确预测该位点 donor 使用显著下降:
POST /v1/variant-effect
{"reference": "<HBB 1401nt>", "alternative": "<HBB 1401nt, pos839 G->A>"}
pos 839 G->A donor delta=-0.1107 loss (变异位点 donor 使用下降)
pos 841 T->T donor delta=+0.0509 gain
pos 840 G->G donor delta=+0.0365 gain
inference_ms: 540.9开启官方 reference-informed 分支(use_reference=True)后 delta 信号显著增强:
同样的 G->A 突变,非 reference-informed 分支仅 -0.04,reference-informed 分支 -0.11。
# 方式一:git clone 镜像(无 git-lfs 时走 LFS batch API,见下)
git clone https://gitcode.com/hf_mirrors/multimolecule/deltasplice.git /opt/atomgit/models/deltasplice
# 方式二:LFS batch API 直取 model.safetensors(无 git-lfs 环境)
# oid=fe25addd7c36dacef788c8b0457b01d85c11c0c10bba45ada8ffcc3faa5d42b2
# curl -X POST https://gitcode.com/hf_mirrors/multimolecule/deltasplice.git/info/lfs/objects/batch \
# -d '{"operation":"download","objects":[{"oid":"fe25...42b2","size":161828436}]}' # 取签名 URL 后下载
# 校验:
sha256sum /opt/atomgit/models/deltasplice/model.safetensors
# fe25addd7c36dacef788c8b0457b01d85c11c0c10bba45ada8ffcc3faa5d42b2python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 若需 vllm/vllm-ascend 请用独立 venv(本模型为 CNN,无需 vLLM,与 transformers>=5 不冲突)python3 inference.py \
--model-path /opt/atomgit/models/deltasplice \
--device npu:0
# 指定序列
python3 inference.py \
--model-path /opt/atomgit/models/deltasplice \
--sequence "ATGGTGCATCTGACTCCTGAGGAGAA..." --device npu:0
# delta-SSU(剪接改变):参考与替代序列必须同长。
# 示例:以 HBB 全长(1401nt,inference.py 内 DEFAULT_SEQUENCE)为参考,
# 将 pos839 供体位点 G 改为 A(破坏规范 GT)作为替代序列。
# 可用 python3 -c 生成 alt.txt,或写个小脚本构造;验证输出见 4.3 节。
python3 inference.py \
--model-path /opt/atomgit/models/deltasplice \
--reference-file ./ref.fa \
--alternative-file ./alt.fa --device npu:0说明:
--reference/--alternative也可直接传序列字符串;二者长度必须相等 (delta-SSU 仅支持同长变异,如 SNP/点突变)。窗口越短越接近边界时预测 退化,建议使用含完整剪接位点上下文的序列(如 HBB 全长)。
python3 inference.py --serve \
--model-path /opt/atomgit/models/deltasplice \
--host 0.0.0.0 --port 8000 --device npu:0# 健康检查
curl -s http://127.0.0.1:8000/health
# {"status":"ok","model":"multimolecule/deltasplice","device":"npu:0",
# "npu":{"available":true,"device_count":2,"name":"Ascend910_9362"}}
# 模型信息
curl -s http://127.0.0.1:8000/v1/models
# 剪接位点使用预测(sequence 缺省用 HBB 演示序列)
curl -s -X POST http://127.0.0.1:8000/v1/predict \
-H "Content-Type: application/json" \
-d '{"sequence":"ATGGTGCATCTGACTCCTGAGGAGAA...","threshold":0.5,"top_k":20}'
# 剪接改变预测(参考/替代必须同长;示例:HBB 全长 pos839 donor G->A,见 4.3 节)
curl -s -X POST http://127.0.0.1:8000/v1/variant-effect \
-H "Content-Type: application/json" \
-d '{"reference":"<HBB 1401nt 序列>","alternative":"<HBB 1401nt 序列,pos839 位 G 改为 A>"}'| 端点 | 方法 | 说明 |
|---|---|---|
/health | GET | 健康检查(返回 NPU 设备信息与模型状态) |
/v1/models | GET | 模型信息(模型 ID、任务、参数量、上下文、集成成员数) |
/v1/predict | POST | 剪接位点使用(SSU)预测;请求体 {"sequence": "...", "threshold": 0.5, "top_k": 20, "include_scores": true} |
/v1/variant-effect | POST | 剪接改变(delta-SSU)预测;请求体 {"reference": "...", "alternative": "..."}(同长) |
/v1/predict 返回:逐位置 no_splice/acceptor/donor 概率、候选剪接位点
(acceptor/donor 概率 ≥ threshold)、Top acceptor/donor 位点;include_scores=true
时附带完整逐位置概率表。
multimolecule.DeltaSpliceModel.from_pretrained 加载(权重键名
members.*,为官方 5-seed 集成;config architectures: DeltaSpliceModel),
计算在昇腾 NPU(torch_npu 注册的 npu 后端)上进行。F.one_hot 在 NPU 上仅触发 "internal format" 告警(输出正常,
无需修补),与 Enformer 部署一致。RnaTokenizer 自动将 T 转换为 U、未知碱基映射为 N
(N 在 one-hot 中为全零向量,等效掩码);tokenize 时 add_special_tokens=False。model.postprocess(outputs) 的 (scores, channels),channels = ["no_splice", "acceptor", "donor"]。--serve 双模式。deltasplice-npu/
├── inference.py # 推理脚本(CLI + FastAPI 服务化)
├── README.md # 部署说明文档
├── requirements.txt # 环境依赖清单
└── assets/ # 截图素材(agent_workflow / npu_device_call / model_result)| 场景 | 输入长度 | 耗时 |
|---|---|---|
| CLI SSU 推理(首次加载 8.6s) | 1401 nt | 278.8 ms |
HTTP /v1/predict | 1401 nt | 285.7 ms |
HTTP /v1/variant-effect(reference-informed) | 1401 nt(同长) | 540.9 ms |
model.safetensors(161,828,436 B,sha256 fe25addd...42b2)来自
gitcode 镜像 hf_mirrors/multimolecule/deltasplice,与 HF 官方权重一致。