跳转至

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
--compliantGenBank 规范输出关闭
--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: tbl2asntbl2asn 缺失或过期conda update prokka 或下载新版 tbl2asn
Database not found数据库未初始化运行 prokka --setupdb
No CDS foundcontig 太短降低 --mincontiglen
SignalP not foundSignalP 未安装忽略(商业软件)或用 --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