程序与技术分享:02Prodigal基因预测

简介: 程序与技术分享:02Prodigal基因预测

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

相关文章
|
编解码 数据中心
中国1km分辨率逐月降水数据集(1901-2020)
中国1km分辨率逐月降水数据集(1901-2020)
275 1
中国1km分辨率逐月降水数据集(1901-2020)
|
机器学习/深度学习 算法 PyTorch
深度学习经典算法PPO的通俗理解
#1 前置知识点 基本概念 [https://www.yuque.com/docs/share/04b60c4c-90ec-49c7-8a47-0dae7d3c78c7?#](https://www.yuque.com/docs/share/04b60c4c-90ec-49c7-8a47-0dae7d3c78c7?#) (部分符合的定义在这里) 要理解PPO,就必须先理解Actor
9485 0
|
流计算 Docker Windows
利用Docker搭建Galaxy
前几天再看新买的《python Web开发实践》时发现一个神奇的工具---Docker,官网介绍是 Docker is the world's leading software containerization platform 我不禁想到生物信息学中有许多软件都要在类unix平台上运行,仅有部分移植到Windows上。
1831 0
|
4月前
|
人工智能 开发者
DeepSeek-R1源码解读
deepseek-r1源码分析
127 0
|
7月前
|
机器学习/深度学习 人工智能 边缘计算
DistilQwen2.5蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen2.5 是阿里云人工智能平台 PAI 推出的全新蒸馏大语言模型系列。通过黑盒化和白盒化蒸馏结合的自研蒸馏链路,DistilQwen2.5各个尺寸的模型在多个基准测试数据集上比原始 Qwen2.5 模型有明显效果提升。这一系列模型在移动设备、边缘计算等资源受限的环境中具有更高的性能,在较小参数规模下,显著降低了所需的计算资源和推理时长。阿里云的人工智能平台 PAI,作为一站式的机器学习和深度学习平台,对 DistilQwen2.5 模型系列提供了全面的技术支持。本文详细介绍在 PAI 平台使用 DistilQwen2.5 蒸馏小模型的全链路最佳实践。
|
7月前
|
数据安全/隐私保护
基于矢量控制器的PMSM永磁同步电机速度控制系统simulink建模与仿真
本课题基于MATLAB2022a,通过Simulink建模与仿真,实现PMSM永磁同步电机速度控制系统的矢量控制。系统采用PID控制器调节转速,输出包括电机转速跟踪曲线、PID控制器输出曲线及电磁转矩Te曲线。PMSM以其高效率和良好动态响应广泛应用于工业自动化和电动汽车领域。矢量控制利用Clarke和Park变换,将静止坐标系转换为旋转dq坐标系,实现电流解耦与精确控制,简化系统复杂度。仿真结果无水印,提供完整程序与模型。
|
Python
Python之shutil库详解
Python之shutil库详解
291 3
|
数据采集 监控 搜索推荐
使用 Python 爬虫进行网站流量分析:Referer 头的利用
使用 Python 爬虫进行网站流量分析:Referer 头的利用
|
数据采集 搜索推荐 数据可视化
使用R语言进行药物动力学分析
【4月更文挑战第27天】R语言在药物动力学分析中扮演关键角色,用于数据处理(如dplyr, readr, tidyr包)、模型建立(如drc包的一室、多室模型)、参数估计(nls, nlsList, lme4, FME包)及结果解释(summary, predict, plot, boot, bayesplot包)。通过实例,展示了如何使用R建立药物吸收和清除模型,助力药物研发和个性化医疗。随着数据分析技术发展,R在药物动力学领域的应用将更加广泛。
445 1
|
图形学 异构计算
【Unity Shader 中Pass相关介绍_第四篇】
【Unity Shader 中Pass相关介绍_第四篇】