只有氨基酸序列?ANARCI 入门:本地编号、CDR 边界与 Python 用法

导读:如果你手里只有 抗体氨基酸序列,要批量编号、建 CDR 掩码、或对接 Python/ML pipeline,ANARCI 是社区里最常用的本地工具之一。本文覆盖原理、安装、命令行与 API。

在抗体计算流程里,你经常会拿到一条 氨基酸序列(FASTA 或 DataFrame 里的一列),需要回答:这是 VH 还是 VL?来自人还是鼠?CDR 边界在哪?按 IMGT 还是 Kabat 编号? ANARCI(Antigen receptor Numbering And Receptor ClassificatIon)就是为解决这类问题而生的本地可脚本化工具——由牛津 OPIG/SAbPred 团队维护,用 HMMER3 将序列对齐到胚系 隐马尔可夫模型(Hidden Markov Model,HMM) 库,再套用你选的编号方案。

段末注释HMM 用概率模型描述序列模式;HMMER 是搜索 HMM 的常用软件套件。

官方资源GitHub oxpig/ANARCI · PyPI · SAbPred Web(旧版)


1. ANARCI 能做什么

图 1 ANARCI 工作流:氨基酸序列 → HMM 比对 → 链型/物种/编号(科普示意)

能力 说明
链型分类 判断 VH、Vκ、Vλ、Vα、Vβ 等可变域类型
物种推断 Human、Mouse、Rat、Rabbit、Pig、Rhesus 等(见功能边界)
多方案编号 IMGT、Kabat、Chothia、Martin(Enhanced Chothia)、AHo、Wolfguy
插入位处理 CDR 区超长序列用字母插入码(如 111A、100B…)
批量处理 单条序列、FASTA 文件、Python 批量 API
可解释性输出 E-value、bit-score、序列起止索引

一句话定位:ANARCI 是抗体/TCR 可变域氨基酸序列的「识别 + 编号」工具,适合本地批处理与嵌入 Python 流程(CDR 掩码、统一编号导出等)。

[!tip] 快速记住
手里是 蛋白序列、要 Kabat/Chothia 或塞进 Python → 优先 ANARCI


2. 工作原理

2.1 为什么用 HMM 而不是简单 BLAST

可变区与胚系 V 基因高度同源,但 CDR3 长度多变、物种间 FR 有差异。ANARCI 为每种 (物种 × 链型) 构建代表胚系序列的 HMM,用 HMMER3 做全局比对。对输入序列,程序:

  1. 与全部候选 HMM 比对,按 E-value / bit-score 排序;
  2. 取得分最高的 HMM → 推断 链型 + 物种
  3. 在 HMM 对齐列上,映射到目标编号方案的位点;
  4. 对无法一一对应的插入区,按各方案规则加 插入字母

这比单纯序列相似度搜索更擅长处理 gap 与插入,对 nanobody(VHH)、部分非模式物种序列也更鲁棒(物种标签可能标错,但编号常仍合理)。

2.2 支持的编号方案(抗体相关)

图 2 ANARCI 可在同一序列上切换 IMGT、Kabat、Chothia 等方案(科普示意)

方案 ANARCI 支持 要点
IMGT Ig + TCR 128 个可能位置;VH/VL/Vα/Vβ 位置可比;CDR3 插入对称分布在 111/112 附近
Kabat 仅 Ig VH/VL 位置不可比;插入常见于 100 等位
Chothia 仅 Ig 与 Kabat 类似,CDR-H1 插入位置不同(结构导向)
Martin 仅 Ig Enhanced Chothia
AHo Ig + TCR 149 位;抗体与 TCR 统一坐标,适合跨受体比较
Wolfguy 仅 Ig 较少用

段末注释Enhanced Chothia(Martin) 在 Chothia 基础上扩展环区定义,常用于结构建模社区。

2.3 插入码规则(直觉)

当 CDR 比标准方案「多出」残基时,ANARCI 不会丢弃,而是在指定锚点旁加字母:

  • IMGT:如 111A111B… 对称于 111–112;
  • Kabat/Chothia:如 100A100B… 直至 100Z

读输出时,数字位 = 标准位置,字母 = 插入


3. 安装

推荐:从 GitHub 安装(维护者指出部分 Bioconda 版本结果偏差,CLI 与 Python API 在 conda 包下也可能不一致)。

1
2
3
4
5
6
git clone https://github.com/oxpig/ANARCI.git
cd ANARCI
# 依赖:Python 3、HMMER3(hmmscan 等)、biopython
pip install -e .
# 或
pip install ANARCI # 注意验证与 GitHub 版结果一致

HMMER3 必须可用(ANARCI 内部调用 hmmscan)。若仅装 Python 包而未装 HMMER,编号步骤会失败或走不完整回退。


4. 使用方式

4.1 命令行:单条序列

1
ANARCI -i QVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSA

常用参数:

参数 含义
-i 输入序列或 FASTA 文件
--scheme imgt 编号方案:imgt / kabat / chothia / martin / aho / wolfguy
--csv 输出 CSV(水平格式)
--outfile 写出到文件
--species 限制物种 HMM 子集(可选)

4.2 命令行:FASTA 批量

1
ANARCI -i antibodies.fasta --scheme imgt --csv -o numbered.csv

输出 header 含:specieschain_type(H/L/K/A/B)、e-valuescore、序列起止索引等,随后是 (位置, 氨基酸) 列表。

4.3 Python API(pipeline 最常用)

1
2
3
4
5
6
7
8
9
from anarci import number

seq = "QVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIG..."

# numbering: list of ((position, insertion_code), amino_acid)
numbering, chain_type, details = number(seq, scheme='imgt')

# chain_type 例如 'H'(重链)、'K'/'L'(轻链)
# details 含 hit 的 HMM、E-value 等

批量场景可对 DataFrame 每行调用 number(),或用官方封装的批处理函数(见仓库 anarci.py)。

4.4 Web 版(Legacy)

SAbPred ANARCI 页面 支持单条或 FASTA 上传,仅 Human/Mouse 胚系以保证结果长期稳定。适合快速试一条序列;生产环境建议 GitHub 版 + 固定版本


5. 典型应用场景

场景 为什么用 ANARCI
序列库批处理 统一 IMGT/Kabat 编号,导出 CSV
ML 特征提取 按位点建 CDR 掩码、对齐 embedding
Kabat vs IMGT 对照 同一序列 --scheme 切换即可
纳米抗体(VHH) 无轻链;重链可变域仍可按 VH 编号
TCR 序列 --scheme imgtaho

6. 优缺点

6.1 优势

  1. 本地 + 可脚本化:适合 HPC、Snakemake、CI 与百万级序列批处理。
  2. 多编号方案:一套 HMM,多套输出——工程上极省事。
  3. 输入是氨基酸:直接吃表达/预测蛋白序列,无需阅读框。
  4. 链型自动识别:减少手工判断 VH/VL 混用错误。
  5. 牛津 OPIG 维护:与 SAbPred 抗体预测生态同源,文档与社区活跃。
  6. 开源 MIT:可嵌入商业 pipeline(遵守许可证即可)。

6.2 局限

  1. 胚系 V/D/J 注释较粗:不如专用核酸比对工具给出完整 D 基因、Junction 分解与突变统计表。
  2. 依赖 HMMER 与内置 HMM 库:环境不完整时结果异常;勿默认信任过时的 conda 构建
  3. 物种覆盖有限:官方 HMM 主攻人/鼠等;羊驼 VHH、鲨鱼 NCAR 等可能 编号对、物种标错
  4. 仅 variable domain:不注释 CH1/Fc、不处理融合标签(需先裁剪)。
  5. Web 版功能收缩:仅人/鼠;全物种用本地包。

7. 功能边界

ANARCI 聚焦 可变域氨基酸序列的链型识别与编号,下列任务超出其设计范围:

问题 ANARCI 能否直接解决
核酸序列的精细 V/D/J 胚系指派 否(不完整)
相对胚系的体细胞突变率统计
scFv 一条肽里两条可变域 需拆分后分别编号
恒定区编号
非 Ig 可变域序列 通常无法编号

擅长回答:这条蛋白序列是 VH 还是 VL、按 IMGT/Kabat/Chothia 等方案每位点对应什么氨基酸。


8. 实践建议与踩坑

  1. 固定版本:记录 ANARCI commit / PyPI 版本与 hmmscan -h 版本;升级后复跑金标准序列。
  2. 优先 GitHub 安装:若 conda 与 GitHub 结果不一致,以 GitHub 为准(见 Issue #86)。
  3. 检查 E-value:异常高的 E-value 或未编号成功片段 → 可能不是标准 Ig 可变域(融合蛋白、污染序列)。
  4. 注明 scheme:发表与跨团队对接时写清 scheme=imgt 等。
  5. nanobody:无轻链正常;若 pipeline 强制 VH+VL 双输入,需改逻辑或复用重链槽位。
  6. 残基序号 ≠ 编号位点:FASTA 或导出文件中的顺序位置,与 IMGT/Kabat 等编号位点不是同一套索引;下游按位点取特征时需以编号结果为准。

9. 小结

维度 要点
输入 氨基酸序列(单条 / FASTA)
原理 HMMER3 对胚系 HMM 比对 → 链型/物种 → 映射编号
输出 编号位置列表 + 链型 + 比对得分
擅长 多方案编号、本地批处理、Python 集成
局限 胚系精细注释弱、variable 区为主、物种覆盖有限

ANARCI 回答的是:「这条蛋白序列的可变域,按所选编号方案每位点该怎么标、链型是什么」。


参考文献与链接

  1. Dunbar J., Deane C.M. ANARCI: Antigen receptor numbering and receptor classification. Bioinformatics (2016). PMC4708101
  2. GitHub:https://github.com/oxpig/ANARCI
  3. SAbPred ANARCI Web:https://opig.stats.ox.ac.uk/webapps/sabdab-sabpred/sabpred/anarci/
  4. HMMER3:Eddy S.R. PLoS Comput Biol (2009)
  5. IMGT 编号对照:IMGT Scientific chart
-------------本文结束感谢您的阅读-------------