👉
生信软件快看,带你十分钟了解新软件用法,加速你的研究
前言
Prodigal是一款编码蛋白基因(CDS)预测软件,专门用于原核生物的基因组或宏基因组。由于其容易上手的用法和优异的预测性能,截至目前已被引用5756次。
最近在进行细菌的基因注释工作时,发现已有研究人员将起整合成为了python模块(pyrodigal
),这项工作已发表在Journal of Open-Source Software上。该模块基于Cython与prodiagal绑定,能够直接与prodigal内部交互,同时优化了一些内容:
- 更强的性能:根据不同的序列而言,运行时间能节省1/3到一半的时间。
- 单一依赖:直接作为Python包分发,不存在Prodigal二进制文件
- 没有中间文件:操作均发生在内存中,序列可直接作为字符串传递
- 更好的内存使用:相比原始版本,采用了更紧凑的数据结构
- 完全相同的结果:pyrodigal经过广泛的测试,保证了与版本
v2.6.3+31b300a
的prodigal一样的结果。 - 规范化的输出:无需再编写解析代码来读取Prodigal的结果
安装
该软件已托管到PyPI上,所以可以直接使用pip来进行快速安装
$ pip install pyrodigal
或者,也可以通过conda来进行快速安装
$ conda install -c bioconda pyrodigal
基础用法
基于Biopython的用法
案例:从Genebank中加载一个序列,使用pyrodigal搜索其基因,并以Fata格式打印结果
使用方法:pyrodigal.GeneFinder()
单一基因组输入
import Bio.SeqIO
import pyrodigal
record = Bio.SeqIO.read("sequence.gbk", "genbank")
orf_finder = pyrodigal.GeneFinder()
# 对于单一基因组输入下,需要使用train方法,否则无法获取到基因
orf_finder.train(bytes(record.seq))
genes = orf_finder.find_genes(bytes(record.seq))
宏基因组输入
import Bio.SeqIO
import pyrodigal
record = Bio.SeqIO.read("sequence.gbk", "genbank")
orf_finder = pyrodigal.GeneFinder(meta=True) # 需要在方法内部注明meta=True
# 对于宏基因组输入时,软件采用预训练的文档进行分析,因此不需要再呼出train方法训练
for i, pred in enumerate(orf_finder.find_genes(bytes(record.seq))):
print(f">{record.id}_{i+1}")
print(pred.translate())
👉
如果biopython版本较旧<1.79,命令:bytes(record.seq)应该更改为record.seq.encode()
基于Scikit-bio的用法
import skbio.io
import pyrodigal
seq = next(skbio.io.read("sequence.gbk", "genbank"))
orf_finder = pyrodigal.GeneFinder(meta=True)
for i, pred in enumerate(orf_finder.find_genes(seq.values.view('B'))):
print(f">{record.id}_{i+1}")
print(pred.translate())
除了方法GeneFinder实现了Prodigal的核心用法外,Pyrodigal还提供了一些其他API方法,实现Python与Prodigal的深度交互:
- TrainingInfo
- MetagenomicBin
- Genes
- Nodes
- Sequence
- Masks
API方法的详细用法与参数见文档:https://pyrodigal.readthedocs.io/en/stable/api/index.html
输出格式
如前文优点介绍,Pyrodigal 的创建是为了在构建更大的管道时跳过解析 Prodigal 的结果。开发人员也建议通过对象层操作 Pyrodigal 预测的基因,而不是将它们写入文件以便稍后解析。
Genes 基因
将找到的基因序列写入文件write_genes
:
genes = orf_finder.find_genes(sequence)
with open("genes.fna", "w") as dst:
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/6f82a8cf3251675def5990bbadd907d1.png)
![img](https://img-blog.csdnimg.cn/img_convert/a7cf93627c8ca9c5f79b2dfd3010d1e1.png)
![img](https://img-blog.csdnimg.cn/img_convert/05e127469abff1ba995e71c57b0a8b43.png)
![img](https://img-blog.csdnimg.cn/img_convert/8ca45158651eeff5bf31ccfb13060b14.png)
![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)
![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**
![](https://img-blog.csdnimg.cn/img_convert/bb9876b2acfc8897d8baa4991a6ccb2a.jpeg)