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 出力ファイルのサイズが大きいため、BLAST XML 出力からのベスト ヒットまたは上位 3 ヒットのみを解析したいと考えています。
すべてのヒット結果を解析すると、処理に時間がかかり、実際にはすべてのヒット結果は必要ありません。
誰か親切に私を助けてくれませんか?