Python: сравнение двух файлов мульти-фаста одного и того же набора белков с парсером - для поиска и подсчета мутаций после обработки

Моя задача - подсчитать мутации, произошедшие в нескольких белках после лечения. Все последовательности присутствуют в двух файлах в одном и том же порядке. Я открыл оба файла с помощью анализатора fasta (SeqIO.parse) в biopython и получил все перечисленные белки (разделенные до и после лечения).

Мой вопрос:

  • Как я могу сжать парсеры вместе, чтобы посчитать мутации?

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

1 ответ

Предполагая, что:

  • Что последовательности в одном и том же порядке в обоих файлах
  • Это только точечные мутации (так что длина соответствующих последовательностей в двух файлах идентична)
  • И что вас интересует количество мутаций, а не их местоположение

Вы можете использовать следующий код:

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}")
Другие вопросы по тегам