ANARCI抗体编号终极指南:3步安装+批量处理实战,一次搞懂6大编号方案
ANARCI抗体编号终极指南3步安装批量处理实战一次搞懂6大编号方案【免费下载链接】ANARCIAntibody Numbering and Antigen Receptor ClassIfication项目地址: https://gitcode.com/gh_mirrors/an/ANARCI拿到一条抗体序列最头疼的问题往往不是测序本身而是下一步这是重链还是轻链来自哪个物种CDR区到底在哪几个位置不同文献用了不同编号体系怎么统一对比如果你被这些问题折磨过那么ANARCIAntibody Numbering and Antigen Receptor ClassIfication抗体编号与抗原受体分类工具就是为你准备的答案。它用隐马尔可夫模型HMM一种概率统计模型常用于比对和分类序列自动判断链型与物种并输出标准化编号一条命令就能让混乱的序列变得整齐划一。本文是一份面向新手的ANARCI安装教程与实战手册我会按装好→跑通→批量→进阶的顺序带你亲手完成抗体序列编号的全流程。一、先搞懂 ANARCI 到底帮你做了什么抗体编号antibody numbering本质上是给可变区的每个氨基酸发一个门牌号。有了统一的门牌号来自不同抗体、甚至不同物种的序列才能放在同一张表里比对CDR互补决定区抗体上直接接触抗原的区域的位置也才有可比性。ANARCI 的核心逻辑只有三步比对用 HMMER 的 hmmscan 把输入序列与内置 HMM 库比对HMM 库由 IMGT 数据库的种系基因训练而来分类根据比对分数判断物种和链型重链 H、轻链 K/L、TCR 的 A/B/G/D 等编号按你指定的方案输出每个残基的位置号包括插入码如 100A、100B。值得一提的细节是作者在 README 里明确提醒ANARCI 虽然会给出物种判断但那只是编号的辅助手段别把它当成专门的物种注释工具。识别物种要靠专门的数据库这一点我们要记在心里。二、ANARCI安装教程5分钟完成环境配置第 1 步准备依赖ANARCI 基于 Python底层依赖 Biopython 和 HMMER一款用于搜索序列数据库的工具。最省心的方式是直接用 conda 装conda install -c conda-forge biopython -y conda install -c bioconda hmmer3.3.2 -y如果你没有 conda用 pip 装 Biopython、再单独装 HMMER 也可以但建议优先走 conda版本更可控。第 2 步获取源码把项目克隆到本地git clone https://gitcode.com/gh_mirrors/an/ANARCI cd ANARCI第 3 步安装并构建模型python setup.py install注意这一步不是简单的拷贝代码。安装脚本会调用build_pipeline/RUN_pipeline.sh从 IMGT 下载种系序列、用 MUSCLE 做多序列比对、再训练出 HMM 模型整个过程需要几分钟请耐心等它跑完。如果系统里没有muscle命令需要先装好仓库bin/目录也提供了编译好的 muscle 可执行文件。安装完成后验证一下ANARCI --help能打印出完整的参数说明就说明装好了。也可以直接输入ANARCI不带参数同样会显示帮助信息。三、第一次编号拿一条序列练手用项目示例里的小鼠重链序列试试它也出现在 anarci_API_example.py 中ANARCI -i EVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSA默认方案是 IMGT-s不写就是它。输出大致长这样# 12e8:H|PDBID|CHAIN|SEQUENCE # ANARCI numbered # Domain 1 of 1 # Most significant HMM hit #|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 ...输出字段逐个看字段含义怎么用species比对到的最优 HMM 所属物种粗略了解来源不可作为权威物种鉴定chain_type链型H/K/L/A/B/G/DK 和 L 都归为轻链 Le-value / score比对显著性与得分数值越极端说明这条序列越像抗体可变区seqstart / seqend_index被编号残基在原始序列中的起止下标可用于切片截取可变区Scheme本次使用的编号方案后续分析必须保持一致如果输入的是非抗体序列比如项目里的 lysozyme.fasta溶菌酶蛋白ANARCI 会如实报告没有显著比对结果而不是硬着头皮给编号——这种宁缺毋滥的态度对科研数据很有价值。四、ANARCI批量处理一个 FASTA 文件全搞定真实项目里你手里往往是几百条序列而不是一条。此时把序列存成 FASTA 文件直接喂给-iANARCI -i Example_scripts_and_sequences/antibody_sequences.fasta -o numbering.txt四个高频参数处理大批量数据必用参数作用-o/--outfile结果写到文件而不是刷屏配合 CSV 是必填项--csv按链型拆分成outfile_H.csv、outfile_L.csv等多个表格每个残基一列方便导入 Excel-p/--ncpu并行进程数多核机器上能明显提速--assign_germline额外做 V/J 种系基因归属输出v_gene、j_gene及一致性分数仓库自带的 run_numbering_benchmark.sh 就是一份现成的批量处理模板它对pdb_sequences.fa.txt.gz压缩的 FASTAANARCI 支持直接读取 .gz依次跑了 IMGT、Kabat、Chothia、Martin、AHo、Wolfguy 六种方案并计时值得照抄来压测自己的数据time ANARCI -i pdb_sequences.fa.txt.gz -s i --csv -o ./out/pdb_imgt --ncpu 8 --assign_germline注意一个坑--csv模式下必须同时给-o否则会直接报错退出——因为 ANARCI 需要以文件名前缀生成各链型表格没有名字它就无从下手。五、抗体编号方案对比6大方案到底选哪个这是新手最容易困惑的地方。ANARCI 内置 6 种编号方案命令行可用全称也可以用单字母缩写i → IMGT k → Kabat c → Chothia m → Martin a → AHo w → Wolfguy方案位置数适用链型核心特点IMGT128全部抗体TCR各链型位置结构等价CDR3 插入位关于 111/112 对称分布最常用Kabat按链型仅免疫球蛋白历史最悠久插入用 A–Z 字母H1 插入位置与 Chothia 不同Chothia按链型仅免疫球蛋白基于结构信息与 Kabat 的关键差异在 CDRH1 的插入归属Martin按链型仅免疫球蛋白Chothia 增强版部分框架区插入位置调整AHo149全部位置多到几乎不需要插入码跨链型可比Wolfguy分段仅免疫球蛋白CDR 按上行/下行双向编号CDRL1 依赖模板 motif 判定选择建议论文对比和日常使用首选 IMGT如果要用 Kabat/Chothia 等经典 CDR 定义做结构分析再按目标期刊的习惯切换。切换时注意——同一方案与同一 CDR 定义搭配使用才最准确混搭容易出错anarci.py 里对 Kabat 编号配 Chothia 定义等组合做了大量特判可见作者也没少被这种组合折磨。命令行切换示例# 用 Kabat 方案编号 ANARCI -i my.fasta -s kabat # 用 Chothia 方案编号 ANARCI -i my.fasta -s chothia六、Python API实战把编号写进你的分析流程只靠命令行很难把结果接进你自己的代码。ANARCI 的 Python API 才是真正的大杀器。核心入口是anarci()函数一次调用返回三样东西。from anarci import anarci # 输入是 (名称, 序列) 的列表一条或多条都行 sequences [ (12e8:H, EVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSAAKTTPPSVYPLAP), (12e8:L, DIVMTQSQKFMSTSVGDRVSITCKASQNVGTAVAWYQQKPGQSPKLMIYSASNRYTGVPDRFTGSGSGTDFTLTISNMQSEDLADYFCQQYSSYPLTFGAGTKLELKRADAAPTVSIFPPSSEQLTSGGASV), (溶菌酶:A, KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL), ] # scheme 指定方案outputFalse 表示不打印详细过程 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]) # 溶菌酶会走到这里 else: print(已编号:, sequences[i][0], 识别出, len(numbering[i]), 个结构域) for j, (domain_numbering, start, end) in enumerate(numbering[i]): # domain_numbering 是 [(位置, 氨基酸), ...] 的列表 print( 域%d, 对应序列片段: %s % (j, sequences[i][1][start:end1])) print( 比对详情:, alignment_details[i][j])返回值解构numbering[i]第 i 条序列的编号结果None表示没识别出来每条序列可能有多个结构域比如单链抗体 scFv 就有 VH 和 VL 两个域所以它是个列表alignment_details[i][j]第 j 个域的比对元信息物种、链型、e-value、score 等字典hit_tables[i]HMMER 对每个 HMM 的完整命中统计。只想要快速编号用number()如果你的需求很简单——告诉我这条序列是哪个链、第一个域的编号是什么——有个轻量函数from anarci import number seq EVQLQQSGAEVVRSGASVKLSCTASGFNIKDYYIHWVKQRPEKGLEWIGWIDPEIGDTEYVPKFQGKATMTADTSSNTAYLQLSSLTSEDTAVYYCNAGHDYDRGRFPYWGQGTLVTVSAAKTTPPSVYPLAP numbering, chain_type number(seq, schemekabat) print(链型:, chain_type) print(Kabat 编号:, numbering)一条序列、两行代码够清爽。完整的两个 API 用法示例都在 anarci_API_example.py 里建议直接跑一遍对照输出看。七、进阶玩法给 PDB 三维结构做抗体编号序列层面玩熟了还有个隐藏关卡给 PDB 结构文件重新编号。仓库里的 ImmunoPDB.py 扩展了 Biopython 的 PDB 解析器能把编号方案直接应用到三维结构的残基上并自动完成链配对依据界面半胱氨酸位置、CDR 区域标注。# 给抗体结构按 IMGT 编号 python Example_scripts_and_sequences/ImmunoPDB.py -i infile.pdb -o outfile.pdb -s imgt # 给 T 细胞受体TCR结构编号--receptor tr 是关键 python Example_scripts_and_sequences/ImmunoPDB.py -i infile.pdb -o outfile.pdb -s imgt --receptor tr需要满足Biopython 1.84 和 MUSCLE 都在环境中。处理 scFv 这类一条链含两个可变域的结构时默认以第一个识别出的域为准编号需要切换参考域时留意脚本的说明。八、避坑指南常见问题速查表现象原因对策--csv报错退出CSV 模式必须配合-o指定输出文件前缀补上-o 路径/前缀序列报未知氨基酸序列里有非标准字符或长度异常清洗序列确认是 20 种标准氨基酸长度别超过 10000非抗体序列被强行编号不存在这种情况ANARCI 会给None对返回的 None 做好兜底处理物种判断与预期不符ANARCI 的物种识别只是编号辅助用--assign_germline或--use_species提高参考价值必要时换专业注释工具短序列70 残基无法处理蛋白质可变域正常都更长确认序列是完整可变区而非片段想限制只认重链/轻链默认全类型都会尝试加--restrict heavy或--restrict H L等另外bit-score 阈值默认是 80若你的序列与已知抗体差异很大、总被拒可以适当调低--bit_score_threshold试试但要警惕假阳性——阈值放太低非抗体序列也可能蹭上编号。九、下一步行动三条练手路线读文档仓库 README.md 是对外权威说明参数细节以它为准安装与构建逻辑看 setup.py 和 build_pipeline/RUN_pipeline.sh。跑示例项目自带 antibody_sequences.fasta 和 12e8.fasta 两个练习数据配合 anarci_API_example.py 从 API 层面完整走一遍想验证批量性能就用 run_numbering_benchmark.sh 对pdb_sequences.fa.txt.gz跑一次全方案计时。做对比把同一条序列分别用-s imgt / -s kabat / -s chothia编号肉眼对比差异这是理解六种编号方案最快的捷径。现在就把你手头那批最乱的抗体序列拿出来跑一次ANARCI -i your.fasta --csv -o result。当几百条序列在几分钟内变成一张张对齐整齐的编号表时你会回来感谢自己今天读完了这篇指南。动手吧【免费下载链接】ANARCIAntibody Numbering and Antigen Receptor ClassIfication项目地址: https://gitcode.com/gh_mirrors/an/ANARCI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考