Биопайт не запускается
Поэтому я пытался работать с 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", но это тоже не сработало. Он просто сказал, что файл не существует. Я хочу знать, что я делаю неправильно, и как это исправить. Любая помощь?
2 ответа
Вот что мне нужно сделать, чтобы сделать последовательность через BioPython:
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/ сертификата.
Вот мой пример с несколькими запросами в одном запросе.
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