Python:使用解析器比较同一组蛋白质的两个多fasta文件,以发现和计算治疗后的突变

Python:使用解析器比较同一组蛋白质的两个多fasta文件,以发现和计算治疗后的突变,python,parsing,statistics,bioinformatics,fasta,Python,Parsing,Statistics,Bioinformatics,Fasta,我的任务是计算治疗后几种蛋白质发生的突变。序列以相同的顺序出现在两个文件中。我用biopython中的fasta解析器(SeqIO.parse)打开了这两个文件,我得到了列出的所有蛋白质(在治疗前后分开) 我的问题: 如何将解析器压缩到一起以计算突变 来自Bio导入序列 对于SeqIO.parse中的正常样本(“/data/statistic/normal\u samples”,“fasta”): 打印(普通样本.id) 打印(报告(正常样本顺序)) 打印(透镜(普通样品)) 对于SeqI

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

我的问题:

  • 如何将解析器压缩到一起以计算突变
来自Bio导入序列
对于SeqIO.parse中的正常样本(“/data/statistic/normal\u samples”,“fasta”):
打印(普通样本.id)
打印(报告(正常样本顺序))
打印(透镜(普通样品))
对于SeqIO.parse中的已处理样本(“/data/statistic/with_treatment”,“fasta”):
打印(普通样本.id)
打印(报告(正常样本顺序))
打印(透镜(普通样品))
dict_n_t=dict(zip(正常样本和处理样本))
假设:

  • 两个文件中的序列顺序相同
  • 仅发生点突变(因此两个文件中相应序列的长度相同)
  • 你很明显对突变计数感兴趣,而不是它们的位置
您可以使用以下代码:

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}")

你也可以提出这个问题。