AMRFinderPlus — NCBI 抗生素耐药基因鉴定工具
一句话说明
AMRFinderPlus 是 NCBI 开发的权威耐药基因检测工具,可鉴定细菌蛋白质/核苷酸序列中的 AMR 基因、点突变耐药位点以及毒力/胁迫相关基因(当前版本 v4.2.7)。
安装与配置
# 创建专用环境
conda create -n amr python=3.10 -y
conda activate amr
# 从 bioconda 安装 AMRFinderPlus(最新版 v4.2.7)
conda install -c bioconda ncbi-amrfinderplus -y
# 验证安装
amrfinder --version # 查看版本号
# 下载/更新数据库(运行前必须操作)
# --force_update:强制更新到最新版数据库
amrfinder --update # 自动下载最新数据库(推荐)
amrfinder -u # 等价简写
# 查看数据库版本
amrfinder --database_version # 显示当前数据库版本
核心用法
模式一:蛋白质序列扫描(最常用)
# 输入:Prokka/Bakta 输出的蛋白质序列 (.faa)
# --protein:输入蛋白质 fasta 文件
# --output:输出 TSV 文件
# --organism:指定生物体(提高点突变检测精度)
amrfinder \
--protein prokka_out/sample.faa \
--output amr_results.tsv \
--threads 8 # 线程数
模式二:核苷酸序列扫描
# 输入:基因组 fasta(不需要预先注释)
# --nucleotide:输入核苷酸 fasta
# --output:结果文件
amrfinder \
--nucleotide genome.fa \
--output amr_nucl_results.tsv \
--threads 8
模式三:蛋白质 + 核苷酸联合(最全面,推荐)
# 同时分析蛋白质和核苷酸,结合 GFF 坐标信息
# --protein:蛋白质序列
# --nucleotide:基因组核苷酸序列
# --gff:GFF 注释文件(提供位置信息)
# --organism:生物体名称(用于点突变数据库查询)
amrfinder \
--protein prokka_out/sample.faa \
--nucleotide prokka_out/sample.fna \
--gff prokka_out/sample.gff \
--organism Escherichia \
--output amr_combined.tsv \
--plus \ # 同时检测毒力和胁迫基因
--report_common \ # 报告常见基因
--threads 16
参数详解
| 参数 | 说明 | 默认值 |
|---|
-p/--protein | 蛋白质 fasta | 二选一 |
-n/--nucleotide | 核苷酸 fasta | 二选一 |
-g/--gff | GFF 注释文件(坐标信息) | 可选 |
-O/--organism | 生物体(点突变查询) | 空 |
-o/--output | 输出 TSV 文件 | stdout |
--plus | 同时检测毒力/胁迫基因 | 关闭 |
--report_common | 报告常见但非耐药基因 | 关闭 |
-u/--update | 更新数据库 | — |
--threads | 线程数 | 4 |
--coverage_min | 最小序列覆盖度 | 0.5 |
--ident_min | 最小序列同一性 | -1(自动) |
输出格式说明
# 输出 TSV 文件的列说明
head -1 amr_results.tsv # 查看表头
# 主要列含义:
# Protein identifier — 蛋白质 ID
# Gene symbol — 基因符号(如 blaTEM-1)
# Sequence name — 数据库序列名
# Scope — core(核心)或 plus(毒力/胁迫)
# Element type — AMR/VIRULENCE/STRESS/POINT
# Element subtype — 具体子类(AMR, HEAT, BIOCIDE等)
# Class — 抗生素类别(如 BETA-LACTAM)
# Subclass — 子类别(如 CARBAPENEM)
# Method — 检测方法(EXACTX/BLAST/HMM等)
# Coverage percent — 参考序列覆盖度
# Percent identity — 序列同一性
实战案例
# 场景:宏基因组样本多个 MAG 的 AMR 基因批量扫描
mkdir -p amr_results
for bin_dir in bakta_annotations/*/; do
bin_name=$(basename ${bin_dir})
prot_file="${bin_dir}/${bin_name}.faa" # Bakta 蛋白质文件
nucl_file="${bin_dir}/${bin_name}.fna" # Bakta 核苷酸文件
gff_file="${bin_dir}/${bin_name}.gff3" # Bakta GFF 文件
if [ -f "${prot_file}" ]; then
amrfinder \
--protein ${prot_file} \
--nucleotide ${nucl_file} \
--gff ${gff_file} \
--output amr_results/${bin_name}_amr.tsv \
--plus \
--threads 8
echo "[完成] ${bin_name} AMR 扫描完毕"
fi
done
# 汇总所有 MAG 的 AMR 基因(添加 bin 名列)
echo -e "Bin\t$(head -1 amr_results/*.tsv | tail -1)" > all_amr.tsv
for f in amr_results/*_amr.tsv; do
bin=$(basename $f _amr.tsv)
tail -n +2 $f | awk -v b="$bin" '{print b"\t"$0}' >> all_amr.tsv
done
wc -l all_amr.tsv # 统计总 AMR 基因命中数
常见报错与解决
| 报错信息 | 原因 | 解决方法 |
|---|
Database not found | 数据库未下载 | 运行 amrfinder --update |
Invalid organism | 生物体名称不对 | 运行 amrfinder --list_organisms 查看支持列表 |
GFF format error | GFF 格式不符合要求 | 使用 Prokka/Bakta 输出的标准 GFF |
blast+ not found | BLAST+ 未安装 | conda install blast |
| 版本与数据库不匹配 | 工具版本太旧 | conda update ncbi-amrfinderplus |
速查表
# 更新数据库
amrfinder --update
# 蛋白质序列扫描
amrfinder -p sample.faa -o amr.tsv --threads 8
# 联合扫描(最全面)
amrfinder -p sample.faa -n sample.fna -g sample.gff -O Escherichia -o amr.tsv --plus --threads 16
# 查看支持的生物体列表
amrfinder --list_organisms
# 统计各类抗性基因数量
awk -F'\t' 'NR>1{print $8}' amr.tsv | sort | uniq -c | sort -rn