ANARCI抗体序列编号实战:如何用一条命令搞定IMGT、Kabat等六种编号方案
ANARCI抗体序列编号实战如何用一条命令搞定IMGT、Kabat等六种编号方案【免费下载链接】ANARCIAntibody Numbering and Antigen Receptor ClassIfication项目地址: https://gitcode.com/gh_mirrors/an/ANARCI文献里标着 Kabat 编号的重链序列放进只认 IMGT 编号的数据库里比对同一个位点硬是差了三个数字——这种编号方案错位带来的尴尬研究抗体的你一定不陌生。今天这篇 ANARCI 抗体序列编号实战会用一条真实序列带你从命令行走到 Python API彻底理清六种编号方案并把 ANARCI 装进自己的分析流程。你将收获环境安装与验证、输出格式逐行解读、单序列与批量编号、六种方案选型、两段可直接运行的代码、一份踩坑清单。编号方案对不上卡住的其实是整个下游分析先回答一个为什么抗体可变区在不同抗体之间长度差异很大尤其是 CDR3。为了能横向比较学界定义了多套编号方案相当于给每个残基发一个固定门牌号。但门牌号规则并不统一——Kabat 与 Chothia 在 CDR-H1 的插入位置不同IMGT 与 AHo 的固定位置总数也不一样128 对 149于是同一段序列在不同方案下可能差出好几个编号。研究数据因此对不上号下游的 CDR 界定、位点分析全部连锁出错。这就是 ANARCIAntibody Numbering and Antigen Receptor ClassIfication存在的意义。它由牛津大学蛋白信息学小组OPIG开发内置基于 HMMER 构建的隐马尔可夫模型库能自动判断序列的物种和链型重链 H、轻链 L、TCR 的 α/β 链等再用你指定的方案完成编号。核心实现集中在lib/python/anarci/anarci.py方案规则定义在lib/python/anarci/schemes.py想深入源码时从这两个文件入手即可。先让第一个例子跑起来安装与验证为什么先装 Biopython 和 HMMERANARCI 编号依赖 HMMER 的hmmscan与模型库做比对Biopython 则负责序列读写与格式转换缺一不可。用 conda 安装最省事conda install -c conda-forge biopython -y conda install -c bioconda hmmer3.3.2 -y git clone https://gitcode.com/gh_mirrors/an/ANARCI cd ANARCI python setup.py installpython setup.py install这一步会联网从 IMGT/GENE-DB 下载生殖系基因数据并现场构建 HMM耗时几分钟属正常现象别急着中断。装完执行ANARCI --help能看到完整帮助信息就说明环境已经就绪 ✅读懂输出格式才算真正会用 ANARCI命令行输入一条序列试试ANARCI -i EVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSA输出大致是这种结构——首行是序列名接着是命中信息表最后是按方案排好的逐位编号# 12e8:H|PDBID|CHAIN|SEQUENCE # ANARCI numbered # Domain 1 of 1 #|species|chain_type|e-value|score|seqstart_index|seqend_index| #|mouse|H|8.6e-58|184.9|0|119| # Scheme imgt H 1 Q H 2 V H 3 Q ... //逐行读一遍就明白了species是 HMM 命中的物种这里是 mousechain_type是链型e-value和score是对齐质量指标seqstart_index/seqend_index是被编号区域的起止下标。每个记录以//结尾多序列输出时靠它分隔。为什么值得盯一眼 e-value它告诉你这次识别有多有底气后面排查问题时它是第一个排查对象。一条 FASTA 文件处理上千条抗体序列单序列只是热身真实项目里动辄几十上百条序列手动一条条跑不现实。ANARCI 原生支持 FASTA 文件的批量处理 ANARCI -i Example_scripts_and_sequences/antibody_sequences.fasta仓库里的Example_scripts_and_sequences/antibody_sequences.fasta就是现成的练习数据。想结果落盘而不是刷屏加--outfile results.txt想要便于导入 Excel 的横向表格加--csv并指定输出文件——ANARCI 会按链型自动拆成多个 CSV且序列之间按编号方案对齐。这种一行一条序列、一列一个位置的横向格式正是后续统计 CDR 长度分布时最好用的形态。IMGT、Kabat、Chothia……六种编号方案到底怎么选IMGT128 个固定位置覆盖全部抗原受体类型是最通用的默认选择。CDR3 过长时用插入码对称编号如111-ABCD DCBA-112Kabat经典方案只针对抗体IG插入码从 A 排到 ZChothia大体沿用 Kabat但 CDR-H1 的插入位置不同更贴合结构Martin增强 Chothia修正了 Chothia 在部分框架区的插入位置AHo149 个位置几乎不需要插入码适合全受体类型统一比较WolfguyCDR 区按上行/下行编号区域定义更细。选型判断标准很简单要和文献比对就先用文献采用的方案没有特殊需求默认 IMGT 不出错。命令行切换方案用-s参数Python 里则是scheme参数from anarci import number seq EVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSAAKTTPPSVYPLAP numbering, chain_type number(seq, schemekabat) print(chain_type) # 输出 H print(numbering) # 输出该链第一个结构域的 Kabat 编号列表number()是只要编号、不要细节的轻量入口返回编号列表和链型。注意kappa 与 lambda 轻链会被统一归为L这是 README 中明确写出的约定写代码时不要被它吓一跳。用 Python API 批量编号并接入你的分析流程真正跑项目时推荐完整版anarci()函数。它一次处理一组(ID, 序列)对返回三份等长列表numbering编号结果、alignment_details物种/链型/e-value 等细节、hit_tablesHMMER 完整命中排名。下面这段代码可以直接运行from anarci import anarci sequences [ (12e8:H, EVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSAAKTTPPSVYPLAP), (12e8:L, DIVMTQSQKFMSTSVGDRVSITCKASQNVGTAVAWYQQKPGQSPKLMIYSASNRYTGVPDRFTGSGSGTDFTLTISNMQSEDLADYFCQQYSSYPLTFGAGTKLELKRADAAPTVSIFPPSSEQLTSGGASV), (lysozyme:A, KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL), ] results anarci(sequences, schemeimgt, outputFalse) numbering, alignment_details, hit_tables results for i in range(len(sequences)): if numbering[i] is None: print(sequences[i][0], 未编号不是抗体或 TCR 可变区) else: detail alignment_details[i][0] print(sequences[i][0], →, detail[chain_type], 链物种, detail[species], e-value, detail[e-value]) print( 前 3 个编号位置:, numbering[i][0][0][:3])预期结果很清晰前两条序列分别被识别为 H 链和 L 链并完成 IMGT 编号第三条是溶菌酶不是抗体numbering[2]为None。这个拒绝识别的行为非常有用——它天然就是一条过滤非抗体序列的规则。想对照更多细节仓库里的Example_scripts_and_sequences/anarci_API_example.py是官方 API 演示脚本把每个返回值都打印了一遍。踩过的坑帮你一次填平序列太短会被静默拒绝number()对长度不足 70 个残基的序列直接返回(False, False)。拿到片段序列时先检查长度别误判成识别失败轻链统一记作 Lkappa 和 lambda 都归为 L 链若必须区分需要另查alignment_details中的原始链型信息物种别太当真官方明确提醒ANARCI 的物种判断来自对 V/J 生殖系的比对适合服务编号场景不适合作为物种鉴定的主工具工程改造序列识别率低遇到 scFv、双抗这类改造分子调低bit_score_threshold默认 80能让识别更宽松但阈值太低会误报其他免疫球蛋白样分子想提高物种判断精度在anarci()中打开assign_germlineTrue它会按 V/J 区最高序列一致性再判定一次物种llama VHH 等稀有物种链型通常能认出但物种可能标错属正常现象。把 ANARCI 接进日常工作流三个进阶姿势第一按编号切 CDR。拿到编号后IMGT 方案下 CDR1/CDR2/CDR3 的位置区间是固定的如 CDR3 大致落在 104–118配合编号结果就能一键提取每个抗体的 CDR 序列做长度分布分析或结合 Biopython 继续建比对。第二并行加速。批量数据量大时anarci()支持ncpu参数把任务分给多核想了解官方怎么做性能基准可以翻一翻Example_scripts_and_sequences/run_numbering_benchmark.sh。第三定制模型。build_pipeline/目录里放着一整套从 IMGT 拉取生殖系、构建 HMM 的流程RUN_pipeline.sh加配套脚本。如果你的目标物种不在内置列表里顺着这条管线就能自建模型 下一步从今天就开始现在你可以做三件事先用Example_scripts_and_sequences/下的12e8.fasta和antibody_sequences.fasta把命令行与 API 各跑一遍再用--csv生成一次横向表格直观感受 CDR 统计的便利最后把你手上真实的序列文件交给anarci()把numbering[i] is None的过滤逻辑写进自己的清洗流程。跑通之后别忘了把经验分享到同行社区一起把六种编号方案真正握在手里。【免费下载链接】ANARCIAntibody Numbering and Antigen Receptor ClassIfication项目地址: https://gitcode.com/gh_mirrors/an/ANARCI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考