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