目前 Prodigal GitHub Releases 页面显示的最新稳定版是 v2.6.3(2016年2月12日发布)。该教程参考软件作者的Github页面说明GitHub wiki 首页明确说明,wiki 主要是按未来的 Prodigal 3.0.0 行为撰写的。
所以如果你当前实际安装的是稳定版 2.6.3,最稳妥的做法是:
• 优先使用 2.x 语法 • 主要使用短参数 • wiki 里的 -p anon,在 2.x 里通常写作-p meta
Prodigal 是一个专门做原核生物编码基因预测的软件,常用于细菌、古菌、质粒、噬菌体以及元基因组 contigs 的 CDS 预测。它的优点很直接:快、稳、输出文件很适合后续注释流程。
一、安装
1、Conda 安装(推荐)
首先创建 conda 虚拟环境:
conda create -n prodigal然后激活环境:
conda activate prodigal然后安装:
conda install bioconda::prodigal查看版本:
prodigal -v2、源码安装(可选)
如果你不想走 conda,也可以直接从官方仓库编译:
git clone https://github.com/hyattpd/Prodigal.gitcd Prodigalmake install安装完成后测试:
prodigal -vprodigal -h二、Prodigal 最简使用教程
1、单个基因组最简命令
如果你分析的是单个细菌/古菌基因组,最常用命令如下:
prodigal -i genome.fna -o genes.gff -f gff -a proteins.faa -d cds.fna说明:
• -i genome.fna:输入序列,推荐 FASTA 格式。• -o genes.gff:输出基因坐标。• -f gff:指定输出格式为 GFF,后续注释和可视化都更方便。• -a proteins.faa:输出蛋白序列。• -d cds.fna:输出核酸 CDS 序列。
如果你只是想快速拿到蛋白序列做注释,这一条命令已经够用了。
2、元基因组最简命令
如果输入是元基因组组装后的 contigs/scaffolds,建议直接使用 metagenome 模式:
prodigal -i contigs.fa -o meta.gff -f gff -a meta.faa -d meta.fna -p meta说明:
• -p meta:2.x 里最重要的参数之一,表示用元基因组模式进行预测。• 在 wiki 的 3.0 风格文档里,这个模式经常写成 -p anon,但稳定版 2.6.3 实际使用时优先写-p meta更稳。
3、安静运行
如果你不想在终端看到日志输出,可以加上 -q:
prodigal -i genome.fna -o genes.gff -f gff -a proteins.faa -d cds.fna -q4、最简使用总结
• 单基因组: prodigal -i genome.fna -o genes.gff -f gff -a proteins.faa -d cds.fna• 元基因组: prodigal -i contigs.fa -o meta.gff -f gff -a meta.faa -d meta.fna -p meta• 静默运行:在命令最后加 -q
三、Prodigal 详细使用教程
1、不同数据类型怎么跑
1.1 完整基因组
对于完整基因组,直接使用默认模式即可,也就是 normal mode。
prodigal -i complete_genome.fna -o complete.gff -f gff -a complete.faa -d complete.fna如果你非常确定序列两端不在基因内部,可以加 -c,不让 Prodigal 在序列边界预测 partial gene:
prodigal -i complete_genome.fna -o complete.gff -f gff -a complete.faa -d complete.fna -c说明:
• -c更适合真正完整、闭合得比较好的序列。• 对碎片化很严重的 draft 数据,盲目加 -c可能会漏掉边界上的 partial genes。
1.2 草图基因组(draft genome)
大多数 draft genome 仍然建议先按默认模式跑:
prodigal -i draft_genome.fna -o draft.gff -f gff -a draft.faa -d draft.fna如果你的 contigs 太碎,Prodigal 可能会给出类似“训练序列过于碎片化”的警告。这种情况下有两个常见处理方法:
1. 直接改用 -p meta2. 先用一个近缘完整基因组生成 training file,再把 training file 用到目标样本
如果数据非常碎、明显接近 metagenome 风格,直接这样跑通常更省心:
prodigal -i draft_genome.fna -o draft_meta.gff -f gff -a draft_meta.faa -d draft_meta.fna -p meta1.3 元基因组
wiki 对 metagenome 的建议很明确:把所有序列放进一个 FASTA 文件,然后用 anonymous/metagenomic 模式分析。
在稳定版 2.6.3 里,对应命令就是:
prodigal -i metagenome_contigs.fa -o metagenome.gff -f gff -a metagenome.faa -d metagenome.fna -p meta几点建议:
• 不要把来自很多不同基因组的 contigs 用默认 normal mode 硬跑。 • 如果你已经做过 binning,把同一 bin 的 contigs 单独成一个 FASTA,再按 normal mode 分开跑,结果通常会更好。
1.4 使用 training file
这个点特别容易被 wiki 误导。
因为 wiki 主要按 3.0.0 写,而当前稳定版 2.6.3 的 training 行为更像这样:
• 如果 -t指定的训练文件不存在,Prodigal 会在本次运行时把训练信息写出来• 如果 -t指定的训练文件已经存在,Prodigal 会读取它并用于新样本分析
一个常见流程如下。
先在近缘参考基因组上生成 training file:
prodigal -i ref_genome.fna -o ref.gff -f gff -a ref.faa -t ref.trn然后把这个 training file 用到目标基因组:
prodigal -i target_genome.fna -o target.gff -f gff -a target.faa -d target.fna -t ref.trn这个方法特别适合:
• 自己的目标样本过于碎片化 • 但你手头有一个比较近缘、质量较高的参考基因组
2、常用参数总结
-i | -i genome.fna | |
-o | -o genes.gff | |
-f | -f gff | |
-a | -a proteins.faa | |
-d | -d cds.fna | |
-p meta | ||
-c | ||
-t | .trn | |
-s | ||
-w | ||
-g | -g 4 | |
-q |
补充说明:
• 当前稳定版 2.x 里,建议都写成短参数形式。 • 参数和值之间最好留空格,例如 -f gff、-p meta。
3、输出文件怎么理解
Prodigal 默认最核心的输出是基因坐标文件,此外还可以按需输出 4 类附加文件:
• -a:蛋白翻译序列• -d:CDS 核酸序列• -s:所有候选起始位点信息• -w:汇总统计信息
3.1 基因坐标文件
最推荐的格式通常是 GFF:
prodigal -i genome.fna -o genes.gff -f gffProdigal 支持的常见输出格式有:
• gbk:默认,类 GenBank 风格• gff:最常用,适合后续注释、浏览器展示和脚本处理• sqn:Sequin feature table• sco:简单坐标输出
GFF 结果里你经常会看到这些字段:
• ID:每个预测基因的唯一编号• partial:是否是边界不完整基因,00通常表示完整 CDS• start_type:起始密码子类型,例如ATG、GTG、TTG• stop_type:终止密码子类型• rbs_motif:核糖体结合位点 motif• gc_cont:该基因 GC 含量• conf:该基因预测置信度
如果你只是做后续功能注释,通常最常看的就是:
• 坐标 • 正负链 • partial• start_type• conf
3.2 蛋白文件
prodigal -i genome.fna -a proteins.faa这是后续跑 blastp、diamond、hmmscan、eggNOG-mapper、InterProScan 最常用的输出之一。
3.3 CDS 核酸文件
prodigal -i genome.fna -d cds.fna这个文件输出的是预测到的 CDS 核酸序列,保留的是 DNA 字母表,也就是你看到的是 T 而不是 U。
3.4 起始位点文件和统计摘要
如果你想专门研究起始密码子选择、RBS motif 或整体统计,可以额外输出:
prodigal -i genome.fna -o genes.gff -f gff -s starts.txt -w summary.txt这两个文件不是每次都必需,但在下面几类场景里很有用:
• 比较不同参数下的预测差异 • 检查 start site 选择是否异常 • 做方法学分析或结果质控
4、几个实战建议
4.1 大多数单基因组先别急着加 -p meta
Prodigal 的默认 normal mode 就是为单个基因组设计的。很多人一上来就把所有数据都用 -p meta 跑,其实没必要。
一般只有下面几种情况,才优先考虑 -p meta:
• 真正的元基因组数据 • 非常碎、无法稳定训练的 draft 数据 • 很短的小序列、病毒或质粒片段
4.2 不要把多个不相关基因组混在一起用 normal mode
如果一个 multi-FASTA 里混进了很多不同物种、不同 GC 特征的序列,再直接用 normal mode,训练模型往往会被搞乱。
更稳的做法是:
• 同一基因组单独跑 • 同一 bin 单独跑 • 真正混样的 contigs 直接 -p meta
4.3 遇到非常规遗传密码表要显式指定
如果你明确知道目标序列不是标准细菌/古菌密码表,例如支原体/螺原体一类,可以显式指定:
prodigal -i genome.fna -o genes.gff -f gff -a proteins.faa -g 4如果不确定,先按默认设置跑通常就可以;但一旦你怀疑密码表不对,就一定要检查结果里起止密码子和蛋白翻译是否异常。
5、推荐命令模板
单基因组
prodigal -i genome.fna -o genes.gff -f gff -a proteins.faa -d cds.fna -q元基因组
prodigal -i contigs.fa -o meta.gff -f gff -a meta.faa -d meta.fna -p meta -q使用近缘参考训练文件
prodigal -i ref_genome.fna -o ref.gff -f gff -a ref.faa -t ref.trnprodigal -i target_genome.fna -o target.gff -f gff -a target.faa -d target.fna -t ref.trn四、总结
如果只记住一句话:
• 单个原核基因组用默认模式 • 元基因组或极碎数据用 -p meta• 输出文件优先保留 gff + faa + fna
对大多数生信分析流程来说,下面这两条命令已经覆盖了 90% 的使用场景:
prodigal -i genome.fna -o genes.gff -f gff -a proteins.faa -d cds.fnaprodigal -i contigs.fa -o meta.gff -f gff -a meta.faa -d meta.fna -p meta参考资料
• GitHub 仓库:https://github.com/hyattpd/Prodigal • GitHub Releases:https://github.com/hyattpd/Prodigal/releases • GitHub Wiki 首页:https://github.com/hyattpd/prodigal/wiki • Gene Prediction Modes:https://github.com/hyattpd/prodigal/wiki/Gene-Prediction-Modes • Advice By Input Type:https://github.com/hyattpd/prodigal/wiki/Advice-by-Input-Type • Understanding the Prodigal Output:https://github.com/hyattpd/prodigal/wiki/understanding-the-prodigal-output • Bioconda 包页面:https://bioconda.github.io/recipes/prodigal/README.html
作者:Evil Autuman | Autuman Lab微信公众号:Evil Autuman更新时间:2026年3月
夜雨聆风