2015-11-26 75 views
-1

我試圖編寫一個模式查找功能,它將fasta作爲輸入並輸出excel文件中的圖案。使用csv自動編寫頭文件python

我期望的輸出是這樣的..

SeqName  M1  Hits M2   Hits 
Seq1  MN[A-Z] 3  V[A-Z]R[ML] 2 
Seq2  MN[A-Z] 0  V[A-Z]R[ML] 5 
Seq3  MN[A-Z] 1  V[A-Z]R[ML] 0 

我一直在試圖自動生成的頭,因爲我正在尋找的主題是超過2(在上面的例子中,有隻有兩個(M1和M2))。

是我一直努力看起來像這樣的代碼..

import re 
from Bio import SeqIO 
import csv 
import collections 

def SearchMotif(f1, motif, f2="motifs1.xls"): 
    with open(f1, 'r') as fin, open(f2,'wb') as fout: 
     writer = csv.writer(fout, delimiter = '\t') 

     writer.writerow(['M%s'%(i+1)for i in range(0,len(motif),1)]) 
     writer.writerow(['Hits' for i in range(0,len(motif),1)]) 

這產生

M1  M2 
Hits Hits 

有什麼辦法,我可以讓我的頭行看起來像我期望的輸出?

點擊是靜態的,但M1會增加圖案的長度。所以,如果我有5種不同類型的圖案來搜索,它會像..

SeqName M1 Hits M2 Hits M3 Hits M4 Hits M5 Hits 
+0

你可以給一個'motif'看起來像什麼和樣本對應的樣本的樣本?如果我們不知道輸入是什麼樣的,那很難提供幫助。 –

回答

1

這很簡單。製作標題行,

>>> headerrow = ['SeqName'] 
>>> for i in range(1,6): 
... headerrow.append('M%d' % i) 
... headerrow.append('Hits') 
... 
>>> headerrow 
['SeqName', 'M1', 'Hits', 'M2', 'Hits', 'M3', 'Hits', 'M4', 'Hits', 'M5', 'Hits'] 

並寫入。

writer.writerow(headerrow)