2

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 ヒットのみを解析したいと考えています。

すべてのヒット結果を解析すると、処理に時間がかかり、実際にはすべてのヒット結果は必要ありません。

誰か親切に私を助けてくれませんか?

4

1 に答える 1

1

ファイル全体を解析せずに、各ヒットの上位 3 つの HSP のみを解析するには、独自のカスタム XML パーサーを作成する必要があります。Biopython の NCBIXML はこれを行いません。

ただし、探しているのが速度の向上である場合は、新しい SearchIO サブモジュール (http://biopython.org/wiki/SearchIO) を試すことができます。古い NCBIXML パーサーよりも高速であると思われる新しい BLAST XML パーサーがあります。古いパーサーは純粋な Python XML パーサーに依存していますが、SearchIO の新しいパーサーはcElementTree可能な限り使用します。

サブモジュールはまだ新しく実験的なものであるため、正式リリースまでに変更が加えられる可能性があります。興味がある場合は、ドラフト チュートリアルもここにあります: http://bow.web.id/biopython/Tutorial.html#htoc96

于 2012-12-15T03:59:58.910 に答える