我修改如下一段代碼來解析從BLAST XML輸出期望的信息。解析僅頂端從BLAST輸出3命中與NCBIXML
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輸出文件的大小很大,所以我們只說BLAST XML輸出中的最佳匹配或前3個匹配。
有分析將需要大量的時間來處理每一擊的結果,我不想其實全部命中結果。
可能有人好心幫我嗎?
我不明白,你想要頂級3的電子價值,但不想分析整個文件? –
也許我不清楚我的問題,對不起。我希望解析BLAST輸出文件中每個查詢的最佳命中或最佳3次命中。 –
我沒有得到的是您可以根據其內容過濾條目,而無需以某種方式解析每條記錄。 –