没有项目描述

pyblastbio的Python项目详细描述


travis buildCoverage StatusPyPI version

module_icon

构建/覆盖状态
BranchBuildCoverage
mastertravis buildCoverage Status
developmenttravis buildCoverage Status

Pyblast

这是其他应用程序在seqrecord对象和json对象上运行blast搜索的包装器。打算 用于小型python应用程序。

功能包括:

  • 自动blast解析为json
  • 使用线性或循环主题对齐循环查询
  • 喷砂自安装

安装

您可以使用以下命令将blast安装到pyblast目录:

pyblast install

这将把它安装到python安装位置的pyblast/blast_bin中。如果要在其他地方安装blast,请移动ncbi-blast-x.x.x+文件夹 将path/to/ncbi-blast-x.x.x+/bin添加到您所需的位置。pyblast更喜欢使用存储的blast 在您的可执行路径中。如果在那里找不到blast可执行文件,它会在pyblast/blast_bin/_paths.txt中的路径中查找它。 文件。_当您运行install_blast.py时,paths.txt会自动更新,因此无需手动管理路径。

在安装并验证blastn命令在命令行工作之后,

pip install pyblastbio

用法

这个包是blast命令行的python包装器,打算与微服务(例如flask)一起运行,或者用于jupyter笔记本或小python脚本/应用程序中的快速对齐。

这个包还包括一个基本的基于python的安装脚本,用于单元测试。

对bio.seqrecord对象运行blast查询

我们可以使用下面的代码对一些序列进行快速对齐,这为我们提供了一个很好的结果字典:

frompyblastimportBioBlastfrompyblast.utilsimportmake_linear,make_circularfromBio.SeqRecordimportSeqRecordfromBio.SeqimportSeqqueries=[SeqRecord(Seq("ACGTGATTCGTCGTGTAGTTGAGTGTTACGTTGCATGTCGTACGTGTGTAGTGTCGTGTAGTGCTGATGCTACGTGATCG"))]subjects=[SeqRecord(Seq("ACGTGATTCGTCGTGTAGTTGAGTGTTACGTTGCATGTCGTTACGTGATCG"))]# pyblast requires a 'topology' annotation on the SeqRecords.# we can make records circular or linear using `make_linear` or `make_circular` methodssubjects=make_linear(subjects)queries=make_linear(queries)blast=BioBlast(subjects,queries)results=blast.quick_blastn()print(results)
[{"query":{"start":1,"end":46,"bases":"ACGTGATTCGTCGTGTAGTTGAGTGTTACGTTGCATGTCGT-ACGTG","strand":1,"length":80,"sequence_id":"11e17df2-579f-4234-a1e6-f4e3fadfe277","circular":false,"name":"<unknown name>","origin_key":"bbadd55c-9413-4394-a23c-0da983630b98","origin_record_id":"<unknown id>","origin_sequence_length":80},"subject":{"start":1,"end":47,"bases":"ACGTGATTCGTCGTGTAGTTGAGTGTTACGTTGCATGTCGTTACGTG","strand":1,"length":51,"sequence_id":"69248d23-1044-4a75-80c9-53b999796d48","circular":false,"name":"<unknown name>","origin_key":"1f627d51-93df-458b-ba36-9b5a7b483a4d","origin_record_id":"<unknown id>","origin_sequence_length":51},"meta":{"query acc.":"11e17df2-579f-4234-a1e6-f4e3fadfe277","subject acc.":"69248d23-1044-4a75-80c9-53b999796d48","score":43,"evalue":0,"bit score":80,"alignment length":47,"identical":46,"gap opens":1,"gaps":1,"query length":80,"q. start":1,"q. end":46,"subject length":51,"s. start":1,"s. end":47,"subject strand":"plus","query seq":"ACGTGATTCGTCGTGTAGTTGAGTGTTACGTTGCATGTCGT-ACGTG","subject seq":"ACGTGATTCGTCGTGTAGTTGAGTGTTACGTTGCATGTCGTTACGTG","span_origin":true}}]

对循环主题和查询运行blast

pyblast还处理循环主题和查询的对齐。如下所示,我们将主题(1到50)与循环查询(82/origin到30)完全对齐。循环主题和循环查询可以混合在一起,也可以是多个查询。

seq = "ACGTTGTAGTGTAGTTGATGATGATGTCTGTGTCGTGTGATGTGCTGTAGTGTTTAGGGGCGGCGCGGAGTATGCTG"
queries = [
	SeqRecord(Seq(seq))
]

subjects = [
	SeqRecord(Seq(seq[-20:] + seq[:30]))
]

# pyblast requires a 'topology' annotation on the SeqRecords.
# we can make records circular or linear using `make_linear` or `make_circular` methods
subjects = make_circular(subjects)
queries = make_circular(queries)

blast = BioBlast(subjects, queries)
results = blast.quick_blastn()
print(results)
[{"query":{"start":82,"end":30,"strand":1,"...":"..."},"subject":{"start":1,"end":50,"strand":1,"...":"..."},"meta":{"...":"..."}]

生物工厂

在某些情况下,我们希望为不同类型的路线共享相同的序列。例如,我们可能希望将一组底漆和一组模板与相同的查询记录对齐。在这种情况下,我们可以使用bioblastfactory

frompyblastimportBioBlastFactory# initialize a new factoryfactory=BioBlastFactory()# add records accessible by keywordfactory.add_records(records1,"primers")factory.add_records(records2,"templates")factory.add_records(records3,"queries")# we spawn new BioBlast alignmers from the keywords aboveprimer_alignment=factory("primers","queries")template_alignment=factory("templates","queries")# we can then run alignments, ensuring the queries in both results# refer to the exact same queryprimer_results=primer_alignment.quick_short_blastn()template_results=template_alignment.quick_blastn()

读取文件的实用程序

pyblast包括用于读取fastagenbank文件的实用程序。

frompyblast.utilsimportload_glob,load_genbank_glob,load_fasta_glob# load many genbank files into a list of SeqRecords# 'topology' is automatically detected here# we enforce all record_ids to be unique (a requirement for pyblast)records1=load_genbank_glob("~/mydesigns/*.gb",force_unique_ids=True)# load many fasta files into a list of SeqRecords# 'topology' is NOT detected# we enforce all record_ids to be unique (a requirement for pyblast)records2=make_linear(load_fasta_glob("~/mydesigns/*.fasta"),force_unique_ids=True)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java集合属性值   java字符串==运算符是否比较引用?   java是否存在过太多的ListView或适配器?   json获取java中类路径中下载的文件   我可以用java代码解决数据库并发问题吗?   在多个线程中使用forEach()或使用forEach()和lambdas进行java集合迭代   java输出JFrame中的整个循环   java禁用高度详细的日志记录   java在没有特定属性的对象中访问模型的值   java Smack xmpp建立连接   处理过时域对象引起的并发问题的java策略(Grails/GORM/Hibernate)   java从ObservableList中提取元素   使用图像进行java相似图像搜索   java ListView和图像:我快疯了   在Java中,如何从毫秒时间戳中提取一天的周期?   java我需要这样的设计,但我面临两个问题   java如何获取JGoodies FormLayout中的单元格大小   Spring引导生成的java War文件未部署到Weblogic 12c