2012-12-06 103 views
0

我是新來的Biopython,我只是想翻譯DNA Fasta文件並將輸出寫入新文件。我認爲這很容易,但我無法使腳本正常工作。
這裏是我的嘗試:Biopython翻譯腳本不工作?

#!/usr/bin/env python 
import sys 
from Bio.Seq import Seq 
from Bio.Alphabet import IUPAC 

in = open(sys.argv[1],'r') 
out = open(sys.argv[2],'w') 

messenger_rna = Seq(in, IUPAC.unambiguous_rna) 
out = messenger_rna.translate() 

out.close() 
in.close() 

任何人都知道我做錯了嗎?

+1

你得到一個錯誤?你看到你沒有預料到什麼? – thegrinner

回答

3

雖然我不知道這是什麼所有這等,我很確定你對待文件錯誤。

特別

out = open(sys.argv[2],'w') 
out = messenger_rna.translate() 
out.close() 

看來我錯了。

更換中間線與

out.write(messenger_rna.translate()) 

如果這是一個字符串什麼.translate()回報。

進一步優化版本:

#!/usr/bin/env python 

import sys 
from Bio.Seq import Seq 
from Bio.Alphabet import IUPAC 

with open(sys.argv[1],'r') as infile: # for auto-closing 
    messenger_rna = Seq(infile, IUPAC.unambiguous_rna) 
    # if Seq() takes a string rather than a file, do infile.read() instead. 

with open(sys.argv[2],'w') as outfile: 
    outfile.write(messenger_rna.translate()) 
+0

是的,Glglgl是對的。你的原始代碼打開一個輸出句柄並將其存儲爲'out',然後創建一個已翻譯的序列並將其分配給'out'變量(應該調用輸出句柄的寫入方法)。這將刪除對輸出句柄的任何引用,它將自動關閉。最後,你告訴翻譯的序列關閉 - 失敗。 – peterjc

+0

非常感謝! – user1882385

+0

@ user1882385通過點擊cckck標記接受最有幫助的答案,最好的表達謝意。 :-) – glglgl