1、简介
Prodigal是为细菌和古菌基因组进行蛋白编码基因预测的软件 ,其缩写源于PROkaryotic DYnamic Programming Genefinding ALgorithm,表示原核生物基因预测的动态规划算法。
最早在2007年,在美国能源部联合基因组研究所(DOE)的支持下,由橡树岭国家实验室和田纳西大学诺克斯维尔分校联合开发.2010年,发表在BMC Bioinformatics.很快,Prodigal成为使用最多的微生物基因预测算法之一。截至2021年2月,该出版物已被引用4400多次,在NCBI的ftp网站上保存着使用Prodigal预测的所有细菌和古生菌基因组的结果。
2、基因特点
原核生物mRNA的特征:
? 1.原核生物mRNA的5’端无帽子结构,3’端没有或只有较短的多聚(A)结构
? 2.原核生物起始密码子AUG上游有一被称为Ribosome Binding Site (RBS)或SD
序列(Shine –Dalgarno sequence)的保守区,该序列与16S-rRNA 3’端反向互
补,被认为在核糖体-mRNA的结合过程中起作用
? 3.原核生物常以AUG(有时GUG,甚至UUG)作为起始密码子;真核生物几乎永远以
AUG作为起始密码子
? 4.半衰期短:原核生物中,mRNA的转录和翻译是在同一个细胞空间里同步进行的,
蛋白质合成往往在mRNA刚开始转录时就被引发了;大多数细菌mRNA在转录开始1
分钟后就开始降解
? 5.许多原核生物mRNA以多顺反子的形式存在:原核细胞的mRNA(包括病毒)有时可
以同时编码几个多肽
? 单顺反子mRNA (monocistronic mRNA):只编码一个蛋白质的mRNA
? 多顺反子mRNA(polycistronic mRNA):编码多个蛋白质的mRNA
3、特点
Prodigal可以做的:
? 处理基因组类型多样: Finished genomes、draft genomes以及metagenomes
? 输出格式多样: GFF3、Genbank以及Sequin表格形式
? 运行速度快: 在PC上10秒钟就能分析出E. coli K-12基因组的蛋白序列
? 无监督学习: 使用无监督的机器学习算法,无需提供任何训练数据,而是从输入
序列本身自动学习基因组的特性,包括遗传密码使用以及核糖体结合位点的
motif识别
? 可以处理基因组gaps、contig、scaffolds和不完整基因预测
Prodigal不能做的:
? 预测RNA基因: Prodigal暂不能预测RNA基因
? 处理含有内含子的基因: 原核生物种含有内含子的基因非常罕见,所以Prodiga省
去了对这一部分基因的预测
? 基因功能注释: Prodigal并不为它预测的基因提供功能注释
? 处理移码突变(frame shifts): 不包含任何处理碱基插入或删除的逻辑, Indel类型的
测序错误将对基因预测产生影响
? 病毒基因预测: 慎重,尽管可以进行预测, 但是没有大规模验证
4、安装
conda install -c bioconda prodigal
5、输入文件
多种类型的基因组文件:
? Finished genomes: 原核生物基因组完整基因组
? Draft genomes: 原核生物组装草图基因组
? Metagenomes:元基因组组装基因组
Prodigal适用于上述所有基因组的基因预测,并且支持多种格式的输入文件
? 单个或多个序列的FASTA格式序列
? 单个或多个序列的Genbank格式序列
? 单个或多个序列的EMBL格式序列
? 推荐FASTA格式序列
6、基本命令
conda activate py2env
conda install prodigal -c bioconda
perl filter.pl contig.fa ###删去500bp 一下的序列,生成filter.fa
比如: perl /home/wz/prodigal/filter.pl M3W4_3_final.contigs.fa
这一步需要用到一个名为filter.pl的脚本
#!/usr/bin/perl
open IN,"$ARGV【0】";
open OUT,">./filter.fa";
$/ = ">";
readline(IN);
while($line=)
{
$line =~ s/>//g;
($name,$seq) = split(/\n/,$line,2);
$seq =~ s/\n//g;
$len = length($seq);
if($len >= 500)
{
print OUT ">$line\n";
}
else
{
next;
}
}
prodigal -a ./prodigal/protein.fa -d ./prodigal/dna.fa -i ./megahit/finalfinal.contigs.fa -m -o ./prodigal/temp.txt -p meta -q
-a ./prodigal/protein.fa: 设置输出文件 protein.fa,将预测到的氨基酸序列写入该文件。
-d ./prodigal/dna.fa: 设置输出文件 dna.fa,将预测到的dna序列写入该文件。
-i ./megahit/finalfinal.contigs.fa: 输入文件为 finalfinal.contigs.fa,代表拼接好的contigs序列。
-m: 指示 prodigal 使用 meta 模式,以便处理宏转录组或宏基因组样本。
-o ./prodigal/temp.txt: 设置输出文件 temp.txt,具体输出内容和格式由 -p 参数控制。
-p meta: 指示 prodigal 输出与 meta 模式相关的信息,例如orf(开放阅读框架)预测结果、编码调整状态等。可以选择其他模式,如 single、normal 或 mito,分别用于常见基因组、无线粒体基因组和原核基因组的预测。
-q: 禁用标准错误输出。
接下来,对得到的dna和蛋白进行rename ###否则可能报错有相同名字的序列
对得到的dna和蛋白进行rename ###否则可能报错有相同名字的序列
perl rename.pl dna.fa ###得到dna_rename.fa
建立专门装所有样品dna序列的文件夹dna
建立专门装所有样品protein序列的文件夹protein
mv dna_rename.fa ../dna/0414.fa ###命名为样品名字
mv protein_rename.fa ../protein/0414.fa ###命名为样品名字
#将所有核酸序列dna.fa (rename后的) cat在一起dna_all.fa
#将所有蛋白序列protein.fa (rename后的) cat在一起protein_all.fa
这一步需要用到一个名为rename2.pl的脚本
#!/usr/bin/perl
open IN,"$ARGV【0】";
$a = $ARGV【0】;
$a =~ /(\S+).fa/;
$name = $1;
open OUT,">./${name}rename.fa";
while($line=)
{
if($line =~ /^>/)
{
$line =~ s/>/>$name\/;
print OUT "$line";
}
else
{
print //代码效果参考:http://www.jhylw.com.cn/445039277.html
OUT "$line";}
}
##################################################################################
perl /home/wz/prodigal/filter.pl M3W4_3_final.contigs.fa
prodigal -a ./protein.fa -d ./dna.fa -i ./filter.fa -m -o ./temp.txt -p meta -q
perl rename2.pl dna.fa
perl rename2.pl protein.fa
mv dna_rename.fa M3W4_3.fa
perl rename2.pl M3W4_3.fa
mv M3W4_3_rename.fa /home/wz/prodigal/dna
mv protein_rename.fa M3W4_3.fa
perl rename2.pl M3W4_3.fa
mv M3W4_3_rename.fa /home/wz/prodigal/protein
#################################################################################################
7、输出文件
这些DNA序列表示一个基因组上的一段DNA序列。下面是每一部分的详细分析:
B1W10_1_dna_k127_18_1: 这是这个DNA序列的名称或ID,可能是根据序列名或位置生成的。
2: 表示这个DNA序列所在的染色体数目或序号。
235: 表示这个DNA序列起始位置的基对编号。
-1: 表示这个DNA序列的朝向或方向,-1表示反向互补链,+1表示正向链。
ID=2_1;partial=10;start_type=ATG;rbs_motif=GGAGG;rbs_spacer=3-4bp;gc_cont=0.667 :这个是各种附加信息和注释(metadata and annotations)的标签。具体来说,
ID=2_1表示这个DNA序列的ID,通常由基因号和isoform号组成;
partial=10表示这个DNA序列不完整,在N端或C端已经有10个氨基酸缺失;
start_type=ATG表示这个DNA序列的起始密码子是ATG;
rbs_motif=GGAGG和rbs_spacer=3-4bp描述了几个在细胞内起催化作用的区域;
gc_cont=0.667表示这段DNA序列的GC含量为0.667。
这些信息和注释可以帮助科学家研究基因组结构和功能,例如识别起始密码子、翻译启动子、启动转录子和编码蛋白质的区域。
这是一个蛋白质序列的输出,下面是每一部分的解释:
B1W10_1_protein_k127_18_1:这是该蛋白质的名称或ID。
2:这是该蛋白质在基因组中的位置(第2个基因)。
235:这是该蛋白质在基因组中的终止位置。
-1:这是该蛋白质的方向,-1表示逆向。
ID=2_1;partial=10;start_type=ATG;rbs_motif=GGAGG;rbs_spacer=3-4bp;gc_cont=0.667:这是一些关于该蛋白质的注释信息,包括其基因编号、起始位点、起始密码子类型和RBS序列等。
Prodigal是一种常见的宏基因组分析软件,用于预测基因和开放阅读框(ORF)。该软件使用隐藏马尔科夫模型来识别约束编码区域(CDS),并将ORF识别为可能的编码序列。因此,上述输出表示了通过Prodigal预测出的CDS的相应信息。
Prodigal 是一个基因预测软件,用于在基因组序列中寻找编码蛋白质的基因。它采用了一种称为“开放阅读框架(open reading frame, ORF)”的策略来识别潜在的基因。从DNA序列中预测出的ORFs是可能编码蛋白质的特定区域,这些区域具有启动子、终止子等特定标志。Prodigal 能够识别和预测含有起始密码子和终止密码子的ORFs,并做出判断是否是一个具有生物学功能的基因。
对于DNA序列,Prodigal 的预测就是找到每个开放阅读框架(ORF),并与数据库进行比对来预测编码蛋白质的基因。此外,该软件还可以根据概率模型评估每个ORF的概率成为一个真正的基因序列。同时,它也能预测非编码RNA(例如:tRNA或rRNA)等重要的RNA分子,提高了基因寻找的准确性和鉴别力。
综上所述,Prodigal 主要通过对开放阅读框架(ORF)的预测,结合各种算法进行分析及判断,识别并预测出蛋白质基因的序列,并支持其他生物学功能注释。
EOF