gpt4 book ai didi

python - 使用 NCBIXML 仅解析来自 BLAST 输出的前 3 个命中

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:44 25 4
gpt4 key购买 nike

我修改了一段代码,如下所示,以从 BLAST XML 输出中解析所需的信息。

import csv
from Bio.Blast import NCBIXML
blast_records = NCBIXML.parse(open('PGblast.xml', 'rU'))

output = csv.writer(open('PGhit.csv','w'), delimiter =',',
quoting=csv.QUOTE_NONNUMERIC)
output.writerow(["Query","Hit ID", "Hit Def", "E-Value"])

E_VALUE_THRESH = 0.00000000000000001

for blast_record in blast_records:
for alignment in blast_record.alignments:
for hsp in alignment.hsps:
if hsp.expect < E_VALUE_THRESH:
output.writerow([blast_record.query[:8],
alignment.hit_id, alignment.hit_def,hsp.expect])

blast_records.close()

该代码允许我解析 E 值截断的命中。但是,我希望只解析 BLAST XML 输出中的最佳命中或前 3 个命中,因为 BLAST 输出文件很大。

解析每个命中结果将花费大量时间来处理,事实上我不希望所有命中结果。

有好心人能帮帮我吗?

最佳答案

如果只解析每个命中的前 3 个 HSP,而不解析整个文件,则需要您编写自己的自定义 XML 解析器。 Biopython 的 NCBIXML 不会这样做。

但是,如果您正在寻找速度改进,您可以尝试新的 SearchIO 子模块 (http://biopython.org/wiki/SearchIO)。它有一个新的 BLAST XML 解析器,应该比旧的 NCBIXML 解析器更快。旧的解析器依赖于纯 Python XML 解析器,而 SearchIO 中的新解析器尽可能使用 cElementTree

子模块仍然是新的和实验性的,因此在正式发布之前可能仍有一些变化。如果您有兴趣,这里还有一个草稿教程:http://bow.web.id/biopython/Tutorial.html#htoc96 .

关于python - 使用 NCBIXML 仅解析来自 BLAST 输出的前 3 个命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13835912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com