从biopython远程爆炸

时间:2015-04-29 17:26:12

标签: python biopython

我试图使用Biopython远程爆炸大约70个200-nt序列。 我已经花了好几个小时来弄清楚为什么下面的Python脚本无法工作。

我可以使用SeqIO.read来读取仅包含一个fasta的读取文件,但是当我尝试切换到SeqIO.parse时,我在.xml保存文件中没有得到任何内容创建

有什么想法吗?

作为旁注,如果有人知道从结果中排除生物的选项语法(使用ncbi网站时可能会这样做,请告诉我。)

非常感谢您的帮助。

马特

from Bio.Blast import NCBIWWW
from Bio import SeqIO
import tkinter.filedialog as tkfd
in_file=tkfd.askopenfilename()
record = SeqIO.parse(in_file, format="fasta")
out_file = tkfd.asksaveasfilename()
save_file = open(out_file, "w")
for rec in record:
  print(rec)
  result_handle = NCBIWWW.qblast("blastn", "nt", rec.format("fasta"))
  save_file.write(result_handle.read())
  result_handle.close()
else:
  save_file.close()

这是我用作测试文件的in_file的内容(我的文件的行格式设置为80 char,可能在下面丢失了,记录之间的下面显示的空间也是不在我的测试文件中):

  

> 165613   TAACTGCAGTGTTTTGTGTCGAGCCTTTTTTGTGCCTTTTTTATAAAGGCATAACGTTATATTTAATTGAAGAGTTTGAT   TCTGGCTCAGATTGAACGCTAGCGGCATGCTTAACACATGCAAGTCGAACGGCAGCGCGGGGAGCTTGCTCCCTGGCGGC   GAGTGGCGGACGGGTGAGTAATGCGTAGGAATCTACCTTG

     

> 165875   GGGATCTTCGGACCTCGTGCTATAAGATGAGCCTACGTCGGATTAGCTTGTTGGTGGGGTAATGGCCTACCAAGGCGACG   ATCCGTAGCTGGTCTGAGAGGACGATCAGCCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTGGG   GAATATTGGACAATGGGGGAAACCCTGATCCAGCAATGCC

1 个答案:

答案 0 :(得分:1)

你的问题是库tkinter,下一个代码运行良好(biopython).....是强制使用GUI吗?

from Bio.Blast import NCBIWWW
from Bio import SeqIO

in_file = open("input.fasta")
record = SeqIO.parse(in_file, format="fasta")

save_file = open("out_file.blast", "w")
for rec in record:
  print(rec)
  result_handle = NCBIWWW.qblast("blastn", "nt", rec.format("fasta"))
  save_file.write(result_handle.read())
  result_handle.close()
else:
  save_file.close()

得到以下结果:

<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd">
<BlastOutput>
  <BlastOutput_program>blastn</BlastOutput_program>
  <BlastOutput_version>BLASTN 2.2.31+</BlastOutput_version>
  <BlastOutput_reference>Stephen F. Altschul, Thomas L. Madden, Alejandro A. Sch&amp;auml;ffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), &quot;Gapped BLAST and PSI-BLAST: a new generation of protein database search programs&quot;, Nucleic Acids Res. 25:3389-3402.</BlastOutput_reference>
  <BlastOutput_db>nt</BlastOutput_db>
  <BlastOutput_query-ID>Query_142405</BlastOutput_query-ID>
  <BlastOutput_query-def>165613</BlastOutput_query-def>
  <BlastOutput_query-len>200</BlastOutput_query-len>
....

我测试了你的代码,我发现以下语句错误

record = SeqIO.parse(open(in_file), format="fasta")

因为,in_filestring y不是类型file