Prokka — 原核生物基因组快速注释工具
一句话说明
Prokka 是一款针对细菌、古菌基因组的全功能自动注释流程,能在几分钟内完成 CDS、rRNA、tRNA、信号肽等各类特征的预测和功能注释。
安装与配置
# 注意:Prokka v1.14.6 是最后一个稳定版,作者已推荐迁移到 Bakta
# 创建专用环境
conda create -n prokka -y
conda activate prokka
# 从 bioconda 安装 Prokka(最新稳定版 v1.14.6)
conda install -c bioconda -c conda-forge prokka -y
# 验证安装并更新数据库
prokka --version # 查看版本号
prokka --setupdb # 初始化/更新注释数据库(首次运行必须)
# 或使用 --dbdir 指定自定义数据库目录
核心用法
基础注释运行
# 最简单的注释命令
# --outdir:输出目录
# --prefix:输出文件前缀(默认 prokka)
# --cpus:使用 CPU 数
prokka \
--outdir prokka_out/ \
--prefix mygenome \
--cpus 16 \
genome.fa # 输入基因组 fasta 文件
细菌基因组完整注释
# 指定生物信息提高注释精度
prokka \
--outdir prokka_out/ \
--prefix sample01 \
--genus Escherichia \ # 指定属名(用于数据库匹配)
--species coli \ # 指定种名
--strain K12 \ # 指定菌株名
--gram neg \ # 革兰氏阴性(影响信号肽预测)
--cpus 16 \
--locustag ECOLI \ # 基因座标签前缀
--compliant \ # 生成符合 GenBank 提交标准的文件
genome.fa
MAG(宏基因组组装基因组)注释
# MAG 注释:关闭关闭质量检查,降低最小 contig 长度
prokka \
--outdir mag_annotation/ \
--prefix bin_01 \
--metagenome \ # 宏基因组模式(调整基因预测参数)
--cpus 16 \
--mincontiglen 200 \ # 最短 contig 长度(MAG 中可能有短 contig)
bin_01.fa
参数详解
| 参数 | 说明 | 默认值 |
|---|
--outdir | 输出目录 | 必填 |
--prefix | 输出文件前缀 | prokka |
--cpus | 并行 CPU 数 | 8 |
--genus | 生物属名 | 空 |
--species | 生物种名 | 空 |
--strain | 菌株名 | 空 |
--gram | 革兰氏染色(pos/neg) | 空 |
--metagenome | 宏基因组模式 | 关闭 |
--mincontiglen | 最短 contig(bp) | 500 |
--compliant | GenBank 规范输出 | 关闭 |
--locustag | 基因座标签前缀 | PROKKA |
--kingdom | 界别(Bacteria/Archaea) | Bacteria |
输出文件说明
# 运行后会生成多种格式的注释文件
ls prokka_out/
# mygenome.gff — 标准 GFF3 格式注释文件(最常用)
# mygenome.gbk — GenBank 格式(可用 Artemis 可视化)
# mygenome.fna — 基因组 DNA 序列
# mygenome.faa — 蛋白质序列(CDS 翻译)
# mygenome.ffn — 所有特征的核苷酸序列
# mygenome.txt — 注释统计摘要
# mygenome.tsv — 制表符分隔的功能注释表格
# mygenome.log — 运行日志
# 查看注释统计
cat prokka_out/mygenome.txt # 总结:CDS数、rRNA数、tRNA数等
实战案例
# 场景:批量注释 DAS_Tool 输出的多个 MAG bins
mkdir -p mag_annotations
for bin in das_tool_out/DASTool_bins/*.fa; do
# 提取 bin 名(去掉路径和扩展名)
name=$(basename ${bin} .fa)
# 逐个注释每个 MAG
prokka \
--outdir mag_annotations/${name}/ \
--prefix ${name} \
--metagenome \
--cpus 8 \
--mincontiglen 500 \
--kingdom Bacteria \
${bin}
echo "完成注释:${name}" # 进度提示
done
# 汇总所有 bin 的注释统计
for dir in mag_annotations/*/; do
name=$(basename ${dir})
# 从 txt 文件提取 CDS 数量
cds=$(grep "CDS" ${dir}/${name}.txt | awk '{print $1}')
echo "${name}: ${cds} CDS"
done
常见报错与解决
| 报错信息 | 原因 | 解决方法 |
|---|
could not execute: tbl2asn | tbl2asn 缺失或过期 | conda update prokka 或下载新版 tbl2asn |
Database not found | 数据库未初始化 | 运行 prokka --setupdb |
No CDS found | contig 太短 | 降低 --mincontiglen |
SignalP not found | SignalP 未安装 | 忽略(商业软件)或用 --nosignal 跳过 |
| 输出文件为空 | 输入 fasta 格式错误 | 检查序列名中是否有特殊字符 |
速查表
# 基础注释(单个基因组)
prokka --outdir out/ --prefix sample --cpus 16 genome.fa
# 细菌基因组(指定物种信息)
prokka --outdir out/ --prefix ecoli --genus Escherichia --species coli --gram neg --cpus 16 genome.fa
# MAG 注释
prokka --outdir out/ --prefix bin01 --metagenome --mincontiglen 200 --cpus 8 bin.fa
# 批量注释
for f in bins/*.fa; do n=$(basename $f .fa); prokka --outdir annot/$n/ --prefix $n --metagenome --cpus 8 $f; done