我正在尝试编写一个以氨基酸fasta作为输入并在excel文件中输出图案的motif查找功能。
我想要的输出看起来像这样..
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 :(得分: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)