2017-06-04 28 views
0

私はBiopythonで作業しようとしていました。私のコード:Biopythonは実行されません

fasta_string = open("C:\\Users\\saeed\\Desktop\\dna2.fasta").read() 
print('1') 
result_handle = NCBIWWW.qblast("blastn", "nt", fasta_string) 
print('2') 


blast_record = NCBIXML.read(result_handle) 

len(blast_record.alignments) 

E_VALUE_THRESH = 0.01 
for alignment in blast_record.alignments: 
    for hsp in alignment.hsps: 
     if hsp.expect < E_VALUE_THRESH: 
      print('*Alignment*') 
      print('sequence', alignment.title) 
      print('length', alignment.length) 
      print(' e value', hsp.expect) 
      print(hsp.query) 
      print(hsp.match) 
      print(hsp.sbjct) 

私はこのコードを実行するたびに、1を出力して停止します。出口で停止するのではなく、実行し続けて何も印刷しません。私はdna2.fastaファイルを単に "myseq.fa"に置き換えようとしましたが、それはうまくいきませんでした。ただファイルが存在しないと言っています。私は何が間違っているのか、それを修正する方法を知りたい。どんな助け?

+0

テストシーケンスを見せてもらえますか?あなたが望むならば 'print(fasta_string)'を加えて出力を共有するだけです。私はあなたがすでに爆破に時間がかかることを知っていると思います。単純な50bpのDNAは、まだ爆破するのに10〜15秒かかります。 –

+0

@ Y.Luo私は(fasta_string)を印刷すると、dna2.fasta 'ファイルの内容全体を印刷します。これは大変です。 > GI | 142022655 |ギガバイト| EQ086233.1 | 91海洋メタゲノムJCVI_SCAF_1096627390048ゲノム足場、全ゲノムショットガンシーケンス CTCGCGTTGCAGGCCGGCGTGTCGCGCAACGACGTGTGGGGCCTGACGGGCAGGGAGGATCTCGGCGGCG CCAACTATGCGGTCTTTCGGCTCGAAAGCCAGTTCCAGACCTCCGACGGCGCGCTGACCGTGCCCGGCTC CGCATTCAGTTCGCAAGCCTACGTCGGGCTCGGCGGCGACTGGGGGACCGTGACGCTCGGGCGCCAGTTC GATTTCGTCGGCGATCTGATGCCGGCTTTCGCGATCGGCGCGAACACGCCGGCCGGCCTGCTCGCGTGGG GCTTGCCGGCGAATGCGTCGGCGGGCGGTGCGCTCGACAACCGCGTGTGGGGCGTCCAGGTGAACAATGC GGTGAAGTACGTGAGCCC – SDurrani

+1

あなたが爆発するシーケンスをたくさん持っている場合は、それは取り驚かないですNCBIは永遠に対応する。それがどのように動作するかを学びたいだけなら、ここで簡単な例を挙げました。うまくいけばそれは役に立ちます。 –

答えて

0

これは私がBioPythonを経由してシーケンスをqblastするためにしなければならないものです:

import ssl # monkey patch for BioPython 1.68 & 1.69 
ssl._create_default_https_context = ssl._create_unverified_context 

from Bio.Blast import NCBIWWW 
from Bio.Blast import NCBIXML 
from Bio import SeqIO 

E_VALUE_THRESH = 0.01 

input_file_name = "C:\\Users\\saeed\\Desktop\\dna2.fasta" 

fasta_object = SeqIO.read(input_file_name, format='fasta') 

result_handle = NCBIWWW.qblast("blastn", "nt", fasta_object.seq) 

blast_record = NCBIXML.read(result_handle) 

for alignment in blast_record.alignments: 
    for hsp in alignment.hsps: 
     if hsp.expect < E_VALUE_THRESH: 
      print('*Alignment*') 
      print('sequence', alignment.title) 
      print('length', alignment.length) 
      print('e value', hsp.expect) 
      print(hsp.query) 
      print(hsp.match) 
      print(hsp.sbjct) 

SSL /証明書の問題を処理するためのより良い方法があるのなら、私は知ることに興味があると思います。

+0

このSSLの問題はhttps://github.com/biopython/biopython/issuesでログしてください。 – peterjc

+1

@peterjcこれはbiopythonではなく、OS Xの問題であることが判明しました。この修正はPythonで提供され、[Mac OSX python ... certificate verify failed](https://stackoverflow.com/a/42098127)で説明されています。/5771269)これは私が試したもので、動作するようです。 – cdlane

0

これは、1回のリクエストで複数のクエリを使用した私の例です。

import timeit # Not necessary; just for timing the blast request. 

from Bio.Blast import NCBIWWW 
from Bio.Blast import NCBIXML 

fasta_string = open("dna2.fasta").read() 
# In "dna2.fasta": 
# >test1 
# CGCTCATGCTAAAACCACGGAGGAATGTTTGGCCTATTTTGGGGTGAGTG 
# >test2 
# GCCAAGTCTGCAGGAAGCTTTGAGTTCTGACATCCTTAATGACATGGAGT 
# 
# Or you can make a string for this simple example. 
# fasta_string = ">test1\nCGCTCATGCTAAAACCACGGAGGAATGTTTGGCCTATTTTGGGGTGAGTG\n>test2\nGCCAAGTCTGCAGGAAGCTTTGAGTTCTGACATCCTTAATGACATGGAGT\n" 
print(fasta_string) 

a = timeit.default_timer() # Not necessary; just for timing the blast request. 
result_handle = NCBIWWW.qblast("blastn", "nt", fasta_string) 
print(timeit.default_timer() - a) # Not necessary; just for timing the blast request. 
# This takes me ~ 40 sec in one test. 

# Use "parse" instead of "read" because you have lots of results (i.e., multiple query sequences) 
blast_records = NCBIXML.parse(result_handle) 
for blast_record in blast_records: 
    print(blast_record.alignments[0].hsps[0]) 

"cdlane"が正しい。 Bio.SeqIOモジュールを使用してFASTAファイルを読み込むこともできます。私はあなたがそれを読んだと確信していますが、その場合に関連文書はここにあります:http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc87

関連する問題