首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:将同一组蛋白质的两个多fasta文件与解析器进行比较,以发现和计数治疗后的突变。

Python:将同一组蛋白质的两个多fasta文件与解析器进行比较,以发现和计数治疗后的突变。
EN

Stack Overflow用户
提问于 2018-01-31 16:14:29
回答 1查看 454关注 0票数 2

我的任务是计数几种蛋白质在治疗后发生的突变。序列都以相同的顺序出现在这两个文件中。我在生物工程中用fasta解析器(SeqIO.parse)打开了两个文件,我得到了列出的所有蛋白质(治疗前后分离的)。

我的问题是:

  • 我怎样才能把解析器拉到一起来计数突变呢?

代码语言:javascript
复制
from Bio import SeqIO
for normal_samples in SeqIO.parse("/data/statistic/normal_samples", "fasta"):
    print(normal_samples.id)
    print(repr(normal_samples.seq))
    print(len(normal_samples))
    
for treated_samples in SeqIO.parse("/data/statistic/with_treatment", "fasta"):
    print(normal_samples.id)
    print(repr(normal_samples.seq))
    print(len(normal_samples))
    
dict_n_t = dict(zip(normal_samples & treated_samples))

EN

回答 1

Stack Overflow用户

发布于 2018-02-01 20:25:35

假设:

  • 序列在两个文件中的顺序是相同的
  • 只发生点突变(因此两个文件中相应序列的长度相同)
  • 而且你对突变数很感兴趣,而不是他们的位置

您可以使用以下代码:

代码语言:javascript
复制
from Bio import SeqIO

normal_samples = SeqIO.parse("/data/statistic/normal_samples", "fasta")
treated_samples = SeqIO.parse("/data/statistic/with_treatment", "fasta")


for normal, treated in zip(normal_samples, treated_samples):
    if normal.id == treated.id:
        mutations = sum(1 for n, t in zip(str(normal.seq), str(treated.seq)) if n != t)
        print(f"Found {mutations} mutation(s) for id {normal.id}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48546664

复制
相关文章

相似问题

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