首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时处理两个FASTA发生器

如何同时处理两个FASTA发生器
EN

Stack Overflow用户
提问于 2014-09-11 19:38:56
回答 1查看 81关注 0票数 0

这看似微不足道,但却给了我一段艰难的时光。我只想同时处理两个fasta生成器,以便将一个文件的第一个头和序列与另一个文件的第一个头和序列、第二个到第二个文件的顺序进行比较,直到两个文件都完成为止。

这两个fasta文件都有相同的序列数,它们被排序为一对的2读,例如fasta1的第一序列和fasta 2的第一序列是读对等,直到文件结束。

我有一个生成器,它为fasta文件的每个序列提供了头和序列。

代码语言:javascript
复制
def fileParse (self):
    # get file from __init__ and open.
    # parse header and sequence
    yield (header, sequence)

但是,我似乎不知道如何同时迭代两个文件。我从这个开始:

代码语言:javascript
复制
# 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方法本身来为两个文件同时生成一个头和序列?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-11 19:42:37

我相信zip是你要找的东西:

代码语言:javascript
复制
for (h1, s1), (h2, s2) in zip(x.fileParse(), y.fileParse()):

zip是通过一个例子最容易理解的:

代码语言:javascript
复制
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)]

P.S.你的问题暗示你自己正在实施一个fasta阅读器。如果是这样的话,您可能想看看BioPython的SeqIO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25795706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档