2015-10-14 91 views
0
from Bio import SeqIO 
from Bio import SeqRecord 
from Bio import SeqFeature 
for rec in SeqIO.parse("C:/Users/Siva/Downloads/sequence.gp","genbank"): 
     if rec.features: 
      for feature in rec.features: 
        if feature.type =="Region": 
          seq1 = feature.location.extract(rec).seq 
          print(seq1) 
          SeqIO.write(seq1,"region_AA_output1.fasta","fasta") 

我正在嘗試將輸出寫入FASTA文件,但出現錯誤。有誰能夠幫助我? 這裏面我有將輸出存儲到FASTA文件

Traceback (most recent call last): 
    File "C:\Users\Siva\Desktop\region_AA.py", line 10, in <module> 
    SeqIO.write(seq1,"region_AA_output1.fasta","fasta") 
    File "C:\Python34\lib\site-packages\Bio\SeqIO\__init__.py", line 472, in  write 
    count = writer_class(fp).write_file(sequences) 
    File "C:\Python34\lib\site-packages\Bio\SeqIO\Interfaces.py", line 211, in write_file 
    count = self.write_records(records) 
    File "C:\Python34\lib\site-packages\Bio\SeqIO\Interfaces.py", line 196, in write_records 
    self.write_record(record) 
    File "C:\Python34\lib\site-packages\Bio\SeqIO\FastaIO.py", line 190, in write_record 
    id = self.clean(record.id) 

AttributeError的錯誤:「海峽」對象有沒有屬性「ID」

+0

你能從'sequence.gp'中看到一個樣本嗎? –

回答

1

首先,你要編寫一個簡單的序列作爲FASTA記錄。一個fasta記錄由一個序列和一個ID行(由「>」前綴)組成。你還沒有提供一個ID,所以fasta作家沒有什麼可寫的。您應該編寫整個記錄,或者通過自己添加ID將序列轉換爲fasta記錄。其次,即使你的方法寫了任何東西,它仍然不斷地將每個新記錄覆蓋到同一個文件中。你最終只會看到文件中的最後一條記錄。

更簡單的方法是將所有內容存儲在列表中,然後在完成循環時寫出整個列表。例如:

new_fasta = [] 
for rec in SeqIO.parse("C:/Users/Siva/Downloads/sequence.gp","genbank"): 
    if rec.features: 
     for feature in rec.features: 
      if feature.type =="Region": 
       seq1 = feature.location.extract(rec).seq 
       # Use an appropriate string for id 
       new_fasta.append('>%s\n%s' % (rec.id, seq1)) 

with open('region_AA_output1.fasta', 'w') as f: 
    f.write('\n'.join(new_fasta)) 
+0

非常感謝。 –

相關問題