限制Biopython NCBIWWW搜索中的点击数

限制Biopython NCBIWWW搜索中的点击数,python,biopython,ncbi,Python,Biopython,Ncbi,我正在努力实现一些BLAST搜索的自动化。我只需要从BLAST结果中选取前三个结果,但是参数hitlist\u size似乎没有将我的搜索限制为仅三个结果。无论我指定了多大的尺寸,大多数样本的命中率都超过3次(在其他样本中,我得到了3次,尽管我不确定这是否只是巧合)。有人对此有什么见解吗 import Bio from Bio import SeqIO from Bio.Blast import NCBIWWW from Bio.Blast import NCBIXML fasta_string

我正在努力实现一些BLAST搜索的自动化。我只需要从BLAST结果中选取前三个结果,但是参数
hitlist\u size
似乎没有将我的搜索限制为仅三个结果。无论我指定了多大的尺寸,大多数样本的命中率都超过3次(在其他样本中,我得到了3次,尽管我不确定这是否只是巧合)。有人对此有什么见解吗

import Bio
from Bio import SeqIO
from Bio.Blast import NCBIWWW
from Bio.Blast import NCBIXML
fasta_string = open("FASTA_Files/48_50.fasta").read()
result_handle = NCBIWWW.qblast("blastn", "nt", fasta_string,hitlist_size=3)
    with open("XML_Files/48_50.xml", "w") as save_to:
        save_to.write(result_handle.read())
        result_handle.close()
以下FASTA序列生成
46
的预期命中数,但超过
47
的预期命中数:

>46
NNNNNNNNNNGNNNNNNTGCAGTCGNANNNNNNNNNNNNNNNNNAGCTTGCTGCTTCGCTGACGAGTGGCGGACGGGTGA
GTAATGTCTGGGAAACTGCCTGATGGAGGGGGATAACTACTGGAAACGGTGGCTAATACCGCATAACGTCGCAAGACCAA
AGAGGGGGACCTTCGGGCCTCTTGCCATCAGATGTGCCCAGATGGGATTAGCTTGTTGGTGAGGTAACGGCTCACCAAGG
CGACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCACACTGGAACTGAGACACGGTCCAGACTCCTACGGGAGGCAGCA
GTGGGGAATATTGCACAATGGGCGCAAGCCTGATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTAC
TTTCAGCGGGGAGGAAGGNGTTGTGGTTAATAACCGCAGCAATTGACGTTACCCGCANAANAAGCACCGGCTAACTCCGT
GCCAGCAGCCGCGGTAATACGGAGGGTGCANGCGTTAATCGNAATTACTGGNCGTAAAGCGCACGCAGGCGGTCTGTCAA
GTCTGATGTGAAATCCCCGGGCTCAACCTGGNAACTGCATTCNAAACTGGCAGGCTTGAGTCTTGNAGANGGGGGGTAGA
ATTCCAGGTGTANCGNTGAAATGCGTANAGATCTGGANGNAATACCGGTGGCNAANGCGGCCCCCTGGACAAAGACTGAC
GCTCANGTGCGAAAGCGTGGNGGAGCAAANAGGATTAGATACCCTGGTAGNCCNNCGCCNNANACGATGTCTACNTGGNA
GGNTTGTGNCCTTGAGGCGTGNCTNNCCNGNAGCTNAACGCGTTTAAGTANANCNNCCTGGGGCGAGCNACGGGCNGCNN
GGNTNAAAACNNNNNNTGNNNTTNNACGGGNGNNCCCCGCANNANCCGGCTGNNAGCATGNTGGATTNAANTTCGATNNN
NNCGCGAAGAANCCNNANNNNNGNNNNNNNANNNNNNNNNNAANNNTNNNNNANANNNNNNNNNNNNNNNGNNNNCTNNN
AGNANNGNNNCTGCATGGNNNNCNNNCNNGNTCNNGNNNNNNNNNNNNNGNNNNNNNNCCNNNANNNNNNNNNNNNTNAT
CNNNNNNNNNNNNNTNNNNNNNNNNNNNAGNNNNNNNNCNNNNNNNNNNANNTNNNAANN
>47
NNNNNNNNNNNNNNNNNNNNNNNNGNNNNNCGGGTNNCCNNNNGCTGGNTGNNNTGCTGACGAGTGGCGGACGGGTGAGT
AATGTCTGGGAAACTGCCTGAAGGGGGGGGATTCCTACTGGCCAGGGTGGCTAATACCGGGTAACGTCGNNNGANCAAAG
AGGGGGACCTTCGGGCCTCTTGCCATCACATGTGCCCGGATGGGATTAGCTTGTTGGTGAGGTAACGGCTCACCAAGGCG
ACGATCCCTAGCTGGTCTGAGAGGATGACCAGCCNCACTGGAACTGAGACACGGTCCCGACTCCTACGGGAGGCANCAGT
GGGGAATATTGCTCTTGGGCGCAAGCCTGATGCAGCCATGCCGCGGGTATGAGGAAGGCCTTCGGTTTGTAAAGTACTTT
CTCCGGGGAGGAAGGNGTNGTGGTGAATAACCGCTACANTTGANNCTNCCCGCNNAANAACCACCNGNTAACTCCNTGCN
NNNNGCCGCGGTAATACGGANGGTGCAAGNGTTAATCGNANTTACTGNNTGTTGAGCGCACGNNGGCGGCCTGTCNNNTC
TNATGTGAGATCCCCGGGCTCNCCCTGNNACCTGCATTCGNNNNNTGNNANGCTNGANTCTTGNNNNGNNGNGGNAGNAA
TTCCNNGTGTNNCGNNGAAATGCNNANAGATCTGNANANANNACNGGNGNCCAANGNNGNCCCCTGNTCTCNGACTGACG
CNNGAGTGCTGAANNGTGNAGAGCGNACAGGATTANANNNCCNGNTAGNCCGNCNCCNCACACCNATGTCTACATGNGAG
GNTNNNGNNNNNTGNGGCNNNNCNNTCCNNNAGCTNANGNNGTTNAANTANATCNNNCTNNNNCNNGCNNGGGGNCANNA
NGGGNNNAAANNTNNNNATNAATNTGACGGANNNNNCNNNNNNNNCNNNNNNANCATGNGGATTNANNNTNNNTNNNNNC
NNNNNANAACCNNANNNNNNNNNNNNNNTNNNNNNNANNNTNNNNNNNTNNNNNNGNNNNCNNNNNNNNACTNNNNNNNC
NNNNNNNNCANNGNNNNNNNNNNNANGNTNNNNNTGNNNNAANNNTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTN
NNNNNNTNNNNNNNTNNNNTNNNNNNNNNNNNNNNNNNNNNNNTNNNNNNNNTCNNNNNN

问题似乎是,命中对齐不同。命中是数据库中的序列匹配,而对齐是核苷酸的实际位置。对于数据库中的同一序列,这种情况可能会发生多次

在您尝试过的情况下,此保存的xml确实在
下有三个项目,但您得到的最后一次点击有七个
记录,这些记录似乎是您在循环中迭代的:

for rec in blast_records:
    for alignment in rec.alignments:
        for hsp in alignment.hsps:
            print(rec.query) #DNA ID

我认为,指定
alignments=3
而不是点击将使每次点击最多获得3条对齐。如果要控制点击数和对齐数,可以同时指定两者。

欢迎使用StackOverflow!你能提供一个可重复的例子吗(例如,一些fasta序列产生超过3次点击?)我正试图解决同样的问题,但我似乎得到了正确的点击次数(在
下),当然!你能不能也分享一下你的fasta序列,让我看一看?@cnluzon更新:我想我的问题在于我的XML解析。我正在实际找出我做错了什么,但我认为这与我的
for
循环调用
alignment.hsps
并围绕这些循环有关,而不是我的点击
从Bio.Blast导入NCBIXML
并打开(“XML\u Files/46\u 47.XML”)作为结果句柄:
Blast\u records=NCBIXML.parse(结果句柄)
x=0
用于blast_记录中的rec:
用于rec中的对齐。对齐:
用于对齐中的hsp。hsp:
打印(rec.query)#DNA ID
哦,我明白了!如果您正在寻找路线,那么可能应该使用参数
alignments=3
,而不是此处定义的
hitlist\u size
:@Cnluzon您认为可以快速定义路线与hitlist吗?我不太明白他们的不同。你的解决方案解决了我的问题。我需要同时指定
hitlist_size=3
alignments=1
,以便在我的XML文件中获得前三次点击和第一条记录。很高兴听到这个消息!)