问题描述
我有一个 FASTA 文件 (test.fasta),其中包含我使用 Biopython 与 BLASTN 对齐的许多序列。
import Bio
from Bio.Blast import NCBIWWW
from Bio.Blast import NCBIXML
sequence_data = open("/Users/Desktop/test.fasta").read()
result_handle = NCBIWWW.qblast("blastn","nt",sequence_data)
with open('results.xml','w') as save_file:
blast_results = result_handle.read()
save_file.write(blast_results)
对齐已保存为 xml 文件。 现在,我想解析 xml 文件的输出,以获取发现匹配的所有物种列表的信息,并且可能我只想保留特定物种: 示例 xml:
<Hit_num>1</Hit_num>
<Hit_id>gi|2020514704|emb|FR989945.1|</Hit_id>
<Hit_def>Plebejus argus genome assembly,chromosome: 19</Hit_def>
<Hit_accession>FR989945</Hit_accession>
<Hit_len>13381465</Hit_len>
<Hit_hsps>
<Hsp>
<Hsp_num>1</Hsp_num>
<Hsp_bit-score>44.5672</Hsp_bit-score>
<Hsp_score>48</Hsp_score>
<Hsp_evalue>1.07773</Hsp_evalue>
<Hsp_query-from>65</Hsp_query-from>
<Hsp_query-to>99</Hsp_query-to>
<Hsp_hit-from>12008397</Hsp_hit-from>
<Hsp_hit-to>12008366</Hsp_hit-to>
<Hsp_query-frame>1</Hsp_query-frame>
<Hsp_hit-frame>-1</Hsp_hit-frame>
<Hsp_identity>31</Hsp_identity>
<Hsp_positive>31</Hsp_positive>
<Hsp_gaps>3</Hsp_gaps>
<Hsp_align-len>35</Hsp_align-len>
<Hsp_qseq>ACTATCTTTTATTTAGATTAGGTTCAGTATCCCTC</Hsp_qseq>
<Hsp_hseq>ACTATGTTTTATTT---TTAGGTTCAGTATCCCTC</Hsp_hseq>
<Hit_num>2</Hit_num>
<Hit_id>gi|1812775970|gb|CP048843.1|</Hit_id>
<Hit_def>Crassostrea gigas strain QD chromosome 5</Hit_def>
<Hit_accession>CP048843</Hit_accession>
<Hit_len>60957391</Hit_len>
<Hit_hsps>
<Hsp>
<Hsp_num>1</Hsp_num>
<Hsp_bit-score>42.7638</Hsp_bit-score>
<Hsp_score>46</Hsp_score>
<Hsp_evalue>3.76165</Hsp_evalue>
<Hsp_query-from>63</Hsp_query-from>
<Hsp_query-to>95</Hsp_query-to>
<Hsp_hit-from>42721025</Hsp_hit-from>
<Hsp_hit-to>42720993</Hsp_hit-to>
<Hsp_query-frame>1</Hsp_query-frame>
<Hsp_hit-frame>-1</Hsp_hit-frame>
<Hsp_identity>29</Hsp_identity>
<Hsp_positive>29</Hsp_positive>
<Hsp_gaps>0</Hsp_gaps>
<Hsp_align-len>33</Hsp_align-len>
<Hsp_qseq>ATACTATCTTTTATTTAGATTAGGTTCAGTATC</Hsp_qseq>
<Hsp_hseq>ATACTGTATTTTGTTTAGATTAGGTTCAGTTTC</Hsp_hseq>
Plebejus argus genome assembly,chromosome: 19
Crassostrea gigas strain QD chromosome 5
我,另外我想保留例如在“Hit_def”行有智人的比赛,但我还没有弄清楚。
到目前为止,我已经写了这样的东西:
results_handle=open('results.xml')
for record in NCBIXML.parse(results_handle):
for alignment in record.alignments:
for hit in alignment.hits:
print(hit_def)
但是,我不断收到一些错误:
或
ValueError: 在句柄中找到多条记录
有什么建议吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)