这看似微不足道,但却给我带来了困难。我只想同时处理两个fasta生成器,以便将一个文件的第一个标头和序列与另一个文件的第一个标头和序列,第二个到第二个序列进行比较,依此类推,直到两个文件都完整为止。
两个fasta文件都具有相同数量的序列,并且按一对2个读取的顺序排序,例如,fasta1的第一个序列和fasta2的第一个序列是读取对,依此类推,直到文件末尾。
我有一个生成器,为我提供了fasta文件每个序列的标题和序列
def fileParse (self):
# get file from __init__ and open.
# parse header and sequence
yield (header, sequence)
但是我似乎无法弄清楚如何同时遍历两个文件。我从这个开始:
# x class variable sends first fasta
# y class variable sends second fasta
for header, sequence in x.fileParse():
for header2, sequence2 in y.fileParse():
# compare headers and evaluate.
显然,这里的问题是我将一个文件中的每个标头与另一个文件中的每个标头进行比较,在这里我只想将第一个标头与第一个标头进行比较,将第二个标头与第二个标头进行比较,依此类推。
我遇到困难,因为好像我总是需要遍历生成器。也许我需要调整genrator方法本身,以同时为两个文件生成标头和序列?
谢谢
我相信zip是您要寻找的东西:
for (h1, s1), (h2, s2) in zip(x.fileParse(), y.fileParse()):
恕我直言,zip
通过示例最容易理解:
In [43]: range(5)
Out[43]: [0, 1, 2, 3, 4]
In [44]: range(3,8)
Out[44]: [3, 4, 5, 6, 7]
In [45]: zip(range(5), range(3,8))
Out[45]: [(0, 3), (1, 4), (2, 5), (3, 6), (4, 7)]
PS:您的问题暗示您自己在安装Fasta阅读器。如果是这样,您可能想看看BioPython的SeqIO
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句